university of british columbia software practices lab uniform support for modeling crosscutting...

23
University of British Columbia Software Practices Lab Uniform Support for Modeling Crosscutting Structure Maria Tkatchenko Gregor Kiczales Work supported by IBM and NSERC.

Upload: egbert-cross

Post on 19-Jan-2018

216 views

Category:

Documents


0 download

DESCRIPTION

AOSD Crosscutting in a ‘UML’ Model

TRANSCRIPT

University of British Columbia Software Practices Lab Uniform Support for Modeling Crosscutting Structure Maria Tkatchenko Gregor Kiczales Work supported by IBM and NSERC. AOSD Crosscutting in a UML Model Advice: advise method(Subject.change()): moving concern AOSD Crosscutting in a UML Model AOSD Crosscutting in a UML Model Role Binding: bind Line.moveBy, Point.moveBy, Point.setX, Point.setY to Subject.change AOSD 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 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 Terminology Model as in modeling, UML, MDD, meta-model JPM as in join point model supports the above crosscutting models AOSD 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 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 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 Meta-Model FieldDeclMethodDeclAdviceDecl ClassMemberDeclClassDeclSequenceDeclMethodCallDeclClassDiagramMemberDeclSequenceDiagramMemberDecl Declaration JoinPoint crosscutByList: List AOSD Crosscutting in the weaver (,,,,,, ) AOSD Crosscutting in the weaver (,,,,,, ) AOSD Crosscutting in the weaver (, ) every element has crosscutByList two join points per crosscutting interaction AOSD Crosscutting in the weaver Role Binding: bind Line.moveBy, Point.moveBy, Point.setX, Point.setY to Subject.change (,,,,,, ) same thing happens for all kinds of cc AOSD Crosscutting in the weaver 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? (,,,,,, ) (,,,) AOSD Crosscutting in the weaver 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? (,,,,,, ) (,,,) (,,) AOSD Implementation Simple staged approach to weaving 1.role binding 2.inter-type declarations 3.sequence diagrams 4.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 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 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 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 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 University of British Columbia Software Practices Lab Uniform Support for Modeling Crosscutting Structure QUESTIONS?