Die Verwendung der Object Constraint Language (OCL) in UML-Modellen

Ähnliche Dokumente
Automatisierung industrieller. Workflows. Teil B: Die Spache UML

Vorlesung "Software-Engineering"

Thema 2 Acceleo-MTL- Sprachmittel

Referat UML + OCL Referenten: Achour Elmrabti Britta Porsche

UML/OCL für die Integritätssicherung in Datenbankanwendungen

Spezifikation und Test: Zusicherungen in Klassendiagrammen

Übungen Softwaretechnik I

Design by Contract with JML

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

Ersetzbarkeit und Verhalten

Die abstrakte Syntax der Unified Modeling Language

MOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools

Jason T. Roff UML. IT Tutorial. Übersetzung aus dem Amerikanischen von Reinhard Engel

Unified Modelling Language

Einführung in die Programmierung mit VBA

Tutorium für Fortgeschrittene

Assertions (Zusicherungen)

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Softwarearchitektur. Softwarearchitektur, UML, Design Patterns und Unit Tests. Softwarearchitektur

Assoziation und Aggregation

Softwaretechnologie - Wintersemester 2012/ Dr. Günter Kniesel

Vgl. Oestereich Kap 2.4 Seiten

Modell/Metamodell. Generated Source Code. Generator. Model. Fakultät für Informatik und Wirtschaftsinformatik MDSD - SS 2014

Java Einführung Abstrakte Klassen und Interfaces

Vorlesung Software Engineering I

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

Klausur Formale Systeme Fakultät für Informatik WS 2009/2010. Prof. Dr. Bernhard Beckert. 18. Februar 2010

Blöcke Strukturelemente. Dr. Beatrice Amrhein

Institut für Informatik Christian-Albrechts-Universität zu Kiel. Borland Delphi. Einführung in die Programmiersprache

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba

Kapitel 6. Vererbung

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester / 32

Software Engineering. 6. Klassendiagramme. Franz-Josef Elmer, Universität Basel, HS 2012

Thema 4 Acceleo- Sprachmittel und Generatorstruktur

Modul 122 VBA Scribt.docx

Modellieren mit der Unified Modeling Language: Klassen- und Objektdiagramme. 11. November 2014

Objektorientierte Programmierung

VBA-Programmierung: Zusammenfassung

Grundlagen der UML-Modellierung. Modellierung. Elena Paslaru Seminar Praktische Modellierung SS

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Einführung in die Programmierung mit Java. Hörsaalübung

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Ich liebe Java && Ich liebe C# Rolf Borst

Virtuelle Realität und Simulation - Übung 2

6. Modellierung von Informationssystemen. 6.1 Einleitung 6.2 Konzeptuelles Modell 6.3 OASIS Spezifikation 6.4 Execution Model 6.

FACHHOCHSCHULE MANNHEIM

Softwaretechnik Unified Modeling Language (UML)

Software Engineering Klassendiagramme Einführung

Repetitorium Informatik (Java)

Kapitel 6. Vererbung

EXCEL VBA Cheat Sheet

7. Analyse-Phase: Datenmodellierung Software Engineering

Große Übung Praktische Informatik 1

Software- und Systementwicklung

Kapitel 6. Vererbung

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Metamodellbasierte Codegenerierung in Java

Software Engineering Klassendiagramme Assoziationen

openarchitectureware

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

JAVA KURS COLLECTION

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Übungsaufgaben UML Zertifizierung Fundamental-Level

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einführung in die Programmierung

Java Einführung Collections

Grundlagen der Informatik für Ingenieure I

Softwarepraktikum: Enigma

M2M-Transformation mitder QVTOperational Mappings

Objektorientierter Software-Entwurf Die Unified Modeling Language 4 1

Abschnitt 15: Unified Modeling Language (UML)

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Objektorientierte Datenbanken

Was machen wir heute? Methodische- und Praktische Grundlagen der Informatik 3 Softwaretechnik WS Formale Spezifikation(ssprachen)

Einführung in die Informatik

Ausarbeitung Iteration I

Auf dem Weg zur Semantikdefinition? Das UML-Metamodell (für Klassendiagramme)

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Java Einführung Objektorientierte Grundkonzepte

Leitfaden für die Modellierung von Smartcard Anwendungen mit Borland Together

Inhaltsverzeichnis. Teil I Einführung 13. Teil II Struktur 41. Vorwort 11

UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language

Techniken der Projektentwicklung

Kurzeinführung in UML

Assoziation und Aggregation

VU Objektorientierte Modellierung Übung 1

CORBA. Systemprogrammierung WS

NoSQL mit Postgres 15. Juni 2015

J.2 Objektorientiertes Modellieren mit UML

Die BPM-Trilogie BPMN, CMMN, DMN mehr als Schlagworte?

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber

Transaktionen in der Praxis. Dr. Karsten Tolle

C# im Vergleich zu Java

Informatik II Musterlösung

3.17 Zugriffskontrolle

Werkzeuge zur Programmentwicklung

Grundlagen der Programmierung Prof. H. Mössenböck. 11. Objektorientierung

Transkript:

Die Verwendung der Object Constraint Language (OCL) in UML-Modellen

Gliederung Einleitung Grundlegende Prinzipien Was ist ein Kontext von Constraints Invarianten Vor- und Nachbedingungen Typen und Collections Exceptions

Einleitung 2.3. Constraint UML kann Randbedingungen und Einschränkungen gar nicht oder schlecht ausdrücken Ziele von OCL: genaue Beschreibung des Modells Ausschluss unerwünschter Systemrealisierungen OCL Syntax ähnlich zu Java formale Grammatik aber: OCL nur Spezifikationssprache, keine Programmiersprache keine Seiteneffekte, System bleibt gleich

Grundlegende Prinzipien 2.1. Was ist ein 2.3. Constraint Was ist ein A constraint is a restriction on one or more values of (part of) an object-oriented model or system. Konvention: Constraints sollen das Modell nicht verändern Constraints sind OCL Ausdrücke vom Typ Boolean: Bsp. Klasse Student: immanr >= 1000 stehen im UML-Modell oder in separatem Dokument jeder Constraint ist einem Kontext zugeordnet

Grundlegende Prinzipien Kontext: 2.3. Constraint stellt Bezug der Bedingung auf UML-Modell her mögliche Kontexte: Klassen (meistens), Attribute, Operationen, Interfaces, Komponenten Syntax: context Student die Auswertung eines Constraints bezieht sich immer auf eine Instanz des Kontextes Schlüsselwort self bezieht sich auf diese Instanz

Grundlegende Prinzipien Welche Constraints gibt es? 2.3. Constraint 2 : Invarianten und Vor-/Nachbedingungen Invarianten sind zu jedem Zeitpunkt wahr Notation: inv: Bedingung Vor- und Nachbedingungen sind einer Funktion zugeordnet nur zu dem Zeitpunkt des Benutzens der Funktion wahr Design by Contract Notation: pre : Bedingung post: Bedingung

Royal and Loyal 2.3. Constraint 1..* 1..* LoyaltyProgram 0..* 0..* enroll(c : Customer) program partners ProgramPartner nrofcustomers : Integer delivered Services 0..* Service condition : Boolean pointsearned : Integer pointsburned : Integer description : String {ordered} 1..* 0..* ServiceLevel name : String available Services 0..* actuallevel Membership LoyaltyAccount points : Integer earn(i : Integer) burn(i : Integer) isempty() : Boolean) 0..* Transaction transactions points : Integer 0..* date : Date transactions Date program() : $now : Date LoyaltyProgram isbefor(t : Date) : Boolean isafter(t : Date) : Boolean = (t : Date) : Boolean Burning Earning 0..1 transactions 0..* card Customer name : String title : String ismale : Boolean dateofbirth : Date age : Integer owner cards CustomerCard valid : Boolean validfrom : Date goodthru : Date color : enum {silver, gold} printedname : String card 0..*

Beispiele Invarianten 2.3. Constraint Invarianten auf Attributen: context Customer inv: age >= 18 (Standard Typ Integer) context CustomerCard inv: validfrom.isbefore(goodthru) (benutzt eigene Date Klasse als Typ) Customer name : String title : String ismale : Boolean dateofbirth : Date age : Integer CustomerCard valid : Boolean validfrom : Date goodthru : Date color : enum {silver, gold} printedname : String Date $now : Date isbefor(t : Date) : Boolean isafter(t : Date) : Boolean = (t : Date) : Boolean

Beispiele Invarianten 2.3. Constraint Invarianten auf Assoziationen: navigieren durch Modell mittels. + Rollenname oder kleiner Klassenname context Membership inv: card.customer = customer context CustomerCard inv: printedname = Membership card CustomerCard valid : Boolean validfrom : Date goodthru : Date color : enum {silver, gold} printedname : String Customer name : String title : String ismale : Boolean dateofbirth : Date age : Integer customer.title.concat(customer.name)

Beispiele Invarianten Invarianten auf Assoziationen mit self: 2.3. Constraint context Student inv: konto.immanr = self.immanr context Konto inv: student.immanr = self.immanr Student immanr: Integer Konto immanr: Integer

Beispiele Vor-/Nachbedingung 2.3. Constraint Syntax: context Typname::operationName(parameter1 : Typ1 ) : returntyp context LoyaltyAccount::isEmpty() pre: -none post: result = (points = 0) @pre und result in Nachbedingungen: @pre: Wert der Vorbedingung result: Ergebnis der Operation Kommentare mitels - - oder /* */ LoyaltyAccount points : Integer earn(i : Integer) burn(i : Integer) isempty() : Boolean)

Grundlegende Prinzipien 2.3. Constraint 2.4. Typen und OCL Typen und einige : Boolean: or, and, xor, not, = (Java: ==), <> (Java:! =), implies, if then else Integer und Real: keine Wertegrenzen =, +, -, *, /,<, >, abs, max, mod, round, floor String: 'apple' string.size, string.tolower, toupper, =, <> eigene Typen können ebenfalls implementiert werden Modell Typen

Grundlegende Prinzipien Collections: 2.3. Constraint bei Multiplizitäten > 1 zu einem Objekt können mehrere andere gehören OCL besitzt verschiedene Möglichkeiten der collections: Set, Bag, Sequence Set: jedes Element kommt nur einmal vor Bag: Elemente auch mehrfach Sequence: sortierter Bag Operationen: select(), exists(), forall(), collect()

Beispiele Collections 2.3. Constraint Collections: context ProgramPartner inv: nrofcustomers = loyaltyprogram.customer->size() vs. context ProgramPartner inv: nrofcustomers = loyaltyprogram.customer->asset() ->size() 1..* 1..* partners ProgramPartner LoyaltyProgram enroll(c : Customer) nrofcustomers : Integer program 0..* 0..* 1..* {ordered} ServiceLevel name : String Customer name : String title : String ismale : Boolean dateofbirth : Date age : Integer context LoyaltyProgram servicelevel->first().name = 'Silver'

Exceptions 2.3. Constraint Was passiert, wenn Constraints gebrochen werden? bisher in OCL nicht berücksichtigt ein gebrochener Constraint invalidiert das gesamte System manuell müssen Exceptions ausgewertet werden z.b. in Nachbedingungen mittels if zu verzweigen um einen kontrollierten Abbruch hervrzurufen

Quellen 2.3. Constraint Kleppe, A/ Warmer, J.: The Object Constraint Language. Precise Modeling with UML. Addison- Wesley 1999. http://kaul.inf.h-bonn-rhein-sieg.de/home/script/ se1/folien/03_ocl.pdf, Stand 06.05.2010 http://softech.informatik.unikl.de/twiki/pub/homepage/seminarss03/becker. ps.gz, Stand 06.05.2010