CD OCL OD Statechart SD Modellbasierte Softwareentwicklung 7. Evolutionäre Methodik 7.1. Vorgehensmodell Vorlesungsnavigator: Prof. Dr. Bernhard Rumpe Sprache Codegen. http://www.se-rwth.de/ Testen Evolution + Extras
Seite 2 Grundlagen der Modellbildung Wdh. aus Kapitel 1 Die Methodik-Pyramide: Vorgehensmodelle Abdeckung in dieser Vorlesung Entwicklungsaufgaben, -aktivitäten, Prozessmuster Mikro-Methodik: Analyse, Transformation, Generierung Diagramme, Modellierungssprachen
Modellbasierte Entwicklung mit der UML Wdh. aus Kapitel 1 Seite 3 Models as central notation static analysis documentation UML models rapid prototyping refactoring/ transformation automated tests code generation UML serves as central notation for development of software UML is programming, test and modelling language at the same time
Seite 4 UML-basierte Modellierung Wdh. aus Kapitel 1 UML + Code-Rümpfe erlauben Code & Test-Modellierung class diagrams statecharts C++, Java object diagrams : : sequence diagrams : composition diagram parameterized code generator test code generator OCL system test code Code- und Testmodelle prüfen gegenseitige Korrektheit
Seite 5 Kernelemente einer evolutionären Methodik Inkrementell Architektur, Funktionalität und Tests entwerfen Automatisierte Analysen: Typisierung, Datenfluss, Kontrollfluss, Testüberdeckung,... Codegenerierung für System und automatische Tests Modell-basierte, automatisierte Tests als Qualitätssicherung für Anwenderwünsche für Regressionstests bei Änderungen Viele Releases mit eher kleinen Erweiterungen Häufige Simulation für den Kunden: Feedback Verfügbare Kunden/Domänenexperten Evolutionäre Transformationen zur inkrementellen Erweiterung Methodik integriert Elemente moderner Entwicklungsmethoden: Modell-basierung, Evolution im Kleinen, Test-Orientierung, Agilität
CD OCL OD Statechart SD Modellbasierte Softwareentwicklung 7. Evolutionäre Methodik 7.2. Testen und Evolution Vorlesungsnavigator: Prof. Dr. Bernhard Rumpe Sprache Codegen. http://www.se-rwth.de/ Testen Evolution + Extras
Seite 7 Tests Anforderungen an Tests: Automatische Tests um Wiederholbarkeit zu sichern Aufsetzen des Tests, Durchführung, Evaluation des Testergebnisses Deterministische Tests mit determiniertem Ergebnis Keine (bleibenden) Seiteneffekte Effiziente Ausführung Ziele: Demonstration der Qualität Definition von Anforderungen noch zu realisierender Funktionalität Grundlage für das Zutrauen in die Korrektheit des Codes und Grundlage für die effektive Weiterentwicklung des Systems
Seite 8 Testinfrastruktur (Einfache) Prinzip: OD als Testdatensatz weiteres OD und OCL als Orakel Testdaten Testtreiber Sollergebnis und OCL-Prädikat als Testorakel o1 o3 o2 o4 OD Zu testendes Element SD o5 o1 o3 o2 o4 OD + OCL
Seite 9 Sequenzdiagramme (SD) lineare Struktur für exemplarische Beschreibung + integriertes OCL SD sind als Testprädikate oder treiber einsetzbar SD können aus Statecharts (teilweise) generiert werden kupfer912: Auction bidpol: BiddingPolicy timepol: TimingPolicy SD validatebid(bid) return OK newcurrentclosingtime(kupfer912, bid) return t t.time == bid.time + extensiontime OCL-Bedingungen beschreiben Eigenschaften während des Tests
Seite 10 Evolution von Modellen Ziel ist die systematische Transformation eines Modells zur Verbesserung der Struktur/Architektur eines Systems unter Beibehaltung des beobachteten Verhaltens. Beispiel: Methode aus zwei Subklassen generalisieren Person CD Person CD Transformation checkpasswd() Bidder Guest checkpasswd() checkpasswd() Bidder Guest,
Seite 11 Tests sind Beobachtungen für Transformationen Tests beobachten Struktur und Verhalten: Test = Treiber und Beobachtung Aufbau & Aufruf beobachtet Erzeugung beobachtet Interaktion prüft Eigenschaft vergleicht mit erwartetem Ergebnis Snapshots des Systemlaufs Zeitachse
Seite 12 Validierung von Transformationen Die Testbeobachtung bleibt unter der Transformation erhalten Test = Treiber und Beobachtung Beobachtung Transformation Systemlauf Lauf des modifizierten Systems Aber in der Praxis: oft ändern sich Strukturteile unter der Transformation Deshalb: Akzeptanztests auf geeignete Abstraktionen und fixierte Schnittstellen basieren