Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "A Calculus of Design Patterns Hong Zhu Dept. of Computing and Electronics Oxford Brookes University Oxford OX33 1HX, Uk"— Presentation transcript:

1 A Calculus of Design Patterns Hong Zhu Dept. of Computing and Electronics Oxford Brookes University Oxford OX33 1HX, Uk Email: hzhu@brookes.ac.uk

2 Seminar: A Calculus of Design Patterns2 Aug. 2010 Acknowledgement Ian Bayley and Hong Zhu, A formal Language of Pattern Composition, Proc. of PATTERNS 2010, Nov. 2010. (in press) Hong Zhu and Ian Bayley, Laws of Pattern Composition, Proc. of ICFEM 2010, Nov. 2010. (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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 Formal Spec of the Object Adapter DP

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

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

10 Seminar: A Calculus of Design Patterns10 Aug. 2010 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. 2010 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. 2010 Example of Pattern Composition

13 Seminar: A Calculus of Design Patterns13 Aug. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 Example

26 Seminar: A Calculus of Design Patterns26 Aug. 2010 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. 2010 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. 2010 Results of The Case Study

29 Seminar: A Calculus of Design Patterns29 Aug. 2010

30 Seminar: A Calculus of Design Patterns30 Aug. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 Laws of Flattening and Generalisation

37 Seminar: A Calculus of Design Patterns37 Aug. 2010 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. 2010 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. 2010 where

41 Seminar: A Calculus of Design Patterns41 Aug. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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. 2010 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


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

Similar presentations


Ads by Google