next up previous contents index
Nächste Seite: 7.7 Einordnung in die Aufwärts: 7 Agile Softwareentwicklung Vorherige Seite: 7.5 Begriff Agilität   Inhalt   Index


7.6 Emergent Design

Im Umfeld der agilen Methodiken taucht der Begriff Emergent Design seit etwa Ende 2000 auf. Darunter versteht man das ohne bewusste Steuerung gestaltete Design einer Software. Emergent Design bezeichnet somit das Design als Artefakt und nicht die Designphase.

Bei Emergent Design existiert keine abgrenzbare Designphase, es findet keine bewusste Gestaltung statt. Im Rahmen von Extreme Programming werden die folgenden drei Grundpraktiken für die unbewusste Entstehung des Designs verantwortlich gemacht:

Mit der Konzentration auf ein einfaches Design während der Programmierung wird die Basis gelegt. Das einfache Design entspricht nicht dem endgültigen Design der Software, da Refaktorisierung für eine stetige Überarbeitung und Weiterentwicklung des Design sorgt. Dabei stellen die Komponententests sicher, dass das Design immer noch die volle Funktionalität unterstützt.

Der Begriff Emergent Design (vgl. z. B. Cav00) stammt nicht aus der Softwareentwicklung. Tatsächlich wird das Wort Emergenz in englischsprachigen Veröffentlichungen sehr häufig verwendet. In allen Bereichen des Lebens und Zusammenlebens finden täglich Gestaltungsentscheidungen statt. So legt z. B. der Architekt das Design eines Gebäudes fest, Experten entwerfen die Grundlage einer gesellschaftlichen Institution (wie Hochschulpolitik) und Unternehmen ändern ihre interne Struktur und damit ihr Design.

Soll Emergent Design tatsächlich emergente Phänomene hervorrufen, dann muss es Nicht-Linearität und Nicht-Determinismus ermöglichen und einsetzen. Das oben beschriebene Vorgehen innerhalb von Extreme Programming ist nicht-deterministisch, da keine Vorherbestimmung der Ergebnisse (des Design) stattfindet. Es wird auf eine schrittweise Entwicklung gesetzt und eine globale Planung der Ergebnisse vermieden. Weiterhin sorgen Refaktorisierung und Programmierung für Nicht-Linearität. Es findet eine ständige Überarbeitung des aktuellen Designs der Software statt. Da es unendlich viele Möglichkeiten für das Design einer Software gibt, ist nicht vorhersehbar, welcher Entwicklungsweg eingeschlagen wird. Dies hängt, bei gleichbleibenden Projektziel, sehr stark von den Fähigkeiten und persönlichen Vorlieben der Entwickler ab. Diese vielen kleinen Änderungen führen zu einer Entwicklung, die weder vorhersehbar noch steuerbar ist.

Da scheinbar im Rahmen von Emergent Design Nicht-Linearität und Nicht-Determinismus vorliegen, kann davon ausgegangen werden, dass durch Emergent Design tatsächlich ein emergentes System gestaltet wird.


next up previous contents index
Nächste Seite: 7.7 Einordnung in die Aufwärts: 7 Agile Softwareentwicklung Vorherige Seite: 7.5 Begriff Agilität   Inhalt   Index
Sebastian Stein 2004-08-30