agile softwareentwicklung

35
Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit Seminarpräsentation Projektgruppe knowAAN Agile Softwareentwicklung Tobias Varlemann, [email protected] Fakultät für Elektrotechnik, Informatik und Mathematik Institut für Informatik Fachgruppe Didaktik der Informatik 26. November 2010

Upload: shabazza

Post on 15-Dec-2014

1.984 views

Category:

Education


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Seminarpräsentation Projektgruppe knowAANAgile Softwareentwicklung

Tobias Varlemann, [email protected]

Fakultät für Elektrotechnik, Informatik und MathematikInstitut für Informatik

Fachgruppe Didaktik der Informatik

26. November 2010

Page 2: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Was ist agile Softwateentwicklung

Agile Softwareentwicklung bezeichnet eine Gegenbewegung zurklassischen Softwareentwicklung

Entwicklungsprozesse flexibler und schlanker

Fokusierung auf technische und soziale Probleme

Agile Werte als Grundlage

Agile Prinzipieren als Handlungsgrundlage

Agile Methoden als Verfahren der Softwareentwicklung

Agile Prozesse Vorgehensweise

Page 3: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Agile Werte, das agile Manifest

Individuen und Interaktion sind wichtiger als Prozesse undWerkzeugeQualifikation und Kommunikation des Team hoch bewertet. Kein Versteifung auf Werkzeuge oder Techniken

Funktionierende Programme sind wichtiger als ausführlicheDokumentationZiel ist es funktionierende Software zu entwickeln nicht ausführliche Dokumentationen

Das stetige Abstimmen mit dem Kunden ist wichtiger als dieUrsprüngliche Leistungsbeschreibung in VerträgenFlexibilität ist gefordert. Reagieren auf wechselnde Anforderungen, statt umsetzen veralteter aus Verträgen

Der Mut und die Offenheit für Änderungen steht über denBefolgen eines festgelegten PlansEs erfordert Mut mit dem Team offen umzugehen, Probleme anzusprechen und Änderungen anzunehmen

Page 4: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Agile Prinzipien

Leitsätze für agiles ArbeitenBeispiele:

ZweckmäßigkeitKISS-PrinzipYAGNI (You ain’t gonna need it)KundennäheGemeinsamer Code-BesitzRessourcen mehrfach benutzen

Page 5: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Agile Methoden

Best Practices aus der SoftwareentwicklungMethoden aus verschiedene Bereichen

ThinkingCollaboratingReleasingPlanningDevelopment

Page 6: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Agile Prozesse

Erstellung eines Prozesses aus Werten Prinzipien und Methoden

Ziel Abbau der Bürokratie und Integration menschlicher AspekteBeispiele:

Extrem ProgrammingScrumCristalFeature Driven Development

Page 7: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Agile Methoden: Thinking

Pair ProgrammingProgrammieren im Paar. Einer programmiert, einer kontrolliert

Energized WorkAngagiertes Mitarbeiten. 40h Woche

Informative WorkspaceTeam informationen öffentlich und einfach zugänglich

RetrospectiveAbschließende Kritische Begutachtung der Prozesse

Page 8: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Page 9: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Page 10: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Page 11: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Page 12: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Agile Methoden Collaborating

Trust

Sit TogetherKurze Wege, enge Kommunikation

Real Costumer InvolvementKunde vor Ort, kurze Antwortzeiten auf Fragen

Stand-Up MeetingsTäglich, nach Mittag, 3 Fragen

Was habe ich seid letzten Meeting gemachtWas werde ich bis zum nächsten Meeting machen

Was behindert mich

Coding StandardsCode Formatierung, Code Dokumentation

Page 13: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Page 14: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Agile Methoden Releasing

Done DoneFertig ist eine Anforderung wenn sie geschrieben, getestet, integriert und deployed wurde

No BugsIm Repository befindet sich immer funktionierender Code

Version Control

Ten-Minute BuildEin build mit Tests sollen nnicht länger als zehn Minuten dauern, ansonsten aufspalten

Continuous Integration

DocumentationTests dokumentieren den Code. In Ausnahmen externe Dokumentation

Page 15: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Page 16: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Page 17: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Agile Methoden Planning

Vision

Release Planning

Planning GameKunden erstellen Anforderungen, Entwickler schätzen, Kunden ordnen Iterationen zu

Iteration Planning

SlackEinplanen von Zusatzzeit für Problemebehandlung

StoriesAnforderungen werden in Stories aufgeschrieben. Als Einkäufer erstelle ich Auftrage mit Lieferzeiten

SchätzungRelative Aufwandsabschätzungen mit 5 Punkten mit Sching-Schang-Schong-Schätzen.

Page 18: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Agile Methoden Development

Test Driven DevelopmentGraybox Testing, erst Tests für Anforderung Schreiben, dann Anforderung umsetzten.

RefactoringStändiges Anpassen und vereinfachen der Architektur und des Codes

Simple DesignDeduplication des Codes, möglichst wenig Klassen und Methoden

Incremental DesignLöse nur das aktuelle Problem, erst wenn für ein Anderes Problem der Code angefasst wird generalisieren.

Customer TestsTests die mit dem Kunden entwickelt werden um funktionales Wissen abzubilden

Page 19: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Page 20: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Gemeinsamkeiten

Frühe und häufige AuslieferungAbstimmung des richtigen WegsEntdeckung von FehlentwicklungenKontrolle des Fortschritts

Rückkopplung und KommunikationHäufig, mit möglichst geringen AufwandIntern Kommunikation statt Dokumentation

Reaktion auf VeränderungVeränderungen begrüßen und akzeptierenNicht über Veränderungen ärgern

LernenLernen durch MitarbeitLernen über Fachlichkeiten, technischen Details und Technikenund Werkzeuge

Page 21: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Gemeinsamkeiten

Entwurf der gesamten Software reduzieren

Früh ausführbare Software erstellen

Häufige Abstimmung mit Kunden

Flexible auf Kundenwünsche eingehen

Aufwand gering halten, mehr Zeit für die Umsetzung

Page 22: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Einführung

Sammlung von Agilen Methoden und Regelungen für dasZusammenspielZwei Sätze an Methoden

Primäre Methoden die verwendet werden müssenSekundäre Methoden können nach belieben angewendet werden

Zusammenhang der Methoden ergeben sich aus Werten undPrinzipien

Page 23: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Werte

Kommunikation

Rückkopplung

Einfachheit

Mut

Respekt

Page 24: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Prinzipien

Menschlichkeit

Wirtschaftlichkeit

Gegenseitiger Vorteil

Selbstähnlichkeit

Verbesserung

Mannigfaltigkeit

Reflexion

Fluss

Gelegenheit

Redundanz

Fehlschlag

Qualität

Babyschritte

Akzeptierte Verantwortlichkeit

Page 25: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

13 Primär Methoden

Räumlich zusammen sitzen

Komplettes Team

Informative Arbeitsumgebung

Energized Work

Pair Programming

Stories

Wochenzyklus

Quatalszyklus

Freiraum (Slack)

Ten-Minute Build

Continuous Integration

Test Driven Development

Inkrementeller Entwurf

Page 26: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

11 Sekundär Praktiken

Kundenbeteiligung

Inkrementelles Deployment

Team Kontinuität

Schrumpfende Teams

Ursachen Analyse

Gemeinsamer Quelltext

Quelltests und Tests

Eine Quelltextbasis

Daily Deployment

Vertrag mit verhandelbaren Umfang

Bezahlung pro Benutzung

Page 27: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Rollenverteilung

KundeAnforderungen aufschreiben und priorisierenAuskunft zu Details

XP-CoachFührt das Team sanftBeobachtet den Ablauf und korrigiert

Entwickler

Page 28: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Projekt Ablauf

1 Kunde wählt grob Anforderungen für ein Release aus (ca. 3Monate)

2 Entwickler schätzen den Aufwand und geben den KundenRückkopplung

3 Kunde wählt genauer nach Aufwand die Anforderungen für dasRelease und die nächste Iteration (1 Woche) aus

4 Entwickler beginnen Iteration, Rückfragen an den Kunden5 Präsentation am Ende der Iteration, Rückkopplung des Kunden6 Planung der nächsten Iteration oder des nächsten Releases.

Wenn Anforderungen oder Prioritäten geändert wurden weiter mitSchritt 2Wenn keine Änderungen weiter mit Schritt 4

Page 29: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Einführung

Fertigung und Entwicklung so komplex das nicht im Vorausgeplant werden kann.

Nicht explizit Softwareentwicklung sondern generell Management

Product Backlog

Iterationen gleicher Länge (Sprints)

Sprint Backlog

Page 30: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Rollenverteilung

Product OwnerTeam

eigenverantwortliche Umsetzung des AuftragsHandelt mit Owner aus wann welche Anforderungen umgesetztwerden

Scrum-MasterAchtet auf Einhalte des ProzessesSollte nicht Teammitglied sein

Page 31: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Projekt Ablauf

1 Sprint-Planungstreffen 1Kunden anwesendAuffüllen den Product BacklogFestlegen des Sprintziels

2 Sprint-Planungstreffen 2Nur Scrum TeamAuswahl der Anforderungen für das Sprint BacklogAnforderungen in Tasks zerlegen und an die Entwickler verteilen

3 Sprint1 bis 4 Wochen langDaily Scrums im Sprint

4 ReviewVorstellung der Sprintergebnisses für den OwnerMögliche Änderungen am Product Backlog

5 RetrospektiveBetrachtung der letzten SprintphaseFeststellung Was war gut und Was kann verbessert werden

Page 32: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Einführung

Basis sind zu entwickelnde Features

Aufteilung großer Teams in kleine mit Chefprogrammierer

Projekt max. 6 Monate

2-3 Wochen für Planung (Schritt 1-3)

2 Wochen Iterationen (Schritt 4-5)

Page 33: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Rollenverteilung

ProjektleiterChefarchitekt

Hält Überblick über die Gesamtarchitektur und fachlichen Aspekte

ChefprogrammiererFührt Entwicklerteams in größeren Projekten

Entwickler

Page 34: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Projektablauf

1 Entwickle GesamtmodellErstellung von Fachmodellen in klein Gruppen und Integration inGesamtmodell

2 Erstelle Feature-ListeAufspaltung des Gesamtmodells in FeaturesVerwendunge eines Schemas: Subject Areas <- BusinessActivities <- StepsSteps entsprechen Features

3 Plane je FeaturePlanung der Reihenfolge der Features, berücksichtigtAbhängigkeitenJeder Buisness Activity wird ein Chefprogrammierer zugeordnet

4 Entwurf je FeatureZuweisung von Features an EntwicklerteamsErstellung von Sequenzdiagrammen und Klassen- undMethodenrümpfen

5 Konstruiere je FeatureErstellung von Quelltext

Page 35: Agile Softwareentwicklung

Motivation Agile Methoden Agile Prozesse Extrem Programming Scrum Feature Driven Development Fazit

Agile Entwicklung in Projektgruppen

Raum um einen informativen Arbeitsplatz einzurichten.

Veränderung der Iterationsdauer oder -umfang für Teilzeit.

Feste Tage für Entwicklung und Standupmeetings

Repository und Integrationsserver