3. Übung zu Software Engineering

Werbung
3. Übung zu Software Engineering
WS 2007/2008
Philipp Ciechanowicz
Aufgabe 4
Betrachten Sie das unten dargestellte
Klassendiagramm, das für eine Bibliothek
zur Verwaltung ihrer Buchbestände
modelliert wurde. Modellieren Sie die
verschiedenen Zustände, die ein Buch im
Laufe seiner Nutzung in der Bibliothek
einnehmen kann, als Harel-Automaten
(Statechart). Gehen Sie davon aus, dass ein
Buch von höchstens einer Person vorbestellt werden
kann, weitere Vorbestellungen sind dann nicht mehr
möglich. Modellieren Sie einen geeigneten Start- und
Endzustand und berücksichtigen Sie dabei, welche
Methoden der Klasse wann verwendet werden können.
Übung zu Software Engineering im WS 2007/2008
1
Philipp Ciechanowicz
Aufgabe 4
Zustandsautomat A = (Q, ∑, δ, q0, F)
Q: endliche Zustandsmenge
Σ: endliches Eingabealphabet
δ: Q х ∑ Æ Q Übergangsfunktion
q0 ∈ Q Startzustand
F ⊂ Q Endzustandsmenge
Harel-Automat (state chart)
Zustände als Knoten dargestellt durch Kreise bzw. Rechtecke
Zustandsübergang δ(q, a) = q‘ dargestellt durch gerichtete, mit a
beschriftete Kante von q nach q‘
kurzer Pfeil auf Startzustand q0
Endzustände dargestellt durch zwei geschachtelte Kreise
Übung zu Software Engineering im WS 2007/2008
2
Philipp Ciechanowicz
Aufgabe 4
Zustandsmenge Q
ausleihbar, ausgeliehen, vorbestellt, abholbereit, unbrauchbar
Eingabealphabet Σ
erfassen(), ausleihen(), vorbestellen(), zurückgeben(), entfernen()
Übergangsfunktion δ
siehe Folie 4
Startzustand q0
ausleihbar
Endzustandsmenge F
unbrauchbar
Übung zu Software Engineering im WS 2007/2008
3
Philipp Ciechanowicz
Aufgabe 4
neues Buch
liegt vor /
erfassen()
Buch defekt /
entfernen()
Abholfrist
abgelaufen
unbrauchbar
ausleihbar
Buch wird
zurückgegeben /
zurückgeben()
Ausleihwunsch /
ausleihen()
Buch verloren/
entfernen()
ausgeliehen
Ausleihwunsch /
vorbestellen()
Buch verloren
bzw. defekt /
entfernen()
vorbestellt
Buch wird
abgeholt /
ausleihen()
Buch wird
zurückgegeben/
zurückgeben()
Übung zu Software Engineering im WS 2007/2008
4
Philipp Ciechanowicz
abholbereit
Aufgabe 4
Anmerkungen zum Harel-Automaten
Zustände mit Adjektiven benennen
Ereignisse bei den Zustandsübergängen modellieren
Anfangszustand und Endzustände modellieren
Übung zu Software Engineering im WS 2007/2008
5
Philipp Ciechanowicz
Aufgabe 5
Modellieren Sie die Prozesse in der Fertigungsabteilung eines
Automobilzulieferers als Bedingungs/Ereignis-Netz, die sich wie
folgt beschreiben lassen: Nachdem eine Kiste mit den benötigten
Werkstücken W1 und W2 angeliefert wurde, werden diese
ausgepackt und auf die Produktionsstraße gelegt. Das Werkstück
W2 durchläuft dabei einen Lackierungsprozess und kann
anschließend mit dem bearbeiteten Werkstück W1 wieder in die
Kiste verpackt werden. Für die Bearbeitung des Werkstücks W1
sind die beiden Mitarbeiter A und B verantwortlich. Während
Mitarbeiter A in das Werkstück W1 drei Gewindelöcher fräst und
anschließend in einem zweiten Arbeitsschritt die passenden
Schrauben in die Löcher schraubt, versieht Mitarbeiter B das
Werkstück W1 lediglich mit einer Seriennummer. Die Reihenfolge,
in der die Mitarbeiter A und B mit der Bearbeitung der Werkstücke
beginnen, kann dabei variieren. Es kann allerdings jeder Mitarbeiter
immer nur ein Werkstück gleichzeitig bearbeiten. Beide Mitarbeiter
können auch nicht gleichzeitig an demselben Werkstück arbeiten.
Übung zu Software Engineering im WS 2007/2008
6
Philipp Ciechanowicz
Aufgabe 5
Bedingungs/Ereignis-Netz BE = (S, T, F)
S: Stellenmenge (Zustand, Bedingung)
Stelle s ∈ S wird dargestellt durch einen Kreis
T: Transitionen (Ereignis)
Transition t ∈ T wird dargestellt durch ein Rechteck
F ⊆ (S х T) ∪ (T х S) Kantenmenge
Schaltregel
Transition t kann Schalten, wenn alle Stellen im Vorbereich eine Marke
enthalten und alle Stellen im Nachbereich leer sind.
wenn t schaltet, wird von jeder Stelle im Vorbereich eine Marke entfernt
und auf jeder Stelle im Nachbereich eine Marke hinzugefügt.
Bedingungs/Ereignis-Netze sind spezielle Petri-Netze
mit Stellenkapazität = Kantengewichtung = 1
Übung zu Software Engineering im WS 2007/2008
7
Philipp Ciechanowicz
Aufgabe 5
Transitionen (Ereignisse)
Stellen (Zustände)
Kiste entpacken
lackieren
fräsen
verschrauben
nummerieren
Kiste verpacken
Übung zu Software Engineering im WS 2007/2008
8
Philipp Ciechanowicz
Kiste entpackt
lackiert
gefräst
verschraubt
nummeriert
Kiste verpackt
fertig, d.h. gefräst, verschraubt
und nummeriert
Aufgabe 5
Die Reihenfolge, in der die Mitarbeiter A und B mit der
Bearbeitung der Werkstücke beginnen, kann dabei
variieren. Es kann allerdings jeder Mitarbeiter immer nur
ein Werkstück gleichzeitig bearbeiten. Beide Mitarbeiter
können auch nicht gleichzeitig an demselben
Werkstück arbeiten.
Nichtdeterminismus durch Variation der Bearbeitungsreihenfolge
keine Parallelität während der Bearbeitung von W1
Übung zu Software Engineering im WS 2007/2008
9
Philipp Ciechanowicz
Aufgabe 5
Nebenläufigkeit
Transition „Kiste entpacken“ erzeugt zwei Marken
Nichtdeterminismus (logisches ODER)
Marke der Stelle „W1 entpackt“ kann nur ein Mal verwendet werden
Synchronisation (logisches UND)
Transition „W1 und W2 verpacken“
Übung zu Software Engineering im WS 2007/2008
10
Philipp Ciechanowicz
Aufgabe 5
inklusive Mitarbeiter A und B
Übung zu Software Engineering im WS 2007/2008
11
Philipp Ciechanowicz
Aufgabe 5
Anmerkungen zu Petri-Netzen
Beschriftung der Stellen und Transitionen nicht vergessen
Stellen = Zustände
Transitionen = Ereignis
auf syntaktische Korrektheit achten
Stellen und Transitionen müssen sich abwechseln
auf Deadlocks achten
„ungünstige“ Schaltreihenfolgen betrachten
i.d.R. verbleiben im Netz keine Marken
Übung zu Software Engineering im WS 2007/2008
12
Philipp Ciechanowicz
Aufgabe 6
Erstellen Sie für das unten dargestellte Bedingungs/
Ereignis-Netz einen Erreichbarkeitsgraphen.
Übung zu Software Engineering im WS 2007/2008
13
Philipp Ciechanowicz
Aufgabe 6
Erreichbarkeitsgraph
stellt dar, welche Zustände durch das Schalten von Transitionen
erreichbar sind
Zustände als Knoten mit Markenbelegung als Beschriftung
Kanten als Zustandsübergang mit Transition als Beschriftung
ist u.U. nicht endlich (im Gegensatz zum Überdeckungsgraph)
Stellen/Transitions-Netz
Erreichbarkeitsgraph
Übung zu Software Engineering im WS 2007/2008
14
Philipp Ciechanowicz
Aufgabe 6
000110
t5
001100
t2
t4
001010
t1
010100
t6
t4
t2
t5
010010
t4
t6
000011
t1
t4
100010
t5
t2
t3
t1
010001
t6
101000
t1
100001
t6
Übung zu Software Engineering im WS 2007/2008
15
Philipp Ciechanowicz
100100
t5
110000
011000
000101
t2
001001
Aufgabe 6
Eigenschaften des Erreichbarkeitsgraphen
endlich (bei Bedingungs/Ereignis-Netzen immer gegeben)
lebendig
deadlockfrei
weist mehrere Zyklen auf
Startzustand 000110 kann nicht wieder erreicht werden
von den maximal 26 = 64 möglichen Zuständen können nur 15
tatsächlich erreicht werden
Übung zu Software Engineering im WS 2007/2008
16
Philipp Ciechanowicz
Aufgabe 7
Erstellen Sie für das unten dargestellte Stellen/
Transitions-Netz einen Überdeckungsgraphen. Gehen
Sie davon aus, dass sämtliche Stellenkapazitäten
unbeschränkt und alle Kanten mit 1 gewichtet sind. Ist
das Netz lebendig? Ist das Netz deadlockfrei?
Übung zu Software Engineering im WS 2007/2008
17
Philipp Ciechanowicz
Aufgabe 7
Überdeckungsgraph
Zustände als Knoten mit Markenbelegung als Beschriftung
Zustandsübergänge als Kanten mit Transition als Beschriftung
ist immer endlich (im Gegensatz zum Erreichbarkeitsgraph)
Zustandsüberdeckung
Sei N ein Stellen/Transitions-Netz mit einer Markenbelegung m, das
durch Schalten einer Transition t eine Folgemarkenbelegung m‘ erreicht
die Markenbelegung einer Stelle s im Zustand m‘ muss durch ∞ ersetzt
werden, wenn
es einen Zustand m‘‘ gibt, dessen Markenbelegung kleiner als die von m‘ ist,
d.h. m‘‘ < m‘ (daher der Begriff „Überdeckungsgraph“)
und ein Weg von m‘‘ nach m‘ existiert
der Zustand m‘ wird nach der Ersetzung als m~ bezeichnet
Übung zu Software Engineering im WS 2007/2008
18
Philipp Ciechanowicz
Aufgabe 7
Stellen/Transitions-Netz
Überdeckungsgraph
Übung zu Software Engineering im WS 2007/2008
19
Philipp Ciechanowicz
Aufgabe 7
Zustand (0101)
Zustand (0∞01)
m = (1∞00), m‘ = (0∞01)
∄ m‘‘ mit m‘‘ < m‘
m = (1100), m‘ = (0101)
∄ m‘‘ mit m‘‘ < m‘
Zustand (0011)
Zustand (0∞11) / (0∞∞1)
m = (0101), m‘ = (0011)
∄ m‘‘ mit m‘‘ < m‘
Zustand (1200) / (1∞00)
m = (1100), m‘ = (1200)
∃ m‘‘ mit m‘‘ < m‘
m‘‘ = (1100)
∃ Weg von m‘‘ nach m‘
(1100) Æ (1200)
m‘‘ Æ m~ = (1∞00)
Übung zu Software Engineering im WS 2007/2008
20
Philipp Ciechanowicz
m = (0∞01), m‘ = (0∞11)
∃ m‘‘ mit m‘‘ < m‘
m‘‘ = (0∞01)
∃ Weg von m‘‘ nach m‘
(0∞01) Æ (0∞11)
m‘‘ Æ m~ = (0∞∞1)
Aufgabe 7
Lebendigkeit
ein Netz ist lebendig, wenn alle Transitionen lebendig sind
eine Transition ist lebendig, wenn sie nicht tot ist
eine Transition ist tot, wenn sie bei keiner, ggf. indirekten,
Folgemarkierung schalten kann
Ö das Netz ist nicht lebendig, da t1 und t3 im Zustand 0101 tot sind
Deadlockfreiheit
ein Netz ist deadlockfrei, wenn es unter keiner, ggf. indirekten,
Folgemarkierung tot ist
ein Netz ist tot, wenn es einen Zustand gibt, in dem alle Transitionen
tot sind
Ö das Netz ist nicht deadlockfrei, da t1, t2 und t3 im Zustand 0011 tot sind
lebendig / deadlockfrei immer auf Zustand beziehen!
Übung zu Software Engineering im WS 2007/2008
21
Philipp Ciechanowicz
Literatur
W. Reisig: Petrinetze. Eine Einführung. Springer-Verlag
1982.
H. Balzert: Lehrbuch der Software-Technik. Software
Entwicklung. Spektrum Akademischer Verlag, 2000.
Harel-Automaten: 342ff
Petri-Netze: 345ff
Übung zu Software Engineering im WS 2007/2008
22
Philipp Ciechanowicz
Herunterladen