08.12.2012 Aufrufe

On-site Customer

On-site Customer

On-site Customer

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!