230 likes | 318 Views
Uniform Support for Modeling Crosscutting Structure. Maria Tkatchenko Gregor Kiczales. Work supported by IBM and NSERC. Crosscutting in a ‘UML’ Model. Advice: advise method(Subject.change(…)): “moving concern”. Crosscutting in a ‘UML’ Model. Crosscutting in a ‘UML’ Model. Role Binding:
E N D
Uniform Support for Modeling Crosscutting Structure Maria Tkatchenko Gregor Kiczales Work supported by IBM and NSERC.
Crosscutting in a ‘UML’ Model Advice: advise method(Subject.change(…)): “moving concern” AOSD 2005
Crosscutting in a ‘UML’ Model AOSD 2005
Crosscutting in a ‘UML’ Model Role Binding: bind Line.moveBy, Point.moveBy, Point.setX, Point.setY to Subject.change AOSD 2005
Crosscutting in a ‘UML’ Model Advice: advise method(Subject.change(…)): “moving concern” Role Binding: bind Line.moveBy, Point.moveBy, Point.setX, Point.setY to Subject.change AOSD 2005
Related Work • [Katara, Mikkonen, ‘02] • hierarchy of related refinements • merge sequences for composed behaviour • [Lions et.al.,’02] • AOP in UML through use of meta-modeling in OpenTool/UML • [Baniassad, Clarke, ‘04] • modeler identifies and binds aspects (themes) • throughout lifecycle of project • [Kande et.al.,’02] • first-class aspects in UML AOSD 2005
Terminology • Model • as in modeling, UML, MDD, meta-model… • JPM • as in join point model • supports the above crosscutting models AOSD 2005
Goals • Foundation for modeling crosscutting structure • Compositional • different model elements • different crosscutting perspectives • Simple • uniform • linear in number of crosscutting views (not exponential) • relatively easy to add new kind of crosscutting • Simplifies implementation of modeling tool • directly benefits for modeling tool implementer, meta-modeler • i.e. would it be easier to add pattern support with this approach? • indirectly benefits modeler AOSD 2005
What JPM (Join Point Model) Supports That • JPMs are fundamental mechanism for support of crosscutting • A simple JPM for UML • (for now, taking freedom to change the UML meta-model) • JPMs have three parts [Masuhara, ‘03] • Join points • Identifying join points • Semantic effect AOSD 2005
JPM • Join points • model elements • Class, Method, Field, Advice in Class Diagram • Method Call, Sequence (focus of control) in Sequence Diagram • uniform, but 2 JPs per crosscutting interaction • Identifying join points • signatures, type patterns, pointcuts… • Semantic effect • each has particular declaration semantics • declare a class, method, sequence, advice… • Weaver • based on Eclipse EMF framework • collects crosscutting among the elements • what elements crosscut each other? AOSD 2005
JoinPoint crosscutByList: List<JoinPoint> ClassDiagramMemberDecl SequenceDiagramMemberDecl ClassDecl ClassMemberDecl SequenceDecl MethodCallDecl Meta-Model Declaration FieldDecl MethodDecl AdviceDecl AOSD 2005
Crosscutting in the weaver (<jp>, <jp>, <jp>, <jp>, <jp>, <jp>, …) AOSD 2005
Crosscutting in the weaver (<jp>, <jp>, <jp>, <jp>, <jp>, <jp>, …) AOSD 2005
Crosscutting in the weaver • every element has crosscutByList • two join points per crosscutting interaction (… <jp>, …) (…<jp>, …) AOSD 2005
Crosscutting in the weaver • same thing happens for all kinds of cc Role Binding: bind Line.moveBy, Point.moveBy, Point.setX, Point.setY to Subject.change (<jp>, <jp>, <jp>, <jp>, <jp>, <jp>, …) AOSD 2005
Crosscutting in the weaver (<jp>, <jp>, <jp>,…) Advice: advise method(Subject.change(…)): “moving concern” Role Binding: bind Line.moveBy, Point.moveBy, Point.setX, Point.setY to Subject.change • how is advice affected by role binding? (<jp>, <jp>, <jp>, <jp>, <jp>, <jp>, …) AOSD 2005
Crosscutting in the weaver (<jp>, <jp>, <jp>,…) Advice: advise method(Subject.change(…)): “moving concern” Role Binding: bind Line.moveBy, Point.moveBy, Point.setX, Point.setY to Subject.change ( <jp>, <jp>,…) • how is advice affected by role binding? (<jp>, <jp>, <jp>, <jp>, <jp>, <jp>, …) AOSD 2005
Implementation • Simple staged approach to weaving • role binding • inter-type declarations • sequence diagrams • advice • Simplifies semantic interactions • advice depends on roles, but not vice versa • Each pass records • relevant semantic information • type and method inheritance tables • additions to crosscutByList of each JP AOSD 2005
Use of woven information • Question: how to find out whether an element has advice applied to it? boolean hasAdvice(Decl decl) { for(Decl otherDecl: decl.getCrosscutByList()) if (otherDecl instanceof AdviceDecl) return true; return false; AOSD 2005
Use of woven information • Question: how to build the complete (possible) cflow of a call C for C and any calls in its sequence diagram, repeat containedCalls(call) List containedCalls(Call c1) { List result; for (Decl c2: c1.getCrosscutByList()) if (c2 instanceof Call && c1.getSignature().matches(c2.getSignature()) { result.add(c2); result.addAll(containedCalls(c2)); } } AOSD 2005
Status of work • Done so far • JPM design • UML meta-model • UML language • Implementation: weaver • Prototype • Modular • Simplified: reasonable subset of UML • no methodReceipt, methodReturn join points in Sequence Diagrams • no other diagrams AOSD 2005
Summary • Simple approach to modeling crosscutting • for existing and new kinds of crosscutting • Simple and modular implementation • Approach consists of • JPM • extension to the UML meta-model • weaver AOSD 2005
Uniform Support for Modeling Crosscutting Structure QUESTIONS?