Projektmanagement SS 02 e Xtreme Programming Part II

  • Slides: 55
Download presentation
Projektmanagement SS 02 e. Xtreme Programming Part II Referenten: Robert Cajer Marcus Stegner Steve

Projektmanagement SS 02 e. Xtreme Programming Part II Referenten: Robert Cajer Marcus Stegner Steve Moser 14. Juni 2002

Themen n Was ist XP? n Der Umgang mit Risiken (das Grundproblem der Softwareentwicklung)

Themen n Was ist XP? n Der Umgang mit Risiken (das Grundproblem der Softwareentwicklung) n Gegenüberstellung herkömmlicher Verfahren (Zeit/Kosten Faktor) n Grundwerte XP im Beispiel n Rollenverteilung n Der Weg zu einer Lösung n Wann ist XP nicht sinnvoll?

Warum e. Xtreme Programming? Extreme programming takes common principles and practices to extreme levels

Warum e. Xtreme Programming? Extreme programming takes common principles and practices to extreme levels Common principles and practices n „Code reviews“ sind gut Taken to extreme levels ► ständige „code reviews“ ► n Testen ist gut n Integrationstests sind wichtig n Design ist wichtig ► n Einfachheit ist gut ► Architektur ist wichtig n Kurze Iterationen sind gut n ► ► ► „pair programming“ ständiges testen Programmierer: Modultests Kunden: Funktionstests mehrmals am Tag „continuous integration“ ständiges (re)design „refactoring“ alles so einfach wie möglich bzw. so komplex wie nötig Ständige Architektur-Weiterentwicklung extrem kurz: „Minuten bis Stunden“ „planning game“

Was verspricht e. Xtreme Programming? Programmierern: Ø Konzentration auf relevante Dinge Ø Nicht allein

Was verspricht e. Xtreme Programming? Programmierern: Ø Konzentration auf relevante Dinge Ø Nicht allein sein in schwierigen Situationen Ø Das zu tun, was Mensch am besten kann Kunden und Managern Ø Maximalen Output aus jeder Projektwoche Ø Konkrete Ergebnisse in kurzen Intervallen Ø Kurze Reaktionszeiten bei Änderungen Ø Vertretbarer Aufwand bei Änderungen

Was ist e. Xtreme Programming? Kennzeichen: Ø Kurze Zyklen Ø Ø Ø >sofortiges Feedback

Was ist e. Xtreme Programming? Kennzeichen: Ø Kurze Zyklen Ø Ø Ø >sofortiges Feedback Inkrementelles planen >einfacher Anfangsplan wird laufend weiterentwickelt Evolutionärer Entwurf >solange das System im Einsatz ist Automatisches Testen >frühe Fehlererkennung Enge Zusammenarbeit von „normalen“ Programmierern Einklang zwischen >persönlichen, kurzfristigen „Instinkten“ der Programmierer >übergeordneten, langfristigen Projektzielen

Der Umgang mit Risiken - Das Grundproblem der Softwareentwicklung-

Der Umgang mit Risiken - Das Grundproblem der Softwareentwicklung-

Risiko: Termin nicht einhaltbar Am Auslieferungstag verkünden, dass es noch 6 Monate dauert…. .

Risiko: Termin nicht einhaltbar Am Auslieferungstag verkünden, dass es noch 6 Monate dauert…. . XP Ansatz: Kurze Zyklen § Produkt Releases -> Wochen, höchstens Monate § Iteration innerhalb eines Release -> ein bis vier Wochen § Programmieraufgaben innerhalb einer Iteration -> ein bis drei Tage Zyklen-Definition prioritäts- und risiko-orientiert § Funktionen mit hoher Priorität für Kunden Termine werden eingehalten § evtl. mit weniger implementierter Funktionalität Vorteile: ü Geringere Verzögerungen bzw. weniger weggelassene Features ü Schnelles Kundenfeedback ü Frühe Entdeckung von Problemen ü Weggelassenes versteckt keine unangenehmen Überaschungen ü Weggelassenes hat geringere Priorität

Risiko : Projekt-Abbruch Nach mehrfachen Verzögerungen wird das Projekt abgebrochen…. . XP Ansatz: Fokussierung

Risiko : Projekt-Abbruch Nach mehrfachen Verzögerungen wird das Projekt abgebrochen…. . XP Ansatz: Fokussierung auf bestes Aufwands-/Nutzen-Verhältnis o Kunde muss kleinstes Release wählen, dass ihm einen signifikanten Mehrwert darstellt. Vorteile ü Vor Inbetriebnahme kann weniger schief gehen ü Bestes Kosten-/Nutzen-Verhältnis

Risiko: Unwartbarkeit Effektive Nutzung, aber frühe Ablösung wegen zu hoher Wartungskosten XP Ansatz: Tests:

Risiko: Unwartbarkeit Effektive Nutzung, aber frühe Ablösung wegen zu hoher Wartungskosten XP Ansatz: Tests: o Durch Programmierer und Kunden o Laufend wiederholt Vorteile ü System ist jederzeit in „Bestform“ ü Keine Ansammlung von Fehlern

Risiko: Unbenutzbarkeit durch Programmierfehler Inbetriebnahme, aber fehlende Akzeptanz wegen zu vieler Programmierfehler…. . XP

Risiko: Unbenutzbarkeit durch Programmierfehler Inbetriebnahme, aber fehlende Akzeptanz wegen zu vieler Programmierfehler…. . XP Ansatz: Tests: o Durch Programmierer und Kunden o Laufend wiederholt Vorteile ü System ist jederzeit in „Bestform“ ü Keine Ansammlung von Fehlern

Risiko: Unbenutzbarkeit durch Fehlentwicklung Inbetriebnahme, aber das System tut was anderes als die Kunden

Risiko: Unbenutzbarkeit durch Fehlentwicklung Inbetriebnahme, aber das System tut was anderes als die Kunden wollten. . XP Ansatz: Kunden im Team integrieren Kundenvertreter spielt aktive Rolle im Team -> Anforderungsspezifikation -> Funktionstests Vorteile ü Laufendes Feedback ü Schnelle Beseitigung von Kommunikationsproblemen

Risiko: Änderung der Anforderung Inbetriebnahme, aber der Kunde braucht es nicht mehr … XP

Risiko: Änderung der Anforderung Inbetriebnahme, aber der Kunde braucht es nicht mehr … XP Ansatz: Kurze Zyklen weitreichende Anforderungsänderungen weniger wahrscheinlich Grundeinstellung „Änderung ist die einzige Konstante“ kein Unterschied zwischen Anforderungsänderungen und sonstigen Änderungen schnelle Reaktionsmöglichkeit auf Anforderungsänderungen Kunden sind gehalten ihre Anforderungsdefinitionen jederzeit anzupassen

Risiko: „ Featuritis „ System voller „interesting features“, die aber niemand wirklich braucht… XP

Risiko: „ Featuritis „ System voller „interesting features“, die aber niemand wirklich braucht… XP Ansatz: Nur Tasks höchster Priorität realisieren Grundsätzlich!

Zeit/Kosten-Faktor in XP

Zeit/Kosten-Faktor in XP

Wie teuer sind Änderungen? § Traditionelle Sichtweise / Erfahrung

Wie teuer sind Änderungen? § Traditionelle Sichtweise / Erfahrung

Wie teuer sind Änderungen? n XP Sichtweise/Erfahrung (? )

Wie teuer sind Änderungen? n XP Sichtweise/Erfahrung (? )

Grundwerte XP im Beispiel

Grundwerte XP im Beispiel

XP in Beispielen n Kunde: Jedes Projekt beginnt mit einem Auftrag § Bisher: Erstellung

XP in Beispielen n Kunde: Jedes Projekt beginnt mit einem Auftrag § Bisher: Erstellung eines Pflichtenhefts mit den abzuliefernden Features § XP: Keine Anforderungen, sondern Problemschilderung = User Stories

User Story: Parkhaus n Vielzahl von Aufgaben n Kunde beschreibt alle Vorfälle (User Stories):

User Story: Parkhaus n Vielzahl von Aufgaben n Kunde beschreibt alle Vorfälle (User Stories): n Einfahren eines Fahrzeugs in das Parkhaus: Fahrer bleibt an geschlossener Schranke stehen, fordert per Knopfdruck Parkschein an Entnimmt Parkschein -> Schranke öffnet sich Fahrer passiert die Schranke schließt wieder

Vollständigkeit User Story? n Was ist wenn etwas fehlt? z. B. : - Parkhaus

Vollständigkeit User Story? n Was ist wenn etwas fehlt? z. B. : - Parkhaus ist voll - Vorrat an Parkscheinen erschöpft Kerngedanke der User Story: Neue Gedanken werden einfach hinzugefügt. Ø Erst die Sammlung aller Stories ergibt den kompletten Ablauf.

Besonderheit von XP n Mitarbeit des Kunden während der gesamten Entwicklung: n geht weit

Besonderheit von XP n Mitarbeit des Kunden während der gesamten Entwicklung: n geht weit über Pflichtenheft und Abnahmetest hinaus n Idealfall: n Mitarbeiter des Kunden sitzt beim Entwicklungsteam und sorgt somit für kurze Kommunikationswege

Umsetzung der User Stories n Kunde/Management und Entwickler legen fest: n n n Umsetzungsreihenfolge

Umsetzung der User Stories n Kunde/Management und Entwickler legen fest: n n n Umsetzungsreihenfolge der Stories Zeitplan für die einzelnen Komponenten Abschätzung des Gesamtaufwands Ø Release-Plan

Release-Plan n beinhaltet für jedes einzelne Projektziel - wie lange es dauert, dieses Ziel

Release-Plan n beinhaltet für jedes einzelne Projektziel - wie lange es dauert, dieses Ziel zu erarbeiten - wie dessen erfolgreiche Umsetzung vom Gelingen anderer Stories abhängt - was die Umsetzung kostet

Codierung n Aufteilung der User Stories in kleine Teile (z. B. : zwei Bearbeitungstage)

Codierung n Aufteilung der User Stories in kleine Teile (z. B. : zwei Bearbeitungstage) n Module werden dabei einfach gehalten n Als erstes programmiert man immer den Test eines Modules n Programmieren der eigentlichen Module n Sofortige sequentielle Integration dieser Ø Fehler wird sofort gefunden

Pair-Programming n Zwei Programmierer teilen sich einen Arbeitsplatz und arbeiten an einer Story n

Pair-Programming n Zwei Programmierer teilen sich einen Arbeitsplatz und arbeiten an einer Story n Ist die Story vollendet sucht sich jeder einen neuen Partner Ø Vorteil: Jeder kennt das Projekt Ideenaustausch Gegenseitige Ergänzung

Schrittweise Näherung n XP-Regel: Tu nie mehr, als du tun musst Ø Änderungen ruinieren

Schrittweise Näherung n XP-Regel: Tu nie mehr, als du tun musst Ø Änderungen ruinieren nicht gleich die ganze Planung n Regelmäßiges Update des Iterationsplans Ø Stimmen die Schätzungen noch? Ø greifbare Zahlen

Entwicklungs-Fortschritt n Häufige Integration -> viele Versionen = Neue Release Ø Dieses Verfahren vermittelt

Entwicklungs-Fortschritt n Häufige Integration -> viele Versionen = Neue Release Ø Dieses Verfahren vermittelt dem Auftraggeber einen Eindruck vom Fortschritt. Ø Kunde kann Release-Version ausgiebig testen. -> Fehler können sofort beseitigt werden

Die 4 Grundwerte des XP 1. 2. 3. 4. Kommunikation Einfachheit Feedback Mut

Die 4 Grundwerte des XP 1. 2. 3. 4. Kommunikation Einfachheit Feedback Mut

Beziehung der Grundwerte zueinander Kommunikation Einfachheit Je einfacher das System, desto besser die Kommunikation

Beziehung der Grundwerte zueinander Kommunikation Einfachheit Je einfacher das System, desto besser die Kommunikation

Beziehung der Grundwerte zueinander Kommunikation Einfachheit Mut Feedback

Beziehung der Grundwerte zueinander Kommunikation Einfachheit Mut Feedback

Beziehung der Grundwerte zueinander Feedback Kommunikation Einfachheit Je mehr Feedbacks man erhält, desto einfacher

Beziehung der Grundwerte zueinander Feedback Kommunikation Einfachheit Je mehr Feedbacks man erhält, desto einfacher ist es, zu kommunizieren.

Zusammenfassung

Zusammenfassung

Schlussfolgerung n Sie programmieren, weil Sie nichts leisten wenn Sie nicht programmieren. n Sie

Schlussfolgerung n Sie programmieren, weil Sie nichts leisten wenn Sie nicht programmieren. n Sie testen, weil Sie sonst nicht wissen, wann Sie mit dem Programmieren fertig sind. n Sie hören zu, weil Sie sonst nicht wissen, was Sie programmieren und testen sollen. n Und Sie entwerfen ein Design, damit Sie unendlich lange programmieren, testen und zuhören können.

Rollenverteilung Die Spieler in XP

Rollenverteilung Die Spieler in XP

Der „Truck-Faktor“ v Der Truck-Faktor gibt an, mit welcher Wahrscheinlichkeit das Projekt scheitern wird,

Der „Truck-Faktor“ v Der Truck-Faktor gibt an, mit welcher Wahrscheinlichkeit das Projekt scheitern wird, wenn ein Teammitglied von einem Truck überfahren wird. n Der höchste Truck-Faktor (1. 0) wird erreicht, wenn das Team aus Spezialisten besteht, von denen jeder seinen Teil des Systems perfekt kennt. n Der niedrigste Truck-Faktor (0. 0) wird erreicht, wenn „Collective Code Ownership“ praktiziert wird.

Rollen Ø Auftraggeber (Client) Ø Kunde (Customer) ========= o Programmierer o Tester o Verfolger

Rollen Ø Auftraggeber (Client) Ø Kunde (Customer) ========= o Programmierer o Tester o Verfolger (Tracker) ========= Ø Trainer (Coach) TEAM

Auftraggeber (Client) Ø Für zentrale Entscheidungen zuständig Ø Definiert die Ziele (Umfang) Ø Stellt

Auftraggeber (Client) Ø Für zentrale Entscheidungen zuständig Ø Definiert die Ziele (Umfang) Ø Stellt finanzielle Mittel bereit Ø Stellt die Zielerreichung fest Ø Damit hängt der Erfolg eine Projektes wesentlich vom Auftraggeber ab Ø Nimmt am Planungsspiel für Projektetappen (Releases) teil

Kunde (Customer) Ø Der Kunde legt fest was zu tun ist (Prioritäten) Ø Dazu

Kunde (Customer) Ø Der Kunde legt fest was zu tun ist (Prioritäten) Ø Dazu schreibt er die User Stories Ø Diese müssen verständlich, umsetzbar, testbar sein Ø Schreibt zusätzlich die funktionalen Abnahmetests und führt diese –mit Hilfe des Testers- durch Ø Diese funktionalen Testssagen ihm, ob das System das tut was er erwartet

Kunde (Customer) (2) Ø Als Mitglied des Teams nimmt er an den Planungsmeetings (Release

Kunde (Customer) (2) Ø Als Mitglied des Teams nimmt er an den Planungsmeetings (Release und Iteration) und den täglichen Stand-up Meetings teil Ø Er ist für aufkommende Fragen bezüglich der Stories immer ansprechbar Ø Der Kunde beeinflusst die Entwickler durch permanentes Feedback Ø Dazu muss er während der Entwicklung immer vor Ort sein

Programmierer (Programmer) Ø Die tägliche Arbeit besteht aus Zuhören, Testen, Implementieren und Design Ø

Programmierer (Programmer) Ø Die tägliche Arbeit besteht aus Zuhören, Testen, Implementieren und Design Ø Die Programmierer haben einen großen Anteil bei der Planung, da nicht das Management die Pläne vorgibt, sondern das Team diese ausarbeitet Ø Ehrlichkeit ist wichtig Man muss sich über seine Stärken und Schwächen im klaren sein und um Hilfe bitten können Außerdem funktioniert die Aufwandsabschätzung nur mit Ehrlichkeit (und Erfahrung)

Programmierer (Programmer) (2) Ø Programmierer sollen gut sein, aber „Super- Coder“ sind unnötig (können

Programmierer (Programmer) (2) Ø Programmierer sollen gut sein, aber „Super- Coder“ sind unnötig (können sogar behindern) Ø Teamfähigkeit ist wichtig, denn es wird ständig mit wechselnden Paaren gearbeitet und der Quelltext gehört dem Team Ø Andere Skills wie die Fähigkeit zum „Refactoring“ und zum „Unit Testing“ werden (zwangsläufig) in XP gelernt werden

Tester o Der „Tester“ hilft dem Kunden bei der Erstellung und Durchführung der funktionalen

Tester o Der „Tester“ hilft dem Kunden bei der Erstellung und Durchführung der funktionalen Tests o Außerdem sammelt er die Ergebnisse und macht sie für alle sichtbar (Qualität) o Die Rolle wird normalerweise von den Entwicklern oder vom Coach übernommen

Verfolger (Tracker) Ø Der „Tracker“ ist das Team Gewissen Ø Gibt dem Team feedback

Verfolger (Tracker) Ø Der „Tracker“ ist das Team Gewissen Ø Gibt dem Team feedback wie gut die Wirklichkeit mit der Abschätzung übereinstimmt und weist das Team auf mögliche Probleme hin Ø Er ermittelt regelmäßig (z. B. nach Abschluß einer Aufgabe) die Zeit die für die Aufgabe nötig war und aktualisiert den „Load Faktor“ Ø Er beobachtet den Entwicklungsprozess und überwacht ob die Pläne eingehalten werden können Ø Die Rolle wird normalerweise von den Entwicklern oder vom Coach übernommen

Trainer (Coach) Ø Der Coach ist für das Funktionieren des Prozesses verantwortlich. Dazu benötigt

Trainer (Coach) Ø Der Coach ist für das Funktionieren des Prozesses verantwortlich. Dazu benötigt er einen guten Überblick über das System Ø Wenn etwas schief läuft, muss der Coach wieder in die richtige Richtung lenken, möglichst aber indirekt (Selbstverantwortung der Entwickler) Ø Außerdem sollte er technische Fähigkeiten haben, um z. B. als Programmierpartner besonders für neue Teammitglieder verfügbar zu sein Ø Schließlich nimmt der Coach an Management Meetings die das Projekt betreffen teil (Bindefunktion)

Das Team Persönlicher Kontakt und Kommunikation im Team wird gefördert ØKeine Vereinsamung ØKein Einzelkämpfertum

Das Team Persönlicher Kontakt und Kommunikation im Team wird gefördert ØKeine Vereinsamung ØKein Einzelkämpfertum ØKeine unausräumbaren Missverständnisse Unterstützung für neue Mitglieder ØVon jedem anderen ØBei Frage nach Hilfe muss man „Ja“ sagen Ermutigung neuer Mitglieder schrittweise mehr Verantwortung zu übernehmen ØMehr Erfolgserlebnisse und ØMehr Zufriedenheit

Der Weg zu einer Lösung

Der Weg zu einer Lösung

Der Weg zu einer Lösung n Einflußfaktoren n n Kostenrahmen Zeitrahmen Qualität Funktions-Umfang n

Der Weg zu einer Lösung n Einflußfaktoren n n Kostenrahmen Zeitrahmen Qualität Funktions-Umfang n Umgang mit Veränderung

Einfluss des Kostenrahmens n zu wenig Geld n keine effektive Entwicklung n mehr Geld

Einfluss des Kostenrahmens n zu wenig Geld n keine effektive Entwicklung n mehr Geld n bessere Umgebung, Ausstattung, Ausbildung, . . . n aber Geld allein macht kein erfolgreiches Projekt n „ 40 Programmierer“-Anekdote n besser n Projektgröße schrittweise anpassen n Problem n Status-/ Prestige-Denken von Projektleitern

Einfluss des Zeitrahmens n zu wenig Zeit n n n schlechter Qualität geringer Umfang

Einfluss des Zeitrahmens n zu wenig Zeit n n n schlechter Qualität geringer Umfang hohe Kosten n mehr Zeit n n bessere Qualität mehr Funktionalität n aber zu viel Zeit bis Inbetriebnahme schadet n Kein Feedback aus laufendem Betrieb n wenig Einflussmöglichkeiten durch Programmier-Team n Zeitrahmen ist meist vom Kunden bestimmt

Einfluss der Qualität 1. externe Qualität n was der Kunde sieht 2. interne Qualität

Einfluss der Qualität 1. externe Qualität n was der Kunde sieht 2. interne Qualität n was der Programmierer sieht n geringere interne Qualität n n n was der Programmierer sieht kurzfristige Zeitersparnis langfristige Wartbarkeitskatastrophe langfristig schlechte externe Qualität demoralisierender Effekt im. Team n hohe interne Qualität

Einfluss der Qualität n n n langfristig schnellere Entwicklung bessere Motivation/ Zufriedenheit des Teams

Einfluss der Qualität n n n langfristig schnellere Entwicklung bessere Motivation/ Zufriedenheit des Teams Kundenzufriedenheit

Einfluss des Funktions-Umfangs n Wichtigste Einflussmöglichkeit (laut Kent Beck) n Idee n n Kosten,

Einfluss des Funktions-Umfangs n Wichtigste Einflussmöglichkeit (laut Kent Beck) n Idee n n Kosten, Zeit und Qualität festlegen realisierbaren Funktionsumfang n Vorteile n Leichte Anpassbarkeit an Änderungsanforderungen n Risiko n Zu viele/ zu wichtige Funktionen werden gestrichen n XP-Ansatz n n wichtigste Kundenanforderungen zuerst realisieren Aufwandschätzungen mit Feedback

Einflussfaktoren: Fazit/Empfehlungen n Kosten: Resourcen bedarfsgerecht einsetzen! n Zeit : keine Einflussmöglichkeit , da

Einflussfaktoren: Fazit/Empfehlungen n Kosten: Resourcen bedarfsgerecht einsetzen! n Zeit : keine Einflussmöglichkeit , da extern bestimmt ! n Qualität : hohe interne Qualität anstreben! (Bestimmt durch Kunden) n Umfang : minimalen Funktions-Umfang anstreben! (Bestimmt durch Projektleiter)

Wann ist XP nicht sinnvoll?

Wann ist XP nicht sinnvoll?

Wann ist XP nicht sinnvoll? n Kultureller Hintergrund n z. B. Rollenverteilung n Inhomogenes

Wann ist XP nicht sinnvoll? n Kultureller Hintergrund n z. B. Rollenverteilung n Inhomogenes Team n Unternehmensführung n z. B. Richtung wird vorgegeben § Kunde/Manager besteht auf komplette Spezifikation oder Design n „Freaks“ im Team n Teamgröße n Ca. 10 Programmierer n Projektgröße n XP Umgebung n z. B. örtliche Gegebenheit