Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung Nächste Überarbeitung Beide Seiten der Revision | ||
se:extremeprogramming [2008-12-27 21:08] stefan angelegt |
se:extremeprogramming [2010-05-04 10:38] stefan |
||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
[[http://c2.com/cgi/wiki?ExtremeProgramming|Wiki von Ward Cunningham]] | [[http://c2.com/cgi/wiki?ExtremeProgramming|Wiki von Ward Cunningham]] | ||
- | **nach {[quellen:Bleek2008|S. 137ff.]}** | + | **nach \cite[S. 137ff.]{Bleek2008}** |
* 5 Werte | * 5 Werte | ||
* Kommunikation | * Kommunikation | ||
Zeile 41: | Zeile 41: | ||
* Incremental Design: beim Entwurf werden immer nur die aktuell relevanten Anforderungen berücksichtigt | * Incremental Design: beim Entwurf werden immer nur die aktuell relevanten Anforderungen berücksichtigt | ||
* 11 Folgepraktiken | * 11 Folgepraktiken | ||
- | * Real Customer Involvement | + | * Real Customer Involvement: der Kunde wird in die Arbeit mit Storys und den Entwurf integriert |
- | * Incremental Deployment | + | * Incremental Deployment: erstellte Releases sollen auch produktiv eingesetzt werden |
- | * Team Continuity | + | * Team Continuity: Teammitglieder sollten zu 100% im Projekt arbeiten und die Personalfluktuation sollte minimiert werden |
- | * Shrinking Teams | + | * Shrinking Teams: die Produktivität der Entwickler soll schrittweise soweit erhöht werden, dass ein Teammitglied in ein anderes Projekt wechseln kann |
- | * Root-Cause Analysis | + | * Root-Cause Analysis: systematische Suche nach den Ursachen eines Problems |
- | * Shared Code | + | * Shared Code: jeder Entwickler darf den kompletten Quelltext verändern |
- | * Code and Tests | + | * Code and Tests: außer dem Quelltext und den Tests werden keine weiteren Artefakte erstellt (insb. keine Dokumentation) |
- | * Single Code Base | + | * Single Code Base: es gibt nur eine Quelltextbasis und Entwicklungszweige werden nur kurzfristig verwendet |
- | * Daily Deployment | + | * Daily Deployment: der aktuelle Entwicklungsstand sollte täglich an die Anwender verteilt werden |
- | * Negotiated Scope Contract | + | * Negotiated Scope Contract: es wird ein festes Budget und ein verhandelbarer Funktionsumfang festgehalten |
- | * Pay per Use | + | * Pay per Use: es wird nicht pro Release bezahlt, sondern pro Nutzung einer Funktion |
+ | * Rollen | ||
+ | * Entwickler | ||
+ | * Kunde | ||
+ | * Tracker | ||
+ | * XP-Coach | ||
+ | * Projektablauf | ||
+ | - Kunde wählt Anforderungen für Release (3 Monate) | ||
+ | - Entwickler schätzen Aufwände und geben Rückkopplung | ||
+ | - Kunde wählt konkrete Anforderungen für Release und erste Iteration | ||
+ | - Entwickler implementieren und fragen ggfs. nach Details | ||
+ | - am Ende der Iteration werden die Ergebnisse dem Kunden präsentiert und dieser gibt Rückkopplung | ||
+ | - Planung der nächsten Iteration bzw. des nächsten Releases | ||
+ | |||
+ | ===== Pair Programming ===== | ||
+ | **nach \cite{Haase2006}** | ||
+ | * Ziele: Global Code Ownership, Mentoring/Training, höhere Codequalität | ||
+ | * Regeln/Voraussetzungen | ||
+ | * die Teilnehmer sollten das Keyboard alle 10-15 Minuten austauschen | ||
+ | * die Sessions sollten nicht zu lange dauern (max. 3-4 Stunden) | ||
+ | * beide Partner sollten ungefähr auf dem gleichen Wissensstand/Skilllevel sein | ||
+ | * Möglichkeit/Gelegenheit, Pair Programming "einzuführen": bei auftretenden Bugs in vorhandenem Code, den Kollegen, der diesen Code geschrieben hat, bitten, mit ihm gemeinsam den Bug zu fixen. So verteilt sich Code Ownership auf beide Kollegen. | ||
+ | |||
+ | ==== Vorteile von Pair Programming ==== | ||
+ | **nach \cite[S. 319]{Goodliffe2006}** | ||
+ | * Wissenstransfer zwischen Entwicklern | ||
+ | * zentriert den Fokus auf das Entwickeln (und vermeidet Tagträume) | ||
+ | * erhöht die Disziplin | ||
+ | * vermindert die Unterbrechungshäufigkeit (man stört zwei Personen, die arbeiten nicht so gerne, wie eine einzelne) | ||
+ | * quasi "Echtzeit-Reviews" -> besserer Code als Ergebnis | ||
+ | * sozialer Faktor: die Entwickler lernen sich besser kennen und das fördert die Moral | ||
+ | * Collective Code Ownership | ||
+ | * verteilt gute Codepraktiken und -standards unter den Entwicklern | ||
+ | * unterstreicht den Entwicklungsprozess | ||