13 KiB
13 KiB
Development Methodologies
Classic / Plan-based
Waterfall Model
-
Einzelne Phasen werden sequentiell durchlaufen
-
Phasen überlappen sich kaum oder nicht
-
Sobald eine Phase abgeschlossen ist, wird sie nicht mehr verändert
-
Nur für kleine Projekte geeignet
V-Model
- OOAD V-Model
- Erweiterung des Waterfall-Modells
- Testphasen werden explizit in den Entwicklungsprozess integriert
- Jede Phase hat eine zugehörige Testphase
Spiral Model
- OOAD Spiral Model
- Iteratives Modell, das die Phasen des Waterfall-Modells in Zyklen durchläuft
Agile
The Agile Manifesto
4 Werte
- Individuen und Interaktionen über Prozesse und Werkzeuge
- Funktionierende Software über verständliche Dokumentation
- Arbeit mit Kunden über Vertragsverhandlungen
- Anpassung an Veränderung über folgen des Plans
12 Prinzipien
- Kunden glücklich machen
- Frühe und durchgehende Lieferung von wertvoller Software
- Auf Kundenfeedback reagieren
- Anforderungsänderungen willkommen heißen
- Auch spät in der Entwicklung
- Regelmäßig funktionierende Software liefern
- Alle paar Wochen - Monate
- Viele Vorteile durch kurze Iterationen
- Tägliche Zusammenarbeit
- Entwickler, Tester, Kunden
- Projekte um motivierte Individuen aufbauen
- Vertrauen in die Teammitglieder
- Gute Umgebung und Unterstützung
- Face-to-Face Kommunikation
- Effektivste Methode der Kommunikation
- Fortschritt in funktionierender Software messen
- Nicht in Dokumentation oder Berichten
- Konstante Geschwindigkeit halten (Marathon, nicht Sprint)
- Nicht zu viel vornehmen
- Technische Exzellenz und gutes Design
- Verbessert die Agilität
- Weniger technische Schulden
- Einfachheit
- Die Kunst, die Menge an nicht gemachter Arbeit zu maximieren
- Weniger Features, die nicht benötigt werden
- Vertraue deinem Team
- Selbstorganisierte Teams
- Cross-funktionale Teams
- Reflektieren und Anpassen
- Regelmäßige Retrospektiven
- Kontinuierliche Verbesserung
Agile: Scrum
Scrum Theory
- Scrum ist ein agiles Framework für die Softwareentwicklung
- Fokus auf Transparenz, Inspektion und Anpassung
Scrum Pillars
- Transparenz
- Alle Aspekte des Prozesses sind sichtbar für alle Beteiligten
- Ermöglicht informierte Entscheidungen
- Inspektion
- Alle Aspekte des Prozesses und der Arbeitsergebnisse werden regelmäßig überprüft
- Frühzeitiges Erkennen von Problemen
- Adaption
- Alle Aspekte des Prozesses und der Arbeitsergebnisse werden angepasst, wenn nötig
- Kontinuierliche Verbesserung des Prozesses
Scrum Team
- fokussiert sich nur auf das Ziel des Projekts
- ist cross-funktional
- alle notwendigen Fähigkeiten sind im Team vorhanden
- managed sich selbst
Product Owner
- Verantwortlich für den Erfolg des Produkts
- Stellt sicher, dass das Team den höchsten Wert liefert
- Kommuniziert mit Stakeholdern
- Verantwortlich für das Product Backlog
- Was wird wann gemacht?
- Skillset:
- Domain
- Produktvision haben und das Team leiten
- tiefgreifende Business- und Domainkenntnisse
- People
- "Stimme der Kunden"
- Gutes Verhältnis mit jedem
- Decision-Making
- (schwere) Entscheidungen über Features und Releases treffen
- Prioritäten setzen
- Verantwortung
- Verantwortung für den (Miss-)Erfolg des Produkts
- Klare Kommunikation der Ziele und Prioritäten
- Domain
Scrum Master
- Verantwortlich für den Scrum-Prozess
- Moderation der Meetings
- Beseitigung von Hindernissen
- Skillset:
- Scrum
- tiefgreifendes Wissen über Scrum und agile Methoden
- Kollaborativ
- arbeitet eng mit dem gesamten Team zusammen
- fördert Selbstorganisation
- Coaching
- Team bei der kontinuierlichen Verbesserung unterstützen
- Fragen stellen, um das Team zum Nachdenken zu bringen
- Beschützend
- vor äußeren Störungen schützen
- z.B. Meetings, die während des Sprints stattfinden
- vor äußeren Störungen schützen
- Transparent
- sorgt dafür, dass alle Aspekte des Prozesses transparent sind
- fördert offene Kommunikation im Team
- Scrum
Development Team
- Verantwortlich für die Umsetzung der Arbeit
- Liefert das Inkrement am Ende jedes Sprints
- Skillset:
- Cross-funktional
- Alle notwendigen Fähigkeiten sind im Team vorhanden
- Jeder kann an jedem Feature arbeiten
- Selbstorganisiert
- Team entscheidet, wie die Arbeit erledigt wird
- Keine externen Anweisungen
- T-Shaped Skills
- Teammitglieder haben tiefes Wissen in ihrem Bereich
- Breites Wissen über andere Bereiche
- Teamorientiert
- einer für alle, alle für einen
- gemeinsame Verantwortung für den Erfolg des Sprints
- Kommunikativ
- offener Austausch im Team
- regelmäßige Updates über den Fortschritt
- richtige Größe
- ≤ 10 Personen
- zu große Teams führen zu Kommunikationsproblemen und Ineffizienz
- zu kleine Teams haben nicht genug Fähigkeiten, um alle Aufgaben zu erledigen
- Cross-funktional
Scrum Events
Sprint
- Zeitfenster von 1 bis 4 Wochen
- Ziel: Ein Inkrement liefern
Sprint Planning
- initiiert den Sprint
- Ziele und Aufgaben für den Sprint festlegen
- Warum ist der Sprint wichtig?
- Was soll erreicht werden?
- Wie wird entschieden, was im Sprint umgesetzt wird?
- Sprint Kapazität muss berücksichtigt werden
- PO präsentiert das Product Backlog
- Input:
- Product Backlog
- Team-Kapazität
- Abhängigkeiten
- Team-Fähigkeiten
- Initiales Sprint-Ziel
- Arten:
- 2-Part Sprint Planning
- Teil: Was wird im Sprint gemacht?
- PO präsentiert das Product Backlog
- Team wählt Items aus, die sie umsetzen können
- Teil: Wie wird es umgesetzt?
- Team plant die Umsetzung der ausgewählten Items
- Aufgaben werden aufgeteilt und geschätzt
- Teil: Was wird im Sprint gemacht?
- 1-Part Sprint Planning
- 2-Part Sprint Planning
Sprint Execution
- Daily Scrum
- 15min tägliches Meeting
- Jeder beantwortet 3 Fragen:
- Was habe ich seit dem letzten Meeting gemacht?
- Was werde ich bis zum nächsten Meeting tun?
- Gibt es Hindernisse/Hilfsbedarf?
- Input:
Sprint Review
- Ergebnisse des Sprints präsentieren
- Feedback von Stakeholdern einholen
- Anpassungen am Product Backlog vornehmen
Sprint Retrospective
- Wege erarbeiten, um Qualität und Effizienz nächstes Mal zu verbessern
- Fragen:
- Was lief gut?
- Was kann verbessert werden?
- Welche Maßnahmen können ergriffen werden?
Scrum Artefakte
- Product Backlog
- Liste aller Anforderungen und Features
- Priorisierung
- Detaillierung
- nicht alle Items müssen gleich detailliert sein
- Aufwandsschätzung
- Definition of Ready (DoR)
- Checkliste, ob ein Product Backlog Item abgearbeitet werden kann
- Wird vom Product Owner gepflegt und priorisiert
- Liste aller Anforderungen und Features
- Sprint Backlog
- Liste der Aufgaben, die im aktuellen Sprint umgesetzt werden sollen
- Wird vom Development Team erstellt
- Increment
- Fertiges Produkt am Ende eines Sprints
Agile: Extreme Programming (XP)
- Ziel: hohe Softwarequalität und hohe Lebensqualität für Entwickler
- Fokus auf technische Exzellenz und kontinuierliche Verbesserung
Values
- Kommunikation
- Jeder weiß, wer was macht
- Einfachheit
- Einfache und direkte Lösungen
- Feedback
- Regelmäßiges Feedback von Kunden und Teammitgliedern
- Mut
- für die besten Entscheidungen
- auch wenn sie zunächst unbequem sind
- für die besten Entscheidungen
- Respekt
- Respektvoller Umgang im Team
- Wertschätzung der Arbeit aller Teammitglieder
Prinzipien
- Humanität
- Ausgleich zwischen Arbeit und Privatleben
- Economy
- Fokus auf das Wesentliche
- Gemeinsamer Nutzen
- Praktische Lösungen, die für alle funktionieren
- Selbstähnlichkeit
- monatlicher Zyklus ist gleich wie wöchentlicher/täglicher
- Verbesserung
- sich ständig verbessern
- Diversität
- verschiedene Perspektiven und Ansätze einbeziehen
- Reflektion
- regelmäßig über die eigene Arbeit nachdenken
- Flow
- konstante und flüssige Arbeitsweise
- Möglichkeiten
- Probleme sind eine Chance zum Lernen und Wachsen
- Redundanz
- verhindert Fehler und verbessert die Qualität
- Failure
- ist absolut okay
- Qualität
- hat hohe Priorität
- schlechte Qualität führt nicht zu schnellerer Lieferung
- Verantwortlichkeit
- Teammitglieder sind für ihre Arbeit verantwortlich
- Baby-Steps
- kleine Schritte, um schnell Feedback zu erhalten
Practices
Primär
Programmieren
- Pair Programming
- Zwei Entwickler arbeiten zusammen an einem Computer
- Fördert Wissenstransfer und Codequalität
- Test-Driven Development (TDD)
- Tests werden vor dem Code geschrieben
- Sicherstellen, dass der Code die Anforderungen erfüllt
Integration
- Ten-Minute Build
- Builden und Testen sollte nicht länger als 10 Minuten dauern
- Wenns länger dauert, führt man es seltener aus
- Fördert schnelle Feedback-Zyklen
- Builden und Testen sollte nicht länger als 10 Minuten dauern
- Continuous Integration
- Direkt nach dem Commit wird der Code gebaut und getestet
- Schnelles Feedback über den aktuellen Stand des Codes
Planning
- Weekly Cycle
- Synonym zu Sprint
- Montags wird geplant
- Freitags wird geliefert
- Synonym zu Sprint
- Quarterly Cycle
- Synonym zu Release
- Kunde bekommt alle 3 Monate eine neue Version
- Feedback / Wünsche werden in den nächsten Zyklus aufgenommen
- Synonym zu Release
- User Stories
- Anforderungen werden in Form von User Stories formuliert
- OOAD User-Stories
- Slack
- ein paar niedrig priorisierte Aufgaben einplanen
- um Puffer für Unvorhergesehenes zu haben
- ein paar niedrig priorisierte Aufgaben einplanen
Team
- Sit Together
- Teammitglieder sitzen zusammen
- Fördert Kommunikation und Zusammenarbeit
- Informative Workspace
- Kommunikation fördern
- Privatsphäre respektieren
- Wissen teilen
- z.B. Whiteboards, Post-Its, etc.
Holistic
- Incremental Design
- Design wird schrittweise verbessert
- nicht alles auf einmal
- Design wird schrittweise verbessert
- Whole Team
- Cross-funktionales Team
- Energized Work
- Höchste Effizienz, wenn jeder fokussiert ist und nicht abgelenkt wird
- niemanden überarbeiten
- Gesundheit und Wohlbefinden fördern
- Höchste Effizienz, wenn jeder fokussiert ist und nicht abgelenkt wird
Corollary
- Folgen aus primären Praktiken
- Real Customer Involvement
- Kunden in die wöchentliche / vierteljährliche Planung einbeziehen
- Incremental Deployment
- mehrere kleinere Releases statt eines großen
- Team continuity
- Effektive Teams bleiben zusammen (auch in anderen Projekten)
- Shrinking Teams
- Wenn ein Team effizienter arbeitet, kann es kleiner werden
- nicht mehr Arbeit geben
- "unnötiges" Mitglied kann in anderen Teams XP einführen
- Root-cause analysis
- Wenn irgendwas schiefgeht, die Grund-Ursache finden und beheben
- Shared code
- Jeder im Team kann auf den Code zugreifen und ihn ändern
- jeder ist für die Qualität des Codes verantwortlich
- Single codebase
- Es gibt nur einen Code, nicht mehrere Versionen gleichzeitig
- Daily Deployment
- täglich eine neue Version ausliefern
- Negotiated scope contract
- Kunden und Team einigen sich auf den Umfang der Arbeit
- Pay-per-use
- Nicht für Arbeit bezahlen lassen
- Kunde zahlt, wenn er das Produkt nutzt
XP vs Scrum
Agile: DevOps
- OOAD DevOps
- Kombination von Entwicklung (Dev) und Betrieb (Ops)
- Ziel: schnellere und zuverlässigere Software-Lieferung
- Fokus auf Automatisierung, Continuous Integration und Continuous Deployment (CI/CD)
Agile Praktiken skalieren
Scrum of Scrums
Release Train
- Zug-Metapher
- Plan, für Features, wann sie die "Station" verlassen
- Alle Teams wollen ihre Produkte noch auf den Zug bringen
- Falls nicht, müssen sie auf den nächsten Zug warten
Frameworks
- LeSS (Large Scale Scrum)
- Skalierung von Scrum auf mehrere Teams
- Fokus auf Einfachheit und Transparenz
- Disciplined Agile Delivery (DAD)
- Agnostisches, hybrides Toolkit, das verschiedene agile Praktiken kombiniert
- Nexus
- Scaled Agile Framework (SAFe)
- Skalierung von Scrum auf mehrere Teams und Programme
- Fokus auf Planung, Koordination und Integration