State Machines Teil 2 States State Invarianten

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Objektorientierte Programmierung
der Universität Oldenburg
Objektorientierte Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Einführung in die Programmierung Zusammenfassung
Kritische Betrachtung
Kapselung , toString , equals , Java API
Kapitel 7 State-Machines/Zustandsautomaten
der Universität Oldenburg
Objektorientierte Programmierung Definition von Klassen
Einführung Blue J.
Threads Richard Göbel.
Java: Objektorientierte Programmierung
Dateien. Eine Datei wird in C++ als ein Stream, also als ein Objekt einer bestimmten Klasse dargestellt.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Objektorientierte Konzepte
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
7.4 State-based Test Design Nils Foken. Steuerungsfehler fehlende / falsche Transition fehlendes / falsches Ereignis fehlende / falsche Aktion zusätzlicher.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Einführung in die Programmierung Klassendefinition und Objekte
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
UML Modellierung des Verhaltens von Klassen und Objekten
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
Zustandsübergangsdiagramme (1)
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Objektorientierte Modellierung mit UML
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Einführung Blue J. Inhaltsverzeichnis  Definition  Vokabeln.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Objekte und Literale ODMG-Objektmodell kennt zwei Arten von Datenelementen: Literale: Identität ist ausschließlich durch Wert gegeben. Nur maximal eine.
OOSE nach Jacobson Sebastian Pohl/ST7 Betreuer: Prof. Dr. Kahlbrandt.
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Abstrakte Klassen und das Interface-Konzept
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
C++ FÜR cOMPUTERSPIELENTWICKLER
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
1. Die rekursive Datenstruktur Liste 1
Objektorientierte Programmierung
 Präsentation transkript:

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

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

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

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

Bereiche (Ebene der Abstraktion) Umrandet (Statie gebildet aus den Werten der Klasse, nicht aus beerbten Klassen) Rekursiv (alle Ebenen der Klasse werden ausgebreitet, und aus allen Werten wird dann der Status gebildet) Granularität (Vereinigung der Definitionen für einen Status) Aggregate (Status bestehen aus einer willkürlichen Menge von Werten der Klasse) Primitive (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)

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) Abstrakt (nur das Interface nach aussen) Konkret (implementiert)

Bereiche (Ebene der Abstraktion) Umrandet (Statie gebildet aus den Werten der Klasse, nicht aus beerbten Klassen) Rekursiv (alle Ebenen der Klasse werden ausgebreitet, und aus allen Werten wird dann der Status gebildet) Granularität (Vereinigung der Definitionen für einen Status) Aggregate (Status bestehen aus einer willkürlichen Menge von Werten der Klasse) Primitive (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)

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

Event Schutzmechanismen Aktion Nachricht an die zu testende Klasse Die Antwort einer anderen Klasse Ein Interrupt oder eine ähnliche Unterbrechung von aussen Schutzmechanismen Ein mit dem Ereigniss verknüpfter Ausdruck Aktion Ein Nachricht/Antwort an ein anderes Objekt

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

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

Arten Orthogonal Komposition Aneinanderfügen Status-Aufteilung und Unterstatus hinzufügen Transitionumleitung Transitionaufteilung

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

Es muss ein expilziter Exception-Handler eingebaut werden, der unerlaubte Zustände bearbeitet Diese illegalen Ereignisse müssen genau ausgetestet werden Z.b. werden illegale Zustände erreicht, wenn mehrere Instanzen eines Programm’s nebeneinander laufen und sich ungewollt gegenseitig beeinflussen Beachte Antworten auf illegale Ereignisse und blockende Guards

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