Agile Softwareentwicklung

Extreme Programming

30.08.2010

Die Prinzipien des XP

Die Prinzipien bilden die Brücke zwischen den abstrakten Werten und den konkret anwendbaren Praktiken. XP beschreibt folgende 13 Prinzipien:

  • Menschlichkeit

  • Wirtschaftlichkeit

  • Beidseitiger Vorteil

  • Verbesserungen

  • Vielfältigkeit

  • Reflexion

  • Fluss

  • Fehlschläge hinnehmen

  • Gelegenheiten wahrnehmen

  • Qualität

  • Redundanzen vermeiden

  • Kleine Schritte

  • Akzeptierte Verantwortung

Menschlichkeit: Software wird von Menschen entwickelt. Menschen bilden also den Faktor, dem laut XP besondere Aufmerksamkeit gilt. Durch Schaffung einer menschlichen Atmosphäre soll den Grundbedürfnissen der Entwickler (Sicherheit, Vollendung, Identifikation mit der Gruppe, Perspektive und Verständnis) entsprochen werden.

Der XP-Prozess (www.extremeprogramming.org)
Der XP-Prozess (www.extremeprogramming.org)
Foto: BQI

Wirtschaftlichkeit und beiderseitiger Vorteil: Die erstellte Software, beziehungsweise eine einzelne Funktionalität, muss einerseits wirtschaftlich sein und dennoch einen echten Wert bringen. Andererseits muss sie für beide Seiten von Vorteil sein und alle Beteiligten (Entwicklungsteam und Kunde) zufriedenstellen.

Verbesserungen und Vielfältigkeit: Die Wiederverwendung bestehender Lösungen, wozu beispielsweise die zahlreichen unterschiedlichen Tests gehören, die stetig automatisiert durchlaufen werden, ist wichtig. Dabei ist jedem Beteiligten klar, dass erste Lösungen meist nicht optimal sind. Aus Feedback und selbst gewonnenen, neuen Erkenntnissen wird die Lösung ständig verbessert.

Immer bessere Lösungen zu erkennen, gelingt nur durch stetige Reflexion und kontinuierliches Hinterfragen der jeweiligen Vorgehensweisen im Team. Die Produktivität dieses Verfahrens steigt proportional zur Uneinheitlichkeit des aus Personen mit unterschiedlichen Fähigkeiten und Charakteren bestehenden Teams. Verschiedene Meinungen werden nicht nur geduldet sondern sogar gefördert. Dazu muss ein Konfliktmanagement etabliert werden.

Fluss, Fehlschläge hinnehmen und Gelegenheiten wahrnehmen: Die Lauffähigkeit der Software muss zu jedem Zeitpunkt garantiert sein. Obwohl kurze Iterationen mit permanentem Feedback dabei helfen das Projekt in einem Fluss zu halten, müssen Fehlschläge dennoch miteinkalkuliert werden. Dabei ist es durchaus üblich und wird akzeptiert, eine Umsetzung durchzuführen, die zunächst nicht optimal oder sogar fehlerhaft sein kann. Diese Schwierigkeiten müssen als Gelegenheit und Chance begriffen werden, das Produkt und das Team noch weiter reifen zu lassen.

Ein offener, konstruktiver Umgang mit den Herausforderungen der Softwareentwicklung gelingt umso besser, je mehr alle Beteiligten bereit sind, ihre Verantwortung zu akzeptieren. Einem Entwickler eine Aktivität und Verantwortung nur disziplinarisch aufzutragen reicht nicht aus, da er die Verantwortung aktiv annehmen und auch leben muss.

Qualität: Ein weiterer wichtiger Punkt ist die hohe Qualität, die gemäß XP im Gegensatz zu anderen Faktoren wie Ressourcen, Funktionsumfang oder Endtermin nicht zur Diskussion steht. Diese Grundeinstellung unterscheidet sich von vielen anderen Methoden der Softwareerstellung, bei denen Software zu einem bestimmten Zeitpunkt und in einem definierten Funktionsumfang fertiggestellt werden soll, worunter fast immer die Softwarequalität leidet. Gerade die Qualität ist allerdings wichtig, um das Produkt einsatzfähig, fehlerfrei und erweiterbar zu halten. Software mit gutem Design und hoher Qualität ist mittelfristig kostengünstiger, erweiterbarer und weniger fehlerbehaftet, als schnell erstellte, sogenannte "Quick-and-dirty"-Software.

Redundanzen vermeiden: Zu guter Qualität gehört auch die Vermeidung von Redundanzen. Hierzu zählen unnötig mehrfach oder wiederholt ausgeführte oder auch manuell ausgeführte automatisierbare Schritte.

Kleine Schritte: Durch schnelle, kleine Schritte bleibt das Team flexibel und kann sich schnell neuen Rahmenbedingungen anpassen und auf Feedback eingehen. Die negativen Folgen eines einzelnen kleinen, nicht erfolgreichen Schrittes können wesentlich schneller durch einen neuen Schritt kompensiert werden, als dies bei einem einzelnen größeren Schritt der Fall wäre.