Download presentation

Presentation is loading. Please wait.

Published byRodrigo Greve Modified over 3 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

OK

® Eurostep.ESUKPC20.000030v0.1©Copyright Eurostep Limited An Introduction to ISO STEP Part 25 David Price.

® Eurostep.ESUKPC20.000030v0.1©Copyright Eurostep Limited An Introduction to ISO STEP Part 25 David Price.

© 2018 SlidePlayer.com Inc.

All rights reserved.

To make this website work, we log user data and share it with processors. To use this website, you must agree to our Privacy Policy, including cookie policy.

Ads by Google