xcompose: an xml-based component composition framework naiyana tansalarak and kajal t. claypool...
Post on 21-Dec-2015
214 views
TRANSCRIPT
XCompose:An XML-based Component Composition Framework
Naiyana Tansalarak and Kajal T. Claypool
University of Massachusetts, LowellJuly 22nd, 2003
InWorkshop on Composition Languages (WCL) 2003
(conjunction with ECOOP 2003)Darmstadt, Germany
2
Introduction
Component-based Software Systems
– pre-fabricated components
– composition framework
Advantages:
– on-time development
– higher quality
– higher reliability
3
Goal of Composition Framework
New requirement
Asset
Specification
New technology
Extensible - tailor existing compositions
Flexible - plug-and-play
Re-usable - make compositions
available to all users
Correct - provide system-level guarantees
Portable - enable composition across
component models
5
Previous Work
• Piccola application = components + script
• Bean Markup Language (BML)
• Component Markup Language (CoML)
Flexibility
Extensibility
Reusability
Correctness
Portability
Piccola
BML/CoML
XCompose
6
Hypothesis
Complex Component Composition can
be broken down into a sequence of a
primitive composition operators glued
together by a simple language
7
Paradigm
Components Application = +
Composition Language
Operators Composition Language = +
Glue Logic
8
XCompose Basics
New requirement
Asset
Specification
New technology
Flexibility
Extensibility
Reusability
Correctness
Portability
Composition PatternsComposition Operators
Composition Templates
XDescriptors
Composition Contracts
Goals Ingredients
www.cs.uml.edu/~ntansala
9
XCompose Basics
New requirement
Asset
Specification
New technology
Flexibility
Extensibility
Reusability
Correctness
Portability
Composition PatternsComposition Operators
Composition Templates
XDescriptors
Composition Contracts
Goals Ingredients
www.cs.uml.edu/~ntansala
10
Primitive Operators
Primitive Composition Operators
• Conjunction mi mj • Sequence mi ; mj • Choice mi V mj
• Pipe mi | mj
• Loop mi*V
Primitive Manipulation Operators:• addAttribute• addMethod• invokeMethod• addComponent
11
Complex Operators
Complex Composition Operators
• Connection-oriented Composition
– addConnection
• Aggregation-based Composition
– addToContainer
Complex Manipulation Operators
• configureProperty
• addListener
• addEvent
• linkEvent
12
XCompose Basics
New requirement
Asset
Specification
New technology
Flexibility
Extensibility
Reusability
Correctness
Portability
Composition PatternsComposition Operators
Composition Templates
XDescriptors
Composition Contracts
Goals Ingredients
www.cs.uml.edu/~ntansala
14
Example : Composition Pattern
ListMultiselector {
addComponent (“java.awt.List”, “list”);
addComponent (“java.awt.Multiselector”, “selector”);
addToContainer (“list”, “selector”);
linkEvent (“paint”, “list.paint”);
linkEvent (“select”, “selector.select”);
linkEvent (“deselect”, “selector.deselect”);
linkEvent (“close”, “selector.close; list.close”);
}
ListMultiselector
event(ListMultiselector) =
event (GUIList) U
event (Multiselector)
15
Common Composition Pattern
ListMultiselector
event(ListMultiselector) =
event (GUIList) U
event (Multiselector)
GUIList
JFrame
FrameList
event(FrameList) =
event (JFrame) U
event (GUIList)
16
XCompose Basics
New requirement
Asset
Specification
New technology
Flexibility
Extensibility
Reusability
Correctness
Portability
Composition PatternsComposition Operators
Composition Templates
XDescriptors
Composition Contracts
Goals Ingredients
www.cs.uml.edu/~ntansala
18
Example: Composition Template
ListMultiselector {
addComponent (“java.awt.List”, “list”);
addComponent (“java.awt.Multiselector”,
“selector”);
addToContainer (“list”, “selector”);
linkEvent (“paint”, “list.paint”);
linkEvent (“select”, “selector.select”);
linkEvent (“deselect”, “selector.deselect”);
linkEvent (“close”, “selector.close; list.close”);
}
MergeMasterClient (master, client) {
addComponent (“$master”, “container”);
addComponent (“$client”, “part”);
addToContainer (“container”, “part”);
let $tmp = event (“container”) ∩ event(“part”)
forall $e Є event(“container”) and $e $tmp
linkEvent (“$e”, “container.$e”);
forall $e Є event(“part”) and $e $tmp
linkEvent (“$e”, “part.$e”);
forall $e Є $tmp
linkEvent (“$e”, “part.$e; container.$e”);
}
19
Instantiation
MergeMasterClient ($master, $client)
GUIList, MultiSelector
ListMultiselector
JFrame, GUIList
GUIList
JFrame
FrameList
20
XCompose Basics
New requirement
Asset
Specification
New technology
Flexibility
Extensibility
Reusability
Correctness
Portability
Composition PatternsComposition Operators
Composition Templates
XDescriptors
Composition Contracts
Goals Ingredients
www.cs.uml.edu/~ntansala
21
XDescriptor
<class name=“GUIList”> <properties> </properties> <events> <event name=“”paint” refer=“”/> <event name=“”close” refer=“”/> </events> <methods> </methods> <composition> </composition></class>
22
XDescriptor
<class name=“ListMultiselector”> <properties> </properties> <events> <event name=“”paint” refer=“list”/> <event name=“”select” refer=“selector”/> <event name=“”deselect” refer=“selector”/> <event name=“”close” refer=“selector;list”/> </events> <methods> </methods> <composition> <component name=“java.awt.List” id=“list”/>
<add id=“selector”/> </component> <component name=“java.awt.Multiselector” id=“selector”/> </composition></class>
23
System Architecture
JavaBeans CORBA COM
XDescriptorWrapper
XComposeEngine
DeploymentEngine
XDescriptor
XDescriptorLibrary
GUIList
GUIList
XDescriptor
24
System Architecture (con’t)
TemplateProcessor
CompositionTemplate Manager
uses
XCompose Engine
InstantiationTool
Composition Manager
PatternVerifier
uses
CompositionEditor
patternsOperators
TemplateLibrary
patternspatterns
XDescriptor
25
Discussion ?
• What is the complete set of operators and their
semantics to provide flexibility and extensibility ?
• What extensions are needed to make XCompose
platform and component model independent ?
• Is XML the right model?
• What are the tradeoffs to achieve the five goals ?
• Are the five goals sufficient ? Are there any other
goals that need to be supported here ?