Extreme Programming im Überblick

Extreme Programming (XP) ist eine qualitätsorientierte, agile, teamorientierte und konkrete Software-Engineering Methodik. Sie eignet sich besonders für den Einsatz in Projekten, bei denen ein Großteil der Anforderungen zu Begin nicht festgelegt werden kann.

Qualitätsorientiert

In XP wird testgetrieben entwickelt: Jede Änderung des Verhaltens des entwickelten Systems wird zuvor durch einen fehlschlagenden, automatisierten Test motiviert. Damit erreichen XP-Projekte eine hohe Testabdeckung, und sichern die implementierte Funktionalität durch die entstandenen Tests ab.

Um die interne Qualität des Systems zu erhalten, wird die Struktur des Systems entwicklungsbegleitend durch verhaltensneutrale Änderungen (sogenannte Refactorings) an unvorhergesehene neue Anforderungen angepasst.

Agil

In XP ist die einzige Konstante die Änderung. Wir gehen nicht davon aus, dass sich alle Anforderungen zu Beginn festlegen lassen. Stattdessen rechnen wir ständig mit Änderungen und entwickeln inkrementell und iterativ.

Anforderungen werden dabei zunächst nur grob in Form von User Stories erfasst – kurzen Beschreibungen, die auf eine Karteikarte passen. Je näher die Implementierung einer Anforderung rückt, desto genauer wird sie geplant: Die User Story wird im Dialog mit dem Kunden detailliert und vom Entwicklungsteam in Aufgaben zerteilt, die dann innerhalb einer Iteration umgesetzt werden. Bereits die detaillierte Darstellung einer Anforderung stellt schließlich eine Investition dar. Falls die Anforderung später doch nicht umgesetzt wird, ist die Investition verloren. Durch die zeitnahe Feinplanung verhindern wir, dass dieser Verlust höher ausfällt als nötig.

Die Agilität zeigt sich auch in der Werkzeugauswahl: Wir verwenden nur die Werkzeuge, die ihren Wert im Team beweisen. Weniger ist dabei mehr: Statt einem UML-Modellierungswerkeug entscheiden sich viele XP-Teams für CRC-Design auf Karteikarten. Neben dem geringeren Einarbeitungsaufwand eignen sich die Karten besser für das Design im Team.

Teamorientiert

Extreme Programming Teams arbeiten typischerweise in einem Raum zusammen am Projekt. Implementierungsarbeiten werden von zwei Entwicklern gemeinsam an einem Rechner durchgeführt (Pair Programming). Damit integriert XP ein Code Review direkt in die Implementierung, wodurch zahlreiche Fehler bereits früh gefunden werden. So wird der Aufwand für spätere, kostspielige Fehlerbehebung reduziert. Falls ein Mitarbeiter ausfällt, gibt es immer mindestens einen anderen, der den Quelltext kennt. Um das Risiko weiter zu minimiern, arbeiten die Entwickler nicht in festen Zweierteams, sondern setzen sich pro Aufgabe neu zusammen.

Auch alle andere Aufgaben werden von mindestens zwei Personen zusammen bearbeitet – egal ob es sich um Design, Planung, Administration oder etwas anderes handelt.

Konkret

Extreme Programming gibt mit der Testgetriebenen Entwicklung eine Technik vor, die bis auf die Minutenebene konkretisiert, wie gearbeitet wird. Es stellt damit hohe Anforderungen an die Disziplin des Teams. Dass XP dennoch funktioniert, liegt daran, dass die Techniken sich gegenseitig unterstützen. Beispielsweise ermöglicht die Arbeitsumgebung das Pair Programming, das wiederum die Einhaltung der Testgetriebenen Entwicklung fördert.

Trotz der Konkretheit ist XP selbst keine Konstante. Wir verbessern unseren Prozess während der Entwicklung. Das iterative Vorgehen ermöglicht uns, mit Alternativen zu experimentieren. Jede Regel, die ein XP-Team einhält, muss vom Team verstanden und akzeptiert werden. Ändert sich der Projektkontext, können alte Regeln abgeschafft und neue eingeführt werden.

Ausführliche Informationen zu XP finden sie in Büchern, auf Internetseiten und in Diskussionsforen.