software design modelling and analysis in uml
play

Software Design, Modelling and Analysis in UML Lecture 09: Class - PowerPoint PPT Presentation

Software Design, Modelling and Analysis in UML Lecture 09: Class Diagrams IV 2012-11-27 09 2012-11-27 main Prof. Dr. Andreas Podelski, Dr. Bernd Westphal Albert-Ludwigs-Universit at Freiburg, Germany Contents & Goals


  1. Software Design, Modelling and Analysis in UML Lecture 09: Class Diagrams IV 2012-11-27 – 09 – 2012-11-27 – main – Prof. Dr. Andreas Podelski, Dr. Bernd Westphal Albert-Ludwigs-Universit¨ at Freiburg, Germany

  2. Contents & Goals Last Lectures: • Started to discuss “associations”, the general case. This Lecture: • Educational Objectives: Capabilities for following tasks/questions. • Cont’d: Please explain this class diagram with associations. • When is a class diagram a good class diagram? • What are purposes of modelling guidelines? (Example?) • Discuss the style of this class diagram. • Content: • Treat “the rest”. – 09 – 2012-11-27 – Sprelim – • Where do we put OCL constraints? • Modelling guidelines, in particular for class diagrams (following [Ambler, 2005]) 2 /42

  3. Associations: The Rest – 09 – 2012-11-27 – main – 3 /42

  4. The Rest Recapitulation : Consider the following association: � r : � role 1 : C 1 , µ 1 , P 1 , ξ 1 , ν 1 , o 1 � , . . . , � role n : C n , µ n , P n , ξ n , ν n , o n �� • Association name r and role names / types role i / C i induce extended system states λ . • Multiplicity µ is considered in OCL syntax. • Visibility ξ / Navigability ν : well-typedness. Now the rest : • Multiplicity µ : we propose to view them as constraints. – 09 – 2012-11-27 – Sassocrest – • Properties P i : even more typing. • Ownership o : getting closer to pointers/references. • Diamonds : exercise. 4 /42

  5. Visibility Not so surprising: Visibility of role-names is treated completely similar to visi- bility of attributes, namely by typing rules . Question : given D 1 x : Int C ξ role is the following OCL expression well-typed or not (wrt. visibility): context C inv : self . role .x > 0 – 09 – 2012-11-27 – Sassocrest – 5 /42

  6. Visibility Not so surprising: Visibility of role-names is treated completely similar to visi- bility of attributes, namely by typing rules . Question : given D 1 x : Int C ξ role is the following OCL expression well-typed or not (wrt. visibility): context C inv : self . role .x > 0 Basically same rule as before: (analogously for other multiplicities) – 09 – 2012-11-27 – Sassocrest – A, B ⊢ expr 1 : τ C ( Assoc 1 ) , µ = 0 .. 1 or µ = 1 , A, B ⊢ role ( expr 1 ) : τ D ξ = + , or ξ = − and C = B � r : . . . � role : D, µ, , ξ, , � , . . . � role ′ : C, , , , , � , . . . � ∈ V 5 /42

  7. Navigability Navigability is similar to visibility: expressions over non-navigable association ends ( ν = × ) are basically type-correct, but forbidden . Question : given C × x : Int D role is the following OCL expression well-typed or not (wrt. navigability): context D inv : self . role .x > 0 – 09 – 2012-11-27 – Sassocrest – 6 /42

  8. Navigability Navigability is similar to visibility: expressions over non-navigable association ends ( ν = × ) are basically type-correct, but forbidden . Question : given C × x : Int D role is the following OCL expression well-typed or not (wrt. navigability): context D inv : self . role .x > 0 The standard says: – 09 – 2012-11-27 – Sassocrest – • ’ − ’: navigation is possible • ’ × ’: navigation is not possible • ’ > ’: navigation is efficient So : In general, UML associations are different from pointers/references! But : Pointers/references can faithfully be modelled by UML associations. 6 /42

  9. The Rest of the Rest Recapitulation : Consider the following association: � r : � role 1 : C 1 , µ 1 , P 1 , ξ 1 , ν 1 , o 1 � , . . . , � role n : C n , µ n , P n , ξ n , ν n , o n �� • Association name r and role names / types role i / C i induce extended system states λ . • Multiplicity µ is considered in OCL syntax. • Visibility ξ / Navigability ν : well-typedness. Now the rest : • Multiplicity µ : we propose to view them as constraints. – 09 – 2012-11-27 – Sassocrest – • Properties P i : even more typing. • Ownership o : getting closer to pointers/references. • Diamonds : exercise. 7 /42

  10. Multiplicities as Constraints Recall : The multiplicity of an association end is a term of the form: µ ::= ∗ | N | N..M | N.. ∗ | µ, µ ( N, M ∈ N ) Proposal : View multiplicities (except 0 .. 1 , 1 ) as additional invariants/constraints. – 09 – 2012-11-27 – Sassocrest – 8 /42

  11. Multiplicities as Constraints Recall : The multiplicity of an association end is a term of the form: µ ::= ∗ | N | N..M | N.. ∗ | µ, µ ( N, M ∈ N ) Proposal : View multiplicities (except 0 .. 1 , 1 ) as additional invariants/constraints. Recall : we can normalize each multiplicity µ to the form N 1 ..N 2 , . . . , N 2 k − 1 ..N 2 k where N i ≤ N i +1 for 1 ≤ i ≤ 2 k , N 1 , . . . , N 2 k − 1 ∈ N , N 2 k ∈ N ∪ {∗} . – 09 – 2012-11-27 – Sassocrest – 8 /42

  12. Multiplicities as Constraints µ = N 1 ..N 2 , . . . , N 2 k − 1 ..N 2 k where N i ≤ N i +1 for 1 ≤ i ≤ 2 k , N 1 , . . . , N 2 k − 1 ∈ N , N 2 k ∈ N ∪ {∗} . – 09 – 2012-11-27 – Sassocrest – 9 /42

  13. Multiplicities as Constraints µ = N 1 ..N 2 , . . . , N 2 k − 1 ..N 2 k where N i ≤ N i +1 for 1 ≤ i ≤ 2 k , N 1 , . . . , N 2 k − 1 ∈ N , N 2 k ∈ N ∪ {∗} . Define µ C OCL ( role ) := context C inv : ( N 1 ≤ role -> size () ≤ N 2 ) or . . . or ( N 2 k − 1 ≤ role -> size () ≤ N 2 k ) � �� � omit if N 2 k = ∗ for each µ � = 0 .. 1 , µ � = 1 , � r : . . . , � role : D, µ, , , , � , . . . , � role ′ : C, , , , , � , . . . � ∈ V or � r : . . . , � role ′ : C, , , , , � , . . . , � role : D, µ, , , , � , . . . � ∈ V, role � = role ′ . And define – 09 – 2012-11-27 – Sassocrest – µ C OCL ( role ) := context C inv : not ( oclIsUndefined ( role )) for each µ = 1 . Note : in n -ary associations with n > 2 , there is redundancy. 9 /42

  14. Multiplicities as Constraints Example µ C OCL ( role ) = context C inv : ( N 1 ≤ role -> size () ≤ N 2 ) or . . . or ( N 2 k − 1 ≤ role -> size () ≤ N 2 k ) CD : C role 1 0 .. 1 v : Int 4 , 17 role 2 role 3 3 .. ∗ Inv ( CD ) = • { context C inv : 4 ≤ role 2 -> size () ≤ 4 or 17 ≤ role 2 -> size () ≤ 17 } – 09 – 2012-11-27 – Sassocrest – = { context C inv : role 2 -> size () = 4 or role 2 -> size () = 17 } • ∪ { context C inv : 3 ≤ role 3 -> size () } 10 /42

  15. Why Multiplicities as Constraints? More precise, can’t we just use types ? (cf. Slide 26) • µ = 0 .. 1 , µ = 1 : – 09 – 2012-11-27 – Sassocrest – 11 /42

  16. Why Multiplicities as Constraints? More precise, can’t we just use types ? (cf. Slide 26) • µ = 0 .. 1 , µ = 1 : many programming language have direct correspondences (the first corresponds to type pointer, the second to type reference) — therefore treated specially. • µ = ∗ : – 09 – 2012-11-27 – Sassocrest – 11 /42

  17. Why Multiplicities as Constraints? More precise, can’t we just use types ? (cf. Slide 26) • µ = 0 .. 1 , µ = 1 : many programming language have direct correspondences (the first corresponds to type pointer, the second to type reference) — therefore treated specially. • µ = ∗ : could be represented by a set data-structure type without fixed bounds — no problem with our approach, we have µ OCL = true anyway. • µ = 0 .. 3 : – 09 – 2012-11-27 – Sassocrest – 11 /42

  18. Why Multiplicities as Constraints? More precise, can’t we just use types ? (cf. Slide 26) • µ = 0 .. 1 , µ = 1 : many programming language have direct correspondences (the first corresponds to type pointer, the second to type reference) — therefore treated specially. • µ = ∗ : could be represented by a set data-structure type without fixed bounds — no problem with our approach, we have µ OCL = true anyway. • µ = 0 .. 3 : use array of size 4 — if model behaviour (or the implementation) adds 5th identity, we’ll get a runtime error, and thereby see that the constraint is violated. Principally acceptable , but: checks for array bounds everywhere...? • µ = 5 .. 7 : – 09 – 2012-11-27 – Sassocrest – 11 /42

  19. Why Multiplicities as Constraints? More precise, can’t we just use types ? (cf. Slide 26) • µ = 0 .. 1 , µ = 1 : many programming language have direct correspondences (the first corresponds to type pointer, the second to type reference) — therefore treated specially. • µ = ∗ : could be represented by a set data-structure type without fixed bounds — no problem with our approach, we have µ OCL = true anyway. • µ = 0 .. 3 : use array of size 4 — if model behaviour (or the implementation) adds 5th identity, we’ll get a runtime error, and thereby see that the constraint is violated. Principally acceptable , but: checks for array bounds everywhere...? • µ = 5 .. 7 : – 09 – 2012-11-27 – Sassocrest – could be represented by an array of size 7 — but: few programming languages/data structure libraries allow lower bounds for arrays (other than 0 ). If we have 5 identities and the model behaviour removes one, this should be a violation of the constraints imposed by the model . The implementation which does this removal is wrong . How do we see this...? 11 /42

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend