Download presentation

Presentation is loading. Please wait.

Published byRodrigo Greve Modified about 1 year 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 ==

20
Thank YouThank You

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google