Jan Pettersen Nytun, UIA, page 1. Jan Pettersen Nytun, UIA, page 2 HISTORY COLLECTION TYPES AND QUERING IN OCL FORMAL LANGUAGE - STATEMENT EXAMPLES CONSTRAINTS.

Slides:



Advertisements
Similar presentations
1 Mireille Blay-Fornarino – 2007/2008 EPU département SI, Master STIC Survol de Object Constraint Language & IDM À partir du cours Contracts, Patterns.
Advertisements

Formal Methods of Systems Specification Logical Specification of Hard- and Software Dr. Armin Wolf Fraunhofer Institut für Rechnerarchitektur.
1.3 Predicates and Quantifiers
The role of OCL in the Model Driven Architecture Jos Warmer Klasse Objecten
OCL2 April A presentation of OCL 2 Object Constraint Language Christian Hein, Fraunhofer FOKUS April 2006.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages Chapter 3 : Describing Syntax and Semantics Axiomatic Semantics.
ISBN Chapter 3 Describing Syntax and Semantics.
CS 355 – Programming Languages
Feb 2003 R McFadyen1 Contracts (Ch 13) Used to help understand requirements more completely based on assertions; assertions are applicable to any.
Jan 23, Ron McFadyen1 SSD for a samplePOS Use Case Figure 13.1 Input Events invoke a system operation of the same name same idea as in object-oriented.
Formal Methods of Systems Specification Logical Specification of Hard- and Software Prof. Dr. Holger Schlingloff Institut für Informatik der.
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 Specifying Object Interfaces. 2 Major tasks in this stage: --are there any missing attributes or operations? --how can we reduce coupling, make interface.
Axiomatic Semantics Dr. M Al-Mulhem ICS
CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.
Dr. Muhammed Al-Mulhem 1ICS ICS 535 Design and Implementation of Programming Languages Part 1 Fundamentals (Chapter 4) Axiomatic Semantics ICS 535.
Describing Syntax and Semantics
MCA –Software Engineering Kantipur City College. Topics include  Formal Methods Concept  Formal Specification Language Test plan creation Test-case.
Discrete Math 6A Max Welling. Recap 1. Proposition: statement that is true or false. 2. Logical operators: NOT, AND, OR, XOR, ,  3. Compound proposition:
SEG4110 – Advanced Software Engineering and Reengineering TOPIC E Object Constraint Language (OCL)
1 Introduction to Modeling Languages Striving for Engineering Precision in Information Systems Jim Carpenter Bureau of Labor Statistics, and President,
A presentation of OCL 2 Object Constraint Language Fraunhofer FOKUS.
1 COSC 4406 Software Engineering COSC 4406 Software Engineering Haibin Zhu, Ph.D. Dept. of Computer Science and mathematics, Nipissing University, 100.
111 Writing Protocols in OCL CS 4311 Jos B. Warmer and Anneke G. Kleppe, OCL: The Constraint Language of the UML, JOOP, May Jos B. Warmer and Anneke.
ISBN Chapter 3 Describing Semantics -Attribute Grammars -Dynamic Semantics.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
CS551 - Lecture 8 1 CS551 Modelling with Objects (Chap. 3 of UML) Yugi Lee STB #555 (816)
1 OCL The Role of OCL in UML. 2 רשימת הנושאים  מבוא  מרכיבי השפה  דוגמאות  מקורות.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
IM NTU Software Development Methods, Fall2006 Software Development Methods, Fall 2006 OCL 2006/12/ Object Constraint Language (OCL) Yih-Kuen Tsay.
Chapter 3 Part II Describing Syntax and Semantics.
Object Constraint Language
1 Kyung Hee University Constraints Spring Kyung Hee University Graphical Notations  Graphical notations are well suited for displaying structural.
Software Engineering 2 -Prakash Shrestha.
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
Interpreting the Object Constraint Presented by: Ed Kausmeyer.
A UML-Based Pattern Specification Technique Presented by Chin-Yi Tsai IEEE TRANSACTION ON SOFTWARE ENGINEERING, VOL. 30, NO. 3, MARCH 2004 Robert B. France,
An association between class Flight and class Person, indicating that a certain group of persons are the passengers on a flight, will have multiplicity.
UML Class & Object Diagram II RELATIONS UML Class Diagram & Object Diagram II, Jan Pettersen Nytun, page no 1.
Cliquez pour modifier le style du titre Cliquez pour modifier les styles du texte du masque Deuxième niveau Troisième niveau Quatrième niveau Cinquième.
UNIT-IV Designing Classes – Access Layer ‐ Object Storage ‐ Object Interoperability.
MagicDraw - OCL Validation
Presentation of a paper on “Model-based Software Testing”
Chapter 2 Sets and Functions.
tautology checking continued
Design by Contract Jim Fawcett CSE784 – Software Studio
Design by Contract Jim Fawcett CSE784 – Software Studio
Used to help understand requirements more completely
Extending UML.
GC211Data Structure Lecture2 Sara Alhajjam.
The Object Constraint Language
Daniel Amyot and Jun Biao Yan
Chapter 9, Object Design: Object Constraint Language
Specifying Object Interfaces
Seminar 3 UML Class Diagram.
Programming Languages 2nd edition Tucker and Noonan
Slides by Steve Armstrong LeTourneau University Longview, TX
LECTURE 11: Specifying Systems – State Diag’s & OCL
Defining Classes and Methods
The Object Constraint Language
Python Primer 1: Types and Operators
Binary Search and Loop invariants
ISWIM For Testing – A Model Driven Approach
Java Modeling Language (JML)
Object Oriented System Design Class Diagrams
Object Constraint Language (OCL)
Formal Methods in Software Engineering 1
Programming Languages 2nd edition Tucker and Noonan
Software Architecture & Design
Presentation transcript:

Jan Pettersen Nytun, UIA, page 1

Jan Pettersen Nytun, UIA, page 2 HISTORY COLLECTION TYPES AND QUERING IN OCL FORMAL LANGUAGE - STATEMENT EXAMPLES CONSTRAINTS AND OCL EXAMPLES Content

Jan Pettersen Nytun, UIA, page 3 History Formal Languages like Z, have for a long time (ca. 1970) been used to describe things in a precise and unambiguous way. OCL was developed by IBM (1995) and is a part of UML. precisionsimplicityIt emphasize precision and simplicity. There is no use of special mathematical symbols.

Jan Pettersen Nytun, UIA, page 4 Aligning OCL with the OO-Concepts LevelClassPropertyAss.OCL 2 (metamodel) the class concept the property concept association concept an OCL construct as a concept 1a specific class a specific property a specific association OCL Formulas 0 an object of a class a slot with value a link between objects a formula instantiated

Jan Pettersen Nytun, UIA, page 5 HISTORY COLLECTION TYPES AND QUERING IN OCL FORMAL LANGUAGE - STATEMENT EXAMPLES CONSTRAINTS AND OCL EXAMPLES Content

Jan Pettersen Nytun, UIA, page 6 Some Collection Types in OCL A Set is the mathematical set (no duplicate elements). A Bag is like a set, which may contain duplicates (i.e., the same element may be in a bag twice or more). A Sequence is like a Bag in which the elements are ordered. Both Bags and Sets have no order defined on them.

Self [2]: ”Each OCL expression is written in the context of an instance of a specific type. In an OCL expression the name self is used to refer to the contextual instance.” A:Gang M1:GangMember M2:GangMember GangMember 1..* 0..* member Gang When self is A:Gang then self.member is: :Set(GangMember) B:GangM4:GangMember M5:GangMember M3:GangMember context Gang inv: self.member… self self.member model instance (example)

One More Navigation Example QuizQuestionAnswerAlternative * * 1..* * alternative contex Quiz inv: self.question.alternative… quiz2:Quizq3:Questiona4:AnswerAlternative quiz1:Quizq1:Questiona1:AnswerAlternative q2:Questiona3:AnswerAlternative a2:AnswerAlternative selfself.questionself.question.alternative selfself.questionself.question.alternative Model When the complete constraint is checked, then self is bound to one Quiz object at a time and then the constraint is checked for that bound object. incomplete constraint

Class Diagram Object Diagram

Using OCL as a Query Language Probably not supported by MagicDraw 18.3 Jan Pettersen Nytun, UIA, page 10

The Example continues… Finding all members no matter which Gang they belong to Using USE as OCL tool OCL is case sensitive!

Alternative way to find all members no matter which Gang they belong to Single navigation of an association results in a Set. Combined navigations results in a Bag

Allowing a Member to be Member of Several Gangs Jan Pettersen Nytun, UIA, page 13 belonging to two gangs

Allowing a Member to be Member of Several Gangs Jan Pettersen Nytun, UIA, page 14 belonging to two gangs

Jan Pettersen Nytun, UIA, page 15 asSet

Jan Pettersen Nytun, UIA, page 16

Finding all members of the B-gang

Jan Pettersen Nytun, UIA, page 18 HISTORY COLLECTION TYPES AND QUERING IN OCL FORMAL LANGUAGE - STATEMENT EXAMPLES CONSTRAINTS AND OCL EXAMPLES Content

Logical implication – p implies q “p  q” is called a predicate A predicate is a statement that may be true or false depending on the values of its variables. p  q If p is true then also q must be true.

Jan Pettersen Nytun, UIA, page 20 Universal Quantification: Universal Quantification:  In predicate logic, universal quantification formalizes the notion that a logical predicate is true for all the values that can be bound to the variable. E.g.:  a  Integer | (a >= 10)  (a + 1 > 10) Can be read as: For all a of type Integer the following is true: if a is greater or equal 10 then a +1 is also greater then 10

Jan Pettersen Nytun, UIA, page 21 Example: Transitivity In logic and mathematics, a binary relation R is transitive if xRy and yRz together imply xRz In predicate logic :  a,b,c  X | a R b  b R c  a R c Less than (<) is a transitive relation:  a,b,c  Integer | a < b  b < c  a < c In english: For all Integer a, b, c the following is true if a < b and b < c then also a < c (e.g., 1<2  2<4  1<4 ) Is mother of a transitive relation?

Jan Pettersen Nytun, UIA, page 22 HISTORY COLLECTION TYPES AND QUERING IN OCL FORMAL LANGUAGE - STATEMENT EXAMPLES CONSTRAINTS AND OCL EXAMPLES Content

Jan Pettersen Nytun, UIA, page 23 Constraint [1]: … condition or restriction represented as an expression…. can be attached to any UML model element…. indicates a restriction that must be enforced by correct design of the system…

Jan Pettersen Nytun, UIA, page 24 Mulitiplicity is a Kind of constraint From MagicDraw:

Jan Pettersen Nytun, UIA, page 25 Why OCL? The power of the graphical part of UML is limited! preciseunambiguousOCL gives you power to improve the documentation in a precise and unambiguous way. OCL parsers (/ evaluators)OCL parsers (/ evaluators) ensure that the constraints are meaningful and well formed within the model. To do MDD the models have to be unambiguous (e.g., when doing code generation, transformations).

Jan Pettersen Nytun, UIA, page 26 Where To Use OCL? Invariants on classes and types Precondition and postconditions on operations (methods) Constraints on operations: operation=expression (the return value) …

Jan Pettersen Nytun, UIA, page 27 HISTORY COLLECTION TYPES AND QUERING IN OCL FORMAL LANGUAGE - STATEMENT EXAMPLES CONSTRAINTS AND OCL EXAMPLES Content

Jan Pettersen Nytun, UIA, page 28 An Invariant Example: Use of An Invariant Example: Use of Size GangMember Gang name : String isArmy : Boolean register(newMember : GangMember) 1..* 0..* +member 1..* 0..* -- The gang is an army if there are more than 100 members. context Gang inv oneSimpleConstraint: self.isArmy = (member->size() > 100) An invariant is predicate that is always true (i.e., when the system is at “rest”.)

Jan Pettersen Nytun, UIA, page 29 An Invariant Example: MagicDraw

Jan Pettersen Nytun, UIA, page 30

Jan Pettersen Nytun, UIA, page 31 GangMember Gang name : String isArmy : Boolean register(newMember : GangMember) 1..* 0..* +member 1..* -- The gang has grown with one when a new member has been added. -- accesses the value before executing the operation context Gang :: register(newMember : GangMember) pre: not member->includes(newMember) post : member = Use of pre –and post-condition

Jan Pettersen Nytun, UIA, page 32 Comments to Previous Slide collection->includes(object: T): Boolean is True if object is an element of collection. E.g.: = true refers to the value of p before the operation was executed. E.g.: is the set member before the operation was executed. collection->including(object: T): Bag(T) is the bag with all elements of collection plus object. E.g.: =

Using OCL in USE What we want: An account has either a person as owner or a cooperation as owner context Account inv : personOwner->size() = 1 implies cooperationOwner->size() = 0

What is this? This should not be allowed – this is not xor!

Modify the Constraint: context Account inv: (personOwner->size() = 1 implies cooperationOwner->size() = 0) and (personOwner->size() = 0 implies cooperationOwner->size() = 1)

Jan Pettersen Nytun, UIA, page 38 context Company inv: self.employee->forAll( age <= 70 ) context Company inv: self.employee->forAll( p | p.age <= 70 ) context Company inv: self.employee->forAll( p : Person | p.age <= 70 ) forAll Variations forAll Variations (math. notation:  ) CompanyPerson age : Integer * * employee Equivalent Constraints {

Jan Pettersen Nytun, UIA, page Every Gang must have a member with a car contex Gang inv: member->exists(car->size()>0) Example: Example: exists (math. notation:  ) collection  exists(exp : OclExpression) : Boolean True if exp is true for one elements of the collection