discussion with gregor kiczales at ubc
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
AO Mechanisms in Demeter 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
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 when traversal reaches object or edge
class & edge names
define visit method
AO Mechanisms in Demeter 5
range of AOP languages
means of … join points
add, compose (and remove) members
signaturesmembersHyper/J
add memberssignaturesclass members static JPM
Demeter traversals
Composition Filters
AspectJ dynamic JPM
JPM
types
message sends & receptions
points in execution call, get, set…
join points
succinct traversal specs
signature & property based object queries
signaturesw/ wildcards & other properties of JPs
identifying
generate traversals
wrappers declarative (filters) imperative (advice)
advice
specifying semantics at
See next slide for changes to Demeter
AO Mechanisms in Demeter 6
range of AOP languages
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
DemeterJ, Demeter/C++ dynamic JPM static JPM 1
static JPM 2 static JPM 3
when traversal reaches object or edge
class members
class membersclass members
visitor method signatures
traversal spec. sclass graph g
class namesclass graph
visitor method bodies
s + g (result = traversal implementation)
add membersclass graph with tokens=grammar (result = parsing and printing implementation)
AO Mechanisms in Demeter 7
range of AOP languages
means of … join points
add memberssignaturesclass members static JPM
DJ dynamic JPM 1
dynamic JPM 2
dynamic JPM 3
AspectJ dynamic JPM
JPM
when traversal reaches object or edge (method traverse)
when traversal reaches object (methods fetch, gather, asList)
nodes in object graphs
points in execution call, get, set…
join points
visitor method signatures
source and targets of traversal
trav. spec. sclass graph gobject graph o
signaturesw/ wildcards & other properties of JPs
identifying
visitor method bodies
method name (fetch, gather, asList)
s+g+o(result = traversal implementation = edges to traverse at nodes in object graph)
advice
specifying semantics at
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
AO design in UML
• Composition Patterns– static JPM (~ Hyper/J)– binds pattern to base code
• UML class & interaction diagrams already crosscut– by-class vs. by-interaction organizations
[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
• 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
Adds traversal methods
to a set of classes
AO Mechanisms in Demeter 17
Demeter static JPM 3: special case of Open 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
Adds parsing methods
to a set of classes
AO Mechanisms in Demeter 18
Demeter dynamic JPM 1: special case of Pointcuts and Advice
• 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
Adds advice to traversal methods
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.
• X– Traversal execution with runtime control (Subtraversal.apply(..))
• X[JP]– Arrival at each object (Functional Visitor only available to nodes)
• A– Regular Java Program (class/fields declarations)
• A[ID]– Class/fields signatures
• A[Eff]– Provide reachability (my understanding is to construct object graph conforming to the class
graph)• B
– Traversal specification and visitor method declarations (including the default one: combine(..))• B[ID]
– Visitor method signatures (or the built-in semantics, for the combine(..))• B[Eff]
– Execute the visitor methods and compute and combine the values and provide the runtime control over the traversal(subset of the traversal graph computed from the traversal specification)
• META
Mixes two models together
Demeter dynamic JPM 4: DJ with Functional Visitor
• X– Traversal execution with runtime control (Subtraversal.apply(..))
• X[JP]– Arrival at each object (Functional Visitor only available to nodes)
• A– Regular Java Program defining traversals (class/fields declarations)
• A[ID]– Method signatures
• A[Eff]– Execute traversal method body
• B– Visitor method declarations (including the default method: combine(..))
• B[ID]– Visitor method signatures (or the built-in semantics, for the combine(..))
• B[Eff]– Execute the visitor methods and compute and combine the values and provide the runtime
control over the traversal• META
Demeter dynamic JPM 4: DJ with Functional Visitor
Taken apart