Extreme Programming
(Weiterleitung von XP)
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
- Try these things a while. They'll keep you alive long enough to figure out what you should really be doing, and they'll teach you some valuable skills in the process. -- RonJeffries
ExtremeProgramming (XP) ist ein Prozess für die AgileSoftwareEntwicklung in kleinen Teams. Der Prozess ermöglicht es, langlebige Software zu erstellen und während der Entwicklung auf vage und sich rasch ändernde Anforderungen zu reagieren. XP-Projekte schaffen ab Tag eins Geschäftswert für den Kunden und lassen sich fortlaufend und außergewöhnlich stark durch den Kunden steuern.
ExtremeProgramming ist ein sehr informeller Prozess, der sich stark auf die tatsächlichen ProgrammierTätigkeiten? zurückbesinnt und wird allein dadurch schon dem Entwickler sympathisch. Gleichzeitig werden aber auch hohe Qualität und Produktivität angestrebt und damit auch Eigentümer und Kunden glücklich gemacht.
Die Grundphilosophie von XP basiert auf vier Werten, die in allen Bereichen des Prozesses wiederzufinden sind:
- Kommunikation
- Da SoftwareEntwicklung im Allgemeinen TeamArbeit? ist, ist sie nicht unwesentlich von einem effizienten Austausch von Informationen abhängig. Um Reibungsverluste zu verringern ist man in XP darum bemüht, diese Kommunikation möglichst zeitnah und direkt zu gestalten - Gespräche von Angesicht zu Angesicht statt Stapel von Papier, möglichst viel Information direkt im Code statt in Aktenschränken mit UML-Diagrammen etc.
- Einfachheit
- Einfachheit ist die Kunst, Dinge nicht zu tun, die nicht unbedingt nötig sind. Ein XpTeam bemüht sich darum sowohl in Bezug auf den Entwicklungsprozess, als auch auf die zu entwickelnde Software selber. Die Konzentration auf Einfachheit führt zu Lösungen, die leicht verständlich, schnell umsetzbar und leicht adaptierbar (agil) sind. Deshalb fordert XP TueDasEinfachsteDasFunktionierenKönnte. Wichtig dabei ist, dass die einfachste Lösung nicht zwangsweise auch immer die leichteste ist - und schon gar nicht im Allgemeinen leicht zu finden...
- Feedback
- Ein wesentlicher Bestandteil der Softwareentwicklung besteht aus Lernen: Der Kunde muss lernen, wie er Software am günstigsten für sich einsetzen kann, was er von den Entwicklern erwarten und wie er das Projekt so lenken kann, dass er maximalen Nutzen aus dem Produkt erhält; die Entwickler müssen lernen, zu verstehen was für ein System der Kunde sich vorstellt und wie man diese Wünsche am günstigsten umsetzt. Um dieses Lernen zu forcieren werden in XP möglichst enge und direkte FeedbackSchleifen? eingesetzt.
- Mut
- Prozesse entstehen als Reaktion auf Ängste - z.B. reagiert ExtremeProgramming auf die Angst, ein unwartbares Design zu erstellen, durch GnadenlosesRefaktorisieren. Wenn wir jedoch auf alle unsere Ängste durch einführen von Regeln reagieren ohne sie zu hinterfragen, entstehen schnell Prozesse die eine unhandliche Komplexität erreichen - die uns zwar unsere Ängste nehmen mögen, aber nicht unbedingt eine effektive Arbeit ermöglichen.
- Daher fordert XP den Mut aufzubringen, es auch einmal mit weniger zu probieren, statt mit mehr. Das heißt nicht, dass man blind in sein Verderben laufen soll, sondern durch kleine gesicherte Experimente zu untersuchen, ob Ängste wirklich die damit verbundenen Sicherheitsmaßnahmen rechtfertigen - brauche ich wirklich MsProject?, um die Übersicht über den Projektplan zu behalten, oder tun es auch KarteiKarten?
- Bei genauerem Hinsehen stellt man fest, dass effektive Softwareentwicklung auch an vielen anderen Stellen Mut erfordert: den Mut, Probleme offen und ehrlich zu kommunizieren; Mut, etwas nicht funktionierendes aufzugeben auch wenn man bereits viel darin investiert hat; den Mut, sich auf seine Mitstreiter zu verlassen; Mut, einen neuen Weg auszuprobieren usw.
ToDo: http://martinfowler.com/bliki/PrinciplesOfXP.html einarbeiten
Um die Werte in den verschiedenen Bereichen eines Projektes zu realisieren, wird von XP eine Reihe von Praktiken vorgeschlagen. Diese Praktiken sollten als Startpunkt betrachtet werden; als minimales Anfangsset wird vom Team erwartet, dass es an lokale Gegebenheiten angepasst und um Notwendiges ergänzt wird. Da das Zusammenspiel und die Wirkungen dieses Netz von Praktiken jedoch schwer voll zu umfassen ist, ohne es einmal am eigenen Leibe erlebt zu haben, wird dazu geraten, mit der Adaption zu warten bis man für das Grundset ein Gefühl bekommen hat.
Die Praktiken unterliegen einer ständigen Diskussion in der XpGemeinde? und damit auch einem stetigen Wandel. Die folgende Liste soll ein recht aktuelles Bild darstellen und weicht daher in einigen Teilen von der Darstellung im ExtremeProgrammingBuch ab:
- im regelmäßig durchgeführten PlanungsSpiel wird der EntwicklungsPlan? im Zusammenspiel zwischen Kunden und Entwicklern erstellt bzw. der aktuellen Lage und neugewonnenen Informationen angepasst
- KurzeReleaseZyklen sorgen für frühes ReturnOfInvestment? und Feedback von den Anwendern
- durch die SystemMetapher wird eine gemeinsame Sprache zwischen Kunde und Entwicklern geprägt und idealerweise eine Vision für die Systemarchitektur entwickelt
- EinfachesDesign soll den Code leicht verständlich und anpassbar halten
- KomponentenTests werden von den Entwicklern als Designhilfe und als zur Erhaltung der Funktionalität bei Änderungen am Code benutzt
- AkzeptanzTests kommunizieren die SystemAnforderungen? in einer eindeutigen Art und Weise und stellen sicher, dass die vom Kunden gewünschte Funktionalität tatsächlich implementiert wurde
- durch GnadenlosesRefaktorisieren wird der Code immer im bestmöglichen (einfachsten) Zustand gehalten
- ProgrammierenInPaaren erhöht die Qualität des Systems und sorgt für einen regen Informationsfluss zwischen den Entwicklern
- GemeinsameVerantwortlichkeit vermeidet Flaschenhälse und unproduktives "Fingerzeigen" beim Auftreten von Problemen
- durch FortlaufendeIntegration werden Integrationsprobleme möglichst früh sichtbar gemacht, wenn sie noch leicht zu lösen sind
- das Team bemüht sich um ein NachhaltigesTempo
- Kunde und Entwickler arbeiten als EinTeam zusammen
- ProgrammierStandards helfen, dass sich jeder in jedem Teil des Codes gleich gut zurecht findet
- in IterationsRetrospektiven werden Probleme besprochen und der Entwicklungsprozess weiterentwickelt oder an neue Begebenheiten angepasst
Weitere Begriffe finden sich in DeutscheXpTerminologie (siehe auch /TerminologieDiskussion)
Siehe auch:
Fragen:
Wo ist eigentlich das "gnadenlos" bei der Übersetzung von RefactorMercilessly hin verschwunden? Ist da nicht ein bisschen viel vom revolutionären Charakter von XP verloren gegangen?
Ist schon eine berechtigte Frage. Auf der anderen Seite spricht RonJeffries in letzter Zeit sogar nur noch von "Design Improvement": http://www.xprogramming.com/xpmag/whatisxp.htm#design ...
Am 22. und 23. November 2007 fanden die XP-Days Germany in Karlsruhe statt.
Mein kurzes Resume: Tolle Vorträge und intressante Teilnehmer.
XP-Days Germany
HermannWacker
KategorieXp
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 6. Dezember 2007 12:32 (diff))