Extreme Programming

Extreme Programming (XP) ist eine agile Methode der Softwareentwicklung, die auf bestimmten Werten beruht: Kommunikation, Einfachheit, Feedback und Mut (später kamen hinzu: Lernen, Qualität und Respekt) sollen die Entwicklung einer Software oder Anwendung begleiten und dafür sorgen, dass der Abnehmer der Software zufrieden mit dem Ergebnis ist und sich die Änderungskosten in Grenzen halten. Extreme Programming setzt bewährte Techniken der Softwareentwicklung auf besondere Weise um. Dazu zählen stetige Reviews, fortwährendes Testen, kontinuierliches Design und Redesign sowie stetiges Feedback, kurze Releasezyklen und die starke Einbeziehung des Kunden oder Auftragnehmers. Insbesondere für Projekte, deren Anforderungen sich verändern, ist das Extreme Programming geeignet. Grundsätzlich sollen Risiken wie Terminüberschreitungen, Kostenexplosionen und eine geringe Softwarequalität minimiert werden.

Allgemeine Informationen zum Thema

Kent Beck, Ron Jeffries, Martin Fowler und weitere gelten als Ideengeber und Entwickler des Extreme Programmings. Sie wurden 1997 für das C3 Projekt bei Daimler Chrysler engagiert, um es vor dem Scheitern zu retten. Es sollte ein internes Abrechnungssystem für Mitarbeiter entwickelt werden. Sie implementierten agile Methoden, die auf das Projekt und die Anforderungen zugeschnitten waren und konnten den Erfolg sicherstellen. Im Nachhinein formulierte Kent Beck die dort entstandenen Ideen aus und veröffentlichte ein Buch mit dem Titel „Extreme Programming Explained – EMBRACE CHANGE“ - es gilt als Grundlagenwerk für das Extreme Programming. Im Kern besteht XP aus Werten (Values), Prinzipien (Principles) und Techniken (Practices), die Beck in seinem Buch erstmals vorstellt. Er definiert hier vier Werte, 15 Prinzipien sowie 15 Techniken.[1] Später wurden diese Leitideen in einer zweiten Auflage ergänzt.

In Auseinandersetzung mit Softwareentwicklungs-Modellen wie Waterfall, V- oder dem Spiralmodell entwickelt Beck eine Methode, die in einem weitesten Sinne 'agil' ist.[2] Der Name Extreme Programming rührt daher, dass die agile Entwicklung hier auf extreme Weise umgesetzt wird: Es wird angenommen, dass der Kunde zu Beginn des Entwicklungszyklus noch keine volle Kenntnis von den Anforderungen haben kann. Deshalb müssen diese Änderungen im Laufe der Entwicklung miteinbezogen werden – was wiederum bedeutet, dass die Kosten steigen. Extreme Programming ist darauf ausgelegt, flexible und schnell reagierende Entwicklungsprozesse umzusetzen, zu evaluieren und das Softwareprodukt in Reaktion auf sich verändernde Anforderungen verbessern zu können. Dabei kommt allen Beteiligten große Verantwortung zu: Nur im Team lasen sich diese Ziele erreichen. Die Rollenverteilung beim Extreme Programming wird so gestaltet, dass Entwickler, Management und Kunden über die gesamte Laufzeit des Projektes miteinander auf Augenhöhe kommunizieren.

Funktionsweise

In der Praxis wird Extreme Programming meist von kleinen bis mittleren Unternehmen eingesetzt, weil es kaum feste Rahmenbedingungen und Regeln gibt, die vor Projektbeginn feststehen. Vielmehr werden die Regeln in Meetings besprochen und vom Team definiert. Im Gegensatz zu anderen Vorgehensmodellen in der Softwareentwicklung gibt es kein festes Protokoll, an das sich alle Beteiligten halten müssen. Die wichtigste Konstante beim Extreme Programming ist hingegen die Zeit: Stellt man sich ein Projekt in seiner gesamten Laufzeit vor, kann dies heruntergebrochen werden in Monate, Wochen, Tage, Stunden, Minuten und Sekunden. Jede Zeiteinheit ist mit den Werten, Prinzipien und Techniken des XP verbunden.[3] [4]

  • Monate: Das Projekt ist in kurze Releasezyklen unterteilt, die einzelne Iterationen der Softwareentwicklung darstellen. Auf diese Weise ist es möglich, dem Kunden Teiliterationen vorzustellen und den Produktwert für den Kunden schnell zur Verfügung zu stellen. Teilweise werden innerhalb von zwei oder drei Monaten Ziele für Iterationen größerer Releasezyklen festgelegt. Dies erfolgt in Zusammenarbeit mit dem Kunden.
  • Wochen: Ähnliches gilt für die kleinere Zeiteinheit der Wochen. Auch hier sorgen kurze Iterationen für einen möglichst hohen Produktwert für den Kunden. Zudem werden so aktuelle Anforderungen des Kunden zeitnah umgesetzt, indem User Stories beschrieben werden. Anhand der Stories werden Testfälle definiert, die gewissermaßen die Blaupause für die Entwicklung darstellen. Daraufhin folgt die Erstellung des Codes und die Implementierung gemäß der Testfälle.
  • Tage: Jeden Tag treffen sich die Teams, die meist aus zwei bis zwölf Entwicklern bestehen, in einem sogenannten Standup-Meeting. Dort werden Probleme kurz erörtert und der Fortschritt des Projektes besprochen. Das Meeting findet im Stehen statt, um es kurz zu halten.
  • Stunden: Jede neu entwickelte Komponente der Software wird umgehend in das Gesamtsystem übertragen. Diese Continuous Integration sorgt dafür, dass Fehler schnell gefunden und behoben werden können, da es aufwendiger wäre, sie im Nachhinein zu beseitigen. Hinzu kommt das Refactoring, das die Struktur des Quellcodes unter Beibehaltung aller Funktionalitäten laufend verbessern soll. Eine Dokumentation wird nicht verfolgt, was Nachteile bei späteren Konflikten beim Endanwender bedeuten kann.[5]
  • Minuten: Extreme Programming legt besonderen Wert auf eine testgeleitete Entwicklung. Das bedeutet, dass einzelne Komponenten einem sogenannten Unit-Test unterzogen werden (zum Beispiel mit jUnit). Meist werden die Tests vor der Erstellung des Codes geschrieben, um ein kontinuierliches Testen zu ermöglichen. Die Testfälle ersetzen den Anforderungskatalog, da sie aus den User Stories abgeleitet werden, die in Zusammenarbeit mit dem Kunden erarbeitet wurden.
  • Sekunden: Extreme Programming basiert auf einem Vier-Augen-Prinzip. Das sogenannte Pair Programming soll Probleme, Fehler und Konflikte vermeiden, indem sich stets zwei Programmierer gegenseitig kontrollieren und auf etwaige Probleme aufmerksam machen. Einer schreibt den Code, der andere kontrolliert ihn. Dies dient auch der Qualitätssicherung.

Durch die Zeiteinheiten sind die Abläufe des XP strukturiert. Sie sind die Rahmenbedingungen, an denen sich die Entwicklerteams und das Management orientieren. Wichtigstes Merkmal ist das iterative Vorgehen, das auch andere agile Methoden auszeichnet. Die sich wiederholenden Abläufe erhöhen die Qualität des Endproduktes und lassen ein Höchstmaß an Flexibilität zu.

Vorteile/Nachteile des Extreme Programming

  • Extreme Programming reagiert überaus flexibel auf Kundenanforderungen. Bei zu vielen Änderungswünschen des Kunden kann Extreme Programming allerdings ineffizient werden.
  • Durch das iterative Vorgehen, das ständige Testen und die kontinuierliche Integration in die Produktivumgebung können einzelne Komponenten des Endproduktes schnell genutzt werden. Unter Umständen können so schon nach wenigen Wochen Umsätze mit dem Produkt erwirtschaftet werden.
  • Die Iteration macht eine Versionsverwaltung notwendig, da ständig Änderungen vorkommen. Zudem bilden die Stories nur bedingt die Anforderungen an das Produkt ab.
  • Dank des Pair Programming ist die Qualität bereits während der Entwicklung auf einem hohem Niveau. Dies sorgt allerdings auch für höhere Kosten pro Mitarbeiter, da nicht alle Entwickler ständig Code schreiben, sondern ebenfalls kontrollieren.
  • Änderungen können umgehend getestet und integriert werden, da die testgeleitete Entwicklung dies erlaubt. Immer mehr neue Testfälle führen jedoch auch zu einem Anstieg der Gesamtkosten. Dies muss mit dem Kunden abgestimmt werden und das einzige Mittel sind die behandelten Stories.
  • Entwickler sind durch die stete Kommunikation an den Erfolg des Projektes gebunden. Erfolgserlebnisse stellen sich relativ schnell ein.
  • XP erfordert jedoch auch Mut zur Kommunikation und erfahrene Entwickler, die mit den Rahmenbedingungen umgehen können. Selbstorganisation auf individueller und kollektiver Ebene ist eine unbedingte Voraussetzung für XP-Projekte. Dies schließt auch den Kunden mit ein.[6]

Bedeutung für die Programmierung

Extreme Programming ist lediglich für bestimmte Projekte geeignet. Wenn die Anforderungen des Projektes nicht konkret genug sind und sich schnell ändern können, erscheint XP als Alternative zu anderen, klassischen und anderen agilen Vorgehensmodellen wie zum Beispiel Scrum. Diese Art von agiler Softwareentwicklung funktioniert jedoch nur mit erfahrenen Entwicklern, die im Team arbeiten können und kommunikationsstark sind. Deshalb sollten die Teams auch nicht mehr als 10 bis 12 Entwickler umfassen. Kunden müssen zudem ausreichend Budget zur Verfügung stellen, um Änderungen und häufiges Testen zu ermöglichen.

Hinzu kommt, dass XP auf lokale Mitarbeit angewiesen ist. Eine dezentrale Organisation von hunderten Entwicklern bei Großprojekten ist mit den Möglichkeiten des Extreme Programmings nicht gegeben. Nichtsdestotrotz hat XP weitreichende Folgen für andere Vorgehensmodelle: Vor allem das Pair Programming wäre hier zu nennen. So belegten verschiedene Studien, dass die Qualität von Paararbeit wesentlich höher ist als die von Einzelentwicklern. Plus: Das Notieren der Testfälle vor dem Schreiben des Codes wird mittlerweile auch bei anderen Vorgehensweisen verwendet. Mitunter wurden einzelne Vorteile von XP in andere Vorgehensmodelle integriert.

Einzelnachweise

  1. Extreme Programming (XP) scrum-kompakt.de. Abgerufen am 19.01.2016
  2. Extreme Programming st.cs.uni-saarland.de. Abgerufen am 19.01.2016
  3. eXtreme Programming (XP) it-agile.de. Abgerufen am 19.01.2016
  4. Extreme Programming frankwestphal.de. Abgerufen am 19.01.2016
  5. Agile Ansätze im Requirements Engineering elektronikpraxis.vogel.de. Abgerufen am 19.01.2016
  6. Extreme Programming: Vorgehensmodell zur Software-Entwicklung blog.seibert-media.net. Abgerufen am 19.01.2016

Weblinks