Softwareprojekte managen/15 Jahre Patterns: Vom Hype zur Praxis

Mustervorlagen beschleunigen den Entwicklungsprozess

05.07.2002
Patterns vereinen in sich die Erfahrungen von 15 Jahren Softwareprogrammierung. Waren diese dokumentierten Musterlösungen für wiederkehrende Entwicklungsvorhaben zunächst nur etwas für Spezialisten, so sind sie heute weit verbreitet und aus Projekten nicht mehr wegzudenken. Von Wolfgang Steindl*

Voraussetzungen für die effiziente Wiederverwendung von Software sind ein gemeinsames Vokabular und eine gemeinsame Sprache, damit Konzepte ausgetauscht und in Beziehung gesetzt werden können. Genau das sollen Patterns und Pattern Languages leisten. Ziel ist eine umfassende Pattern-Sammlung, die Lösungen für wiederkehrende Probleme in allen Phasen des Softwarelebenszyklus bereithält. Allgemein ist ein Pattern schriftlich festgehaltenes Expertenwissen für einen bestimmten Problemkreis: die generalisierende Darstellung sowohl des immer wieder in ähnlicher Form auftretenden Problems als auch seiner Lösung. Insbesondere die Abstraktion hebt Patterns von einfachen Beschreibungen ab und ermöglicht ihre Wiederverwendung.

Für die Softwareentwicklung wurde die Definition des Pattern-Vordenkers Christopher Alexander übernommen. Danach ist ein Pattern eine dreiteilige Regel, die die Beziehung zwischen einem bestimmten Kontext, einem Problem und seiner Lösung ausdrückt. Patterns dienen der Kommunikation und Dokumentation. Kennen mehrere Entwickler bestimmte Patterns, reicht deren jeweilige Bezeichnung für eine Zusammenarbeit im Software-Engineering aus. Darüber hinaus bieten Patterns Lernhilfe und unterstützen Lehrzwecke: Beschreibt man ein System durch die verwendeten Patterns, ist seine Funktion schneller und leichter zu verstehen.

Die Frühphase der Patterns in der Softwareentwicklung bestimmten die Design Patterns. Populär wurden sie durch das 1994 erschienene Buch der Gang of Four (GoF) - Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides: "Design Patterns: Elements of Reusable Object-Oriented Software". Design Patterns beschreiben wiederkehrende Entwurfsprobleme sowie Schemata zu ihrer Lösung. Zwei Jahre nach der GoF setzte die Party of Five (PoF) den zweiten Meilenstein: Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad und Michael Stal veröffentlichten ihr Buch "Patterns of Software Architecture". Architectural Patterns zeigen die Struktur eines Softwaresystems auf: Subsysteme werden definiert, ihre Aufgaben sowie Beziehungen zueinander spezifiziert. 1997 führte Martin Fowler mit seinem Buch "Analysis Patterns: Reusable Object Models" eine weitere Pattern-Kategorie ein: Analysis Patterns sind konzeptuelle Modelle von Applikationsteilen.

Heute bietet die Pattern-Welt ein buntes Bild: Patterns haben alle Phasen und Aufgaben der Softwareentwicklung erobert. Dazu zählen zum Beispiel Projektplanung, Organisation und Prozess, Anforderungs- und Konfigurations-Management oder Tests. Mit der nächsten Generation von Patterns wird diese Vielfalt weiter erhöht und gleichzeitig für alle Softwarelebenszyklen und -einsatzgebiete differenziert. Im Mittelpunkt stehen derzeit Themen wie Sicherheit, Ressourcen-Management und Optimierung von Softwaresystemen, angewandte Softwarearchitektur in der Entwicklung, Echtzeit und Embedded Systems, Peer-to-Peer-Systeme oder XML sowie Web-Services.

Pattern-Sammlungen entstehen

Während bisher vor allem einzelne Patterns und deren Dokumentation im Mittelpunkt standen, geht es jetzt um deren systematische Einbindung und Zusammenführung. Dazu dienen vor allem Pattern Languages und Frameworks. Eine Pattern Language umfasst eine Kollektion von Patterns, die Entwicklungsprobleme auf verschiedenen Ebenen eines abgegrenzten Gebietes löst. Dabei dokumentieren Pattern Languages nicht nur Patterns, sondern auch deren Beziehungen untereinander. Das heißt: Regeln und Richtlinien der Sprache erklären, wie und wann "ihre" Patterns zum Einsatz kommen sollen. Aktuell werden Pattern Languages zu Sicherheitsmodellen, Performance oder Embedded-Systems entwickelt.

Während Patterns abstrakt Wissen und Erfahrung über Software zusammenfassen, sind Frameworks ausführbare Software. Genauer: Ein Framework ist eine wiederverwendbare, halbfertige Anwendung, die generische Lösungen für eine Reihe verwandter Probleme implementiert und so die Entwicklung von Applikationen für bestimmte Anwendungsbereiche automatisiert. Hierzu hält das Framework Infrastrukturen und Konzepte bereit - allen voran Patterns, die beispielsweise in Design und Dokumentation zum Einsatz kommen.

Abstrakte Patterns, konkrete Frameworks

Heute werden Frameworks meist mit der objektorientierten Programmierung verbunden. Die interagierenden Softwarekomponenten bestehen aus konkreten und abstrakten Klassen. Der Entwickler vervollständigt die abstrakten Klassen und implementiert die Funktionen für das gewünschte Teilsystem. Aus einem Framework entstehen so zum Beispiel interaktive Internet-Applikationen wie Buchungssysteme, Bankanwendungen, Shopping-Systeme und Spiele.

Zudem erlauben Frameworks den Verzicht auf komplexes Know-how: So ermöglicht das Persistence-Framework einen objektorientierten Blick in Datenbanken. Programmierer müssen sich nicht mit Result-Sets, Spalten und Zeilen aufhalten, denn das Framework bietet, aufbauend auf Java Database Connectivity, die Möglichkeit, Objekte und Objektnetze in einer relationalen Datenbank zu speichern, zu laden sowie gezielt zu suchen. Darüber hinaus wird derzeit der gemeinsame Einsatz von objektorientierter Programmierung, Patterns und Frameworks für die komplexe Parallelprogrammierung vorangebracht. Es soll dabei ein neuer Ansatz entstehen, der auf bisher unerreichte Weise Qualität und Offenheit ermöglicht. (as)

*Wolfgang Steindl ist Technical Representative bei Rational Software.

Angeklickt

Von der "Geheimwissenschaft" über den Hype zum Einsatz auch in kleineren Projekten: 15 Jahre nach ihrem ersten Auftritt auf der IT-Bühne haben sich Patterns etabliert. Sie zeigen qualifizierte Lösungen für immer wieder auftauchende Probleme. Darüber hinausgehend automatisieren Frameworks Teile der Softwareentwicklung. Patterns und Frameworks garantieren als erprobte Lösungen Software von hoher Qualität. So entfallen erhebliche Entwicklungs- und Testzeiten. Kurzum: Durch den systematischen Einsatz von Patterns und Frameworks lassen sich Produktivitätszuwächse erreichen, Restrukturierungs- und Migrationsprozesse vereinfachen sowie Entwicklungskosten reduzieren.

Wie alles begann

1987 tauchte der Begriff Pattern erstmals in der IT-Welt auf: Die IT-Spezialisten Ward Cunningham und Kent Beck übertrugen den Ansatz des Architekturprofessors Christopher Alexander in die Softwareentwicklung. Für das Design von User Interfaces schufen sie fünf Patterns zur objektorientierten Programmierung. Der Erfolg war durchschlagend: Nach nur einem Tag war das Team in der Lage, ohne weitere Detailkenntnisse Interfaces zu entwerfen. In den 90er Jahren ein Hype-Thema, haben sich Patterns heute in der Softwareentwicklung etabliert und gelten gemeinsam mit der Prozessgestaltung als wichtiges Trendthema der kommenden Jahre.