Extreme Programming (XP)

Im folgenden Blog-Beitrag möchten wir Ihnen den Begriff des Extreme Programming näherbringen. Der Begriff kommt aus der Softwareentwicklung und beschreibt eine Art und Weise Anwendungen zu entwickeln. Dabei beschreibt XP den Extremfall hinsichtlich agiler Programmierung. Agile Prozesse, schnelle, kurze aber dennoch sehr komplexe Entwicklungszyklen und sich ständig ändernde Anforderungen.

Charakteristisch beim Extreme Programming ist es möglichst viele Leute in den Entwicklungsprozess einzubeziehen. Eine Gruppe entwickelt und verbessert das Endprodukt, während andere Gruppen autonome Tests schreiben (testgetriebenes Entwickeln) und Feedback geben. Der Auftraggeber spielt auch eine gewichtete Rolle. Diese haben die Aufgabe in regelmäßigen Abständen die neuen Versionen zu prüfen und Kritik zu äußern, um das Endprodukt noch weiter zu verbessern. Durch dauerhaftes Feedback und einem klar geregeltem Arbeitstakt wird die Motivation der Mitarbeiter stark erhöht. Dieser Arbeitsplan verbietet auch Überstunden, die sich negativ auf die Freude am Projekt und auf die Qualität des Produktes auswirken könnten.

Alle Aufgaben werden zu keinen Userstories heruntergebrochen. Eine Userstory ist eine Anwendungsanforderung, die in Alltagssprache formuliert ist. Diese sind kurz gehalten und nicht länger als zwei Sätze.

Eine der bekanntesten Vorgehensweisen beim Extreme Programming ist das Pair Programming. Während des Pair Programmings sitzen immer zwei Entwickler nebeneinander und arbeiten gleichzeitig an einer Aufgabe. Während der eine den Code schreibt („Pilot“), überprüft der andere („Navigator“) die Korrektheit des Codes und kann nebenbei über Verbesserungen nachdenken. Da es keine feste Aufgabenteilung gibt, wechseln sich Pilot und Navigator in unregelmäßigen Abständen immer wieder ab. Aus diesem Grund haben beide Entwickler ein Grundverständnis aller Bereich des Projektes. Untersuchungen haben ergeben, dass diese Methode des Programmierens die Qualität des Codes deutlich erhöht, die Kommunikation im Team erhöht (als auch das Teamwork), sowie die Entwickler mehr Vertrauen in den fertigen Code haben. Die Entwicklungskosten erhöhen sich zwar minimal jedoch ist es im Endeffekt günstiger, als ein im späteren Verlauf entdeckter Fehler, welcher – je später er gefunden wird – immer teurer wird.
Bei täglichen Treffen („Standup-Meetings“) wird die Einsatzplanung für den aktuellen Tag geplant bzw. besprochen. Diese Treffen werden, wie der Name es schon sagt, im Stehen abgehalten und sollten nicht mehr als 15 Minuten in Anspruch nehmen.
Folgende drei Fragen könnten z.B. von den Teammitgliedern beantwortet werden:

– Was habe ich gestern erledigt?
– Was nehme ich mir bis morgen vor?
– Was behindert mich in meiner Arbeit?

Die Diskussion der anstehenden Arbeiten führt zu einer gemeinsamen Verantwortung für die Erledigung der „wichtigsten“ Aufgaben und spiegelt zugleich den aktuellen Projektstand wider. Durch monatliche Meetings mit Kunden, sowie der kurzen Release-Zyklen, kann der Projektstand immer reflektiert sowie Ziele gesetzt werden.
→ Absprachen beschließen

 

Vor- und Nachteile beim XP

In folgendem Schaubild werden die Vor- und Nachteile, die XP mit sich zieht, aufgelistet und anschaulich dargestellt.

Vorteile Nachteile
  • Monatliche schnelle Intervallveröffentlichung der Software
  • Hohe Qualität des Programmcodes
  • Dank testgetriebener Entwicklung kann der Code ohne Probleme erweitert werden, ohne Fehler bei bestehenden Funktionen zu erzeugen
  • Kontinuierliches, autonomes Testen
  • Intensive Kommunikation der Entwickler
  • Starker Teamgeist und gute Mitarbeit, der Entwickler
  • Verstärkte Motivation der Entwickler aufgrund von Feedback
  • Kürze Entwicklungszyklen, die immer ähnlich aufgebaut sind
  • Aktive Einbindung der Kunden und Auftraggeber in Form von Meetings und Vorstellungen
  • Beschleunigung der Software Entwicklung
  • Bei zu vielen weitreichenden Änderungswünschen wird XP ineffizient.
  • Ungünstig für sehr kleine Projekte mangels Mitarbeiter und Kapazitäten
  • Sehr hohe Anforderungen an der Entwickler
  • Erzeugt viel Stress
  • Benötigt gute und genaue Planung

 

Vergleich zu anderen Systemen

In folgendem Schaubild wird XP mit anderen agilen Softwareentwicklungssystemen verglichen. Diese sind Crystal und Scrum.

Extreme Programming Crystal Scrum
Beschleunigung der Entwicklung komplexer Anwendungen
Regelmäßiges Veröffentlichen neuer Zwischenversionen
Kurze Entwicklungszyklen
Ähnliche, wiederkehrende Entwicklungszyklen
Qualitatives Endprodukt
Testgetriebener Entwickeln
Tests autonom arbeiten und auswerten lassen
Intensive Kommunikation mit den Kunden X
Verstärkte Mitarbeit
Starker Teamgeist
Erhöhte Motivation durch Feedback X X
Meetings und Präsentationen mit Kunden zum Planen, Verbessern und Vorführen X
Probleme vor allen offenlegen
Möglichst viel Kritik einholen
Sich verändernde Ziele X
Arbeit genau aufteilen und planen

 

Fazit

Extreme Programming eignet sich meist, wenn die Anforderungen bzw. Bedingungen eines Projektes zu Anfang noch nicht vollständig zur Verfügung stehen.
Bei XP wird darauf Wert gelegt, dass die wichtigsten Teile eines Projektes zuerst realisiert werden, damit der oder die Auftraggeber relativ schnell Zugang zu den wichtigsten Funktionen erhalten.

Dies dient der Förderungen agiler Entwicklungsmethodiken.