Object Constraint Language OCL

Download Report

Transcript Object Constraint Language OCL

Einführung in die UMLObject-ConstraintLanguage OCL
Runqiu Song
24.06.03
Projektgruppe Intelligente Datenbank
im SS03
Überblick
UML – Motivation
UML - Was ist es?
UML – Eigenschaften
UML – Bestandteile
UML – Beziehungen
UML – Bestandteile – Strukturelemente
UML – Bestandteile – Verhaltensweisen
UML – Bestandteile - Gruppierungen und Kommentare
OCL – Einführung
OCL – typisches Problem
OCL – Beispielausdrücke
OCL – Beispielausdrücke – Anfragen
OCL – Typhierarchie
OCL – Typhierachie – Operationen
OCL - Typhierachie – Komplexe Typen
OCL - Typhierachie – Komplexe Typen – Operation
OCL und UML Klassen Modelle
OCL - Systemzustand
UML - Motivation
Unternehmensinterne Informationssysteme
Banken und Finanzdienstleistungen
Telekommunikation
Transportwesen
Verteidigung/Luft- und Raumfahrt
Einzelhandel
Medizinelektronik
Wissenschaft
Verteilte Web-basierte Dienste
=> Komplexe Softwaresysteme erfordern besondere Sorgfalt bei
der Entwicklung
UML - Was ist es?
 UML (Unified Modelling Language) ist eine grafische Sprache zur
Beschreibung von Softwaresystemen. Man benutzt UML zur
Visualisierung, Spezifizierung, Konstruktion und Dokumentation
der Bestandteile eines Softwaresystems und den Beziehungen
zwischen ihnen.
Beispiel:
class Hello extends Applet{
public void paint(Graphics g){
...
}
}
UML - Eigenschaften
Visualisierung


Ohne formalisierte Visualisierung spricht jeder seine eingene Sprache,
so daß es zu Fehlern und Mißverständnissen kommen kann.
Infomationen gehen vorloren.
Spezifizierung
Präzise, eindeutige und vollständige Modelle erstellen
Konstruktion
Keine visuelle Programmiersprache, sondern sprachübergreifend
---- läßt sich auf verschiedene Sprachen abbilden.
Dokumentation
Anforderung
Architektur
Projektpläne Entwurf Quellcode
Tests
UML - Bestandteile


UML beschreibt Softwaresystem, ist aber selbe auch ein System und besteht aus Dinge
und Beziehungen zwischen den Dingen.
Zusammenhänge werden in UML mit Hilfe von Diagrammen dargestellt. Die meisten
Diagramme zeigen nur ein Ausschnitt des zu modellierenden Systems.
UML – Bestandteile - Beziehungen



In UML gibt es vier Arten von Beziehungen
Abhängigkeit
Assoziation
0..1
Arbeitgeber


*
Arbeitnehmer
Generalisierung
Realisierung
UML - Bestandteile
Things (Dinge) sind die grundlegenden objektorientierten Bestandteile der
UML.
 Strukturelemente
 Verhaltensweisen
 Gruppierungen
 Kommentare
Strukturelemente sind die Grundbestandteile eines UML Modells.
Es gibt insgesammt 7 Arten von Strukturelementen.
UML – Bestandteile - Strukturelemente
 Klasse
ist eine Beschreibung einer Menge von Objekten
 Schnittstelle
Ist eine Zusammenfassung von Operationen,
Die einen Dienst einer Klasse oder Komponente
Spezifizieren.
ISpelling
Window
ursprung
größe
öffnen()
schließen()
UML – Bestandteile - Strukturelemente

Kollaboration
ist eine Gruppe von Klassen, Schnittstellen und anderen
Elementen, die zusammenarbeiten, um ein kooperatives
Verhalten zu bieten, das mehr leistet als die Summe seiner Teile.
Verantwortlichkeitskette
UML – Bestandteile - Strukturelemente
 Aktive Klasse

Ist eine Klasse, deren Objekt einen oder mehren Prozesse oder
Thread besitzen und daher Stuerungsaktivitäten in Gang setzen
können.
EreignisManager
Komponente
ist Software Einheit, aus der die Applikation
aussetzen()
zusammengebaut wird.
verwerfen()
Mercedes
Ifahrzeug
UML – Bestandteile - Strukturelemente

Knoten
Ist ein zur Laufzeit vorhandendes physisches Element, das eine
Rechnerresource repräsentiert und im allgemeinen zumindest ein Speicher
und oft auch Rechenkapazität besitzt.
Server

Auftrag erteilen
Anwendungsfall
Ist eine Beschreibung einer Menge aufeinander folgender Aktionen, die ein
System ausführt und die ein beobachtbares Ereignis hervorbringt.
UML – Bestandteile - Strukturelemente
UML – Bestandteile - Verhaltensweisen
Verhaltensweisen sind die dynamischen Bestandteile von UML Modell .
Sie sind die Verben eines Modelles , die das Verhalten in Zeit und Raum
repräsentieren. Es gibt insgesammt zwei Hauptarten von
Verhaltensweisen.

Interaktion
Eine Interaktion ist eine Verhaltenweise, die eine Menge von
Nachrichten umfasst, welche von einer Menge von Objekten in
einem bestimmten Kontext zum Erreichen eines bestimmten
Zwecks ausgetauscht werden.
anzeigen
UML – Bestandteile - Verhaltensweisen
UML – Bestandteile - Verhaltensweisen

Automat
Das Verhalten einer einzelnen Klasse oder einer Kollaboration
von Klassen kann mit einem Automaten spezifiziert werden.
UML – Bestandteile - Gruppierungen und Kommentare

Gruppierungen Sind die zur Organisation gehörenden Teile von
UML-Modellen. Es sind Kästchen, in die ein Modell zerlegt
werden kann. Es gibt nur eine Hauptart von Gruppierung,
nämlich packete.
Kopf

Kommentare
Datum zurückgeben
OCL - Einführung



Vor OCL wurden die Integritätsbedinungen textlich , informell
mit Hilfe von Kommentaren beschrieben.
OCL wurde eingeführt, um die Beschränkungen formal zu
beschreiben.
Beispiel
OCL – typisches Problem
Dieses Beispiel liefert wegen unterschiedlichen
Iterationsreihenfolgen verschiedenen Ergebnisse.
rs : RentalStation
rs.employee->iterate ( P:Person; names: String = “ “ | names.concat(p.lastname))
OCL – Beispielausdrücke
Beispiele
Person
self.age > 0
self --- Instanz von Typ Person
RentalStation
Self.employee->forAll ( p | p.income(„98/03/01“) >2000 )
forAll testet ,ob jede Element einer collection ein Prädikat
erfüllt.
OCL – Beispielausdrücke - Anfragen
Company
self.vehicle select( v|v.registration.substring(1,3) = „R24“)
OCL - Typhierarchie

In OCL gibt es folgende Basisdatentypen : Integer, Real, Boolean,
String. Jeder dieser Basisdatentypen enthält zusätzlich noch den
undefinierten Wert  .
 Aufzählungstypen ---- Basis Datentypen erweitern .
 Beispiel:
enum{compact,midsize,luxury} in Abbildung.1 kann als Typ
CategoryKind ausgezeichnet werden.
OCL – Typhierachie - Operationen

Operationenen auf Basisdatentypen
{,: BooleanBooleanBoolean,:BooleanBoolean,...}
{+,-,*, /,div,mod,max: IntegerIntegerInteger,...}
{,<=,>=,>: IntegerIntegerBoolean,...}
{+,-,*, /,max,min: RealRealReal,floor : RealInteger,...}
{,<=, >=, >,:RealRealBoolean,...}
{concat: StringStringString,size : StringInteger,...}

undefinierte Werte als Parameter -----einen undefinierten
Wert als Ergebnis
Ausnahme----- boolschen Operationen . False ------immer False
True -------immer True.
Ausnahme ------- forAll und exits
OCL - Typhierachie – Komplexe Typen
Komplexe Typen



mehrere Werte -----collection Typen.
Set, bag und sequence
z.B:Sequence(Integer) -----eine Liste mit Integer Elemente.
Collection Typen können nicht geschachtelt werden.
Verflachungsprozess

Z.B c.rentalStation->collect( employee).-----------Bag(Set(Person))



-------Bag (Person)
Set{set{1,2},set{3,4},set{5,6}}  Set{1,2,3,4,5,6}
Sequence{Set {p1,p2}}, p1 und p2 sind Variable, die auf Objekte vom
Typ Person zeigen --------Sequence{p1,p2} ?--------Sequence{p2,p1}?
Die Anforderung, das alle Datentypen eine Reihenfolge haben ist sehr
stark. Deswegen schlagen wir vor, das Reihenfolge des
Auswertungsergebnisses zu behalten.
OCL - Typhierachie – Komplexe Typen - Operation


Eine Menge von Operationen ist auf den Typ-Ausdrücken definiert
Beispiele:
OCL Feature
Operation
union: Set(s)Set(s)Set(s)
set->union(set2:Set(T)):Set(T)
bag->including(object:T):Bag(T) including: Bag(s)sBag(s)
size: Set(s)Intege
Collection->size: Integer
size:Sequence(s)Integer
size:Bag(s)Integer

Die linke Seite von dem Pfeil deutet eine Instanz von dem gegebenen
Typ an. Eine entsprechende Operation ist in der rechter Spalte
gegeben.Geerbte Funktion auf Typ Collection fordert spezifische
Operation von jedem Untertyp. Die passende Operation wird
ausgewählt beim Entscheiden ob der Collection Ausdruck ein set, bag
oder sequence ist.
OCL und UML Klassen Modelle





Die folgenden Teile eines UML Klassenmodells sind von OCL Ausdrücken
ansprechbar:
Classifiers: jeder Classifier führt ein Typ ein. Er ist eine Klasse oder Schnittstelle.
Attribut : Die Datenfelder der Classifiers.
Association: verbintet 2 oder mehr Classifiers.
Operation: Methode. ( Seiteneffektfrei)
Enumerations : Aufzählungstypen

Wir definieren jetzt ein UML Klassenmodell als eine Struktur M =
(C, ,
ATT c , Op c ,ASSOC)c mit folgenden Bedeutungen:
C ist einen Menge von Classifiers

C = {Vehicle, Car, Motorcycle, Company, RentalStation, Person}

ist eine partielle Ordnung auf C, die die Generalisierungs-Hierachie der Classifiers
wiederspiegelt

= { (Car, Vehicle),(Motorcycle,Vehicle)}
OCL und UML Klassen Modelle

- Opc ist eine Menge von Signaturen für seiteneffektfreieW : c  s ... s  s
Operationen, die für einen Classifier c definiert sind und Ergebnistyp s
haben. Der erste Parameter deutet eine Instanz an, auf der eine
Funktion angewandt wird (manchmal auch Empfänger einer Meldung
genannt).
C
Op
c
1
n
 {stock Pr iceCompany : Company  Re al , incomeperson : Person  Date  Integer}
OCL und UML Klassen Modelle

ist eine Menge von Operations-Signaturen c : c  s
für Funktionen, die ein Objekt von Typ c zu einem entsprechenden
Attributwert vom Typ s abbildet. Das Attributsymbol ac ist eine
Element von A attr .
ATT
c
a
 ASSOC c ist eine Menge von Operations-Signaturen
r
c ,c '
:c  s
für Funktionen, die eine Instanz zurückliefern, die einem Objekt von
Typ c‘ entspricht. Das Operationssymbol r  Arole ist nach dem
eindeutigen Rollen-Namen am Associationsende gewählt. Nach der
Vielfachheit einer Association, kann das Ergebnis vom Typ s entweder c’
für einzelwertige Associationen, Set(c’) für mehrwertige Associationen
oder Sequence(c’) für angeordnete Associationen sein.
OCL - Systemzustand


Systemzustand zu einem bestimmten Zeitpunkt bietet einen
Kontext für die Auswertung von OCL Ausdrücken.
Objektinstanzen, deren Attributwerten, und die Verbindungen
(Association) zwischen Instanzen
Zusamenfassung
Dieser Vortrag ist eine sehr grobe Einführung in UML und OCL. Er
beantwortet folgende Fragen:
----Was ist UML und OCL und was für eine Beziehung gibt es
zwischen ihnen?
----Was sind Grundbestandteile von UML , wie sie in einem System
funktionieren und wie man sie zusammenfügt.
----Was für Datentypen gibt es in OCL und was für Operationen
gibt es auf diesen Datentypen.
----Die Verbindung von OCL und den Elementen des UML
Klassenmodells und der Systemzustand.