• Keine Ergebnisse gefunden

Sommersemester2013 SergeAutexier&ChristophLüth FormaleModellierungVorlesung12vom24.06.13:FormaleModellierungmitUMLundOCL

N/A
N/A
Protected

Academic year: 2022

Aktie "Sommersemester2013 SergeAutexier&ChristophLüth FormaleModellierungVorlesung12vom24.06.13:FormaleModellierungmitUMLundOCL"

Copied!
31
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Formale Modellierung

Vorlesung 12 vom 24.06.13: Formale Modellierung mit UML und OCL

Serge Autexier & Christoph Lüth

Universität Bremen

Sommersemester 2013

Rev. 2223 1 [19]

(2)

Fahrplan

I Teil I: Formale Logik

I Teil II: Spezifikation und Verifikation

I Modellierung von Programmen

I Die Z-Notation

I Formale Modellierung mit der UML und OCL

I Teil III: Schluß

2 [19]

(3)

Das Tagesmenü

Datenmodellierung Programmbegriff Isabelle/HOL induktive Datentypen totale rekursive Funktionen

Z (induktive) Mengen Vor/Nachzustand

UML ? ?

I FormaleModellierung mit der UML

I . . . mit der OCL: Object Constraint Language

3 [19]

(4)

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)

4 [19]

(5)

UML als formale Spezifikationssprache

Diagrammtyp Modellierte Aspekte Formal

Klassendiagramm Statische Systemstruktur Ja Paketdiagramm Pakete, Namensräume

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)

4 [19]

(6)

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)

4 [19]

(7)

UML als formale Spezifikationssprache

Diagrammtyp Modellierte Aspekte Formal

Klassendiagramm Statische Systemstruktur Ja

Paketdiagramm Pakete, Namensräume Nein

Objektdiagramm Zustand von Objekten (Ja)

Kompositionsstrukturdiagramm Kollaborationen

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)

4 [19]

(8)

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)

4 [19]

(9)

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

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)

4 [19]

(10)

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)

4 [19]

(11)

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

Zustandsdiagramm Zustandsübergänge Ja

Sequenzdiagramm Kommunikation Ja

Kommunikationsdiagramm Struktur der Kommunikation (Ja) Zeitverlaufsdiagramm Echtzeitaspekte (Ja)

4 [19]

(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)

4 [19]

(13)

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

Kommunikationsdiagramm Struktur der Kommunikation (Ja) Zeitverlaufsdiagramm Echtzeitaspekte (Ja)

4 [19]

(14)

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)

4 [19]

(15)

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

4 [19]

(16)

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)

4 [19]

(17)

Diagramme in UML 2.3

Quelle: Wikipedia

5 [19]

(18)

Semantik der UML: Metamodellierung

Quelle: Wikipedia

6 [19]

(19)

OCL

I Object Constraint Langauge

I Mathematischpräzise Sprache für UML

I OO meets Z

I Entwickelt in den 90ern

I FormaleConstraints an UML-Diagrammen

7 [19]

(20)

OCL Basics

I GetypteSprache

I Dreiwertige Logik

I Ausdrücke immer imKontext:

I Invariantenan Klassen, Interfaces, Typen

I Vor/Nachbedingungenan Operationen oder Methoden

8 [19]

(21)

OCL Syntax

I Invarianten:

context class inv: expr

I Vor/Nachbedingungen:

context Type :: op(arg1 : Type) : ReturnType pre: expr

post: expr

I exprist ein OCL-Ausdruck vom Typ Boolean

9 [19]

(22)

Undefiniertheit in OCL

I Undefiniertheitpropagiert(alle Operationenstrikt) → OCL-Std.

§7.5.11

I Ausnahmen:

I Boolsche Operatoren (and,orbeidseitignicht-strikt)

I Fallunterscheidung

I Test auf Definiertheit:oclIsUndefinedmit

oclIsUndefined(e)=

true e=

false otherwise

I Resultierende Logik:dreiwertig

10 [19]

(23)

Dreiwertige Logik

I Wahrheitstabelle (starke Kleene-Logik,K3):

¬

⊥ ⊥ 0 1 1 0

∧ ⊥ 0 1

⊥ ⊥ 0 ⊥

0 0 0 0

1 ⊥ 0 1

∨ ⊥ 0 1

⊥ ⊥ ⊥ 1

0 ⊥ 0 1

1 1 1 1

−→ ⊥ 0 1

⊥ ⊥ ⊥ 1

0 1 1 1

1 ⊥ 0 1

←→ ⊥ 0 1

⊥ ⊥ ⊥ ⊥

0 ⊥ 1 0

1 ⊥ 0 1

I Fun Fact:K3 hatkeine Tautologien.

I Alternative:schwache Kleene-Logik (alle Operatoren strikt)

11 [19]

(24)

OCL Typen

I Basistypen:

I Boolean,Integer,Real,String

I OclAny,OclType,OclVoid

I Collection types:Set,OrderedSet,Bag,Sequences

I Modelltypen

12 [19]

(25)

Basistypen und Operationen

I Integer(Z) → OCL-Std. §11.5.2

I Real(R) → OCL-Std. §11.5.1

I IntegerSubklasse vonReal

I round,floorvonReal nachInteger

I String(Zeichenketten) → OCL-Std. §11.5.3

I substring, toReal,toInteger,characters etc.

I Boolean(Wahrheitswerte) → OCL-Std. §11.5.4

I or, xor,and,implies

I Sowie Relationen auf Real,Integer,String

13 [19]

(26)

Collection Types

I Set,OrderedSet,Bag,Sequence

I Operationen auf allen Kollektionen: → OCL-Std. §11.7.1

I size,includes,count, isEmpty, flatten

I Kollektionen werden immer flachgeklopft

I Set → OCL-Std. §11.7.2

I union,intersection,

I Bag → OCL-Std. §11.7.3

I union,intersection,count

I Sequence → OCL-Std. §11.7.4

I first,last,reverse,prepend,append

14 [19]

(27)

Collection Types: Iteratoren

I Iteratoren: Funktionen höherer Ordnung

I Alle definiert überiterate → 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;

}

I Iteratoren sind allestrikt

15 [19]

(28)

Modelltypen

I Aus Attribute, Operationen, Assoziationen des Modells

I Navigationentlang der Assoziationen

I Für Kardinalität 1 TypT, sonstSet(T)

I Benutzerdefinierte Operationen in Ausdrücken müssen zustandsfrei sein (Stereotyp<<query>>)

16 [19]

(29)

Style Guide

I Komplexe Navigation vermeiden (“Loose coupling”)

I Adäquaten Kontext auswählen

I “Use ofallInstances is discouraged”

I Invarianten aufspalten

I Hilfsoperationen definieren

17 [19]

(30)

MDA + OCL

I MDA: Model-driven architecture

I Entwicklung durchModelltransformation

I Rolle der OCL:

I Metasprache

I Codegenerierung

I Laufzeitchecks

I Beispiele für Werkzeuge: MDT/OCL

I MDT/OCL: EMF mit OCL-Unterstützung

18 [19]

(31)

Zusammenfassung

I Kritik UML:

I “OO built-in”

I Adäquat für eingebettete Systeme, CPS, . . . ?

I OCL erlaubtEinschränkungen auf Modellen

I Erlaubtmathematisch präzisere Modellierung

I Frage:

I Werkzeugunterstützung?

I Ziel: Beweise, Codegenerierung, . . . ?

19 [19]

Referenzen

ÄHNLICHE DOKUMENTE

Jeder Flug hat ein Start, ein Ziel, eine Kapazität (Anzahl verfügbarer Sitze), einen Piloten sowie eine Menge von zugeordneten Passagieren;. Piloten und Passagiere

I Nur konsistente Logiken (Mengen von Aussagen) sind sinnvoll. Definition

Vorlesung 5 vom 06.05.13: Eigenschaften der Prädikatenlogik erster Stufe.. Serge Autexier &amp;

I Wohlfundierte Relation aus Rekursionsstruktur terminierender Funktionen. I Angepasst an Beweisproblem und

I Allgemeine Typen: für frei erzeugte Datentypen kann Abbildung in natürliche Zahlen definiert werden, die die Anzahl der Konstruktoren zählt. Damit lässt sich

Kompositionsstrukturdiagramm Kollaborationen Nein Komponentendiagramm Dynamische Systemstruktur (Nein) Verteilungsdiagramm Implementierungsaspekte Nein. Use-Case-Diagramm Ablauf en

● vom Teilschlüssel direkt abhängige Attribute Löschen der direkt abhängigen Attribute aus der Ausgangstabelle. Erzeugung einer neuer

Sicher gibt es auch Fälle, in de- nen eine Methadon-Therapie mit weniger psychotherapeutischer Un- terstützung sinnvoll und erfolgreich sein kann.. Doch legt die Charakteri-