Ü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 3 Kompakte Übersicht zur UML/P 4 Prinzipien der Codegenerierung 5 Transformationen für die Codegenerierung 6 Grundlagen des Testens 7 Modellbasierte Tests 8 Testmuster im Einsatz 9 Refactoring als Modelltransformation 10 Refactoring von Modellen 11 Zusammenfassung und Ausblick Literatur |
1.2 Ergänzende Ziele dieses BuchsUm die Effizienz in einem Projekt zu steigern, ist es notwendig, den Entwicklern effektive Notationen, Techniken und Methoden zur Verfügung zu stellen. Weil das primäre Ziel jeder Softwareentwicklung das lauffähige und korrekt implementierte Produktionssystem ist, sollte der Einsatz der UML nicht nur zur Dokumentation von Entwürfen dienen. Stattdessen ist die automatisierte Umsetzung in Code durch Codegeneratoren, die Definition von Testfällen mit der UML/P zur Qualitätssicherung und die Evolution von UML-Modellen mit Refactoring-Techniken essentiell. Die Kombination von Codegenerierung, Testfallmodellierung und Refactoring bietet dabei wesentliche Synergie-Effekte, die zum Beispiel bei der Qualitätssicherung, bei der erhöhten Wiederverwendung und der gesteigerten Fähigkeit zur Weiterentwicklung beitragen. Codegenerierung: Zur effizienten Erstellung eines Systems ist eine gut parametrisierte Codegenerierung aus abstrakten Modellen essentiell. Die diskutierte Form der Codegenerierung erlaubt die kompakte und von der Technik weitgehend unabhängige Entwicklung von Modellen. für spezifische Domänen und Anwendungen. Erst bei der Generierung werden technologieabhängige Aspekte wie zum Beispiel Datenbankanbindung, Kommunikation oder GUI-Darstellung hinzugefügt. Dadurch wird die UML/P als Programmiersprache einsetzbar, und es entsteht kein konzeptueller Bruch zwischen Modellierungs- und Programmiersprache. Allerdings ist es wichtig, ausführbare und abstrakte Modelle im Softwareentwicklungsprozess explizit zu unterscheiden und jeweils adäquat einzusetzen. Modellierung automatisierbarer Tests: Die systematische und effiziente Durchführung von Tests ist ein wesentlicher Bestandteil zur Sicherung der Qualität eines Systems. Ziel ist dabei, dass Tests nach ihrer Erstellung automatisiert ablaufen können. Codegenerierung wird daher nicht nur zur Entwicklung des Produktionssystems, sondern insbesondere auch für Testfälle eingesetzt, um so die Konsistenz zwischen Spezifikation und Implementierung zu prüfen. Der Einsatz der UML/P zur Testfallmodellierung ist daher ein wesentlicher Bestandteil einer agilen Methodik. Dabei werden insbesondere Objektdiagramme, die OCL und Sequenzdiagramme zur Modellierung von Testfällen eingesetzt. Abbildung 1.1 skizziert die ersten beiden Ziele dieses Buchs. Evolution mit Refactoring: Die diskutierte Flexibilität, auf Änderungen der Anforderungen oder der Technologie schnell zu reagieren, erfordert eine Technik zur systematischen Anpassung des bereits vorhandenen Modells beziehungsweise der Implementierung. Die Evolution eines Systems in Bezug auf neue Anforderungen oder einem neuen Einsatzgebiet sowie der Behebung von Strukturdefiziten der Softwarearchitektur erfolgt idealerweise durch Refactoring-Techniken. Ein weiterer Schwerpunkt ist daher die Fundierung und Einbettung der Refactoring-Techniken in die allgemeinere Vorgehensweise zur Modelltransformation und die Diskussion, welche Arten von Refactoring-Regeln für die UML/P entwickelt oder von anderen Ansätzen übernommen werden können. Besonders betrachtet werden dabei Klassendiagramme, Statecharts und OCL. Sowohl bei der Testfallmodellierung als auch bei den Refactoring-Techniken werden aus den fundierenden Theorien stammende Erkenntnisse dargestellt und auf die UML/P transferiert. Ziel des Buchs ist es, diese Konzepte anhand zahlreicher praktischer Beispiele zu erklären und in Form von Testmustern beziehungsweise Refactoring-Techniken für UML-Diagramme aufzubereiten. Model Driven Architecture (MDA): Initiiert durch das Industriekonsortium OMG1 wird derzeit an der Intensivierung des werkzeugbasierten Einsatzes der UML in der Softwareentwicklung gearbeitet. Die als MDA bezeichnete Technik bietet im Bereich Codegenerierung ähnliche Charakteristiken wie der hier diskutierte Ansatz. Jedoch fehlt eine geeignet angepasste Methodik. Der in diesem Buch vorgestellte Ansatz zum Refactoring bietet dazu eine adäquate Ergänzung zur „horizontalen“ Transformation. Abgrenzung: Mit den behandelten Techniken konzentriert sich dieses Buch vor allem auf die Unterstützung der Entwurfs-, Implementierungs- und Wartungsaktivitäten, allerdings ohne diese in allen Facetten abzudecken. Wichtig, aber hier nicht behandelt sind auch Techniken und Notationen zur Erhebung und zum Management von Anforderungen, zur Projektplanung und -durchführung, zur Kontrolle sowie zum Versions- und Änderungsmanagement. Stattdessen wird an geeigneten Stellen auf entsprechende weiterführende Literatur verwiesen.
|
|||||||||