Was ist eigentlich Extreme Programming (XP)?

Der Begriff „Extreme Programming (XP)“ beschreibt im Wesentlichen die Art und Weise, wie unter Anwendung Agiler Prozesse, Software programmiert wird. Dabei stehen kurze Entwicklungszyklen und schnelle Reaktionszeiten auf neue oder sich ändernde Anforderungen im Vordergrund.

Extreme Programming (XP) ist eine seit einigen Jahren immer populärer werdende Methode zur Entwicklung von Software in kleineren Teams. Die teilweise radikalen Änderungen im Vergleich zur „traditionellen“ Vorgehensweisen erfordern umfangreiches Umdenken in technischen und sozialen Prozessen, bieten aber die Möglichkeit der Beherrschung zuvor schwer zu bändigender Dynamiken.

Als Vater des Extreme Programming gilt der amerikanische Software-Ingenieur Kent Beck. Seine „Feuertaufe“ bestand XP in den Jahren 1997-1998 bei der programmtechnischen Umsetzung des Daimler-Chrysler „Project C“ – Chrysler Consolidated Compensation.

Das interne Softwareprogramm für eine neue Mitarbeiter-Gehaltsabrechnung war in eine kritische Sackgasse geraten. Eine vom Autobauer engagierte Software-Entwicklungsgruppe um Kent Beck setzte das Projekt, basierend auf der Methode „Extreme Programming“ neu auf. Der neue Weg war von Erfolg gekrönt.

Beck fasste die in diesem Projekt gesammelten Erfahrungen in seinem Buch „Extreme Programming Explained“ zusammen. Als Gerüst für die Rahmenbedingungen der Extremprogrammierung bezeichnet der Autor darin die drei Hauptbestandteile

  • Werte (Values),
  • Prinzipien (Principles) und
  • Techniken (Practices).

 

Charakteristisch: zyklische Vorgehensweise

Charakteristisch beim Extreme Programming ist die zyklische Verfahrensweise auf den Entwicklungsprojekt-Ebenen. Diese Struktur betrifft die eigentliche Programmierung. Sie wirkt aber auch prägend auf die obligatorische Abstimmung im Entwicklungsprojekt-Team.

Diesem Zyklus unterliegt letztlich auch das gemeinsam mit dem Kunden definierte Anforderungsmanagement. Spätestens an dieser Stelle wird deutlich, dass XP auf einen vom Kunden strikt vorgegebenen Projekt-Anforderungskatalog bewusst verzichtet.

An seine Stelle tritt das sogenannte „Agile Modeling“. Es ermöglicht die Berücksichtigung von Kundenwünschen im Laufe der voranschreitenden Software-Entwicklung. So entstehen Entwicklungszyklen in Einheiten von einem Tag bis zu einer Woche. Sämtliche Themeninhalte einer komplexen Programmentwicklung, zum Beispiel

  • Analyse der Anforderungen
  • Produkt Design
  • Implementierung
  • Testphasen und Testtiefe

werden in diesen kurzen Zyklen aktualisiert und in den weiteren Entwicklungsprozess implementiert.

Diese zeitnahe und problemorientierte Verfahrensweise trägt der Erkenntnis Rechnung, dass Kunden und Auftraggeber die tatsächlichen Anforderungen und Leistungsprofile bei Projektbeginn oft nicht im Detail kennen. Die Erfahrung bei der klassischen Projektvorgabe zeigt auf, wie Pflichtenhefte häufig mit entbehrlichen Features belastet werden, während essentielle Funktionen vergessen werden.

 

Vorteile von XP bei komplexen Entwicklungsprojekten

Die Vorteile von Extreme Programming entfalten insbesondere bei komplexen Software-Entwicklungsprojekten ihre problemorientierte Wirkung. An die Stelle einer komplexen, starren Projektvorgabe tritt die in kürzere Iterationszyklen unterteilte Vorgehensweise.

Auf diesem Wege wird die Software-Entwicklung vereinfacht, was die aktive Einbindung der Kunden und Auftraggeber in das Projekt ermöglicht. Insbesondere diese Möglichkeit der Kommunikation mit dem Kunden gibt den nächsten Programm-Entwicklungsschritten eine konkrete Richtung. Kundenwünsche lassen sich zeitnah korrigieren, revidieren oder ergänzend konkretisieren.

Ängste, mangelnde Offenheit und Kommunikation sowohl auf Seiten des Auftraggebers als auch der Entwickler sind häufig bereits der Anfang vom Ende jeder erfolgreichen Softwareentwicklung. Extreme Programming begegnet diesen Problemen durch kooperative Entwicklungsmodelle (Pair Programming), iterative Verfeinerungen der Aufgabenstellung und Konzentration auf schnelle Releasesyklen und Testbarkeit von Systemen.

Die Software-Entwicklung lässt sich dank dieser zyklischen Vorgehensweise signifikant beschleunigen. Auch der mit dem reduzierten Zeitaufwand gekoppelte Kostenaspekt birgt Einsparpotenziale. Im günstigsten Falle bewirkt das Zusammenspiel erfahrener Programmierer in Verbindung mit aktiv eingebundenen Kunden Projektvorteile, die sich mit Hilfe des Extreme Programming in Form eines qualitativ hochwertigen, passgenauen Software-Programms darstellen.