Formale Modellierung Vorlesung vom : Einführung

Ähnliche Dokumente
Formale Modellierung Vorlesung vom : Beyond JML

Formale Modellierung Vorlesung 10 vom : Formale Modellierung mit UML und OCL

Formale Modellierung Vorlesung 13 vom : Rückblick und Ausblick

NACHRICHTENTECHNISCHER SYSTEME

Vorlesung Programmieren

Unified Modeling Language 2

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

Vorlesung Programmieren

UML (Unified Modelling Language) von Christian Bartl

Christoph Kecher, Alexander Salvanos UML 2.5. Das umfassende Handbuch. Rheinwerk. Computing

Unified Modeling Language (UML )

INSPIRE - Modellierung

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

TEIL I Strukturdiagramme 1 Einführung Klassendiagramm Objektdiagramm Kompositionsstrukturdiagramm...

Einschub - Die Object Constraint Language in UML Oder: Wie man Zusicherungen in UML angibt

Die Unified Modeling Language UML

Unified Modeling Language

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

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick

Guido de Melo Fachvortrag, Uni Ulm UML 2.0. Für den Einsatz in der Praxis

Requirements Engineering I

UML 2.0 Das umfassende Handbuch

Das umfassende Handbuch

Von UML 1.x nach UML 2.0

Analyse und Design mit U ML 2.3

Kapitel 2 - Die Definitionsphase

FACHHOCHSCHULE MANNHEIM

MDA-Praktikum, Einführung

OOAD in UML. Seminar Software-Entwurf B. Sc. Sascha Tönnies

Christoph Kecher UML2. Das umfassende Handbuch. Galileo Press

Software Engineering in der Praxis

Universität Karlsruhe (TH)

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

Analyse und Modellierung von Informationssystemen

Objektorientierte Softwareentwicklung

Objektorientierte Systementwicklung

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

Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl

UML Crashkurs v0.1. UML für Fachinformatiker. von Hanjo Müller

Software Engineering in der Praxis

Modellbasierter Test mit der UML. Vortragender: Lars Westmeier Seminar: Spezifikationsbasierter Softwaretest

Klausur. Softwareentwurf. 14. Februar 2011 Bearbeitungszeit: 120 Minuten

Modellierung mit UML. Thomas Kistel. 24. November Thema - Untertitel Datum/Semester Ihr Name Seite 1

Automatisierung industrieller. Workflows. Teil B: Die Spache UML

Vorlesung "Software-Engineering"

Thema 2 Acceleo-MTL- Sprachmittel

Modellierung von Web Anwendungen mit UML

Einführung in die objektorientierte Programmierung

UML 2.0 als Architekturbeschreibungssprache? Seminar: Architekturbeschreibungssprachen Manuel Wickert

MOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools

Objektorientierte Softwareentwicklung

Unified Modelling Language

Software Engineering in der Praxis

Softwareentwicklung mit UML

Klassendiagramm. (class diagram)

Comelio GmbH - Goethestr Berlin. Course Catalog

Poseidon for UML. Einführung. Andreas Blunk

Einführung in die Programmierung

27. Oktober 2005 Florian Marwede

Model-Driven Software Engineering (HS 2011)

Vorlesung Software Engineering

Oracle JDeveloper 10 g

Übung Einführung in die Softwaretechnik

Variablen und Datentypen

Inhaltsverzeichnis.

Übungen Softwaretechnik I

Einführung in UML. Überblick. 1. Was ist UML??? 2. Diagrammtypen. 3. UML Software. Was ist ein Modell??? UML Geschichte,...

CARL HANSER VERLAG. Mario Jeckle, Chris Rupp, Jürgen Hahn, Barbara Zengler, Stefan Queins. UML 2 glasklar

Objektorientiertes Design

Javakurs für Anfänger

Martin Fowler, Kendall Scott. UML konzentriert. Eine strukturierte Einführung in die Standard-Objektmodellierungssprache. 2., aktualisierte Auflage

Objektorientierte Analyse (OOA) Übersicht

Einführung in die Informationsverarbeitung Teil Thaller. Stunde VII: Planen und Realisieren

Die Object Constraint Language

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Tamagotchi-Spezifikation in UML

Techniken der Projektentwicklungen

So#waretechnologie für Fortgeschri4ene Teil Eide. Stunde IV: UML. Köln 26. Januar 2017

Teil VIII. Objektorientierte Programmierung

Computergestützte Modellierung und Verifikation

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

Software- und Systementwicklung

Systemmodellierung mit SysML - Stereotypen und Profile

Die abstrakte Syntax der Unified Modeling Language

UML mit Enterprise Architect

Referat UML + OCL Referenten: Achour Elmrabti Britta Porsche

Automatische Codegenerierung aus der UML für die IEC

Dialogentwicklung mit Hilfe des Model Driven Architecture Ansatzes

Softwaretechnik Unified Modeling Language (UML)

Abschnitt 15: Unified Modeling Language (UML)

Orientierte Modellierung mit der Unified Modeling Language

Inhalt. Einleitung Liebe Leserin, lieber Leser, Wer dieses Buch aus welchem Grund lesen sollte Ihre Meinung ist uns sehr wichtig.

UML 2 glasklar Praxiswissen für die UML-Modellierung

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung. Grundkurs C++

Comelio GmbH - Goethestr Berlin. Kurskatalog

Einführung in die Programmierung

Analyse und Modellierung von Informationssystemen

Rhapsody in J Modellierung von Echtzeitsystemen

Java Generics & Collections

Object Constraint Language (OCL) By Example

Transkript:

Rev. 1673 1 [11] Formale Modellierung Vorlesung vom 16.04.12: Einführung Till Mossakowski & Christoph Lüth Universität Bremen Sommersemester 2012

2 [11] Organisatorisches Veranstalter: Till Mosskawski Christoph Lüth till.mossakowski@dfki.de christoph.lueth@dfki.de Cartesium 2.51, Tel. 64216 MZH 3110, Tel. 59830 Termine: Vorlesung: Montag, 14 16, Cartesium 2.43 Übung: Donnerstag, 8 10, GW1 C1070

3 [11] Therac-25 Neuartiger Linearbeschleuniger in der Strahlentherapie. Computergesteuert (PDP-11, Assembler) Fünf Unfälle mit Todesfolge (1985 1987) Zu hohe Strahlendosis (4000 20000 rad, letal 1000 rad) Problem: Softwarefehler Ein einzelner Programmierer (fünf Jahre) Alles in Assembler, kein Betriebssystem Programmierer auch Tester (Qualitätskontrolle)

Ariane-5 4 [11]

5 [11] Das Problem Program Welt?

5 [11] Das Problem Program Welt Modell

6 [11] Lernziele 1. Modellierung Formulierung von Eigenschaften

6 [11] Lernziele 1. Modellierung Formulierung von Eigenschaften 2. Spezifikation Eigenschaften von Programmen

6 [11] Lernziele 1. Modellierung Formulierung von Eigenschaften 2. Spezifikation Eigenschaften von Programmen 3. Verifikation Beweis der Eigenschaften

6 [11] Lernziele 1. Modellierung Formulierung von Eigenschaften 2. Spezifikation Eigenschaften von Programmen 3. Verifikation Beweis der Eigenschaften 4. Vertrautheit mit aktuellen Techniken: JML, UML, Temporallogik

7 [11] Techniken der Modellierung und Spezifikation Annotationen an den Code JML für Java: Abstraktion von konkreter Implementation Abstraktion vom Quellcode: Abstrakte Programmmodelle: Zustandsautomaten, Klassendiagrame Abstraktion vom Ausführungsmodell: Hier: Nebenläufigkeit (Temporallogik)

8 [11] Java Modeling Language (JML) Zentral: funktionale Korrektheit Design by contract Spezifikation nahe am Code Hoare-Logik (pre/post conditions) Werkzeuge: ESC/Java2, Mobius

9 [11] Unified Modeling Language (UML) allgemeine Modellierungssprache Spezifikation problemorientierter Übersetzung in verschiedene Programmiersprachen möglich Nur bestimme Aspekte sind formal hier: State Machines und Object Constraint Language (OCL) Werkzeuge: Hugo/RT und argouml

10 [11] Temporallogik Spezifikation nebenläufiger Programme Sicherheits- und Fairness-Eigenschaften Werkzeug: nusmv Modelchecker

11 [11] Aufbau der Vorlesung Plan: Woche 01 05 : Codeannotation mit JML Woche 06 11 : Modellierung mit UML Woche 11 14 : Modellchecking mit NuSMV Vorlesung und Übung dynamisch im Wechsel ca. 5 Übungsblätter, Gruppengröße max. 3 Übungen werden vorgestellt und besprochen Scheinkriterien: Übungsblätter bearbeiten und Fachgespräch oder mündliche Prüfung

Rev. 1702 1 [12] Formale Modellierung Vorlesung vom 07.05.12: Beyond JML Till Mossakowski & Christoph Lüth Universität Bremen Sommersemester 2012

2 [12] Heute im Programm Grenzen der JML Nach JML: UML (und darüber hinaus) Zwei Fallbeispiele

3 [12] Fallbeispiel 1: Bankautomat Informelle Spezifikation Nach dem Einlegen der Karte (cashcard o.ä.) kann der Benutzer auswählen zwischen dem Abheben von Bargeld, und der Anzeige des Kontostands. In beiden Fällen liest der Automat von der Karte die Kontonummer des Benutzers. Beim Abheben gibt der Benutzer zuerst die gewünschte Summe und danach zur Authentifzierung sein PIN ein. Der Automat liest von der Karte die verschlüsselte PIN, und prüft ob die eingegebene mit der verschlüsselten übereinstimmt. Ist dieser der Fall, und ist das Konto gedeckt, wird das Bargeld zum Abheben bereitgestellt; danach wird die Karte zurückgegeben. Ist das nicht der Fall, wird eine entsprechende Fehlermeldung ausgegeben, und die Karte zurückgegeben. In beiden Fällen geht der Automat danach wieder in den Anfangszustand.

4 [12] Kritik JML Implementationsnah Struktur der Spezifikation = Struktur der Implementierung Hier: Events = Klassen? Mangelnde Abstraktion Nächster Schritt: UML

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume Nein Objektdiagramm Zustand von Objekten

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume Nein Objektdiagramm Zustand von Objekten (Ja) Kompositionsstrukturdiagramm Kollaborationen

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume Nein Objektdiagramm Zustand von Objekten (Ja) Kompositionsstrukturdiagramm Kollaborationen Nein Komponentendiagramm Dynamische Systemstruktur

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume Nein Objektdiagramm Zustand von Objekten (Ja) Kompositionsstrukturdiagramm Kollaborationen Nein Komponentendiagramm Dynamische Systemstruktur (Nein) Verteilungsdiagramm Implementierungsaspekte

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume Nein Objektdiagramm Zustand von Objekten (Ja) Kompositionsstrukturdiagramm Kollaborationen Nein Komponentendiagramm Dynamische Systemstruktur (Nein) Verteilungsdiagramm Implementierungsaspekte Nein Use-Case-Diagramm Ablauf en gros

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume Nein Objektdiagramm Zustand von Objekten (Ja) Kompositionsstrukturdiagramm Kollaborationen Nein Komponentendiagramm Dynamische Systemstruktur (Nein) Verteilungsdiagramm Implementierungsaspekte Nein Use-Case-Diagramm Ablauf en gros Nein Aktivitätsdiagramm Ablauf en detail

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume Nein Objektdiagramm Zustand von Objekten (Ja) Kompositionsstrukturdiagramm Kollaborationen Nein Komponentendiagramm Dynamische Systemstruktur (Nein) Verteilungsdiagramm Implementierungsaspekte Nein Use-Case-Diagramm Ablauf en gros Nein Aktivitätsdiagramm Ablauf en detail Nein Zustandsdiagramm Zustandsübergänge

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume Nein Objektdiagramm Zustand von Objekten (Ja) Kompositionsstrukturdiagramm Kollaborationen Nein Komponentendiagramm Dynamische Systemstruktur (Nein) Verteilungsdiagramm Implementierungsaspekte Nein Use-Case-Diagramm Ablauf en gros Nein Aktivitätsdiagramm Ablauf en detail Nein Zustandsdiagramm Zustandsübergänge Ja Sequenzdiagramm Kommunikation

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume Nein Objektdiagramm Zustand von Objekten (Ja) Kompositionsstrukturdiagramm Kollaborationen Nein Komponentendiagramm Dynamische Systemstruktur (Nein) Verteilungsdiagramm Implementierungsaspekte Nein Use-Case-Diagramm Ablauf en gros Nein Aktivitätsdiagramm Ablauf en detail Nein Zustandsdiagramm Zustandsübergänge Ja Sequenzdiagramm Kommunikation Ja Kommunikationsdiagramm Struktur der Kommunikation

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume Nein Objektdiagramm Zustand von Objekten (Ja) Kompositionsstrukturdiagramm Kollaborationen Nein Komponentendiagramm Dynamische Systemstruktur (Nein) Verteilungsdiagramm Implementierungsaspekte Nein Use-Case-Diagramm Ablauf en gros Nein Aktivitätsdiagramm Ablauf en detail Nein Zustandsdiagramm Zustandsübergänge Ja Sequenzdiagramm Kommunikation Ja Kommunikationsdiagramm Struktur der Kommunikation (Ja) Zeitverlaufsdiagramm Echtzeitaspekte

5 [12] UML als formale Spezifikationssprache Diagrammtyp Modellierte Aspekte Formal Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume Nein Objektdiagramm Zustand von Objekten (Ja) Kompositionsstrukturdiagramm Kollaborationen Nein Komponentendiagramm Dynamische Systemstruktur (Nein) Verteilungsdiagramm Implementierungsaspekte Nein Use-Case-Diagramm Ablauf en gros Nein Aktivitätsdiagramm Ablauf en detail Nein Zustandsdiagramm Zustandsübergänge Ja Sequenzdiagramm Kommunikation Ja Kommunikationsdiagramm Struktur der Kommunikation (Ja) Zeitverlaufsdiagramm Echtzeitaspekte (Ja)

6 [12] Diagramme in UML 2.3 Quelle: Wikipedia

Semantik der UML: Metamodellierung Quelle: Wikipedia 7 [12]

8 [12] Kritik UML OO built-in Adäquat für eingebettete Systeme, CPS,...?

Fallbeispiel 2: omnirobot Informelle Spezifikation Ein omnidirektionaler, autonomer Roboter soll gegen Kollisionen mit statischen Hindernissen gesichert werden. Dazu wird zu jedem Zeitpunkt die mit der momentanen Geschwindigkeit w beim Bremsen bis zum Stillstand überstrichene Fläche A berechnet, die dann mit einer berührungslos wirkenden Schutzeinrichtung überwacht wird. Quelle: Kuka AG 9 [12]

10 [12] Modellierung Roboter als konvexes Polygon K = K 1,..., K n, momentane Pos. P Momentane Geschwindigkeit: Vektor v = (v, φ) Bremsweg S 1, Anhalteweg S, als Vektor: w = (S, φ) Zu berechnen: Anhaltefläche A Q 5 Q 4 Q 3 Q 2 P 4 P 3 Q 6 w Q 1 P 5 P 2 P 6 P 1

11 [12] Fazit Fallbeispiel 2 Semantische Modellierung der realen Welt Nicht inhärent objektorientiert Modellierung in UML möglich Natürlicher: direkte Modellierung Fokus: Beweise, Manipulation von Formeln

12 [12] Zusammenfassung JML sehr nahe an der Implementation UML abstrahiert von Implementation, aber nur bedingt von Anwendungsdomäne Nächste VL (Montag): Fallbeispiel 2 in UML und Z

Rev. 1712 1 [13] Formale Modellierung Vorlesung vom 14.05.12: Der sichere Roboter in Z Till Mossakowski & Christoph Lüth Universität Bremen Sommersemester 2012

2 [13] Heute im Programm Die Z Notation Modellierung des Sicheren Omnidirektionalen Roboters

3 [13] Die Z Notation Basiert auf getypter Mengenlehre Entwickelt seit 1980 (Jean-Claude Abrial, Oxford PRG) Industriell genutzt (IBM, Altran Praxis (vorm. Praxis Critical Systems)) L A TEX-Notation und Werkzeugunterstützung (Community Z Tools, HOL-Z)

4 [13] Modell Bremszeit und Bremsstrecke (ab Bremszeitpunkt, a brk > 0): v(t) = v 0 a brk t s(t) = v 0 t a brk 2 t2 = T = v 0 a brk S = v 2 0 2a brk Modellierung in Z: Berechung des Bremsweges. Verzögerung t L und Bremsverzögerung a brk fest: a brk, t L : Z Damit Brems- und Anhalteweg als Funktion über v: brk : Z Z stop : Z Z v : Z brk v = v v div 2 a brk v : Z stop v = v t L + brk(v)

5 [13] Geometrie: Punkte Ein Punkt ist ein Schema mit Komponenten x und y: POINT x, y : Z Dazu einschlägige Operationen: Konstruktion aus Polarkoordinaten, Skalarmultiplikation: polar : Z Z POINT d, ω : Z (polar(d, ω)).x = d cos ω d, ω : Z (polar(d, ω)).y = d sin ω smult : Z POINT POINT d : Z; p : POINT (smult(d, p)).x = d p.x d : Z; p : POINT (smult(d, p)).y = d p.y

6 [13] Mehr Standardoperationen auf Punkten Addition und Subtraktion von Punkten: add : POINT POINT POINT minus : POINT POINT POINT p, q : POINT (add(p, q)).x = p.x + q.x p, q : POINT (add(p, q)).y = p.y + q.y p, q : POINT minus(p, q) = add(p, smult(0 1, q)) Ganzzahlige Wurzel: sqrt : Z Z i : Z sqrt i sqrt i i i < (sqrt i + 1) (sqrt i + 1) Damit Betrag eines Punktes (als Vektor): len : POINT Z p : POINT len p = sqrt(p.x p.x + p.y p.y)

7 [13] Geometrie: Bewegung Bewegung: kombinierte Translation und Rotation movep : POINT Z Z POINT p : POINT ; d, ω : Z movep(p, d, ω) = add(p, polar(d, ω)) Bewegung eines Polygons: move : seq POINT Z Z seq POINT p : seq POINT ; d, ω : Z move(p, d, ω) = (λ i : dom p movep(p(i), d, ω))

p : P POINT convhull p = {q : P POINT q conv p q} 8 [13] Geometrie: Konvexe Hülle Strecke zwischen zwei Punkten: seg : POINT POINT P POINT p, q : POINT seg(p, q) = {r : POINT z : N z len(minus(p, q)) r = add(smult(z, p), smult(len(minus(p, q)) z, q))} Konvexität (Menge aller konvexen Punktmengen): conv : P(P POINT ) conv = {c : P POINT p, q : c; r : POINT r seg(p, q) r c} Konvexe Hülle: kleinste p umfassende konvexe Menge convhull : P POINT P POINT

9 [13] Der Roboter und seine Bremsfläche Der Roboter hat eine Kontour, Geschwindigkeit, Orientierung: Robot P : seq POINT v : Z ω : Z #P > 2 ran P conv Die beim Anhalten überstrichene Fläche: area : seq POINT Z Z P POINT v, ω : Z; P : seq POINT area(p, v, ω) = convhull (ran P ran (move(p, stop v, ω)))

10 [13] Der sichere Roboter Menge von Hindernissen obs : P POINT Der sichere Roboter SafeRobot Robot area(p, v, ω) obs = Sicherheitseigenschaft: SafeMove Robot SafeRobot SafeRobot

11 [13] Bewegung des Roboters Geschwindigkeit bleibt gleich: RobotSameSpeed Robot v = v ω = ω P = move(p, v, ω) Sicher? SafeSameSpeed RobotSameSpeed SafeRobot SafeRobot

12 [13] Bewegung des Roboters Geschwindigkeit erhöht sich, Lenkwinkel bleibt nur in Bewegung: δv : Z RobotSpeedUp Robot v v + δv v 0 ω = ω P = move(p, v, ω) Sicher? SafeSpeedUp RobotSpeedUp SafeRobot SafeRobot

13 [13] Zusammenfassung Z ist leichtgewichtige Notation Werkzeugunterstützung: L A TEX, Typcheck Nächste Woche: UML

Rev. 1713 1 [11] Formale Modellierung Vorlesung vom 31.05.12: OCL Die Object Constraint Language Till Mossakowski & Christoph Lüth Universität Bremen Sommersemester 2012

2 [11] OCL Object Constraint Langauge Mathematisch präzise Sprache für UML OO meets Z Entwickelt in den 90ern Formale Constraints an UML-Diagrammen

3 [11] OCL Basics Getypte Sprache Dreiwertige Logik (Kleene-Logik) Ausdrücke immer im Kontext: Invarianten an Klassen, Interfaces, Typen Vor/Nachbedingungen an Operationen oder Methoden

4 [11] OCL Syntax Invarianten: context class inv: expr Vor/Nachbedingungen: context Type :: op(arg1 : Type) : ReturnType pre: expr post: expr expr ist ein OCL-Ausdruck vom Typ Boolean

5 [11] OCL Typen Basistypen: Boolean, Integer, Real, String OclAny, OclType, OclVoid Collection types: Set, OrderedSet, Bag, Sequences Modelltypen

6 [11] Basistypen und Operationen Integer (Z) OCL-Std. 11.5.2 Real (R) OCL-Std. 11.5.1 Integer Subklasse von Real round, floor von Real nach Integer String (Zeichenketten) OCL-Std. 11.5.3 substring, toreal, tointeger, characters etc. Boolean (Wahrheitswerte) OCL-Std. 11.5.4 or, xor, and, implies Sowie Relationen auf Real, Integer, String

7 [11] Collection Types Set, OrderedSet, Bag, Sequence Operationen auf allen Kollektionen: OCL-Std. 11.7.1 size, includes, count, isempty, flatten Kollektionen werden immer flachgeklopft Set OCL-Std. 11.7.2 union, intersection, Bag OCL-Std. 11.7.3 union, intersection, count Sequence OCL-Std. 11.7.4 first, last, reverse, prepend, append

8 [11] Collection Types: Iteratoren Iteratoren: Funktionen höherer Ordnung Alle definiert über iterate OCL-Std. 7.7.6: coll-> iterate(elem: Type, acc: Type= expr expr[elem, acc]) iterate(e: T, acc: T= v) { acc= v; for (Enumeration e= c.elements(); e.hasmoreelements();){ e= e.nextelement(); acc.add(expr[e, acc]); // acc= expr[e, acc] } return acc; } Iteratoren sind alle strikt

9 [11] Modelltypen Aus Attribute, Operationen, Assoziationen des Modells Navigation entlang der Assoziationen Für Kardinalität 1 Typ T, sonst Set(T) Benutzerdefinierte Operationen in Ausdrücken müssen zustandsfrei sein (Stereotyp <<query>>)

10 [11] Undefiniertheit in OCL Undefiniertheit propagiert (alle Operationen strikt) 7.5.11 OCL-Std. Ausnahmen: Boolsche Operatoren (and, or beidseitig nicht-strikt) Fallunterscheidung Test auf Definiertheit: oclisundefined mit { true e = oclisundefined(e) = false otherwise Resultierende Logik: dreiwertig (Kleene-Logik) Iteratoren: semi-strikt

11 [11] Style Guide Komplexe Navigation vermeiden ( Loose coupling ) Adäquaten Kontext auswählen Use of allinstances is discouraged Invarianten aufspalten Hilfsoperationen definieren

12 [11] Zusammenfassung OCL erlaubt Einschränkungen auf Modellen Erlaubt mathematisch präzisere Modellierung Frage: Werkzeugunterstützung? Ziel: Beweise, Codegenerierung,...?

Rev. 1715 1 [1] Formale Modellierung Vorlesung vom 04.06.12: Werkzeugunterstützung für OCL Till Mossakowski & Christoph Lüth Universität Bremen Sommersemester 2012

2 [1] Werkzeuge für OCL Klassifikation: MDA + OCL Specifikation mit OCL Interaktive Entwicklung mit OCL

3 [1] MDA + OCL MDA: Model-driven architecture Entwicklung durch Modelltransformation Rolle der OCL: Metasprache Codegenerierung Laufzeitchecks Beispiele für Werkzeuge: MDT/OCL MDT/OCL: EMF mit OCL-Unterstützung

4 [1] Spezifikation USE (UML Specification Environment, Uni Bremen) Spezifisch UML+OCL Syntax/Typecheck Animation Konsistenzprüfung ArgoUML (Poseidon) UML 1.5, alle Diagramme OCL: Syntax/Typecheck

5 [1] HOL-OCL Entwickelt an der ETH Zürich Flache Einbettung von OCL nach HOL Prüft Konsistenz der Modelle Präziser als OCL-Standard (z.b. Semantik von Mengen) Aufbauende Werkzeuge: Modelltransformationen

6 [1] Zusammenfassung OCL-Werkzeuge OCL wird stiefmütterlich behandelt Generierung von Laufzeitprüfungen OCL als Abfragesprache Modelltransformation (used?)