Semantik und Verification der Datenfluss in UML 2

Transcrição

Semantik und Verification der Datenfluss in UML 2
Technische Universität München
Fakultät für Informatik
Hauptseminar: Semantik der UML V2.0
Semantik des Objektflusses
Ye Shen
Betreuer: Herr Peter Graubmann
Chair: Prof. Manfred Broy
1.Einführung
1.1 Historie von UML
1.2 UML 1.x und UML2.0 Superstructure&Infrastructure UML
1.3 Motivation und Ziel
2. Aktivitätsdiagramm in UML 2.0
2.1 Abstrakte Syntax
2.2 Konkrete Syntax für Objektknoten, Objektfluss und
Parameter
3 . Semantik des Objektflusses
3.1
3.2
3.3
3.4
3.5
Die Begriffe „Semantischer Bereich“ und
Petri-Netze
Gefärbte Petri-Netze
Semantischer Bereich
Semantische Abbildung
4. Analyse des Objektflusses
4.1 Verifikation
4.2 Analyse
4.3 Quantitative Analyse
5. Zusammenfassung
2
„Semantische Abbildung“
1 Einführung
1.1 Historie von UML
Modelle sind ein natürlicher Weg, um komplexe Vorgänge und Systeme zu verstehen, zu
untersuchen, aber auch zu planen und sie dann in die Realität zu überführen. Seit
Mitte/Ende der 80er Jahren wurden OOAD Techniken (Objektorientierte Analyse- und
Designtechniken) parallel zu Objektorientierten Progammierensprachen entwickelt. Für
die verschiedensten Anwendungsbereiche sind eine Reihe von Methoden entwickelt
wurden. Die drei wichtigen Vertreter Booch, Rumbaugh (OMT - Object Modelling
Techniques) und Jacobson (OOSE – Object-Oriented Software Engineering) haben diese
auseinanderstrebenden Entwicklungen beendet und Mitte der 90er begonnen, ihre
jeweiligen Objektorientierten Analyse- und Designtechniken zur Unified Method (UM) zu
vereinigen.
Die Unified Modeling Language (UML) ist eine Sprache und Notation zur Spezifikation,
Konstruktion, Visualisierung und Dokumentation von Modellen für Softwaresysteme.
Abbildung 1: Historische Entwicklung objektorientierter Methoden und der UML.
1.2 UML 1.x und UML 2.0: Superstructure&Infrastructure
UML 1.2 tauchte im Jahr 1998 auf, UML 1.3 im Jahr 1999, UML 1.4 im Jahr 2001, und
UML 1.5 im Jahr 2002.
UML 2.0 zeigt die größten Veränderungen, die bis jetzt in UML vorgekommen sind.
UML 2.0 ist formal in folgende Teilbereiche gegliedert:
Infrastructure (Kern der Architektur, Profles, Stereotype)
3
Superstructure (Statische und dynamische Modellelemente)
OCL (Object Constraint Language)
Diagramm Interchange Format (UML Austauschformat)
Unterschiede zwischen UML1.x und UML 2.0
1. Klassendiagramm
2. Sequenzdiagramm
3. Zustanddiagramm
4. Aktivitätsdiagramm
Innerhalb dieser Präsentation werden nur Aktivitätsdiagramme berücksichtigt.
Definition des UML 1.x Aktivitätsdiagramms
„Aktivitätsdiagramme beschreiben die Aktivität von Objekten während des
Programmablaufes. Dabei beschreibt eine Aktivität einen einzelnen Schritt innerhalb
eines Systems. Ein Aktivitätsdiagramm ist eine spezielle Form eines
Zustandsdiagrammes, wobei die Zustände der Modellelemente in der Mehrzahl als
Aktivitäten definiert sind.“
Definition des UML 2.0 Aktivitätsdiagramm
„Ein Aktivitätsdiagramm beschreibt einen Ablauf und wird definiert durch verschiedene
Arten von Knoten, die durch Objekt- und Kontrollflüsse miteinander verbunden sind. Es
werden Aktions-, Objekt- und Kontrollknoten unterschieden.“
Die Semantik der Aktivitätdiagramme entspricht jetzt weitgehend der
Petrinetzsemantik. gibt Durch diese grundlegende Änderung der Definition ergeben sich
sehr viele weitreichende Veränderungen im Detail.
1.3
Motivation und Ziel
Wie oben gezeigt, hat sich im Vergleich zu UML 1.5, die Syntax des Aktivitätsdiagramms
außer beim Kontrollfluss dramatisch geändert. Die konkrete Syntax des Objektflusses,
alle abstrakte Syntax und insbesondere die Semantik sind davon beeinflusst.(in UML 1.5
ist das Aktivitätsdiagramm als eine spezielle Form eines Zustandsdiagramms definiert,
jetzt gibt es keine solche Beziehung mehr.) „Activities are redesigned to use a Petri-like
semantics instead of state machines.“ In diese Präsentation werden wir sehen, wie
Petrinetze für diese Ziel dienen können. Die traditionellen Petri-Netze sind dafür nicht
geeignet, wir werden eine andere Netzklasse benutzen, die „gefärbte
Petri-Netze“ genannt wird.
2
Aktivitätsdiagramme in UML 2.0
In diesem Abschnitt diskutieren wir die Aktivitäten des Aktivitätsdiagramms in UML 2.0.
Die Unterschiede zwischen UML 1.5 und UML 2.0 sind insbesondere zu beobachten. Als
Beispiel benutzen wir immer dasselbe Diagramm, das in der Abbildung 6 gezeichnet ist.
4
2.1 Abstrakte Syntax
Das zentrale Konzept das den Aktivitätsdiagrammen zugrundeliegt ist jetzt die Aktivität
und ersetzt den „ActivityGraph“ in aus UML 1.5. Aktivität ist keine Unterklasse von
Zustand, sondern „redesigned to use a Petri-like semantics instead of state machines.“
Abbildung 2 Abhängigkeit der Aktivitätspakete
Das Konzept der Aktivität betont die Abfolge von Ereignissen und die Bedingungen für
ihre Koordinierung zur Beschreibung des lower-level Verhaltens. Die beiden Konzepte
werden normalerweise Kontrollfluss und Objektfluss Model genannt. Die Aktionen, die
vonm Aktivitätd-Modell koordiniert, kann initiiert werden, wenn andere Aktionen fertig
ausgeführt sind.
Aktionen und Aktivitäten
Eine Aktionsausführung entspricht der Ausführung eine einzelnen Aktion innerhalb einer
Aktivität; ähnlich, eine Aktivitätsausführung ist die Ausführung einer Aktivität. Sie enthält
auch die Ausführung der Aktionen innerhalb der Aktivität. Jede Aktion kann in einer
Aktivität null, ein, oder mehrmals ausgeführt werden. Eine Ausführung ist nicht
augenblicklich durchgeführt, sondern braucht eine Zeitspanne.
Aktivitätsdiagramme bieten nicht die Spezifikation eines Zeitabstands, sondern
5
beschreibtdn nur den Ablauf einer Ausführung. Aktivitäten und andere Gruppierungen der
Aktionen müssen in einigen Schritten ausgeführt werden.
Mindestens, Aktionen brauchen die Verbindung zur Daten, sie sollen die Daten
transformieren und testen. Die Aktivitäten-Spezifikation (higher levels) erlaubt einige
threads für Kontroll-Ausführung auf einmal und ein Synchronisations-Mechanismus
sichern, das die Aktivitäten werden in eine spezifizierten Reihenfolge ausgeführt werden.
Semantik basiert auf aktuellen Ausführungen und kann in eine verteilt Implementierung
abgebildet werden. Manche Implementierungen können Objekte zusammen in eine
Aufgabe gruppieren und folgerichtig ausführen.
BasicActivites
Der erste Level “BasicActivities “ stützt die Modellierung von traditionelle sequentiellen
Flussdiagrammen ab. Kontrollsequenz ist inklusiv, aber fork und joins sind exklusiv.
Entscheidungen und merges sind abgestützt.
IntermediateActivities
Der “intermediate level “ stützt die Modellierung des Aktivitätsdiagramms ab, die aktuelle
Kontroll- und Objektflüsse enthaltet. Dazu werden „Basic Activities“ benötigt.
Aus Abbildung 3 können wir ersehen, dass Aktivitäten Aktionen, Aktivitätsknoten und
-kanten enthalten. Objektknoten ist eine Unterklasse von Aktivitätsknoten. Und Klasse
Aktivitätsknoten enthält Ausführbarknoten, Objektknoten und Kontrollknoten.
Von Abbildung 7 sehen wir, Objektfluss ist eine Unterklasse von Kante.
Abbildung 8 zeigt uns alle Unterklassen der Kontrollknoten , das sind: Startknoten,
Endknoten, Entscheidungsknoten, Mergeknoten. Forkknoten und Joinknoten.
Startknoten
„Startknoten
Ein Startknoten ist ein Startpunkt eines Ablaufes in einem
Aktivitätsdiagramm. Der Begriff Anfangsknoten ist synonym zu verwenden.“
Endknoten
„Ein Endknoten beendet den beschriebenen Ablauf, d.h. alle Aktionen und den
Kontrollfluss.“
Entscheidung
„Eine Entscheidung ist ein Kontrollknoten mit einem oder mehr ausgehenden
Kontrolflüssen, an dem aufgrund von Bedingungen entschieden wird, welcher von
mehreren weiterführenden Kontrollflüssen fortgesetzt werden soll.“
Merge
„Eine Merge ist ein Kontrollknoten, bei dem auf alle eingehenden Kontrollflüsse gewartet
wird ,bevor der Kontrollfluss fortgesetzt wird.“
6
Fork
„Eine Fork ist ein Schritt im Ablauf, an dem en eingehender Kontrollfluss ohne
Bedingungen sofort in mehrere ausgehende nebenläufige Kontrollflüsse geteilt wird.“
Join
„Eine Join ist ein Kontrollknoten, bei dem jeder von mehreren eingehenden
Kontrollflüssen sofort zu einem gemeinsamen ausgehenden Kontrollfluss führt.“
Abbildung 3 Klasse Diagramm (Knoten)
7
Abbildung 4 Fluss
Abbildung 5 Kontrollknoten
Angenommen eine Aktivität besteht aus <Aktivitätsknoten,Kante>, die die Aktivitätsknoten
und Kante die jeweilige Metaklasse wieder unterteilen. Das heißt auch Aktivitätsknoten ist
ein Tupel <EN,iN,fN,BN,CN,ON>
EN
die Menge der AusführbarKnoten
iN,fN die Startknoten und die Endknoten
BN
die Menge der Branchknoten, inklusiv Mergeknoten und Entscheidungsknoten
CN
die Menge der nebenläufigen Knoten, subsumiert Forkknoten und Joinknoten
ON
die Menge der Objektknoten
Und Kante ist ein Paar <AE,OF>:
AE
die Menge Kanten zwischen den Ausführbarknoten und den Kontrollknoten
OF
die Menge der Objektfluss zwischen den Ausführbarknoten und einerseits und
8
Objektknoten andererseits.
Später werden wir immer diese abstrakte Syntax benutzen, um eine Aktivität darzustellen.
In den folgenden Abschnitten werden wir immer das Beispiel aus Abb 6 nehmen um die
Konzepte und Methoden klar zu machen. Dieses Beispiel beschreibt einen
Verkaufsprozess. Das Geschäft bekommt die Bestellung von einem Kunden. Dann wird
das Geschäft sich entscheiden, ob die Bestellung akzeptiert werden kann. Wenn Ja,
werden zwei nebenläufige Prozesse ausgeführt. Zum einen sendet das Geschäft dem
Kunde die Waren. Zum anderen wird eine Rechnung auch zum Kunde geschickt. Dann
muss der Kunde dafür bezahlen. Wenn beide Sachen erledigt sind, können wir den
Waren-Verkaufensprozess abschließen.
Abbildung 6 ein
Objektdiagramm
einfaches
Aktivitätsdigamm
2.2 Konkrete Syntax
Der UML-Standard erlaubt drei verschiedene Notationen für den Objektfluss.(vgl.
Abbildung 7)
Abbildung 7 Konkrete Syntax für den Objektfluss: UML Notation (links),und
alternative quivalente UML 2.0 Notationen (alle andere)
9
mit
Definition für Objektknoten, Objeckfluss
„Ein Objektfluss gibt an, dass ein Objekt oder eine Menge von Objekten existiert.“
„Ein Objektfluss ist wie ein Kontrollfluss, bei dem jedoch Objekte (Objekt-Token)
transportiert werden.“
Die erste Alternative: Objektknoten können durch Rechtecke dargestellt werden. Der
Pfeil führt von oder zu einem Objektknoten. Das ist ähnlich wie in der UML 1.5. Nur der
gestrichelte Pfeil ist durch einen durchgezogenen Pfeil ersetzt worden.
Die zweite Alternative: Diese Version ist sehr praktisch. Sie erlaubt, einen Objektfluss an
ein Kontrollfluss anzuhängen. Man kann erst den Kontrollfluss spezifizieren, und später
den Objektfluss wahlweise noch beifügen.
Es gibt aber gleichzeitig auch einen Nachteil. Es ist nicht ganz klar, was die Notation
wirklich bedeutet. Zwei Erklärungen sind möglich. Erstens, Die Verknüpfung eines
Objektknoten mit einer Kante wird interpretiert als: Objektfluss fließt in den Objektknoten
rein und dann wieder herraus. Zweitens: Die Notation bedeutet, die Kontrollfluss-Kante
wird durch zwei Objektflüsse ersetzt. Diese Alternative ist aber nur eine andere
Schreibweise für die erste Alternative.
Die dritte Alternative: Diese Alternative spezifiziert Pins (Unterklasse von Objektknoten)
als die „Paramentern“ der Aktivität.
Kfz.Fahrzeug
Protokoll:Ubergabeprotokoll
Parameterdeklaration
Kfz
Eingangs-parametern
Kfz-Zus
tand
Kfz
Übergeben
Abbildung 8. Notation von Parametern
Protokoll
AusEingangs
parametern
Pins können wiederum zu Gruppen zusammengefasst werden. Innerhalb einer
Parametergruppe müssen alle definierten Objekte bereitstehen, bevor die Aktivität startet
und alle Objekte innerhalb einer Gruppe müssen auch bereitgestellt sein, bevor der
Kontrollfluss weiter geht.
10
P1
P3
Aktions
knoten
P4
P2
P5
Abbildung 9 : Parametergruppen
Sofern mehrere Parametergruppen definiert werden, ist zu beachten, dass der
Kontrollfluss immer nur in einer von mehreren Parametergruppen fließen kann.
Abbildung 10 eine spezifizierte Version für die Aktivitätsdiagramm der Abbildung 6
Am End dieses Abschnitts geben wir eine andere spezifizierte Version für das
Aktivitätsdiagramm der Abbldung 6.
Die effect reject und guard accept sind schon entfernt. Für eine formale Sprache ist eine
vollständige Beschreibungen benötig. Reject und accept stellen menschliche
11
Entscheidungen im Aktivitätsdiagramm dar und bleiben offen. Darum wurden sie in der
Petrinetzdarstellung entfernt.
Nehmen wir Abbildung 10 zu klären. In diesem Beispiel gibt es drei Arte von Anschriften.
Erstens, es gibt Typ Deklaration auf Objektknoten (sie werden colors der bezüglichen
CPN Stellen in unserer Interpretation). Manche Objektknoten deklarieren auch eine
Variable (die wird in unseren Interpretation o genannt).
Zweitens, es gibt effect, Selection und Transformation in geschweiften Klammern auf
Aktivitätskanten. Sie funktioniert in einem gegebenen „name space“, innerhalb diese
„name space“ ändern sie den Status einiger Objekte.
Dritte, es gibt guard-Funktionen in eckigen Klammern auf Aktivitätskanten. Sie rufen die
name space ab, und können in den Zustand eines Objekts lesen.
3
3.1
Semantik des Objektflusses
Begriff von „semantischer Bereich“ und
„semantische
Abbildung“
Um miteinander kommunizieren zu können, brauchen wir den „Ausdruck“. Es ist gut,
wenn jede Kommunikationsteilnehmer denselben Ausdruck benutzt. Ein Semantik einer
Sprache Ls, besteht aus zwei Anteilen: ein „Semantischer Bereich“, die bezeichnen wir
normalerweise mit Sl oder einfach S, wenn es keine Konfusion gibt. Und ein „semantische
Abbildung“ , die von Syntax nach „Semantischer Bereich“, ist mit Ml oder M bezeichnet. In
der Semantik einer Sprache geht es um die Bedeutungen von einem Ausdruck. Diese
Bedeutung muss ein Element in einer gut definierten Domäne sein. z.B die Bedeutung
eines arithmetischen Ausdrucks in der Sprache <Exp> ist ein Nummer N. Hier benutzen
wir S=N als semantischer Bereich von <Exp>.Und semantische Abbildung hängt dann
jeden Ausdruck <Exp> mit eine Nummer zusammen. M:<Exp>Æ N
Language
+
Syntax
=
Notaion
semantics
+
Semantischer
Bereich
Abbildung 11 Stuktur einer Sprache
12
Semantische
Abbildung
3.2
Petri-Netze
Petri-Netze sind ein häufig benutzte Modellierungssprache zur Darstellung von Systemen
und den Abläufen innerhalb dieser Systeme. Heute gibt es eine Menge von
Netz-Varianten, die auf C.A. Petris Arbeit in den frühen 60er Jahren basieren. Allen
Petri-Netzen gemeinsam ist ihr grundsätzlicher Aufbau. Sie bestehen aus
•
•
•
Systemzuständen (Stellen)
Zustandsübergängen (Transitionen)
gerichteten Kanten zwischen Stellen und Transitionen, die diese miteinander
verbinden
Eine Petri-Netz ist ein Tupel
PN=(P,T,A)
P ist eine endliche Menge von Stellen.
T ist eine endliche Menge von den Transitionen.
A ist eine endliche Menge von gerichteten Kanten zwischen Stellen und Transitionen
In den Stellen des Netzes können sich mehrere Marken befinden, die den Zustand des
Systems anzeigen.
P∩T=P∩A=T∩A=
In den Stellen des Netzes können sich mehrere Marken befinden, die den Zustand des
Systems anzeigen. In einfachen Petri-Netzen haben die in den Stellen abgelegten Marken
keine besonderen Eigenschaften. Eine Transition kann schalten, wenn in ihren
Eingangsstellen genügende Marken vorhanden sind. Das Schalten entfernt in diesem
Beispiel je eine Marke aus den Eingangsstellen und fügt in jeder Ausgangsstelle eine
Marke hinzu.
Abbildung 12 ein Beispiel von Petri-Netze
Das Hauptproblem der einfachen Petri-Netze ist ihr Umfang. Viele Situationen erfordern
eine umfangreiche Netzdarstellung.
13
3.3
Gefärbte Petri-Netze
Um das Problem der einfachen Petri-Netze zu lösen wurden high level Petri-Netze
entwickelt. Gefärbte Petri-Netze sind high-level Petrin-Netze, die unterschiedliche Arten
von Markierungen erlauben.
In der neuer UML 2.0 wird festgestellt, Aktivitäten„ use a petri-like semantics instead of
state machines”.Aus pragmatischem Grund nehmen wir hier gefärbte Petri-Netze als
„Semantischer Bereich“.
Abbildung 13 Ein abstraktes Beispiel von CPN
Sehen Sie Abbildung 13. Im diese Abbildung, das Gewicht an der Kante der
Ausgangsstelle P3 ist 2. Deshalb werden zwei Marken beim Schalten in die
Ausgangsstelle hinzugeführt.
3.4
Semantischer Bereich
Definition 3.4 (Struktur der Gefärbten Petri-Netze)
(CPN) ist ein Tupel <N,SigAlg,color,guard,effect> mit
N ist ein Petri-Netz <P,T,A> von den Stellen (places) den Transitionen (transitions) and
Kanten
SigAlg ist eine ∑ Algebra <∑,Op> von Marken und Operationen
Color
ist eine totale Funktion P Æ ∑ setzt eine Marke zu jeder Stelle
Guard ist eine totale Funktion T ÆExpr setzt einen booleschen Ausdruck zu jeder
14
Transition fest, vorgegebener Wert ist die Konstante tt.
Effect
ist eine totale Funktion A Æ Expr setzt einen Ausdruck zu jeder Kante, ihr Typ ist
die „color“ der Stelle der Kante.
Color, guard und effect können teilweise spezifiziert werden, mit vorgegebener Wert
Schwarzpunktmarke. Das heißt wenn color(p) undefiniert ist, nehmen wir
color(p)=MARKEN(TOKEN).Eine Markierung eines Petri-Netze ist eine Multimenge von
{<p,v>|p P,v color(p)}
3.5
Semantische Abbildung
In Beziehung zum Kontrollfluss, AusführbarKnoten werden Transitionen, Kontrollknoten
werden Stellen oder Transitionen, und Aktivitätskanten werden Netzkanten,
möglicherweise mit Hilfstransitionen oder Stellen. In Beziehung zum Objektfluss,
Objektknoten werden Netzstellen und Objektfluss werden Netzkanten.
Ausführbarknoten
UML
Aktivitaet
Petri-Netze
Kante
UML
Petri-Netze
Aktivität
Kontrolknoten
außer:
Fork/join
außer das:
Hilfstransaktion
Objektknoten
Typ
Tpy
Objektfluss
expr
expr
Abbildung 14 Die Intuition von semantische Abbildung für Kontrol und Objekt Fluss
der Aktivitäten.
Um das oben gezeichnete Beispiel zu analysieren, müssen wir die abstrakte Syntax einer
Aktivität (Aktivitätsknoten, Aktivitätskanten) in ein CPN <N,SigAlg,color,guard,effect> mit
einer Funktion [_]
abbilden. Diese semantische Funktion ist so definiert:
P={iN,fN}∪BN∪ON∪{Pe∈AE,{e.source,e.target} ⊆EN∪CN}
P ist eine endliche Menge von den Stellen. P ist gleich Startknoten und Endknoten,
vereinigt mit BN (den Branchknoten) und ON (den Objektknoten), und vereinigt mit Stellen,
die zusätzlich zwischen Kontrollknoten eingefügt werden müssen, um die
Petri-Netz-Syntax zu realisieren.
T=EN∪CN∪{Te|e∈AE, {e.source,e.target}⊆BN∪{iN,fN}}
15
T ergibt sich aus den ausführbaren Knoten vereinigt mit CN (den nebenläufigen Knoten:
fork ,join) und zusätzlichen Transitionen, die als Hilfstransitionen eingeschoben werden
müssen. Diese zusätzlichen Transitionen werden zwischen Branch-, Start- und
Endknoten und den anderen Knoten aus dem Aktivitätsdiagramm eingefügt.
A={<e.source.xe>,<xe,e.target>|e∈AE,xe∈P∪T}∪{<x,y>|<x,y>
∈AE∧(x∈P,y∈T)∨(x∈T,y∈P)}
A ist eine endliche Menge von Kanten zwischen Stellen und Transitionen. Sie besteht aus
zwei Teilen.
Den ersten Teil bilden Petri-netz-Kanten, die sich aus den Kanten des
Aktivitätsdiagramms ableiten, die zwischen den ausführbaren bzw. den Kontrollknoten
bestehen, wenn Hilfstransitionen bzw. -Stellen eingeschoben worden sind. Den zweiten
Teil bilden die Kanten des Aktivitätsdiagramms, die unmittelbar in das Petri-Netz
umgesetzt werden können. (Vergleichen Sie bitte Abbildung 14).
SigAlg=<{o.type|o∈ON},{a.transformation|a∈OF}>
ist eine ∑ Algebra <∑,Op> von Marken und Operationen
color={oÆo.type|o∈ON}
Die Funktion color setzt eine Markierung, die von Objektknoten in die Markierung
abgebildet, zu jeder Stelle.
Effect={aÆa.transformation|a∈OF}
setzt einen Ausdruck zu jeder Kante; ihr Typ ist die „color“ der Stelle der Kante.
Guard={tÆ∧<a,t>∈OF a.selection ∧
∧<t,a>∈OF a.selection |a∈OF}
Für jeden Objektfluss, der in eine Transition führt bzw. aus einer Transition herauskommt,
ist mit a.selection ein Wahheitswert definiert. Die guard-Funktion prüft alle diese
Wahrheitswerte (mit einer logischen Und-Verknüpfung) ab.
4. Analyse des Objektflusses
Mit der oben definierten Semantik können wir jetzt alle Standard-Bewertungs- und
Verifikationstechniken der Petri-Netze für die UML 2.0 Aktivitätsdiagramme übernehmen.
Angenommen, A ist eine Aktivität, die durch die oben genannte Semantik zu einem CPN
N abgebildet wird ([A]=N).
4.1 Verifikation
Eine Ablaufverfolgung (trace) ist eine Hilfsmittel für das Testen oder die Überprüfung
eines Designs. Eine Ablaufverfolgung kann sich in einer Ablaufverfolgung verwandeln,
wenn man die „internen“ Funktionen aux , fork and join . Die Aktivität in der Abbildung 10
ist jetzt in der Abbildung 15 als CPN dargestellt.
16
(id,false,false,false,false)
id
1´1
iN
INT
Receive_order
p1
ORDER
order
order
fill_order
fill(order)
p2 ORDER
order
order
fork
order
ORDER
p5
p3
order
ship(order)
p4
Receive_payment
p7
join
#1 order
pay(order)
ORDER
order2
join(order,order2)
close_order
INT
aux
bill(order)
p6 ORDER
order
order
fN
order
Send_invoice
Ship_goods
ORDER
ORDER
p8
order
order
ORDER
Abbildung 15 Das Petri-Netze repräsentiert die Aktivität und den Objekttyp, die in
Abbildung 10 definiert sind.
Hier ist eine Anfangsmarke nötig. Wir nehmen einfach eine Marke mit Wert 1 als
Anfangsmarke. Angenommen eine Anfangmarke (Initialmarkierung) für die Stelle
repräsentiert einen Startknoten. In Abbildung 15, die Anfangsmarke ist 1’1.
Wir benutzen CPN Toolset als Simulator und CPNs mit standard ML Ausdruck wird als
unsere Semantik Domäne ausgewählt. Der Text für Abbildung 15 benutzt Standard ML
code. (ORDER ist ein Benutzer definiertes Typ.)
Color ORDER=product INT *BOOL*BOOL*BOOL*BOOL
Var id:INT;
Var order,order2:ORDER;
fun init()=(1,flase,flase,flase,flase);
fun fill(o1:ORDER):ORDER=(#1o1,true,#3 o1,#4 o1,#5 o1)
fun bill(o1:ORDER):ORDER=(#1 o1,#2 o1,true,#4 o1,#5 o1)
fun pay(o1:ORDER):ORDER=(#1 o1,#2 o1,#3 o1,true,#5 o1)
fun ship(o1:ORDER):ORDER=(#1 o1,#2 o1,#3 o1,#4 o1,true)
fun join(o1:ORDER, o2:ORDER):ORDER=(#1 o1,#2 o1 orelse #2 o2, #3 o1 orelse
#3 o2 ,#4 o1 orelse #4 o2 ,#4 o1 orelse #4 o2);
ORDER ist ein vom Benutzer definierter Typ, der aus 5 Elemente besteht. Das erste ist
„
„
„
„
„
„
„
„
„
17
eine integer Typ. Es bezeichnet die Nummer einer Bestellung. Das zweite Elemente
bezeichnet, ob die Bestellung akzeptiert ist. Das dritte Elemente bezeichnet, ob die
Rechnung zum Kunde geschickt ist. Wenn der Wert True ist, ist sie schon geschickt
worden. Wenn das vierte Elemente True ist, heißt das, dass der Kunde schon bezahlt hat,
sonst bleibt das Element false.
Aus dem fünften Element kann man ersehen, ob die Waren schon zum Kunde geschickt
wurden.
Duch die Funktion join werden zwei Variable zusammengesetzt. Nur wenn für beide
Aktivität fertig ist, bekommen wir als Resultat (1,true,true,true,true), und der Prozess kann
jetzt enden.
1´1
(id,false,false,false,false)
id
iN
INT
Receive_order
p1
ORDER
order
order
fill_order
fill(order)
p2 ORDER
order
order
fork
order
ORDER
p3
p5
order
ship(order)
p4
Receive_payment
p7
join
#1 order
pay(order)
ORDER
order2
join(order,order2)
close_order
INT
aux
bill(order)
p6 ORDER
order
order
fN
order
Send_invoice
Ship_goods
ORDER
ORDER
p8
order
order
ORDER
Abbildung 16 ein Schritt innenhalb eines Ablauf
In abb. 16 wird ein ausgewählter Ablauf des CPN aus Abb. 10 vorgestellt. In der linken
Spalte findet sich die Markierung der jeweiligen markierten Stelle, so bedeutet z.B.
<p2,<1,tt,ff,ff,ff>>, dass die Stelle p2 mit dem Objekt-Token ,<1,tt,ff,ff,ff> belegt ist.
Die zweite Spalte zeigt die schaltende Transition. Die dritte Spalte gibt die
Variablenbelegung für die dabei verwendeten Funktionen wieder (z.B., für das Schalten
18
der Transition „fill-order“ wird die Variable o1 der Funktion fill mit dem Wert <1,tt,ff,ff,ff>
gebunden).
Abbildung 17 Ein Ablauf des CPN.aus Abb. 16
(Die funktionale Programmiersprache Standard ML ist eine getypte Sprache, die einige
Unterstützung bei der Programmierung bietet:
1. Typsystem: Automatische Herleitung von Typen bei der Übersetzung, Deklaration von
freien Datentypen, Abstrakte Datentypen; Datentyp kann sein; Atomar (integers, reals,
strings, booleans und enumerations) oder strukturiert (products, records, unions, lists und
subsets).
2. Funktionen: Höherstufige Funktionen, Funktionsdefinition durch Fallunterscheidung
nach Mustern des Arguments
3.Imperative Konstrukte: referenzierbare Objekte (Zeiger), Schleifenkonstrukte
4. Modulsystem: Verpackung von Typen, Objekten und Funktionen in ,,Strukturen''
Zusammensetzung von Strukturen zu größeren Moduln durch ,,Funktoren'' ,
Spezifikation und Überprüfung von Schnittstellen zwischen Moduln
5. Neuübersetzung nach Programmänderungen: Automatische Abhängigkeitsanalyse
zwischen Moduln , Automatische Neuübersetzung nur der notwendigen Module )
4.2 Analyse
Es praktisch wenn man sich entscheiden kann, ob ein bestimmter Zustand erreicht
werden kann.So kann z.B. die Frage „Wird der Endzustand unter allen Bedingungen
erreicht?“ folgendermaßen formuliert werden:
19
∀m ∈ RN ( m) : m ∈ RN (m)
m ist die Anfangsmarkierung von N (CPN)
m ist die Endmarkierung von N (CPN)
R N (m)
bedeutet die gesamte Menge von Markierung von N(CPN), die erreicht werden
können.
Als weitere interessante Frage kann die Feststellung der Abwesenheit von Deadlocks für
CPNs folgendermaßen formuliert werden:
t
∀m ∈ RN ( m) : ∃t ∈ TN : m ⎯
⎯→
⎯→ eine Petri-Netz-Notation, die bedeutet, dass die Transition t unter der
Dabei ist m ⎯
t
Markierung m aktiviert ist.
Diese Frage “wenn eine Bestellung ausgeführt ist, wird die bezügliche Waren schließlich
auch geliefert? “kann so fomuliert werden:
fill _ order
∀m ∈ RN ( m) : ∃t ∈ TN : m ⎯⎯
⎯⎯→ ⇒
goods 0 rder
∃m' ∈ RN ( m) : m' ⎯ship
⎯−⎯
⎯⎯
⎯→
Diese Beispiele zeigen, dass es nicht schwer ist, wichtige Fragestellungen an das System
in die Sprache der Petri-Netze umzusetzen und damit einer formalen Analyse zugänglich
zu machen.
4.3 Quantitative Analyse
In unserem Beispiel ist es nicht hinreichend, zu überprüfen, ob die Waren schlussendlich
geschickt worden sind, sondern es sollten auch vorgegebene Zeitbegrenzungen (time
bound) eingehalten werden. Für viele Anwendungen ist es außerdem praktisch, z.B. die
Anzahl der Bestellungen in dem System in eine gegebene Zeit zu bestimmen. Für solche
Anfragen werden oft stochastische Petri-Netze verwendet. Für UML 1.x gibt es zu diesem
Thema bereits viele Arbeiten, die sich mit den entsprechenden Problemen befassen; auch
für UML 2.0 sind entsprechende Lösungen zu erwarten.
20
5
Zusammenfassung
In dieser Präsentation wurden Unterschiede zwischen UML1.x und UML 2.0 diskutiert.
Die Begriffe Petri-Netze und gefärbte Petri-Netze sind dargestellt worden. Weil
Aktivitätsdiagramme und Petri-Netze verwandt sind, ist es nicht schwer ein
Aktivitätsdiagramm in ein Petri-Netz umzusetzen. Die Semantische Abbildung von
Aktivitätsdiagrammen auf Petri-Netze wurde diskutiert. Anhand eines Beispiels, wurde
gezeigt wie man ein UML Aktivitätsdiagramm in ein CPN umsetzen kann.
[1]Harald Störrle: Semantics and Verification of Data Flow in UML 2.0 Activities. Institute
für informatik, Ludwig-Maximilians-Universität München, Germany
[2]B. Oesterreich:
Die UML2.0 Kurzreferenz für die Praxis 2004. Oldenbourg
Wissenschaftsverlag GmbH
[3]Marc Born, Eckhardt Holz, Olaf Kath:
Softwareentwicklung mit UML2.0.
Addison-Wesley ,2004
[4]Cris Kobryn, Grady Booch, Ivar Jacobson and Jim Rumbaugh: UML DistilledThird
Edition a Brief Guide to the Standard Object Modelling Language.
Addison-Wesley
[5] K. Jensen G. Rozenberg:
High–level Petri Nets. Theory and Application.
Springer-Verlag Berlin Heidelberg, 1991
[6] Roberto W.S. Rodrigues: Formalising UML Activity Diagrams using Finite State
Processes. Imperial College, 180, Queen’s Gate SW7 2BZ, London UK.
[7] CP-Netze und Werkzeuge
http://www.daimi.au.dk/CPnets/
http://www.ento.vt.edu/~sharov/PopEcol/lec1/petrinet.html
PSUML(UML Diagrammer)
[8] UML
http://www.oose.de/
[9] UML 2.0 Superstructure Specification.
21