Pattern Language for Adaptive Programming (AP) - PowerPoint PPT Presentation

About This Presentation
Title:

Pattern Language for Adaptive Programming (AP)

Description:

Loosely couple behavior modification to behavior and structure. ... Structure-shy Behavior Modification. Event-based Coupling. Traversal Advice ... – PowerPoint PPT presentation

Number of Views:45
Avg rating:3.0/5.0
Slides: 76
Provided by: karllie
Category:

less

Transcript and Presenter's Notes

Title: Pattern Language for Adaptive Programming (AP)


1
Pattern Language for Adaptive Programming (AP)
  • Karl Lieberherr
  • Northeastern University

2
Introduction
  • Four Patterns
  • Structure-shy Traversal
  • Selective Visitor
  • Structure-shy Object
  • Class Graph

3
On-line information
  • D www.ccs.neu.edu/research/demeter
  • D is Demeter Home Page
  • SD course home directory
  • Lectures are in SD/lectures

4
Summary
  • Present ideas of AP at a high-level of
    abstraction.
  • Explain concepts independent of tools and
    languages.

5
Vocabulary
  • Pattern Reusable solution to a problem in a
    context.
  • Class graph Class diagram Graph where nodes
    are classes and edges are relationships between
    the classes.
  • Design pattern book Gamma, Helm, Johnson,
    Vlissides 23 design patterns

6
Vocabulary
  • Visitor pattern Define behavior for classes
    without modifying classes.
  • Parser Takes a sequence of tokens and creates a
    syntax tree or object based on a grammar.
  • Grammar a class graph annotated with concrete
    syntax.

7
Overview
  • Patterns a useful way to write down experience.
  • Use a standard format Intent, Motivation,
    Applicability, Solution, Consequences, etc.
  • Patterns are connected and refer to each other.
  • Extended version at D/adaptive-patterns/pattern-
    lang-conv

8
Connections
  • There are several connections between the AP
    patterns and other design patterns.
  • Class Graph is the basis for Structure-shy
    Traversal, Selective Visitor and Structure-shy
    Object.

9
Structure-shy Traversal
  • Intent
  • Succinctly represent a traversal to be performed
    on objects
  • Commit only to navigation strategy and specify
    navigation details later

10
Solve Law of Demeter Dilemma
Small Method Goat
Big Method Goat
11
Structure-shy Traversal
  • Could also be called
  • Adaptive Traversal
  • Structure-shy Walker
  • Adaptive Visitor (significantly improves the
    Visitor pattern)

12
Structure-shy Traversal
  • Motivation
  • Noise in objects for specific task
  • Focus on long-term intent
  • Dont want to attach every method to a specific
    class explicitly. Leads to brittle programs.
  • Small methods problem (example 80 of methods
    are two lines long or shorter)

13
Structure-shy Traversal
  • Applicability
  • Need collaboration of at least two classes.
  • In the extreme case, each data member access is
    done through a succinct traversal specification.
  • Some subgraphs dont have a succinct
    representation, for example a path in a complete
    graph. More generally avoid well connected,
    dense graphs.

14
Structure-shy Traversal
  • Solution
  • Use succinct subgraph specifications
  • Use succinct path set specifications

15
Structure-shy Traversal Solution
  • Traversal Strategy Graphs (Strategies)
  • First stage A strategy is a graph with nodes and
    edges. Nodes are labeled with nodes of a class
    graph. Edges mean all paths.
  • Second stage label edges with constraints
    excluding edges and nodes in class graph
  • Third stage Encapsulated strategies. Use
    symbolic elements and map to class graph.

16
Structure-shy Traversal Solution
  • Traversal Strategy Graphs (Strategies)
  • Simplest useful strategy One Edge. Possible
    syntax
  • from Company to Salary or
  • Company -gt Salary
  • Line graph. Several edges in a line. Possible
    syntax
  • From Company via Employee to Salary
  • Company -gt Employee Employee -gt Salary

17
Structure-shy Traversal Solution
  • Traversal Strategy Graphs (Strategies)
  • Star graph
  • From Company to Personnel, Travel, Employee

Travel
Personnel
Company
Employee
18
UML Class Diagram
busStops
BusRoute
BusStopList
buses
0..
BusStop
BusList
waiting
0..
passengers
Bus
PersonList
Person
0..
19
Traversal Strategy
find all persons waiting at any bus stop on a bus
route
from BusRoute through BusStop to Person
busStops
BusRoute
BusStopList
buses
0..
BusStop
BusList
waiting
0..
passengers
Bus
PersonList
Person
0..
20
Robustness of Strategy
find all persons waiting at any bus stop on a bus
route
from BusRoute through BusStop to Person
villages
BusRoute
BusStopList
buses
VillageList
busStops
0..
0..
BusStop
BusList
Village
waiting
0..
passengers
Bus
PersonList
Person
0..
21
Structure-shy Traversal
  • Consequences
  • Programs become shorter and more powerful. A
    paradox. With less work we achieve more. Polyas
    inventor paradox.
  • Program will adapt to many changes in class
    structure.

22
Structure-shy Traversal
  • Implementation
  • Many different models for succinct traversal
    specifications.
  • Best one Strategies
  • Correct implementation of strategies is tricky.
    See paper by Lieberherr/Patt-Shamir strategies.ps
    in my FTP directory.

23
Structure-shy Traversal
  • Known Uses
  • Adaptive Programming Demeter/C, DemeterJ,
    Dem/Perl, Dem/CLOS etc.
  • Databases (limited use) Structure-shy queries
    See Cole Harrisons Masters Thesis (Demeter Home
    Page)
  • XML XPath
  • Artificial Intelligence (limited use) Minimal
    ontological commitment

24
Nature Analogy
same strategy in different class graphs similar
traversals same seeds in different climates
similar trees
warm climate
cold climate
25
same cone different planes define
similar point sets same strategy different class
graphs define similar path sets
Mathematical Analogy
26
Selective Visitor
  • Intent
  • Loosely couple behavior modification to behavior
    and structure.
  • Would like to write an editing script to modify
    traversal code instead of modifying the
    traversal code manually.

27
Selective Visitor
  • Could also be called
  • Structure-shy Behavior Modification
  • Event-based Coupling
  • Traversal Advice

28
Selective Visitor
  • Motivation
  • Avoid tangling of code for one behavior with code
    for other behaviors.
  • Localize code belonging to one behavior.
  • Compose behaviors.
  • Modify the behavior of a traversal call
    (traversals only traverse).

29
Selective Visitor
  • Applicability
  • Need to add behavior to a traversal.

30
Selective Visitor
  • Solution
  • Use visitor classes and objects.
  • Pass visitor objects as arguments to traversals.
  • Either use naming conventions for visitor methods
    (e.g., before_A()) or extend object-oriented
    language (e.g. before A, before is a new key
    word).

31
Selective Visitor
  • Solution
  • before, after methods for nodes and edges in the
    class graph
  • Activated during traversal as follows
  • Execute before methods
  • Traverse
  • Execute after methods

32
Visitor visits objects
following strategy
Visitor collects information in suitcase
(variables)
33
Selective Visitor
  • Solution Focus on what is important.

SummingVisitor int total init
total 0 before Salary total total
host.get_v() return total
host is object visited
Code between and is Java code
34
Selective Visitor
  • Solution Use of visitor

Company traversal allSalaries(UniversalVisitor
) do S int sumSalaries()
SummingVisitor s new SummingVisitor()
this.allSalaries(s) return
s.get_return_val()
35
Selective Visitor
  • Consequences
  • Easy behavior adjustments Add visitor
  • Reuse of visitors

36
Selective Visitor
summing
counting
  • Consequences Easy behavior enhancement

Company // enhancements in red traversal
allSalaries(UniversalVisitor, UniversalVisitor)
do S float averageSalaries()
SummingVisitor s new SummingVisitor()
CountingVisitor c new CountingVisitor()
this.allSalaries(s, c) return
s.get_return_val() / c.get_return_val()
37
Writing Programs with StrategiesExample of
Adaptive Program
strategy from BusRoute through BusStop to Person
BusRoute traversal waitingPersons(PersonVis
itor) through BusStop to Person //
from is implicit int printWaitingPersons() //
traversal/visitor weaving instr.
waitingPersons(PrintPersonVisitor) PrintPersonVis
itor before Person
PersonVisitor init r 0
Extension of Java keywords traversal
init through bypassing to before after etc.
38
Selective Visitor
  • Consequences
  • Can reuse SummingVisitor and CountingVisitor in
    other applications.

39
Selective Visitor
  • Implementation
  • Translate to object-oriented language.
  • See DemeterJ, for example.

40
Selective Visitor
  • Known uses
  • Propagation patterns use inlined visitor objects
    (see AP book).
  • DemeterJ.
  • The Visitor Design Pattern from the design
    pattern book uses a primitive form of Selective
    Visitor.

41
Differences to Visitor pattern
  • Focus selectively on important classes. Dont
    need a method for each traversed class.
  • Finer control not only one accept method but
    before and after methods for both nodes and edges.

42
Structure-shy Object
  • Intent
  • Make object descriptions for tree objects robust
    to changes of class structure.
  • Make object descriptions for tree objects
    independent of class names.

43
Example
  • Tree tree left ltleftgt Tree right
    ltrightgt Tree ltngt Node.
  • Node int.
  • tree
  • left tree
  • 8
  • right tree
  • left tree
  • 7
  • 3
  • 1

1
3
8
7
new Tree( new Tree(null, null, new Node(8)),
new Tree( new Tree(null, null, new Node(7)),
null, new Node(3)), new Node(1))
44
Example
  • BT tree left ltleftgt BT right ltrightgt
    BT ltngt int.
  • tree
  • left tree
  • 8
  • right tree
  • left tree
  • 7
  • 3
  • 1

1
3
8
7
new Tree( new Tree(null, null, new Node(8)),
new Tree( new Tree(null, null, new Node(7)),
null, new Node(3)), new Node(1))
COMPLETELY BROKEN
STILL CORRECT
45
Flexibility
  • There are many ways to clothe a tree!!
  • clothing syntax
  • Two goals with clothing
  • objects look nice
  • avoid ambiguity two distinct objects must look
    different

46
Example
  • Tree ( ltsubtreesgt TreeList ltngt Node ).
  • TreeList Tree.
  • Node int.
  • ((8) ((7) 3) 1)

1
3
8
7
47
Example bare Tree
  • Tree ltsubtreesgt TreeList ltngt Node.
  • TreeList Tree.
  • Node int.
  • 8 7 3 1
  • ((8) ((7) 3) 1)
  • ((8) (7) (3) 1)

1
3
8
1
7
3
8
7
48
Structure-shy Object
  • Could also be called
  • Object Parsing
  • Grammar
  • AbstractConcrete Syntax

49
Terminology used
  • Grammar G defines a language L(G) as a set of
    sentences. Consider unambiguous grammars only.
  • The parser constructs a concrete syntax tree in
    T(G) from a sentence in L(G).
  • When we delete all literal tokens (not the ones
    representing values) from a concrete syntax tree
    in T(G), we call it an abstract syntax tree in
    O(G) (this is a somewhat limited notion of
    abstract syntax tree).

50
Grammar Data Structure
  • A more general notion of abstract syntax tree
    would be a programmed abstraction of a concrete
    syntax tree.
  • But we dont loose unimportant information when
    we delete the tokens from the way the grammar is
    written!

51
  • Need to turn syntax into an aspect.
  • Concrete syntax tree with all literal

52
Structure-shy Object
  • The point of the Structure-shy object pattern is
  • Grammars can be designed in such a way that
    sentences serve as canonical abstract syntax
    trees. Let G be such a grammar.
  • A particular family of abstract syntax trees is
    selected by writing a grammar G that defines a
    super language of G.
  • G will automate the creation of the abstract
    syntax trees.
  • Example Fig. 15.1 in AP book to Figure 15.9

53
Structure-shy Object
  • The point of the Structure-shy object pattern is
  • Grammars can be designed in such a way that
    sentences serve as canonical abstract syntax
    trees. Let G be such a grammar. G L(G) -gtA(G),
    by parsing.
  • A particular family of abstract syntax trees is
    selected by writing a grammar G that defines a
    super language of G. s in L(G) G -gt A(G)
  • G will automate the creation of the abstract
    syntax trees.
  • Example Fig. 15.1 in AP book to Figure 15.9

54
Structure-shy Object
  • The point of the Structure-shy object pattern is
  • A sentence s G -gt T(G). Constraint s in L(G).
    A sentence maps a grammar to a tree. Start with a
    grammar G0. G is language equivalent to G0. Can
    alter structure of grammar.
  • A sentence is more abstract than a syntax tree
    because a sentence is a mapping of grammars to
    trees.
  • A tree t G -gt L(G). Constraint t in T(G). A
    syntax tree maps a grammar to sentences. but
    there is less freedom. Can only alter concrete
    syntax.
  • Freedom of a dependent function.

55
Structure-shy Object
  • Consider a grammar G0, the language L(G0) and s
    in L(G0) and t in T(G0)
  • A sentence s G -gt T(G). Constraint s in L(G).
    L(G) L(G0). A sentence maps a grammar to a tree.
    Can alter structure of grammar. MUCH FREEDOM.
  • A tree t G -gt L(G). Constraint t in T(G). T(G)
    T(G0). A syntax tree maps a grammar to a
    sentence. Can only alter concrete syntax. LITTLE
    FREEDOM.

56
(No Transcript)
57
Structure-shy Object
  • Grammars can be designed in such a way that
    sentences are more abstract than concrete syntax
    trees.

58
Structure-shy Object
  • Motivation
  • Data maintenance a major problem when class
    structure changes
  • Tedious updating of constructor calls
  • The creational patterns in the design pattern
    book also recognize need

59
Structure-shy Object
  • Applicability
  • Useful in object-oriented designs of any kind.
  • Especially useful for reading and printing
    objects in user-friendly notations. Ideal if you
    control notation.
  • If you see many constructor calls think of
    Structure-shy Object.

60
Structure-shy Object
  • Solution
  • Extend the class structure definitions to define
    the syntax of objects.
  • Each class will define a parse function for
    reading objects and a print visitor for printing
    all or parts of an object.

61
Structure-shy Object
  • Solution
  • Start with familiar grammar formalism and change
    it to make it also a class definition formalism.
    In the Demeter group we use Wirths EBNF
    formalism.
  • Use a parser generator (like YACC or JavaCC) or a
    generic parser.

62
Parsers weave sentences into objects
Structure-shy Object
Problem in OO programs Constructor calls for
compound objects are brittle with respect to
structure changes.
Solution Replace constructor calls by calls to a
parser. Annotate class diagram to make it a
grammar.
Benefit reduce size of code to define objects,
object descriptions are more robust
Correspondence Sentence defines a family of
objects. Adaptive program defines family of
object-oriented programs. In both cases, family
member is selected by (annotated) class graph.
63
Run-time weaving Description
Structure-shy Object
Object as tree
C
Sentence 3 4 5
C
S
M
S
S
A
I

Grammar CompoundOp ltfgtExp ltsgtExp. SimpleInteger.
Exp Simple Compound. Mult. Add. Op
AddMult.
I
I

3
5
4
Object in linear form (Constructor calls)
C M S I 3 C A S I 4 S I 5
SENTENCE IS MORE ROBUST THAN OBJECT
Grammar defined by annotating UML class diagram
64
Structure-shy Object
  • Consequences
  • more robust and shorter object descriptions
  • Need to deal with unique readability with respect
    to an efficient parsing algorithm
  • Can guarantee unique readability by adding more
    syntax
  • debug class structures by reading objects

65
Structure-shy Object
  • Related patterns
  • Creational patterns in design pattern book.
  • Interpreter pattern uses similar idea but fails
    to propose it for general object-oriented design.
  • Structure-shy Object useful in conjunction with
    Prototype pattern.

66
Structure-shy Object
  • Known uses
  • Demeter Tools since 1986, T-gen, applications of
    YACC, programming language Beta and many more.

67
Structure-shy Object
  • References
  • Chapters 11 and 16 of AP book describe details.
  • Exercise
  • Use your favorite grammar notation and modify it
    to also make it a class graph notation.

68
Class Graph
  • Intent
  • Write class relationships once and reuse them
    many times.
  • Generate a visitor library from class graph for
    copying, displaying, printing, checking,
    comparing and tracing of objects.

69
Class Graph
  • Could also be called
  • Class diagram
  • Class dictionary

70
Class Graph
  • Applicability
  • For every application having more than one class.
  • Implementation
  • Preferred Use UML class graph model and notation
  • Use tool to generate visitor library (see
    DemeterJ).

71
UML Class Diagram
busStops
BusRoute
BusStopList
buses
0..
BusStop
BusList
waiting
0..
passengers
Bus
PersonList
Person
0..
72
Class Graph
  • Known uses
  • Almost all object-oriented design methods use
    some form of class diagram. Only DemeterJ
    generates visitor library and allows strategies
    to refer to the class graph.
  • References
  • UML class graphs, see UML doc
  • Demeter class graphs, see chapter 6 of AP book

73
Summary
  • State what has been learned Principles of AP in
    high-level form.
  • How to apply Do homework one and recognize those
    patterns in the thousands of lines Java code.

74
Where to get more information
  • Those patterns will be discussed in much more
    detail.
  • AP book covers the concepts.
  • UML documentation
  • See D for more information.

75
Feedback
  • Please see me after class or send me email if
    you have improvements to those patterns.
  • lieber_at_ccs.neu.edu
Write a Comment
User Comments (0)
About PowerShow.com