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