Discussion with Gregor Kiczales at UBC - PowerPoint PPT Presentation

discussion with gregor kiczales at ubc n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Discussion with Gregor Kiczales at UBC PowerPoint Presentation
Download Presentation
Discussion with Gregor Kiczales at UBC

play fullscreen
1 / 21
Download Presentation
Discussion with Gregor Kiczales at UBC
182 Views
jamese
Download Presentation

Discussion with Gregor Kiczales at UBC

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Discussion with Gregor Kiczales at UBC • Ontology of AOP • Ontology is the study of what there is, an inventory of what exists. An ontological commitment is a commitment to an existence claim for certain entities. • Slides 2 - 5 and the last one are Gregor’s An ontology is, in simple terms, a collection of concepts with relations among them plus constraints on the relations. AO Mechanisms in Demeter

  2. basis of crosscutting • a join point model (JPM) has 3 critical elements • what are the join points • in AspectJ • points in runtime call graps members • means of identifying join points • in AspectJ • signatures (plus …) • means of specifying semantics at join points • in AspectJ • advice • define members AO Mechanisms in Demeter

  3. basis of crosscutting • a join point model (JPM) has 3 critical elements • what are the join points • in AspectJ • points in runtime call graph • class members • means of identifying join points • in AspectJ • pointcuts • member signatures (plus …) • means of specifying semantics at join points • in AspectJ • advice • define members dynamic JPMstatic JPM AO Mechanisms in Demeter

  4. range of AOP languages AO Mechanisms in Demeter

  5. means of … join points JPM join points identifying specifying semantics at AspectJ dynamic JPM points in execution call, get, set… signaturesw/ wildcards & other properties of JPs advice static JPM class members signatures add members Composition Filters message sends & receptions signature & property based object queries wrappers declarative (filters) imperative (advice) Hyper/J members signatures add, compose (and remove) members Demeter traversals types succinct traversal specs generate traversals range of AOP languages See next slide for changes to Demeter AO Mechanisms in Demeter

  6. range of AOP languages AO Mechanisms in Demeter

  7. means of … join points JPM join points identifying specifying semantics at AspectJ dynamic JPM points in execution call, get, set… signaturesw/ wildcards & other properties of JPs advice static JPM class members signatures add members DJ dynamic JPM 1 dynamic JPM 2 dynamic JPM 3 when traversal reaches object or edge (method traverse) when traversal reaches object (methods fetch, gather, asList) nodes in object graphs visitor method signatures source and targets of traversal trav. spec. s class graph g object graph o visitor method bodies method name (fetch, gather, asList) s+g+o(result = traversal implementation = edges to traverse at nodes in object graph) range of AOP languages AO Mechanisms in Demeter

  8. Composing join point models • Traversal Spec JPM: In Demeter we use traversal specifications and the class graph to define a traversal implementation (either static or dynamic) • Visitor JPM: The result of Traversal Spec. JPM is used to define a second JPM: • The traversal implementation defines nodes and edge visits. • Visitor signatures define the nodes and edges where additional advice is needed: they are the means of identifying join points. • The means of specifying semantics at join points are the visitor bodies. AO Mechanisms in Demeter

  9. DJ: dynamic JPM 3 • The join points are nodes in object graphs. They are not dynamic call graph join points nor class members! • The means of identifying the join points for a given object graph o are a strategy s and the class graph g. o must conform to g. • The means of specifying the semantics at the join points are again s and g. See paper with Mitch Wand for the formal details behind this JPM. AO Mechanisms in Demeter

  10. DemeterJ: static JPM 1 • The means of identifying the join points and of specifying the semantics at the join points are the same. • The reason is that s+g both • select the classes that will get traversal semantics • determine the details of the traversal semantics AO Mechanisms in Demeter

  11. DemeterJ: static JPM 3 • The means of identifying the join points (class members) is done by the class graph. • When we add tokens to the class graph we get a grammar that contains instructions for parsing and printing behavior. • A grammar is an aspect (external representation aspect): the adhoc implementation cuts across all classes. AO Mechanisms in Demeter

  12. foo dynamic JPM (~ AspectJ) what happens in pattern bar Composition Patterns static JPM (~ Hyper/J) binds pattern to base code UML class & interaction diagrams already crosscut by-class vs. by-interaction organizations AO design in UML [Clarke, Walker] AO Mechanisms in Demeter

  13. Masuhara/Kiczales Modeling Framework for AO Mechanisms • A and B: languages • X: result domain of weaving process • X[JP]: join points in X • A[ID], B[ID]: identify join points in X • A[Eff], B[Eff]: effecting semantics at jps • META: parameterize weaving process AO Mechanisms in Demeter

  14. Masuhara/Kiczales Modeling Framework for AO Mechanisms • X • X[JP] • A • A[ID] • A[Eff] • B • B[ID] • B[Eff] • META AO Mechanisms in Demeter

  15. Demeter static JPM 1: special case of Open Classes Adds traversal methods to a set of classes • X • Combined program • X[JP] • c declarations • A • c declarations including the class graph • A[ID] • Method signatures • A[Eff] • B • Traversal specifications • B[ID] • c names • B[Eff] • META • Traversal semantics: rules for translating traversal specifications to methods AO Mechanisms in Demeter

  16. Demeter static JPM 2: Open Classes See paper. AO Mechanisms in Demeter

  17. Demeter static JPM 3: special case of Open Classes Adds parsing methods to a set of classes • X • Combined program • X[JP] • c declarations • A • c declarations including the class graph • A[ID] • Method signatures • A[Eff] • B • Class dictionary (class graph enhanced with tokens defining the syntax addition) • B[ID] • c names • B[Eff] • META • rules for translating class dictionary to parsing methods AO Mechanisms in Demeter

  18. Demeter dynamic JPM 1: special case of Pointcuts and Advice Adds advice to traversal methods • X • Traversal execution • X[JP] • Arrival at each object and has-a edge • A • Traversal methods • A[ID] • Method signatures • A[Eff] • Execute traversal method body • B • Visitor method declarations (serves as advice) • B[ID] • Visitor method signatures (serves as pointcut) • B[Eff] • Execute visitor method bodies • META • none AO Mechanisms in Demeter

  19. Demeter dynamic JPM 2: special case of TRAV For methods fetch, gather and asList: special advice AO Mechanisms in Demeter

  20. Demeter dynamic JPM 3 • X • Object graphs • X[JP] • Nodes in object graphs • A • Class graph • A[ID] • Class names • A[Eff] • B • Traversal specification • B[ID] • Class names • B[Eff] • Edges to traverse at node in object graph • META • Rules for traversal order: depth-first, breadth-first, left-to-right, etc. AO Mechanisms in Demeter

  21. Conclusions • The Modelling Framework by Masuhara/Kiczales nicely captures the different AO mechanisms worked on by the Demeter team. AO Mechanisms in Demeter