Übersicht Inhaltsverzeichnis Vorwort 1 Einführung 2 Agile und UML-basierte Methodik 2.1 Das Portfolio der Softwaretechnik 2.2 Extreme Programming (XP) 2.3 Ausgesuchte Entwicklungspraktiken 2.4 Agile UML-basierte Vorgehensweise 2.5 Zusammenfassung 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 |
2.1 Das Portfolio der SoftwaretechnikIn [AMB+04, BDA+99] wurde ein Anlauf unternommen, das mittlerweile seit über 40 Jahren gewachsene Wissen der Softwaretechnik in einem „Software Engineering Body of Knowledge“ (SWEBOK) zusammenzufassen. Dabei werden Begriffsbildungen vereinheitlicht, die wesentlichen Kernelemente der Softwaretechnik als Ingenieursdisziplin dargestellt und insbesondere versucht, einen allgemein akzeptierten Konsens über die Inhalte und Konzepte der Softwaretechnik herzustellen. Ein für unsere Überlegungen wesentlicher Teil der für Softwareentwicklungsprozesse verwendeten Terminologie ist in Abbildung 2.1 dargestellt.
Aus der in den letzten Jahren gesammelten Erfahrung bei der Durchführung von Softwareentwicklungsprojekten kristallisiert sich heraus, dass es den Prozess für Softwareentwicklung nicht geben kann. Es scheint heute noch nicht einmal möglich, ein einigermaßen aussagekräftiges Prozessframework angeben zu können, das für die nach Wichtigkeit, Größe, Anwendungsbereich und Projektumfeld sehr unterschiedlichen Softwareentwicklungsprojekte Allgemeingültigkeit besitzt. Stattdessen ist man dabei, eine Sammlung an Konzepten, Best Practices und Werkzeugen aufzustellen, die es erlaubt, projektspezifischen Erfordernissen in einem individuellen Prozess Rechnung zu tragen. Dabei werden Detaillierungsgrade und Präzision der Dokumente, Meilensteine und die abzuliefernden Ergebnisse in Abhängigkeit von der Größe des Projekts und der gewünschten Qualität des Ergebnisses festgelegt. Vorhandene, als Muster zu verstehende Prozessbeschreibungen können dabei Hilfestellung geben. Jedoch werden projektspezifische Anpassungen als grundsätzlich notwendig erachtet. Für Projektbeteiligte ist es daher sinnvoll, möglichst viele Vorgehensweisen aus dem derzeit vorhandenen Portfolio zu kennen. War in den 90’er Jahren ein starker Trend hin zu vollständigen und dadurch eher bürokratischen Softwareentwicklungsprozessen zu beobachten, so haben sich die agilen Methoden in den 2000’er Jahren von diesem Trend abgekoppelt. Ermöglicht haben diese Umkehr das deutlich gewachsene Verständnis der Aufgaben bei der Entwicklung komplexer Softwaresysteme sowie die Verfügbarkeit verbesserter Programmiersprachen, Compiler und einer Reihe von weiteren Entwicklungswerkzeugen. So ist es heute nahezu genauso effizient eine GUI direkt zu implementieren, wie sie zu spezifizieren. Entsprechend kann die Spezifikation durch einen für den Anwender ausprobierbaren und in der Realisierung weiterverwendbaren Prototyp ersetzt werden. Der Trend zur Reduzierbarkeit der notwendigen Entwicklerkapazitäten wird dadurch verstärkt, dass bei weniger Projektbeteiligten auch weniger organisatorischer Overhead notwendig ist und damit die Personalaufwände weiter reduziert werden können. Auch die mit agilen Methoden verstärkte Betonung der individuellen Fähigkeiten und Bedürfnisse der am Projekt beteiligten Entwickler und Kunden erlaubt die weitere Reduktion von Projektbürokratie zugunsten verstärkter Eigenverantwortung. Diese Teamorientierung kann auch in anderen Bereichen des Wirtschaftslebens, wie zum Beispiel bei flachen Management-Hierarchien, beobachtet werden und basiert auf der Annahme, dass mündige und motivierte Projektbeteiligte von sich aus verantwortungsvoll und couragiert handeln werden, wenn durch das Projektumfeld die Möglichkeiten dafür geschaffen werden.
|
|||||||||