Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

State Machines Teil 2 1.States 2.State Invarianten 3.Bereiche und Granularität 4.Transitions/Übergänge 5.Alpha/Omega-States 6.Klassen-Flattening 7.Unerlaubte.

Ähnliche Präsentationen


Präsentation zum Thema: "State Machines Teil 2 1.States 2.State Invarianten 3.Bereiche und Granularität 4.Transitions/Übergänge 5.Alpha/Omega-States 6.Klassen-Flattening 7.Unerlaubte."—  Präsentation transkript:

1 State Machines Teil 2 1.States 2.State Invarianten 3.Bereiche und Granularität 4.Transitions/Übergänge 5.Alpha/Omega-States 6.Klassen-Flattening 7.Unerlaubte Zustände 8.Die Response-Matrix StateMachines, Thomas Legler, ProSeminar Softwaretechnologie

2 States ein State ist ein Art Kurzbeschreibung für erlaubte Vorgänge in einem Programm das State-Modell muss beim Entwickeln ständig eine exakte Abfrage des aktuellen Status erlauben im Prinzip wird der Status gebildet aus dem sämtlichen Inhalt einer Klasse

3 Beispiel o 2 Booleans in einer Klasse 4 Zustände o 1 int 2^32 Zustände o 3 int 2^96 Zustände o bsp: Konto (Betrag, Name, Kontonummer) o für den Zustand nur Betrag wichtig o überzogen gesperrt o Betrag ok frei »nur 2 relevante Zustände aus vielen Milliarden

4 State Invariants gültiger Status ausgedrückt durch Status- Invariante bool state1(){ return ((x==1) &&(y==2)); } wird gebildet aus den Werten der Klasse die vorher definierten Statie und die Invarianten müssen alle möglichen Statie abdecken

5 Bereiche (Ebene der Abstraktion) oUmrandet (Statie gebildet aus den Werten der Klasse, nicht aus beerbten Klassen) oRekursiv (alle Ebenen der Klasse werden ausgebreitet, und aus allen Werten wird dann der Status gebildet) Granularität (Vereinigung der Definitionen für einen Status) oAggregate (Status bestehen aus einer willkürlichen Menge von Werten der Klasse) oPrimitive (Status repräsentiert durch die gesamte Menge von Werten, repräsentiert durch niederen Datentyp) Konkrete und primitive Status-Modelle können sehr schnell an Komplexität zunehmen (siehe beispiel States)

6 Bereiche und Granulatität die Bedeutung eines Status hängt von seiner Sichtbarkeit, seinem Bereich und seiner Granularität ab instance variable domain = Menge der diskreten Statie repräsentiert durch Instanzvariablen combinational value set = Menge aller möglichen Kombinationen von Instanzariablen Sichtbarkeit (Hauptmerkmal eines State-Modells) oAbstrakt (nur das Interface nach aussen) oKonkret (implementiert)

7 Bereiche (Ebene der Abstraktion) oUmrandet (Statie gebildet aus den Werten der Klasse, nicht aus beerbten Klassen) oRekursiv (alle Ebenen der Klasse werden ausgebreitet, und aus allen Werten wird dann der Status gebildet) Granularität (Vereinigung der Definitionen für einen Status) oAggregate (Status bestehen aus einer willkürlichen Menge von Werten der Klasse) oPrimitive (Status repräsentiert durch die gesamte Menge von Werten, repräsentiert durch niederen Datentyp) Konkrete und primitive Status-Modelle können sehr schnell an Komplexität zunehmen (siehe beispiel States)

8 Transitions/Übergänge oIst eine Kombination eines Ausgangsstatus und eines Endstatus, einem Ereigniss und eventuellen Schutzmechanismen oEine Transition wird durch ein Ereigniss ausgelöst und kann mehrere Aktionen ausführen oSie hat immer nur einen Endstatus

9 oEvent oNachricht an die zu testende Klasse oDie Antwort einer anderen Klasse oEin Interrupt oder eine ähnliche Unterbrechung von aussen oSchutzmechanismen oEin mit dem Ereigniss verknüpfter Ausdruck oAktion –Ein Nachricht/Antwort an ein anderes Objekt

10 Alpha/Omega-States oAlpha oObjekt vor der Konstruktion oIn dem Zustand werden nur Konstruktoren wie z.B. new akzeptiert (alpha transition) o Omega oObjekt nach der Destruktion, Löschung oder beim Verlassen des gültigen Bereiches oErreicht durch Destruktoren (omega transitions) oSie müssen nicht explizit implementiert werden, aber sollten beim Testen nicht unbeachtet bleiben

11 Klassen-Flattening Merkmale einer gut entwickelten Klassenhierarchie Eine Unterklasse hat mehrere Teilstatie eines Statuses der Superklasse Eine Unterklasse kann neue Statie einführen,diese müssen aber mit den Statie der Oberklasse im Einklang verlaufen Private Statusvariablen der Oberklasse müssen in der Unterklasse private bleiben

12 Arten 1.Orthogonal Komposition 2.Aneinanderfügen 3.Status-Aufteilung und Unterstatus hinzufügen 4.Transitionumleitung 5.Transitionaufteilung

13 Expansion des Zustandsgraphen bei Orthogonaler Komposition Möglichst das komplette Modell sollte getestet werden In der Realität nur schwer möglich, da oft Informationen über die Oberklasse fehlen, das ganze enorm Zeitaufwendig wäre u.s.w

14 oEs muss ein expilziter Exception-Handler eingebaut werden, der unerlaubte Zustände bearbeitet oDiese illegalen Ereignisse müssen genau ausgetestet werden oZ.b. werden illegale Zustände erreicht, wenn mehrere Instanzen eines Programms nebeneinander laufen und sich ungewollt gegenseitig beeinflussen oBeachte Antworten auf illegale Ereignisse und blockende Guards

15 Unerlaubte Zustände Normalerweise werden viel Zustand/Ereigniss- Paare vernachlässigt Problem, wenn in einem Zustand ein nicht geplantes Ereigniss eintritt Einfaches Ignorieren kann problematisch werden Wenn ein illegales Ereigniss akzeptiert wird, hat das eine illegale Transition zur Folge. Das bewirkt dann einen nicht gewollten Zustandswechsel Schleichpfade = Programmbugs, die illegale Transitions erlauben und Guards umgehen


Herunterladen ppt "State Machines Teil 2 1.States 2.State Invarianten 3.Bereiche und Granularität 4.Transitions/Übergänge 5.Alpha/Omega-States 6.Klassen-Flattening 7.Unerlaubte."

Ähnliche Präsentationen


Google-Anzeigen