Agile Modellierung mit
UML
Loading

Inhaltsverzeichnis

Übersicht

Inhaltsverzeichnis

Vorwort

1 Einführung
1.1 Ziele und Inhalte von Band 1
1.2 Ergänzende Ziele dieses Buchs
1.3 Überblick
1.4 Notationelle Konventionen

2 Agile und UML-basierte Methodik
2.1 Das Portfolio der Softwaretechnik
2.2 Extreme Programming (XP)
2.3 Ausgesuchte Entwicklungspraktiken
2.3.1 Pair Programming
2.3.2 Test-First-Ansatz
2.3.3 Refactoring
2.4 Agile UML-basierte Vorgehensweise
2.5 Zusammenfassung

3 Kompakte Übersicht zur UML/P
3.1 Klassendiagramme
3.1.1 Klassen und Vererbung
3.1.2 Assoziationen
3.1.3 Repräsentation und Stereotypen
3.2 Object Constraint Language
3.2.1 Übersicht über OCL/P
3.2.2 Die OCL-Logik
3.2.3 Container-Datenstrukturen
3.2.4 Funktionen in OCL
3.3 Objektdiagramme
3.3.1 Einführung in Objektdiagramme
3.3.2 Komposition
3.3.3 Bedeutung eines Objektdiagramms
3.3.4 Logik der Objektdiagramme
3.4 Statecharts
3.4.1 Eigenschaften von Statecharts
3.4.2 Darstellung von Statecharts
3.5 Sequenzdiagramme

4 Prinzipien der Codegenerierung
4.1 Konzepte der Codegenerierung
4.1.1 Konstruktive Interpretation von Modellen
4.1.2 Tests versus Implementierung
4.1.3 Tests und Implementierung aus dem gleichen Modell
4.2 Techniken der Codegenerierung
4.2.1 Plattformabhängige Codegenerierung
4.2.2 Funktionalität und Flexibilität
4.2.3 Steuerung der Codegenerierung
4.3 Semantik der Codegenerierung
4.4 Flexible Parametrisierung eines Codegenerators
4.4.1 Implementierung von Werkzeugen
4.4.2 Darstellung von Skripttransformationen

5 Transformationen für die Codegenerierung
5.1 Übersetzung von Klassendiagrammen
5.1.1 Attribute
5.1.2 Methoden
5.1.3 Assoziationen
5.1.4 Qualifizierte Assoziation
5.1.5 Komposition
5.1.6 Klassen
5.1.7 Objekterzeugung
5.2 Übersetzung von Objektdiagrammen
5.2.1 Konstruktiv eingesetzte Objektdiagramme
5.2.2 Beispiel einer konstruktiven Codegenerierung
5.2.3 Als Prädikate eingesetzte Objektdiagramme
5.2.4 Objektdiagramm beschreibt Strukturmodifikation
5.2.5 Objektdiagramme und OCL
5.3 Codegenerierung aus OCL
5.3.1 OCL-Aussage als Prädikat
5.3.2 OCL-Logik
5.3.3 OCL-Typen
5.3.4 Typ als Extension
5.3.5 Navigation und Flattening
5.3.6 Quantoren und Spezialoperatoren
5.3.7 Methodenspezifikation
5.3.8 Vererbung von Methodenspezifikationen
5.4 Ausführung von Statecharts
5.4.1 Methoden-Statecharts
5.4.2 Umsetzung der Zustände
5.4.3 Umsetzung der Transitionen
5.5 Übersetzung von Sequenzdiagrammen
5.5.1 Sequenzdiagramm als Testtreiber
5.5.2 Sequenzdiagramm als Prädikat
5.6 Zusammenfassung zur Codegenerierung

6 Grundlagen des Testens
6.1 Einführung in die Testproblematik
6.1.1 Testbegriffe
6.1.2 Ziele der Testaktivitäten
6.1.3 Fehlerkategorien
6.1.4 Begriffsbestimmung für Testverfahren
6.1.5 Suche geeigneter Testdaten
6.1.6 Sprachspezifische Fehlerquellen
6.1.7 UML/P als Test- und Implementierungssprache
6.1.8 Eine Notation für die Testfalldefinition
6.2 Definition von Testfällen
6.2.1 Operative Umsetzung eines Testfalls
6.2.2 Vergleich der Testergebnisse
6.2.3 Werkzeug JUnit

7 Modellbasierte Tests
7.1 Testdaten und Sollergebnis mit Objektdiagrammen
7.2 Invarianten als Codeinstrumentierungen
7.3 Methodenspezifikationen
7.3.1 Methodenspezifikationen als Codeinstrumentierung
7.3.2 Methodenspezifikationen zur Testfallbestimmung
7.3.3 Testfalldefinition mit Methodenspezifikationen
7.4 Sequenzdiagramme
7.4.1 Trigger
7.4.2 Vollständigkeit und Matching
7.4.3 Nicht-kausale Sequenzdiagramme
7.4.4 Mehrere Sequenzdiagramme in einem Test
7.4.5 Mehrere Trigger im Sequenzdiagramm
7.4.6 Interaktionsmuster
7.5 Statecharts
7.5.1 Ausführbare Statecharts
7.5.2 Statechart als Ablaufbeschreibung
7.5.3 Testverfahren für Statecharts
7.5.4 Überdeckungsmetriken
7.5.5 Transitionstests statt Testsequenzen
7.5.6 Weiterführende Ansätze
7.6 Zusammenfassung und offene Punkte beim Testen

8 Testmuster im Einsatz
8.1 Dummies
8.1.1 Dummies für Schichten der Architektur
8.1.2 Dummies mit Gedächtnis
8.1.3 Sequenzdiagramm statt Gedächtnis
8.1.4 Abfangen von Seiteneffekten
8.2 Testbare Programme gestalten
8.2.1 Statische Variablen und Methoden
8.2.2 Seiteneffekte in Konstruktoren
8.2.3 Objekterzeugung
8.2.4 Vorgefertigte Frameworks und Komponenten
8.3 Behandlung der Zeit
8.3.1 Simulation der Zeit im Dummy
8.3.2 Variable Zeiteinstellung im Sequenzdiagramm
8.3.3 Muster zur Simulation von Zeit
8.3.4 Timer
8.4 Nebenläufigkeit mit Threads
8.4.1 Eigenes Scheduling
8.4.2 Sequenzdiagramm als Scheduling-Modell
8.4.3 Behandlung von Threads
8.4.4 Muster für die Behandlung von Threads
8.4.5 Probleme der erzwungenen Sequentialisierung
8.5 Verteilung und Kommunikation
8.5.1 Simulation der Verteilung
8.5.2 Simulation von Singletons
8.5.3 OCL-Bedingungen über mehrere Lokationen
8.5.4 Kommunikation simuliert verteilte Prozesse
8.5.5 Muster für Verteilung und Kommunikation
8.6 Zusammenfassung

9 Refactoring als Modelltransformation
9.1 Einführende Beispiele für Transformationen
9.2 Methodik des Refactoring
9.2.1 Technische und methodische Voraussetzungen für Refactoring
9.2.2 Qualität des Designs
9.2.3 Refactoring, Evolution und Wiederverwendung
9.3 Modelltransformationen
9.3.1 Formen von Modelltransformationen
9.3.2 Semantik einer Modelltransformation
9.3.3 Beobachtungsbegriff
9.3.4 Transformationsregeln
9.3.5 Korrektheit von Transformationsregeln
9.3.6 Ansätze der transformationellen Softwareentwicklung
9.3.7 Transformationssprachen

10 Refactoring von Modellen
10.1 Quellen für UML/P-Refactoring-Regeln
10.1.1 Definition und Darstellung von Refactoring-Regeln
10.1.2 Refactoring in Java/P
10.1.3 Refactoring von Klassendiagrammen
10.1.4 Refactoring in der OCL
10.1.5 Einführung von Testmustern als Refactoring
10.2 Additive Methode für Datenstrukturwechsel
10.2.1 Vorgehensweise für den Datenstrukturwechsel
10.2.2 Beispiel: Darstellung von Geldbeträgen
10.2.3 Beispiel: Einführung des Chairs im Auktionssystem
10.3 Zusammenfassung der Refactoring-Techniken

11 Zusammenfassung und Ausblick

Literatur


Bernhard Rumpe. Agile Modellierung mit UML. Springer 2012