On-site Customer
On-site Customer
On-site Customer
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Agile Methoden zur Softwareentwicklung<br />
� Ausgangssituation<br />
� Sinn und Zweck von Vorgehensmodellen<br />
� Alte Vorgehensmodelle – Grenzen<br />
� Agile Softwareentwicklung, agile Werte, agile Prinzipien agile<br />
Methoden, agile Prozesse<br />
� Scrum<br />
� XP ( eXtreme Programming)
Vorgehensmodelle - Ausgangssituation<br />
� Anwendungsentwicklung benötigt unter<br />
industriellen Bedingungen einen organisatorischen<br />
Rahmen<br />
---> ein Vorgehensmodell bzw. Prozessmodell<br />
� Markt bietet generische Modelle an, die als Schablonen<br />
oder Baukästen zur Erstellung eigener, an<br />
das jeweilige Projekt angepasster, Prozessleitfäden<br />
dient<br />
� Einsatz zur Absicherung des Projektmanagements
Sinn und Zweck von Vorgehensmodellen<br />
� Rahmen der Systementwicklung<br />
� Definiert Rollen und Aktivitäten<br />
� Reihenfolge der Bearbeitung<br />
� Artefakte<br />
� Ziel ist die Sicherstellung des Systems durch gut durchdachte<br />
Systementwicklung<br />
� beschreibt durchzuführende Aktivitäten (Tätigkeiten) und zu<br />
erstellende Produkte (Ergebnisse)<br />
� Methodenzuordnung:<br />
Wie Methoden die Aktivitäten des Vorgehensmodells durchführen und<br />
welche Darstellungsmittel in den Ergebnissen zu verwenden sind<br />
� Werkzeuganforderungen:<br />
Welche funktionalen Eigenschaften die Software-Tools aufweisen<br />
müssen?
Alte und neue Vorgehensmodelle<br />
� Wasserfallmodell<br />
� ...<br />
� V-Modell<br />
� Iterative Prozesse (RUP = Rational Unfied Process -<br />
Vorgehensmodell von IBM)<br />
� Agile Prozesse (Scrum )<br />
� XP ( eXtreme Programming)
Wasserfallmodell – Iterative Modelle (RUP) - XP
V-Modell
Iteratives Modell - Phasen des RUP ( Rational<br />
Unified Process)<br />
Unified Prozess umfasst vier Phasen, die die Zeitachse eines<br />
Projektes bilden:<br />
� Konzeptphase (inception): Use Case identifizieren,<br />
einfacher Prototyp, Projektkalkulation Projektsetup<br />
� Spezifikationsphase (elaboration): Ausarbeitung,<br />
komplettes Use Case-Modell<br />
� Konstruktionsphase (construction): Implementierung,<br />
Anforderungen an Basis-Architektur erweitert<br />
� Einführungsphase (transition): Inbetriebnahme, erstellte<br />
Software an künftige Nutzer übergeben (Beta-Release)
� Softwareentwicklung galt als vorhersagbarer Prozess mit<br />
festem Ablauf und detaillierter Protokollierung aller Phasen<br />
� Allgemeine Annahme, das Kunden einmalig und eindeutig ihre<br />
Wünsche erklären<br />
� Aufwendiges Verfahren der Anforderungserhebung im Vorfeld<br />
von Analyse, Design, Codierung<br />
� Massenproduktion von Dokumenten<br />
� Massive Probleme bei Änderung der Anforderungen
Agil: behend, flink beweglich, rege, aufgeweckt<br />
Agiler Prozess:<br />
� Im Kern geht es bei agiler Softwareentwicklung um möglichst<br />
häufige Rückkopplungsprozesse und zyklisches (iteratives)<br />
Vorgehen auf allen Ebenen: bei der Programmierung, im Team<br />
und beim Management<br />
� Kurze Planungs- und Entwicklungsphasen wechseln sich ab<br />
� Teilbereiche der Softwareentwicklung ( Modeling)<br />
� SE-Prozess ( XP)<br />
� Arbeit mit geringem bürokratischen Aufwand und wenig Regeln
Ziele<br />
� Gegenbewegung zu schwergewichtigen<br />
Prozessmodellen<br />
� Schnell verfügbare Ergebnisse (“time-to-market”)<br />
� Reaktion auf stark variierende Anforderungen<br />
Softwareentwicklungsprozess flexibler und schlanker zu<br />
machen, als das bei den klassischen<br />
Vorgehensmodellen der Fall war
Kontrast - Idee des eXtreme Programming<br />
XP (Extreme Programming) beschreibt eine agile<br />
iterative Vorgehensweise beim<br />
Softwareentwicklungsprozess mit leichtgewichtiger<br />
Methodologie und wenig Dokumentation und<br />
Overhead<br />
4 wichtige Grundwerte<br />
� Kommunikation<br />
� Einfachheit<br />
� Feedback<br />
� Mut<br />
Grundwerte müssen von den Mitarbeitern konsequent gelebt<br />
werden
� Mündliche Kommunikation zwischen allen Projektbeteiligten<br />
� Anwender und Auftraggeber sind eingeschlossen<br />
� Aufgaben: Erstellen, Mitteilen, Validieren, Priorisieren und<br />
immer wieder neu Priorisieren der Anforderungen<br />
� Räumliche und zeitliche Einheit des gesamten Projektteams,<br />
Teamgrößen von max. 10 Personen
� Planung beschränkt sich auf vorläufige Zuordnung von<br />
Anforderungspaketen zu Lieferterminen<br />
� Kurze Lieferzeiten für lauffähige Software: von 4 Wochen<br />
bis 3 Monaten<br />
� Anhand lauffähiger Software über weitere Anforderungen<br />
und Priorisierung der verbleibenden entscheiden<br />
� Kurze Lieferzeiten - relevanter Mehrwert für Kunden<br />
� Feedback bedeutet: Kunde steuert das Projekt
� Bedeutet: NICHT DIE BESTE, sondern die einfachste bzw.<br />
kostengünstigste zu realisieren<br />
� Keine zu starke Abstraktion von Softwarekomponenten für<br />
spätere Wiederverwendung, da künftige Anforderungen nicht<br />
bekannt sind<br />
� Leitspruch agiler Prozesse:<br />
YOU ARE NOT GOING TO NEED IT!<br />
� Abschätzung von Risiko und Mehrwert ist gemeinsame<br />
Aufgabe von Kunde und Entwickler<br />
� Agile Prozesse geben Instrumentarium, um das Risiko von<br />
Veränderungen zu begrenzen
Das Agile Manifest (2001)- agile Prinzipien<br />
- Basis agiler Softwareentwicklung<br />
� Individuen und Interaktionen sind wichtiger als<br />
Prozesse und Werkzeuge.<br />
� Lauffähige Software ist wichtiger als umfangreiche<br />
Dokumentation.<br />
� Zusammenarbeit mit dem Kunden ist wichtiger als<br />
Vertragsverhandlungen.<br />
� Auf Änderungen reagieren ist wichtiger als einem<br />
Plan zu folgen.
� Einsatz agiler Methoden<br />
� Flexible Reaktion auf wechselnde Anforderungen,<br />
änderungsfreundlich<br />
� Iterativ-inkrementeller Ansatz<br />
� Kurze Entwicklungszyklen, Time-Boxing ( „Magisches<br />
Dreieck“ � weg von der Zeit hin zur Qualität)<br />
Kosten und Zeit fix gesetzt!
� Adaptive Software Development (ASD)<br />
� Crystal ( Familie agiler SE-Methoden )<br />
� Dynamic System Development Method (DSDM)<br />
� Pragmatic Programming<br />
� Usability Driven Development (UDD)<br />
� Scrum<br />
� Extreme Programming (XP)
� agiles Prozessmodell mit starrer Organisationsschicht<br />
� 1996 erste Definition von Scrum durch Schwaber und<br />
Sutherland<br />
� 2003 Zertifizierungsprogramm für Scrum Master<br />
� System von Meetings, Artefakten, Rollen, Werten und<br />
Grundüberzeugungen<br />
� enge Zusammenarbeit zwischen Kunden, Team und<br />
Management<br />
� starke Selbstorganisation des Teams in Teilphasen (Sprints)<br />
� Wichtung am Kosten-/Nutzenverhältnis orientiert
� Product Owner<br />
� Stellt fachliche Anforderungen und priorisiert diese<br />
� Legt Ziel und Budget fest<br />
� Wichtigste Feature sondieren: Auswahl für nächsten Sprints<br />
� Team<br />
� Schätzt technischen Aufwand für die Umsetzung<br />
� Zuständig für Implementierung<br />
� Selbstorganisierend und –verwaltend<br />
� Scrum Master<br />
� Steuert den Prozess und beseitigt Hindernisse<br />
� Sorgt für produktive Arbeitsbedingungen<br />
t
Sprint (Iteration)<br />
� Zentrales Element von Scrum<br />
� Aufgabe in Teilaufgaben zerlegen<br />
� Nur soviel Aufgaben, wie das Team verkraften kann<br />
� Iterationsdauer ca. 30 Tage<br />
� Vor jedem Sprint Anforderungen im Product Backlog<br />
sammeln und priorisieren<br />
� Detaillierung in Aufgaben (max. 16 h)<br />
� Sprint Backlog aufstellen
Artefakte<br />
� Product Backlog ( Produkt-Anforderungen gesammelt,<br />
muss nicht vollständig sein, wird laufend fortgeführt)<br />
� Sprint Backlog ( Anforderungen übernommen, die<br />
während eines Sprints umgesetzt werden sollen)<br />
� Burndown Chart ( grafische, pro Tag zu erbringende<br />
Darstellung des Restaufwandes pro Sprints)<br />
� Impediment List ( Hindernisse des Projektes, Scrum<br />
Master und Team sorgen für Beseitigung)
Daily Scrum<br />
� Täglich 15 minütiges Meeting<br />
� Team stellt sich Fragen:<br />
„Bist du gestern mit dem fertig geworden, was du dir<br />
vorgenommen hast?“<br />
„Welche Aufgaben wirst du bis zum nächsten Meeting<br />
bearbeiten?“<br />
„Gibt es ein Problem, das dich blockiert?“<br />
Sitzung dient dem Informationsaustausch – alle erfahren alles<br />
und lösen Probleme gemeinsam!
Review<br />
� Nach Sprint wird Ergebnis einem informellen Review<br />
durch Team und Kunden unterzogen<br />
� Ergebnis wird Kunden vorgeführt, technische<br />
Eigenschaften werden präsentiert<br />
� Kunde prüft, ob das Ergebnis den Anforderungen<br />
entspricht, eventuelle Änderungen werden im Product<br />
Backlog dokumentiert
Scrum - Prozess
� Entwickelt 1995 von Kent Beck, Ward Cunningham<br />
und Ron Jeffries während ihrer Arbeit im Projekt<br />
„Comprehensive Compensation System“ bei Chrysler<br />
� Gekennzeichnet durch fortlaufende Iterationen und<br />
den Einsatz mehrerer Einzelmethoden<br />
� XP folgt einem strukturierten Vorgehen und stellt die<br />
Teamarbeit, Offenheit und stete Kommunikation<br />
zwischen allen Beteiligten in den Vordergrund
XP - Features<br />
User Stories: Die Anforderungen an die zu erstellende<br />
Software werden nicht wie beim RUP in Use Cases, sondern in<br />
User Stories erfasst<br />
User Stories beschreiben GUIs, Funktionalitäten und<br />
Testszenarien<br />
<strong>On</strong>-<strong>site</strong> <strong>Customer</strong>: Ein kompetenter Vertreter des Kunden ist<br />
während der gesamten Entwicklungszeit bei den Entwicklern<br />
anwesend (dürfte nur selten realisierbar sein)<br />
Pair Programming: An den Entwicklungsrechnern sitzen<br />
jeweils zwei Entwickler und entwickeln gemeinsam.<br />
Testing: Vor der Entwicklung eines Moduls werden<br />
automatisierbare Testfälle (Unit Tests) programmiert.
Werte von XP
Kommunikation<br />
Werte von XP<br />
� Permanente und intensive Kommunikation zwischen<br />
Entwicklern, Management und Kunden<br />
Einfachheit<br />
� Einfachste Softwaregestaltung<br />
� keine redundante und überflüssige Funktionalität<br />
� KISS-Prinzip<br />
„Keep it simple and stupid“<br />
„Halte es einfach und leicht verständlich“
Feedback<br />
Werte von XP<br />
� Kleine Releases ermöglichen dem Kunden kontinuierliche<br />
Verfügbarkeit - schnelle Rückmeldung möglich<br />
� Feedback durch Test - Überprüfung der umgesetzten<br />
Funktionalitäten auf Korrektheit<br />
Mut<br />
� Mut zu kleinen und großen Veränderungen im System<br />
� Refactoring ( Strukturverbesserung des Quellcodes ohne<br />
Änderung des Programmverhaltens)<br />
� „design and code for today not tomorrow“<br />
Respekt<br />
� respektvoller Umgang, sowohl im Team untereinander als<br />
auch mit dem Kunden<br />
� Unterschiedliche Meinungen werden akzeptiert
Programmieren<br />
� Inkrementelle Entwicklung<br />
� Veränderungen des Quellcodes mittels Refactoring<br />
Testen<br />
Grundlegende Aktivitäten von XP<br />
� Automatisierte Test für alle Programmkomponenten<br />
� Kunde prüft Umsetzung der Geschäftslogik mittels<br />
funktionaler Tests
Zuhören<br />
� Kommunikation zwischen den Entwicklern sowie mit<br />
dem Kunden<br />
Design<br />
� Organisation der Systemlogik<br />
� Komplexität verringern für ein gutes Design<br />
� Keine unnötigen Dokumente zum Entwurf<br />
t
Bewährte Softwarepraktiken extrem umgesetzt
Projektablauf XP
Iterationen
Entwicklung
� Vorgehensverfahren für agile Softwareentwicklung<br />
� Unterstützen agile Prozesse<br />
� Leitsatz für agile Methoden<br />
„Je mehr Du nach Plan arbeitest, um so mehr<br />
bekommst Du das, was Du geplant hast, aber<br />
nicht das, was Du brauchst.“
� Planungsspiel und kurze Release-Zyklen<br />
� Programmieren in Paaren<br />
� Fortlaufende Integration<br />
� 40 Stunden Woche<br />
� Kunde häufig vor Ort<br />
Praktiken von XP<br />
t
Kritik – XP<br />
� Beschränkte Team- und damit Projektgröße<br />
� Fehlende Eignung für Festpreisprojekte<br />
� Kein Architektur-Masterplan, mehr Redesign<br />
� Kundenvertreter ist “single-point-of-failure”, Gefahr<br />
von Mikromanagement
� Beide gehen iterativ bei der Entwicklung vor<br />
� Beide sehen tägliche Treffen vor<br />
� XP bezieht konkrete agile Methoden mit ein<br />
� Scrum ist eher Rahmen und fordert mehr<br />
Dokumentation<br />
Scrum erscheint auf den ersten Blick nicht so<br />
“extrem”, einfacher zu vermarkten
� Testgetriebene Entwicklung<br />
� Paarprogrammierung<br />
� Refactoring<br />
� Story-Cards<br />
� schnelle Code-Reviews<br />
t
� Entwicklung der Tests vor der eigentlichen Software<br />
� Unit-Tests und System-Tests<br />
� Zyklisches Vorgehen beim Testen<br />
� Testgetriebene Entwicklungsumgebung erforderlich,<br />
z.B. im Java-Umfeld Ant und Maven<br />
� Geeignete und unterstützende Testwerkzeuge, z.B.<br />
JUnit, FIT<br />
t
� 2 Entwickler - 1 Rechner<br />
� Zwei Rollen<br />
� Entwickler an der Tastatur („Driver“), erledigt die<br />
aktuelle Aufgabe<br />
� Entwickler daneben („Observer“), denkt nach und<br />
vor, kontrolliert, korrigiert und „sieht durch“<br />
� Wechselnde Aufgabenverteilung<br />
� Keine festen Paarungen
Vorteil<br />
� Verbesserte Qualität des Entwurfs<br />
� Reduzieren von Programmierfehlern<br />
� Lerneffekte und Kommunikation erhöhen<br />
Nachteil<br />
� Ca. 15% erhöhte Entwicklungszeit
� Strukturverbesserung des Quellcodes ohne Änderung<br />
des Programmverhaltens<br />
� Software ist besser wartbar, verwendbar und<br />
erweiterbar<br />
� Grundvoraussetzung für jeden evolutionären<br />
Entwicklungsprozess<br />
� Hilft Fehler zu finden und Redundanzen zu verringern<br />
� Setzt automatisierte Testumgebung voraus
� Ausführen auf funktionierendem Code<br />
� Überwachung durch Unit-Tests<br />
� Beispiele fürs Refactoring:<br />
� Auslagern gemeinsamer abstrakter Logik<br />
� Verschieben von Attributen und Methoden<br />
zwischen Klassen<br />
� Duplizierten Code zusammenführen
� Kleine Projekte bis 10 Personen<br />
� Systeme geringer -mittlerer Kritikalität ( Höhe der<br />
Risiken)<br />
� Hoch dynamisch (>30% geänderte Anforderungen /<br />
Monat)<br />
� Mindestens 30% hoch qualifizierte Mitarbeiter, wenig<br />
niedrig qualifizierte Kräfte<br />
� Organische Unternehmenskultur mit vielen Freiräumen<br />
Nach: Boehm/Turner; Balancing Agility and<br />
Discipline(2004)
� Große Projekte mit mehr als 100 Personen<br />
� Systeme hoher –sehr hoher Kritikalität<br />
� Stabil (
� Festpreisprojekte<br />
� Systeme mit hoher Kritikalität<br />
� Aufwandsschätzung<br />
� Kulturwandel im Kundenverhältnis<br />
� Organisation großer Teams (50 Entwickler und mehr)<br />
� Selbstorganisation stellt hohe Anforderungen
� http://www.it-agile.de<br />
� http://www.infforum.de/themen/<br />
anwendungsentwicklung/thema_SE_agile_softwareentwicklung.htm<br />
� http://www.wikipedia.de<br />
� http://www.iti-software.de<br />
� Balancing Agility and Discipline (2004) Boehm/Turner<br />
� Agile Software Entwicklung (2007) Cockburn