Presentation is loading. Please wait.

Presentation is loading. Please wait.

By Karen Richart. The Object Constraint Language (OCL)  Formal specification language that could be used for constraining the model elements that occur.

Similar presentations


Presentation on theme: "By Karen Richart. The Object Constraint Language (OCL)  Formal specification language that could be used for constraining the model elements that occur."— Presentation transcript:

1 By Karen Richart

2 The Object Constraint Language (OCL)  Formal specification language that could be used for constraining the model elements that occur in a UML diagram.

3 The Object Constraint Language (OCL)  Formal specification language that could be used for constraining the model elements that occur in a UML diagram. The Java Modeling Language (JML)  Design for specifying java classes and interfaces.

4 Motivation  To be able to map UML object oriented designs with OCL constraints to Java classes annotated with JML specifications

5 WHY?  Map object oriented design models expressed in UML and OCL to Java classes annotated with JML specifications  Development of Java application using UML/OCL, JML for later stages  Can use tools that support JML to reason about specifications, testing and verification  JML same notation as Java

6 Basic TypesBasic Types OCL  Boolean  Integer  Real  String JML (Java)  Boolean  int  float /double  String

7 Boolean Operators  μ ( b1 and b2 ) = μ ( b1 ) && μ ( b2 )  μ ( b1 or b2 ) = μ ( b1 ) || μ ( b2 )  μ ( b1 implies b2 ) = μ ( b1 ) ==> μ ( b2 )  μ ( not b1 ) = ! μ ( b1 ) and - && or - || implies - ==> not - !

8 Collection OperatorsCollection Operators OCL  Collection(T)  Set(T)  Bag(T)  Sequence(T) JML  Object VS value collections  JMLObjectSet/JMLValueS et  JMLObjectBag/JMLValue Bag  JMLObjectSequence/JML ValueSequence

9 JMLValueSet VS JMLObjectSet JMLValueSet  (\forall JMLType e; μ ( s ).has(e); e instanceof JMLLong) JMLObjectSet  (\forall Object e; μ ( s ).has(e); e instanceof T) Set(Person) (\forall Object p; μ ( s ).has(p); p instanceof Person)

10 Common OperatorsCommon Operators  μ (c->size()) = μ (c).size()  μ (c->includes(e)) = μ ( c ).has( μ ( e ) )  μ (c->excludes(e)) = ! μ ( c ).has( μ ( e ) ).

11 What about excludesAll()?What about excludesAll()?  c1->excludesAll(c2)  μ ( c1->excludesAll(c2) ) =  (\forAll T e; μ ( c2 ).has(e);! μ ( c1 ).has(e))

12 Other operatorsOther operators  μ (s->union(s1)) = μ ( s ).union( μ ( s1 ) )  μ (s->intersection(s1)) = μ ( s ).intersection( μ ( s1 ) )  μ (s->union(b)) = μ ( s ).toBag().union( μ ( b ) )

13 Iterator ExpressionsIterator Expressions  μ (c->exists(e : T | p(e))) = (\exists T e; μ ( c ).has(e); μ ( p )) μ (c->select(e : T | p(e))) = new JMLObjectSet{T e | μ ( c ).has(e) && μ ( p )}

14 Operations not defined in Java  Library for OCL type that facilitates mapping  Including classes for the collection types along with their operations  s->op(..) To s.op(.. )

15 max() class OclIntegerOperations { static public int max(int i1, int i2){ if (i1 > i2) {return i1;} else {return i2;} } static public int min(int i1, int i2){ if (i1 < i2) {return i1;} else {return i2;}} } i1.max(i2) μ (i1.max(i2)) = OclIntegerOperations.max(i1,i2)

16 Collections  public class OclObjectSet extends JMLObjectSet{ public boolean includes(Object e) {this.has(e);} //@ is the argument ‘==’ to one of the objects in the set public int size() {this.size()}; //@ number of elements in the set public boolean notEmpty() {!isEmpty(); } //@ is the set not empty? }

17 context Title Inv: availableCopies > 0 = copies->exists(isAvailable) availableCopies >0 availableCopies >0 (\exists Copy c; copies.includes(c); c.isAvailable)(\exists Copy c; copies.includes(c); c.isAvailable)

18 Exercise Translate the following OCL constraint to JML

19 Solution ?Solution ? /*@ requires question->excludes(q) = !question.has( q ); @ ensures question == \old(question.union(q)); @*/

20 Thank YouThank You


Download ppt "By Karen Richart. The Object Constraint Language (OCL)  Formal specification language that could be used for constraining the model elements that occur."

Similar presentations


Ads by Google