Rapid-Assembly Componentware for Education Chris DiGiano and Jeremy Roschelle SRI International chris.digiano@sri.com This work supported by the National Science Foundation (Award: REC-9804930) Overview • • • • • ESCOT Project Rapid Assembly Componentware Software Design Patterns Capability Delegate Replicated Model The Educational Software Supply Crisis • “demand for software far exceeds the Nation’s ability to produce it.” – President's Information Technology Advisory Committee (1999). Information Technology Research: Investing in Our Future. • “teachers report difficulties [finding] … digital content to fit their needs.” – CEO Forum on Education and Technology (2000). The Power of Digital Learning : Integrating Digital Content. Educational Software Components Of Tomorrow • SRI: Roy Pea (PI), Jeremy Roschelle (PI), Chris DiGiano (PI), Mark Chung, Vicky Hand • Univ. Mass at Dartmouth: Jim Kaput (PI) • Univ. of Colorado: Alex Repenning & team • WebCT/MathForum: Jody Underwood, Steve Weimar • DesignWorlds: Ted Kahn • Key Curriculum Press: Nick Jackiw • Show Me Center, Missouri: Dave Barnes & team • Stanford University: Vicky Hand, and other research assistants • And many, many others The ESCOT Process Analysis of Five Middle School Math Texts Interoperable tools Integration Teams Intellectual Property Licenses Mentored Activities Rapid-Assembly Componentware for Education • Kernel (RACK) providing component brokering and persistence facilities • Design Environment where an application is assembly through direct manipulation of visual components • Library of components Software Design Patterns • General form – – – – – memorable name real-world example problem addressed fundamental solution principle benefits and liabilities • Implementation language agnostic RAC Patterns • Instantiation: What happens when a new component is introduced into an assembly and how the Kernel is made aware of its capabilities • Interoperability: How specific types of components connect and what protocols enable them to exchange data • Control Cooperation: How components work together so they effectively enable the user to manipulate the same data • Screen Cooperation: How components can be good citizens in an assembly by being economical with screen space and accommodating of overlapping components. Capability Delegate: Example Slider bounds value color minimum ... maximum addChangeListener() Capability Delegate: Problem In designing a new component, it is tempting to advertise all capabilities at the same level, but this leads to • Poor modularity: – low internal cohesion – tight coupling with other components • Overwhelming design experience • Efficiency issues Capability Delegate: Solution Encapsulate related elements into a separate object, referenced by the component Slider bounds color ... addChangeListener() 1 BoundedRange value minimum maximum addChangeListener() Capability Delegate: Solution Encapsulate related elements into a separate object, referenced by the component Observable Slider bounds color ... addChangeListener() 1 BoundedRange value minimum maximum addChangeListener() Replicated Model: Example Fraction Thermometer Change Notification value value Replicated Model: Problem • Many “found” components cannot “observe” other components • But they do advertise mutable properties Replicated Model: Solution • Publishing & subscribing components each maintain their own copy of the data • Bridge converts changes notices to change requests Bridge notice Fraction request value Thermometer value Replicated Model: Solution • Publishing & subscribing components each maintain their own copy of the data • Bridge converts changes notices to change requests Bridge notice Fraction request value: float Thermometer value: int Conclusions • High-quality educational software is in short supply • We need to work together and share each other’s wisdom • Patterns provide – a common language – an alternative kind of reuse Strata of Interoperability • Descriptors of content (e.g. card catalogs) – Metadata • Databases of student information – School Interop. Framework • Course Delivery Systems – WebCT, Blackboard • Media Elements (e.g. text, pictures, images) • Tools (e.g. graphing, simulations, spreadsheets) NSDL IMS IEEE Microsoft/Sun ESCOT Logal eSlate Observer: Problem • A situation often arises in which data changes in one component, but one or more other components depend on this data. We could solve the problem by introducing direct calling dependencies along which to propagate the changes, but this solution would require customcoded components and make it difficult for the designer to later change the connections between components. We are Observer: Solution • Solution: All dependent components subscribe to the component with the data. When the data changes, the publishing component sends a notification to all subscribers. • Structure: In the context of componentware, the Observer design pattern involves components in the following roles: