Download presentation

Presentation is loading. Please wait.

Published byRiley Stafford Modified over 2 years ago

1
A Calculus of Design Patterns Hong Zhu Dept. of Computing and Electronics Oxford Brookes University Oxford OX33 1HX, Uk

2
Seminar: A Calculus of Design Patterns2 Aug Acknowledgement Ian Bayley and Hong Zhu, A formal Language of Pattern Composition, Proc. of PATTERNS 2010, Nov (in press) Hong Zhu and Ian Bayley, Laws of Pattern Composition, Proc. of ICFEM 2010, Nov (in press) Ian Bayley and Hong Zhu, Formal specification of the variants and behavioural features of design patterns, Journal of Systems and Software Vol.83, No.2, pp209–221 (Feb 2010)

3
Seminar: A Calculus of Design Patterns3 Aug Overview Introduction Operators on patterns Case study 1: The expressiveness GoF suggested compositions Laws of pattern composition Case study 2: the proof of equivalence Representation of composition with overlaps Soundness of the operators Future work

4
Seminar: A Calculus of Design Patterns4 Aug Introduction Software Design Patterns (DP) codified reusable solutions to recurring design problems, increasingly important role in the development of software systems Research on DP identified and catalogued (e.g. Gang of Four book) formally specified (Mik 1998, Taibi 2003, Gasparis et al. 2008, Bayley&Zhu 2009) included in software tools (e.g. PINOT, Mapelsden et al. 2002)

5
Seminar: A Calculus of Design Patterns5 Aug Formal Specification of DPs Formal approaches Eden's approach Formal logic predicates on the structural features of the source code of object-oriented programs (Gasparis et al. 2008) Taibi's approach Formal logic predicates on the structural features of the source code Temporal logic statements for behavioural features Our predicates (Bayley & Zhu, 2007, 2008, 2009) Formal logic predicates for both structural and behavioural features of designs in UML class and sequence diagrams The primitive predicates are induced from GEBNF definition of UML Semi-formal approaches Uses of graphic meta-modelling languages For example: RBML, DPML, PDL, etc. extension of BNF for graphical modelling languages

6
Seminar: A Calculus of Design Patterns6 Aug Example: The Object Adapter DP In GoF book: Indicate where messages can be sent to rather than a component of the pattern! In general, there can be a set of such methods!

7
Seminar: A Calculus of Design Patterns7 Aug Formal Spec of the Object Adapter DP

8
Seminar: A Calculus of Design Patterns8 Aug Example 2: The Composite DP GoF Diagram: In general, there can be many leaves!

9
Seminar: A Calculus of Design Patterns9 Aug Spec of the Composite DP

10
Seminar: A Calculus of Design Patterns10 Aug General Definition In general, a design pattern P can be defined abstractly as an ordered pair, where Pr is a predicate on the domain of some representation of software systems. It specifies the structural and behavioural features of the pattern V is a set of declarations of variables free in Pr. It specifies the components of the pattern. Notations: Let V = { v 1 : T 1, …, v n : T n } The semantics of the specification is a ground predicate in the form: v 1 : T 1 … v n : T n. ( Pr ) Spec ( P ) to denote the predicate above, Vars ( P ) for the set of variables declared in V, and Pred ( P ) for the predicate Pr. m P : a design model m conforms to pattern P v i are variables that range over the type T i of software elements.

11
Seminar: A Calculus of Design Patterns11 Aug Pattern Composition Why compose patterns Patterns are usually to be found composed with each other in real applications In practice: Annotation:Role representation: In graphic diagram Taibis work 2006 pattern composition is a combination of formal statements of structural and behavioural features of patterns Illustrated by an example on how two patterns can be composed Bayley &Zhu, 2008 One DP composition operator with a notion of overlaps, which can be One-to-One overlaps One-to-Many overlaps Many-to-many overlaps

12
Seminar: A Calculus of Design Patterns12 Aug Example of Pattern Composition

13
Seminar: A Calculus of Design Patterns13 Aug Overview of Our Approach We define a set of six operators on DPs so that compositions of DPs can be formally represented as expressions Restriction: P Pr P Superposition: P P P Extension: P V Pr P Flatten: P V P Generalisation: P V P Lift: P V P We propose a set of algebraic laws to reason about the equivalence of DP compositions (i.e. expressions)

14
Seminar: A Calculus of Design Patterns14 Aug Restriction Operator P[c] Let P be a given pattern and c be a predicate defined on the components of P. A restriction of P with constraint c, written as P [ c ], is the pattern obtained from P by imposing the predicate c as an additional condition on the pattern. Formally,

15
Seminar: A Calculus of Design Patterns15 Aug Example A variant of the Composite pattern in which there is only one leaf can be formally defined as follows. Composite 1 = Composite [ ||Leaves|| = 1 ] called Composite 1 in the sequel

16
Seminar: A Calculus of Design Patterns16 Aug Superposition Operator P * Q Let P and Q be two patterns. the component variables of P and Q are disjoint, i.e., Vars ( P ) Vars ( Q ) =. Definition: The superposition of P and Q, written P * Q, is a pattern that consists of both pattern P and pattern Q as is formally defined as follows.

17
Seminar: A Calculus of Design Patterns17 Aug Example The superposition of Composite and Adapter patterns: Composite * Adapter It requires each instance to contain one part that satisfies the Composite pattern and another that satisfies the Adapter pattern. These parts may or may not overlap, The following expression does enforce an overlap, requiring that a class in Leaves of the Composite be the target of an Adapter.

18
Seminar: A Calculus of Design Patterns18 Aug Extension Operator P# ( V c ) Let P be a pattern, V be a set of variable declarations that are disjoint with P 's component variables, i.e., Vars ( P ) V = c be a predicate with variables in Vars ( P ) V. Definition: The extension of pattern P with components V and linkage condition c, written as P# ( V c ), is defined as follows.

19
Seminar: A Calculus of Design Patterns19 Aug Flatten Operator P x\ x' Let P be a pattern, Vars ( P )= { x : P ( T ), x 1 : T 1, …, x k : T k }, Pred ( P )= p ( x, x 1,…, x k ), and x' Vars ( P ). Definition: The flattening of P on variable x, written P x\ x', is the pattern that has the following property. where the power set of T We also write P x

20
Seminar: A Calculus of Design Patterns20 Aug Example The single-leaf variant of the Composite pattern Composite 1 can also be defined as follows. Composite 1 = Composite Leaves \ Leaf

21
Seminar: A Calculus of Design Patterns21 Aug Notations From the definition, we have the following property. For x 1 x 2 and x 1 x 2, We can overload the operator to a set of component variables Let X be a subset of P's component variables all of power set type, i.e., X={x 1 : P(T 1 ), …, x n : P(T n )} Vars(P), n 1 X'={x' 1, …, x' n } X' Vars(P) =. Notation: P X \ X' to denote P x 1 \ x' 1 … x n \ x' n. We also write P X

22
Seminar: A Calculus of Design Patterns22 Aug Generalisation Operator P x\x' Let P be a pattern, x Vars(P)={x : T, x 1 :T 1, …, x k :T k }. Definition: The generalisation of P on variable x, written P x\x', is defined as follows. Notation: Similar to the operator, we also write P x, and P X

23
Seminar: A Calculus of Design Patterns23 Aug Example We can define the Composite pattern as a generalisation of the single-leaf variant Composite 1 : Composite = Composite 1 Leaf \ Leaves

24
Seminar: A Calculus of Design Patterns24 Aug Lift Operator Let P be a pattern CVars(P)={x 1 :T 1, …, x n : T n }, n>0 OPred(P)=p(x 1, …, x n ). X={x 1, …, x k }, 1 k < n, be a subset of the variables in the pattern. Definition: The lifting of P with X as the key, written P X, is the pattern defined as follows. the existentially quantified class components the remainder of the predicate

25
Seminar: A Calculus of Design Patterns25 Aug Example

26
Seminar: A Calculus of Design Patterns26 Aug Example Notation: P[x' := x] : systematically renaming x to x; P[v:= x=y] : the syntactic sugar for P[x=y][v:= x][v:=y]; P[v:= x y]: abbreviates P[x y][v:= x]

27
Seminar: A Calculus of Design Patterns27 Aug Case Study Goal: to demonstrate the expressiveness of the operators Subjects of the case study: In the GoF book, the documentation for each pattern concludes with a brief section entitled Related Patterns. It compares and contrasts patterns, it makes suggestions for how other patterns may be used with the one under discussion. Example: page 106 of the GoF book A Composite is what the builder often builds''. This can be formally specified as follows. (Builder * Composite) [Product = Component]. Method: to formalise them all as expressions with The operators from this paper Formal logic predicates specifying the patterns in our previous work (Bayley&Zhu 2009)

28
Seminar: A Calculus of Design Patterns28 Aug Results of The Case Study

29
Seminar: A Calculus of Design Patterns29 Aug. 2010

30
Seminar: A Calculus of Design Patterns30 Aug Summary of Case Study Results Five new arrows have been added to the GoF diagram (numbered in bold font) discussed in GoF main text but omitted from its diagram We were able to formalise them Four arrows from the original diagram were not formalised (labelled with asterisks) Composite and Interpreter: is a specialisation relation, which can be formally proved; see (Bayley & Zhu 2007). Decorator and Strategy: is a comparison of the two, not a composition suggestion, Strategy and Template Method: as above. Iterator and Visitor: it is mentioned in GoF only on the diagram, but not expanded upon in the main text. The case study has demonstrated that the operators defined in this paper are expressive to define compositions of design patterns.

31
Seminar: A Calculus of Design Patterns31 Aug Algebraic Laws of the Operators Let P and Q be design patterns. Definition: (Specialisation relation) Let P and Q be design patterns. Pattern P is a specialisation of Q, written P Q, if for all models m, whenever m conforms to P, then, m also conforms to Q. Definition: (Equivalence relation) Pattern P is equivalent to Q, written P = Q, if P Q and Q P. Lemma: m |= P

32
Seminar: A Calculus of Design Patterns32 Aug The TRUE and FALSE Patterns Definition: Pattern TRUE is the pattern such that for all models m, m |= TRUE. Pattern FALSE is the pattern such that for no model m, m |= FALSE. Lemma For all patterns P, Q and R, we have that

33
Seminar: A Calculus of Design Patterns33 Aug Laws of Restriction Let vars(p) denote the set of free variables in a predicate p. For all predicates c, c 1, c 2 such that vars(c), vars(c 1 ) and vars(c 2 ) Vars(P), the following equalities hold.

34
Seminar: A Calculus of Design Patterns34 Aug Laws of Superposition For all patterns P and Q, we have the following equations. From this and reflexivity of, it follows that superposition is idempotent. TRUE and FALSE are the unit and zero of superposition. Superposition is also commutative and associative

35
Seminar: A Calculus of Design Patterns35 Aug Laws of Extension Let U be any set of component variables that is disjoint to Vars ( P ), and c 1, c 2 be any given predicates such that vars ( c i ) Vars ( P ) U, i=1,2. Let U and V be any sets of component variables that are disjoint to Vars ( P ) and to each other, c 1 and c 2 be any given predicates vars ( c 1 ) Vars ( P ) U and vars ( c 2 ) Vars ( P ) V.

36
Seminar: A Calculus of Design Patterns36 Aug Laws of Flattening and Generalisation

37
Seminar: A Calculus of Design Patterns37 Aug Laws Connecting Several Operators For all predicates c such that vars ( c ) Vars ( P ), For all X Vars ( P ), For all X Vars ( P ) Vars ( Q ), where

38
Seminar: A Calculus of Design Patterns38 Aug For all sets of variables X such that X vars(P) =, and all predicates c such that vars(c) (Vars(P) X), where For all x Vars(P) such that x : P(T)

39
Seminar: A Calculus of Design Patterns39 Aug. 2010

40
Seminar: A Calculus of Design Patterns40 Aug where

41
Seminar: A Calculus of Design Patterns41 Aug Example of Proving Equivalence (1) We have seen the following as examples of the operators: Composite 1 = Composite [ ||Leaves|| = 1 ] Composite 1 = Composite Leaves \ Leaf Composite = Composite 1 Leaf \ Leaves We can prove that: Composite [ ||Leaves|| = 1 ] = Composite Leaves \ Leaf Composite= (Composite Leaves \ Leaf) Leaf \ Leaves Composite 1 =(Composite 1 Leaf \ Leaves) Leaves \ Leaf

42
Seminar: A Calculus of Design Patterns42 Aug Proof of Composite [ ||Leaves|| = 1 ] = Composite Leaves \ Leaf For all sets X, we have that ||X||=1 x (X={x}) Therefore, Composite[ ||Leaves||=1] = Composite [ Leaf (Leaves={Leaf}) ] = Composite # (Leaf Leaves={Leaf}) = Composite Leaves \ Leaf

43
Seminar: A Calculus of Design Patterns43 Aug Example of Proving Equivalence (2) Two ways of composition of the Composite and the Adapter patterns Express the compositions as expressions that consist of the operators Apply the algebraic laws to prove that they are equivalent

44
Seminar: A Calculus of Design Patterns44 Aug First Way of Composition One of the Leaves in the Composite pattern is the Target in the Adapter pattern. This leaf is renamed as the AdaptedLeaf. Lift the adapted leaf to enable several of these Leaves to be adapted. lift the OneAdaptedLeaf pattern with AdaptedLeaf as the key flatten those components in the composite part of the pattern (i.e. the components in the Composite pattern remain unchanged).

45
Seminar: A Calculus of Design Patterns45 Aug. 2010

46
Seminar: A Calculus of Design Patterns46 Aug Second Way of Composition Lift the Adapter with target as the key Superpose it to the Composite patterns We can prove that the two ways are equivalent by applying the algebraic laws.

47
Seminar: A Calculus of Design Patterns47 Aug Conclusion Work in progress and future work The uses of theorem provers for automated reasoning about the compositions of design patterns The soundness of the algebraic laws The completeness of the algebraic laws

Similar presentations

© 2016 SlidePlayer.com Inc.

All rights reserved.

Ads by Google