VorwortVorwort zur 2ten AuflageVor zehn Jahren war absehbar, dass agile Methoden sich zumindest für einen Teilbereich der Softwareentwicklung durchsetzen würden, auch wenn sie damals von vielen Entwicklern noch eher belächelt wurden. Mittlerweile sind agile Methoden ein etablierter Bestandteil des Portfolios der Softwaretechnik und wurden an vielen Stellen ergänzt und für mehrere Domänen angepasst. Parallel hat die Unified Modelling Language ihren Siegeszug angetreten und hat heute praktisch alle anderen echten Modellierungssprachen in sich aufgesogen oder verdrängt, wobei wir Matlab/Simulink nicht als echte Modellierungssprache sondern als grafische Programmiersprache zählen wollen. Die UML ist einerseits groß und leidet weiterhin an den vielen Optionen und Interpretationsmöglichkeiten, die aufgrund ihrer vielen Einsatzgebiete auch nicht so ohne weiteres reduziert werden können. Stattdessen ist es wohl besser ein expliziteres Variabilitätsmodell für syntaktische, methodische und semantische Unterschiede zu erstellen und durch geeignete Auswahl auf einzelne Projekte zu konfigurieren [Grö10]. Noch erfolgreicher hat sich die Programmiersprache Java sowohl als primäre Web- und Business-System-Sprache, als auch als Lehrsprache für Informatikstudenten durchgesetzt. In diesem sowie auch dem darauf aufbauendem Buch ”Agile Modellierung mit UML“ werden die UML als auch Java konsolidiert, in Maßen ergänzt und gleichzeitig weiterentwickelt. UML liegt in Version 2.3 und Java in Version 6 vor. Die in diesem Buch vorgestellte UML/P stellt zwar eine eigenständige Fassung, ein sogenanntes Profil, dar, wurde aber durch die Änderungen von UML 1.4 nach UML 2.3 dennoch an einigen Stellen angepasst. Da Java als Ziel von Generierungs- und Testvorgängen zum Einsatz kommt, ist es natürlich von Interesse, auf die neuen Möglichkeiten von Java wie zum Beispiel den Generics oder dem assert-Statement einzugehen. Die Kluft zwischen den Welten der modellbasierten Softwareentwicklung mit der UML und den agilen Methoden hat sich trotz oder vielleicht gerade wegen des Erfolgs beider Ansätze nicht wirklich geschlossen. Während agile Methoden durchaus gerne Code generieren statt von Hand schreiben wollen, sehen viele Entwickler im Moment noch die Hürde zur Generierung als relativ groß an. Dies liegt häufig an der Unhandlichkeit bzw. Schwergewichtigkeit der Generierungsprozesses und des relativ großen initialen Aufwands zur Einführung von Generierungswerkzeugen in den Entwicklungsprozess. Diese Lücke gilt es noch zu schließen. An der Erstellung der ersten und der Überarbeitung zur zweiten Fassung dieses Buchs haben eine Reihe von Personen direkt oder indirekt mitgewirkt. Mein besonderer Dank gilt Manfred Broy für die Unterstützung, die dieses Buch erst ermöglicht hat und den Mitarbeitern und Studierenden, insbesondere Christian Berger, Marita Breuer, Angelika Fleck, Hans Gr önniger, Sylvia Gunder, Tim Gülke, Arne Haber, Christoph Herrmann, Roland Hildebrandt, Holger Krahn, Thomas Kurpick, Markus Look, Shahar Maoz, Philip Martzok, Anonio Navarro Pérez, Class Pinkernell, Dirk Reiss, Holger Rendel, Jan Oliver Ringert, Martin Schindler, Mark Stein, Christopher Vogt, Galina Volkova, Steven Völkel und Ingo Weisenmöller, die dieses Buch als Grundlage ihrer Arbeit einsetzen oder geholfen haben es für die zweite Auflage zu ergänzen und zu verbessern. Gerne danke ich dem ehemaligen bayerischen Minister für Wissenschaft, Forschung und Kunst Hans Zehetmair für die Verleihung des Habilitationsstipendiums und meinem geschätzten Kollegen und Vorgänger Prof. Dr.-Ing. Manfred Nagl für eine wohlwollende Unterstützung beim Aufbau des Lehrstuhls in Aachen. Herzlicher Dank gilt meinen Freunden, Kolleginnen und Kollegen, wissenschaftlichen Mitarbeitern, sowie den Studierenden für konstruktive Diskussionen, Mitarbeit an dem Anwendungsbeispiel und Reviews von Zwischenständen dieses Buchs in erster Auflage aus München: Samer Alhunaty, Hubert Baumeister, Markus Boger, Peter Braun, Maria Victoria Cengarle, David Cruz da Bettencourt, Ljiljana Döhring, Jutta Eckstein, Andreas Günzler, Franz Huber, Jan Jürjens, Ingolf Krüger, Konstantin Kukushkin, Britta Liebscher, Barbara Paech, Markus Pister, Gerhard Popp, Jan Philipps, Alexander Pretschner, Mattias Rahlf, Andreas Rausch, Stefan Rumpe, Robert Sandner, Bernhard Schätz, Markus Wenzel, Guido Wimmel und Alexander Wisspeintner. Bernhard Rumpe Aachen im Juni 2011 Vorwort zur 1ten AuflageDer Entwurf großer Software Systeme ist eine der großen technischen Herausforderungen unserer Zeit. Umfang und Komplexität von Software haben mittlerweile Größenordnungen erreicht, die alle bekannten Ansätze und Methoden ihrer Entwicklung an ihre Grenzen bringen. Vor diesem Hintergrund haben auch die Softwareentwickler das in den Ingenieurwissenschaften altbewährte Rezept der Modellbildung stärker für sich entdeckt. In den letzten Jahren ist unter dem Stichwort modellbasierter Softwareentwicklung eine große Zahl unterschiedlicher Ansätze entstanden, die eine umfangreiche Modellbildung zur Unterstützung der Entwicklung von Softwaresystemen zum Ziel haben. Modellbildung erlaubt es, wichtige Eigenschaften und Aspekte eines zu analysierenden oder zu erstellenden Softwaresystems gezielt modellhaft darzustellen. Ein Anliegen dabei ist eine angemessene Abstraktion, die zu einer Komplexitätsreduktion und einer besseren Beherrschbarkeit von Softwaresystemen führt. Trotz aller Fortschritte auf diesem Gebiet und seiner durchaus gegebenen Einsatzreife für die Praxis stehen noch viele ungelöste Fragen für die Forschung offen. Ein kritischer Faktor der Modellbildung ist natürlich der zusätzliche Aufwand in der Entwicklung. Hier stellt sich die Frage, wie weit man den Aufwand bei der Modellbildungüberhaupt treiben sollte und wie man die oft schwergewichtigten, modellbasierten Vorgehensweisen mit genügend Flexibilität versehen kann, so dass sie die Profile der durchgeführten Projekte besser berücksichtigen. Neben der Modellorientierung ist ein weiterer Trend in den letzten Jahren im Software Engineering der Einsatz sogenannter agiler Methoden, insbesondere unter dem Stichwort ”extreme Programming“. Hierunter werden leichtgewichtige Vorgehensmodelle für die Software Entwicklung verstanden, die eine Reduzierung der Softwarebürokratie sicherstellen und eine viel höhere Flexibilität in der Softwareentwicklung erlauben. Für Projekte bestimmten Profils können agile Methoden ein bedeutend effektiveres Vorgehen ermöglichen. Voraussetzung dafür sind jedoch entsprechend hinreichend kompetente Entwickler sowie ein deutlich begrenzter Projektumfang. So können agile Methoden erfolgreich nur in kleinen Projekten eingesetzt werden mit nur einer Handvoll Entwicklerüber einenüberschaubaren Zeitraum, so dass für eine schnelle Kommunikation Rückkopplung im Projekt tatsächlich funktionieren kann. Zunächst scheint es, als dass modellbasierte Ansätze mit ihrer starken Systematik und ihrer bewußten - von der eigentlichen Codierung losgelösten Modellierungstechnik - den agilen Methoden, die in der Regel codezentriert sind, nicht vereinbar sind. Die vorliegende Arbeit zeigt eindrucksvoll, dass es doch möglich ist, modellbasierte Ansätze mit agilen Methoden zu kombinieren und dies unter Einsatz wohlbekannter Modellierungssprachen wie der UML. Dazu muss allerdings sorgfältigüberlegt werden, welche UMLKonstrukte als Modellierungs-, Test- und Implementierungsbeschreibungsmittel eingesetzt werden können und wie methodisch vorgegangen werden soll. Eine Antwort auf diese Frage leistet die Arbeit von Herrn Rumpe. Herr Rumpe setzt sich gleichermassen zum Ziel, relevante, praktische Ansätze, wie agiles Vorgehen und die weit verbreitete Sprache UML einzusetzen, ohne dabei aber auf saubere wissenschaftliche Fundierung und gut dokumentiertes Vorgehen zu verzichten. Deutlich wird insbesondere dargestellt, welche Programmkonstrukte der UML geeignet sind, um beispielsweise Testfälle rigoros zu entwickeln oderüber perfekte Regeln eine evolutionäre Weiterentwicklung anzustoßen. Die vorliegende Arbeit demonstriert, wie die beiden recht unterschiedlichen Paradigmen der agilen Methoden und der Modellorientierung doch miteinander korrespondieren und sich ergänzen. Es entsteht ein Ansatz, der gleichermaßen dem Anspruch einer praxisnahen, gut einsetzbaren Vorgehensweise, wie dem Anspruch einer sauberen wissenschaftlichen Fundierung gerecht wird. Der beiliegende Text ist sehr gut lesbar, ohne dabei den Anspruch aufzugeben, eine sorgfältige inhaltliche und fachliche Darstellung zu leisten. Die Vorgehensweise, die Herr Rumpe hier vorschlägt, hat er selbst in einer Reihe von kleineren Projekten erfolgreich erprobt. Die Arbeit stellt damit einen wertvollen Beitrag dar, der für Praktiker eine gute Handlungsanleitung gibt und Ihnen zusätzliche Informationen zeigt, wie sie aktuelle Trends der Softwaretechnik - wie agiles Vorgehen und modellbasierte Entwicklung - erfolgreich undmit guten Ergänzungenmiteinander kombinieren können. Für Studierende wird eine umfassende Einführung in das Themengebiet und eine solide Fundierung geleistet. Das vorliegende und das darauf aufbauende Buch ”Agile Modellierung mit UML“ sind somit gleichermaßen für Praktiker geeignet, die an einem entsprechenden Ansatz für ihre Entwicklungsprojekte interessiert sind, wie auch für auf praktische Fragestellungen ausgerichtete Vorlesungen, die aber nicht auf einen grundlegenden wissenschaftlichen Anspruch verzichten möchten. Manfred Broy Garching im Februar 2004
|
||||||||||