Slides for Gregor Kiczales - PowerPoint PPT Presentation

About This Presentation
Title:

Slides for Gregor Kiczales

Description:

Free programmer from detail of some aspect. 11/12/09. DJ. 7 ... Ultimately we are interested in the executable form of the collaboration (Java source code) ... – PowerPoint PPT presentation

Number of Views:32
Avg rating:3.0/5.0
Slides: 38
Provided by: karllie
Category:

less

Transcript and Presenter's Notes

Title: Slides for Gregor Kiczales


1
Slides for Gregor Kiczales
  • Two versions
  • short version Crosscutting capabilities for Java
    and AspectJ through DJ (4 viewgraphs only)
  • long version Controlling tangling and scattering
    ...

2
Crosscutting Capabilities for Java and AspectJ
through DJ
  • Demeter Team

3
Class graph Find undefined things
definedThings
System

Thing

usedThings


Definition
Body
definedThings from System bypassing Body to
Thing usedThings from System through Body to
Thing
4
Java Program Aspectual Method with DJ
  • class System
  • String vi from Thing to edu.neu.ccs.demeter.I
    dent
  • void isDefined(ClassGraph cg)
  • checkDefined(cg, getClasses(cg))
  • HashSet getClasses(ClassGraph cg)
  • String definedThings
  • "from System bypassing Body to Thing"
  • Visitor v new Visitor()
  • HashSet return_val new HashSet()
  • void before(Thing v1)
  • return_val.add(cg.fetch(v1, vi) )
  • public Object getReturnValue()return
    return_val
  • cg.traverse(this, definedThings, v)
  • return (HashSet)v.getReturnValue()

isDefined is a modular unit of crosscutting
implementation. Ad-hoc implementation may cut
across 100 classes.
green traversal black bold structure purple
advice red parameters
5
Java Program Aspectual Method with DJ
  • void checkDefined(ClassGraph cg, final HashSet
    classHash)
  • String usedThings
  • from System through Body to Thing"
  • cg.traverse(this, usedThings, new Visitor()
  • void before(Thing v) Ident vn cg.fetch(v,
    vi)
  • if (!classHash.contains(vn))
  • System.out.println("The object "
    vn
  • " is undefined.")
  • )

6
What DJ adds to AspectJ
  • Point cut definitions based on connectivity in
    class graph.
  • Define point cuts by specifying a (traversal)
    program based on class graph.
  • Point cut reduction (high-level point cut
    designator) free programmer from details of
    class graph. Free programmer from detail of
    some aspect.





7
Control Tangling and Scattering of Class
Structure, Traversals andTraversal Advice
  • Feb. PI Meeting

8
Aspect-Oriented Programming
  • Separating the following cross-cutting concerns
  • Object Structure
  • Traversals through Objects
  • Advice on Traversals
  • New behaviors based on collaborating objects
  • Focus on those four concerns only. They appear
    frequently.

9
Why crosscutting?
overall graph object structure green graph
traversal purple advice
r0
BusList
Route1BusRoute
buses
busStops
BusStopList
Bus15DieselPowered
passengers
CentralSquareBusStop
waiting
PersonList
PersonList
JoanPerson
PaulPerson
SeemaPerson
EricPerson
r
r
10
Why aspects Oblivious
  • Object Structure
  • does not have to know about traversals and advice
    on traversals
  • Traversals
  • dont have to know about advice on traversals
  • Advice on Traversals
  • has to know minimally about object structure and
    traversals

11
Ad-hoc Implementationof three concerns
  • Leads to lots of tangled code with numerous
    disadvantages
  • The question is not how to eliminate the tangling
    but how to reduce it
  • AOP is about tangling control the implementation
    of crosscutting concerns
  • Crosscutting will always lead to some tangling at
    code level

12
Example
  • Check whether all used entities are defined.
  • Object structure, traversal (basically an
    introduction), advice on traversal

13
Find undefined things
definedThings
System

Thing

usedThings


Definition
Body
definedThings from System bypassing Body to
Thing usedThings from System through Body to
Thing
14
Name map
Definition ClassDef Production
Equation
15
High-level description
  • It is useful to have a high-level description of
    the collaboration besides the Java source code.
    Useful documentation.
  • Ultimately we are interested in the executable
    form of the collaboration (Java source code).

16
Collaboration with strategies
  • collaboration checkDef
  • role System
  • out isDefined()(uses getClasses,
    checkDefined)
  • getClasses()(uses definedThings)
  • checkDefined()(uses usedThings)
  • in definedThings
  • from System bypassing Body to Thing
  • in usedThings
  • from System through Body to Thing
  • role Body
  • role Thing
  • role Definition

17
Use of collaboration Adapter
  • Need to provide the expected methods (in methods)
    and provide name map.
  • name map
  • System EquationSystem
  • Definition Equation
  • Body Expression
  • Thing Variable
  • expected methods
  • in definedThings // use default
  • in usedThings // use default

18
What is an aspect?
  • An aspect is a modular unit of crosscutting
    implementation.
  • A Java method is a modular unit.
  • Can we make a Java method an aspect?
  • Yes, we call such methods aspectual methods.
  • They cut across many classes in an ad-hoc
    implementation.

19
Java Program Aspectual Method
  • class System
  • String vi from Thing to edu.neu.ccs.demeter.I
    dent
  • void isDefined(ClassGraph cg)
  • checkDefined(cg, getClasses(cg))
  • HashSet getClasses(ClassGraph cg)
  • String definedThings
  • "from System bypassing Body to Thing"
  • Visitor v new Visitor()
  • HashSet return_val new HashSet()
  • void before(Thing v1)
  • return_val.add(cg.fetch(v1, vi) )
  • public Object getReturnValue()return
    return_val
  • cg.traverse(this, definedThings, v)
  • return (HashSet)v.getReturnValue()

green traversal black bold structure purple
advice red parameters
20
Java Program Aspectual Method
  • void checkDefined(ClassGraph cg, final HashSet
    classHash)
  • String usedThings
  • from System through Body to Thing"
  • cg.traverse(this, usedThings, new Visitor()
  • void before(Thing v) Ident vn cg.fetch(v,
    vi)
  • if (!classHash.contains(vn))
  • System.out.println("The object "
    vn
  • " is undefined.")
  • )

21
After applying name map
  • For now we manually edit the Java program.

22
Java Program with less tangling
  • class EquationSystem
  • String vi from Variable to
    edu.neu.ccs.demeter.Ident
  • void isDefined(ClassGraph cg)
  • checkDefined(cg, getClasses(cg))
  • HashSet getClasses(ClassGraph cg)
  • String definedThings
  • "from EquationSystem bypassing
    Expression to Variable"
  • Visitor v new Visitor()
  • HashSet return_val new HashSet()
  • void before(Variable v1)
  • return_val.add(cg.fetch(v1, vi) )
  • public Object getReturnValue()return
    return_val
  • cg.traverse(this, definedThings, v)
  • return (HashSet)v.getReturnValue()

green traversal black bold structure purple
advice red parameters
23
Java Program with less tangling
  • void checkDefined(ClassGraph cg, final HashSet
    classHash)
  • String usedThings
  • from EquationSystem through Expression
    to Variable"
  • cg.traverse(this, usedThings, new Visitor()
  • void before(Variable v) Ident vn
    cg.fetch(v, vi)
  • if (!classHash.contains(vn))
  • System.out.println("The object "
    vn
  • " is undefined.")
  • )

24
Tangling is localizedScattering eliminated
  • Instead of having code spread across several
    classes, it is localized in one class.
  • Java program is describing the abstract pattern
    behind the computation of interest checking
    whether used entities are defined.
  • Tangling control through abstraction of patterns.
    We abstract away from structure.

25
CS1 UML class diagram ClassG
definedThings from ClassG bypassing Body to
ClassName
Entry
0..
EParse
entries
ClassG
BParse
ClassDef
Body
Part
parts
className
0..
ClassName
Concrete
Abstract
26
CS1UML class diagram ClassG
usedThings from ClassG through Body to ClassName
Entry
0..
EParse
entries
ClassG
BParse
ClassDef
Body
Part
parts
className
0..
ClassName
Concrete
Abstract
27
M1 Equation System
usedThings from EquationSystem through
Expression to Variable
Example x 1.0 . y ( x 4.0). z ( x y).
EquationSystem ltequationsgt List(Equation). Equat
ion ltlhsgt Variable ltrhsgt Expression
.. Variable Ident. Expression Simple
Compound. Simple Variable Numerical. Compound
( Op ltargsgt List(Expression) ). Op Add
Mul. Add . Mul . Numerical float.
28
M1 Equation System
definedThings from EquationSystem bypassing
Expression to Variable
Example x 1.0 . y ( x 4.0). z ( x y).
EquationSystem ltequationsgt List(Equation). Equat
ion ltlhsgt Variable ltrhsgt Expression
.. Variable Ident. Expression Simple
Compound. Simple Variable Numerical. Compound
( Op ltargsgt List(Expression) ). Op Add
Mul. Add . Mul . Numerical float.
29
DJ
  • Is a Java package that supports AOP for the three
    concerns class structure, traversals, and
    traversal advice.
  • Tested by 50 users.
  • Connection to AspectJ both can be used
    simultaneously.

30
Concepts needed(DJ classes)
  • ClassGraph
  • Strategy
  • ObjectGraph
  • ObjectGraphSlice
  • Visitor

31
Adaptive Programming
Strategy
Bold names refer to DJ classes.
is use-case based abstraction of
ClassGraph
defines family of
ObjectGraph
32
Adaptive Programming
Strategy
defines traversals of
ObjectGraph
plus Strategy defines
ObjectGraphSlice
33
Adaptive Programming
Visitor
advises
Traversal
34
AspectJ (Xerox) DJ (NEU)
  • Abstract pointcut
  • set of execution points
  • where to watch
  • Advice
  • what to do
  • Concrete pointcut
  • set notation using regular expressions
  • Abstract object slice
  • set of entry/exit points
  • where to go
  • Visitor
  • what to do
  • Actual object slice
  • traversal strategies

35
AOP AP
  • Program with aspects that correspond to the
    concerns of the programmer.
  • Relieve the programmer from the details of some
    concern.
  • Create robustness to changes in an aspect.
  • AP is about point cut reduction.
  • Example structure-shyness

36
Technology Evolution
Object-Oriented Programming
Tangled structure/behaviors robustness to
structure changes
Other Technologies
Adaptive Programming
Tangled concerns in general (synchronization,
etc.)
Aspect-Oriented Programming
robustness to aspect changes
Aspect-Oriented Programming II
37
What DJ adds to AspectJ
  • Point cut definitions based on connectivity in
    class graph.
  • Define point cuts by specifying a (traversal)
    program based on class graph.
  • Point cut reduction (high-level point cut
    designator) free programmer from details of
    class graph.





Write a Comment
User Comments (0)
About PowerShow.com