Download presentation
Presentation is loading. Please wait.
Published byRodrigo Greve Modified over 9 years ago
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.