Möglichkeiten der agilen Softwareentwicklung - lippo
Transcription
Möglichkeiten der agilen Softwareentwicklung - lippo
Möglichkeiten der agilen Softwareentwicklung in einer konservativen Umgebung Hochschule Bremen Fakultät Elektrotechnik und Informatik Masterstudiengang Informatik „Komplexe Softwaresysteme“ Gutachter Prof. Dr.-Ing. Andreas Spillner Dipl.-Ing. Thorsten Reinken Master-Thesis Patrick Rehder (199379), 03.08.2012 >>> Erklärung I. Master-Thesis Erklärung Ich versichere, die vorliegende Master-Thesis ohne Hilfe Dritter und nur mit den angegebenen Quellen und Hilfsmitteln angefertigt zu haben. Alle Stellen, die den Quellen entnommen wurden, sind als solche kenntlich gemacht worden. Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen. Bremen, den 3. August 2012 Patrick Rehder (Ort, Datum) (Unterschrift) Patrick Rehder 2 >>> Hinweise II. Master-Thesis Hinweise Danke! Ich möchte insbesondere den Kollegen aus der Business-Unit „Externe Produkte“ (Commerz Systems GmbH) danken. Sie standen mir immer rasch mit Rat und Antworten zur Seite. Vielen Dank! Anonymisierung Folgende Namen wurden zwecks Anonymisierung frei erfunden: Rot AG, ASTAT, NIOB, TANTAL. Ähnlichkeiten oder Übereinstimmungen mit echten Projekten und Firmen sind rein zufällig und nicht beabsichtigt. Legende Englische Eigennamen werden kursiv dargestellt. Zum Beispiel: Extreme Programming. Abkürzungen und Übersetzungen werden in runde Klammern eingefasst. Zum Beispiel: Mit freundlichen Grüßen (MFG). Werden Wörter im Glossar erklärt, wird dies beim ersten Vorkommen wie folgt dargestellt: Glossar. Verweise auf Quellen werden in eckige Klammern eingefasst. Zum Beispiel: [5] oder [18, p. 17]. Bei digitalen Quellen ohne Seitenzahlen wird das Kapitel genannt. Zum Beispiel: [2, p. 'Vorwort'] Beiliegender Datenträger Auf dem beiliegenden Datenträger befinden sich: Eine PDF-Version dieser Master-Thesis. Jeweils eine PDF-Version zu genutzten und frei verfügbaren Onlineinhalten. Hilfreiches und verwendete Werkzeuge Dieses Dokument wurde mithilfe von Microsoft Office Word 2010 erstellt. Skizzen von Benutzeroberfläche wurden unter Verwendung von Balsamiq Mockups designet (siehe www.balsamiq.com). Das Buch slide:ology von Nancy Duarte gab wertvolle Hinweise zum Entwickeln von Präsentationen, welche im Master-Seminar angewendet wurden und im Kolloquium angewendet werden. Patrick Rehder 3 >>> Kurzfassung Master-Thesis III. Kurzfassung Im Zentrum dieser Arbeit steht die agile Softwareentwicklung, welche im Rahmen einer Abteilung der Commerz Systems GmbH betrachtet wird. Der Einstieg erfolgt über das Agile Manifest, welches die Werte einer agilen Vorgehensweise einfängt und als Grundstein der Agilität zu betrachten ist. Die im Folgenden umfassend betrachteten agilen Prozesse zeigen konkrete Lösungen für eine agile Softwareentwicklung auf. Betrachtet werden Scrum, Feature Driven Development und Extreme Programming. Es zeigt sich, dass die Prozesse in vielen Punkten unterscheiden und jeder über eigene Stärken und Schwächen verfügt. Um das Vorgehen bei der Softwareentwicklung für die Abteilung zu bestimmen, werden drei abgeschlossene Projekte betrachtet. Es wird ein allgemeines Vorgehensmodell entwickelt, genutzte Methoden identifiziert und eine Umfrage durchgeführt. Als Ergebnis wird festgehalten, dass die Abteilung bereits eine agile Kultur aufweist oder zumindest auf dem Weg dorthin ist. Auf den vorherrschenden Bedingungen in der Abteilung werden Scrum und Extreme Programming als passende Vorgehensmodelle identifiziert und deren mögliche Einführung betrachtet. Als Alternative wird ein Ansatz aufgezeigt, um das bisherige Adaptieren von Methoden systematisch fortzuführen. Patrick Rehder 4 >>> Inhaltsverzeichnis Master-Thesis IV. Inhaltsverzeichnis I. Erklärung ..........................................................................................................................................2 II. Hinweise ..........................................................................................................................................3 III. Kurzfassung ......................................................................................................................................4 IV. Inhaltsverzeichnis ............................................................................................................................5 1. 2. Einleitung .........................................................................................................................................7 1.1. Motivation .............................................................................................................................7 1.2. Ziele .......................................................................................................................................8 1.3. Vorgehen ...............................................................................................................................8 1.4. Umfeld ................................................................................................................................ 10 Grundlagen: Agile Softwareentwicklung ...................................................................................... 11 2.1. Agile Manifest..................................................................................................................... 11 2.2. Scrum .................................................................................................................................. 16 2.3. 2.4. 2.5. 3. 2.2.1. Rollen .................................................................................................................. 18 2.2.2. Ereignisse ............................................................................................................ 21 2.2.3. Artefakte ............................................................................................................. 25 2.2.4. Das Zusammenspiel ............................................................................................ 31 Feature Driven Development ............................................................................................. 32 2.3.1. Rollen .................................................................................................................. 33 2.3.2. Prozesse .............................................................................................................. 36 2.3.3. Nachbetrachtung ................................................................................................ 40 Extreme Programming ....................................................................................................... 42 2.4.1. Werte .................................................................................................................. 44 2.4.2. Prinzipien ............................................................................................................ 46 2.4.3. Methoden ........................................................................................................... 49 2.4.4. Rollen .................................................................................................................. 58 2.4.5. Nachbetrachtung ................................................................................................ 58 Zusammenfassende Betrachtung ....................................................................................... 60 Derzeitiges Vorgehen ................................................................................................................... 61 3.1. Business-Unit „Externe Produkte“ (CtB10) ........................................................................ 61 3.2. Vorgehensmodell ............................................................................................................... 63 3.2.1. Vorgehensmodell: ASTAT .................................................................................... 64 3.2.2. Vorgehensmodell: NIOB...................................................................................... 65 3.2.3. Vorgehensmodell: TANTAL ................................................................................. 66 3.3. Techniken und Methoden .................................................................................................. 67 3.4. Umfrage in der Business-Unit ............................................................................................ 73 3.4.1. Entwicklung des Fragebogens ............................................................................. 73 3.4.2. Auswertung der Antworten ................................................................................ 77 Patrick Rehder 5 >>> Inhaltsverzeichnis 3.4.3. 4. Master-Thesis Fazit zur Umfrage ................................................................................................ 80 Mögliches Vorgehen ..................................................................................................................... 81 4.1. 4.2. Einsatz eines bestimmten Vorgehensmodells.................................................................... 82 4.1.1. Warum nicht Feature Driven Development? ...................................................... 83 4.1.2. Scrum als eine Möglichkeit ................................................................................. 83 4.1.3. Extreme Programming als andere Möglichkeit .................................................. 85 Einsatz eines eigenen Vorgehensmodells .......................................................................... 86 4.2.1. 4.3. Continuous Method Evaluation .......................................................................... 87 Nachbetrachtung ................................................................................................................ 92 5. Ergebnis ........................................................................................................................................ 94 A. Glossar .......................................................................................................................................... 96 B. Abbildungsverzeichnis ................................................................................................................ 100 C. Tabellenverzeichnis .................................................................................................................... 101 D. Quellenverzeichnis ..................................................................................................................... 102 E. Anhang ........................................................................................................................................ 106 Patrick Rehder 6 >>> Einleitung 1. Master-Thesis Einleitung Im Mittelpunkt dieser Master-Thesis steht die agile Softwareentwicklung. Da dieses Gebiet sehr umfassend ist, muss der betrachtete Bereich eingeschränkt werden. Die Antworten zu folgenden Fragen helfen dabei: Warum dieses Thema? Unterkapitel 1.1: Motivation (Seite 7) Welche Ziele hat diese Arbeit? Unterkapitel 1.2: Ziele (Seite 8) Was kann wie erreicht werden? Warum dieses Vorgehen und kein anderes? Unterkapitel 1.3: Vorgehen (Seite 8) Gibt es bereits Arbeiten zu diesem Thema? Wenn ja, wo fließen diese Arbeiten ein? Unterkapitel 1.4: Umfeld (Seite 10) 1.1. Motivation Das Thema wurde in der Business-Unit „Externe Produkte“ entwickelt, einer Abteilung der Commerz Systems GmbH. Die Commerz Systems GmbH ist ein mittelständisches Unternehmen mit etwa 350 Mitarbeitern, verteilt auf zwei Standorte: Frankfurt am Main und Bremen. Es handelt sich bei der Commerz Systems GmbH um eine 100%ige Tochter der Commerzbank. Der Mutterkonzern gibt vor, dass sich das Geschäftsfeld der Commerz Systems GmbH auf die Commerzbank beschränken soll. Da die Commerzbank Inhaber und Kunde zugleich ist, wird das Vorgehen bei der Softwareentwicklung maßgeblich durch die Commerzbank beeinflusst. Agile Vorgehensweisen werden in der Commerzbank nur vereinzelt eingesetzt. Es ist das Ziel der Bank erst Erfahrungen zu sammeln. Dies lässt sich beispielsweise am Beta-Status der hauseigenen Scrum-Erweiterung erkennen, dem Information Technology Project Management Framework Agile. Derzeit wird ein agiles Vorgehen von der Commerzbank weder aktiv beworben, noch verlangt. Einige Mitglieder der Business-Unit „Externe Produkte“ beschäftigen sich schon seit längerem mit agilen Ideen im Allgemeinen und Scrum im Speziellen. Sie halten ein agiles Vorgehen für wünschenswert und setzen sich dafür ein. Dies ist der Grund dafür dass einzelne Elemente in der Business-Unit bereits ausprobiert wurden und gegebenenfalls weiter eingesetzt werden. Flächendeckend sind in der Business-Unit „Externe Produkte“ nur die eingesetzten Elemente bekannt. Die Motivation begründet sich damit auf dem Interesse für agile Vorgehenswesen in der BusinessUnit „Externe Produkte“. Patrick Rehder 7 >>> Einleitung 1.2. Master-Thesis Ziele Agile Softwareentwicklung betrachten Diese Master-Thesis soll einen Überblick über die agile Softwareentwicklung geben. Dieser Überblick soll jedem Mitglied der Business-Unit „Externe Produkte“ dazu dienen, sich ein Gesamtbild von agilen Vorgehensmodellen zu machen. Folgende Punkte der agilen Softwarentwicklung werden betrachtet: Werte und Prinzipien im Rahmen vom Agile Manifest1 Prozesse, welche weit verbreitetet sind Methoden im Kontext der Prozesse Vorgehen analysieren und dokumentieren Da aktuell (März 2012) kein größeres Entwicklungsprojekt von der Business-Unit „Externe Produkte“ durchgeführt wird, stehen die letzten drei Projekte2 im Fokus: ASTAT, NIOB und TANTAL. Das Vorgehen in den genannten Projekten soll analysiert und dokumentiert werden, wobei insbesondere auf die agilen Elemente einzugehen ist. Mögliches Vorgehen zeigen Es sollen Möglichkeiten erarbeitet werden, wie ein agiles Vorgehen weiter zu intensivieren ist. Folgende Punkte sind zu betrachten: Einsatz eines bestimmten agilen Prozesses Erweiterung des derzeitigen Vorgehens um weitere agile Elemente 1.3. Vorgehen In diesem Kapitel wird erläutert, welches Vorgehen zum Erreichen der Ziele genutzt wird. Die Ziele finden sich in der Gliederung der Arbeit wieder (siehe Tabelle 1). Ziel Kapitel Agile Softwareentwicklung betrachten Grundlagen: Agile Softwareentwicklung (Kapitel 2, ab Seite 11) Vorgehen analysieren und dokumentieren Derzeitiges Vorgehen (Kapitel 3, ab Seite 61) Mögliches Vorgehen zeigen Mögliches Vorgehen (Kapitel 4, ab Seite 81) Tabelle 1 - Gegenüberstellung der Ziele und Kapitel 1 2 Das agile Manifest wird in Kapitel 2.1 (ab Seite 12) erläutert. Die Projekte ASTAT, NIOB und TANTAL werden in Kapitel 3.1 (ab Seite 71) erläutert. Patrick Rehder 8 >>> Einleitung Master-Thesis In jedem der aufgezählten Kapitel wird ein Ziel behandelt. Die Kapitel werden ihrer Anordnung nach abgearbeitet. Folgendes spricht für diese Reihenfolge: Die Business-Unit „Externe Produkte“ setzt bereits agile Methoden ein. Um diese identifizieren zu können, werden zunächst die Grundlagen zur agilen Softwareentwicklung erarbeitet. Das derzeitige Vorgehen soll als Basis für das mögliche Vorgehen dienen. Beim Erarbeiten der Grundlagen werden die am weitest verbreiteten agilen Prozesse betrachtet. Hierzu wurden vier Umfragen zusammengefasst (siehe Tabelle 2). Agilität wird Mainstream: Ergebnisse der Online-Umfrage [1, p. 1] Forrester/Dr. Dobb’s Global Developer Technographics Survey [2, p. 2] State of Agile Servey [3, p. 4] Softwaretest in der Praxis [4, pp. 8, 9] Jahr 2008 2009 2010 2011 Teilnehmer 207 1.298 4.770 248 Scrum (21%) Scrum (10,9%) Scrum (58%) Scrum (57%) FDD (17%) FDD (3,8%) Scrum/XP Hybrid (17%) FDD (5,2%) XP (14%) XP (2,9%) XP (4%) XP (4,0%) - Crystal (0,3%) FDD (2%) Crystal (0,4%) Quelle Verbreitung (Ausschnitte!) Tabelle 2 - Ausschnitte aus Umfragen zur Anwendung agiler Prozesse Diese drei Prozesse wurden am Häufigsten genannt: Scrum Feature Driven Development (FDD) Extreme Programming (XP) Der Umfang, mit dem die agilen Prozesse behandelt werden, ergibt sich aus der Zielgruppe. Die Prozesse sind so zu beschreiben, dass alle Mitglieder der Business-Unit „Externe Produkte“ ein gemeinsames Verständnis der agilen Softwarentwicklung aufbauen. Auf Basis dieses gemeinsamen Verständnisses besteht die Möglichkeit, einen agilen Prozess zu etablieren oder weitere agile Methoden einzuführen. Die Grundlagen sollen außerdem als Nachschlagewerk für einzelne Bestandteile der agilen Softwareentwicklung genutzt werden. Als Möglichkeit für ein zukünftiges Vorgehen sollen die agilen Prozesse Scrum, Feature Driven Development und Extreme Programming unter den vorherrschenden Bedingungen betrachtet werden. Patrick Rehder 9 >>> Einleitung Master-Thesis Bisher wurden agile Methoden vereinzelt erprobt und gegebenenfalls adaptiert. Es soll auch untersucht werden, ob es eine Alternative darstellt, den eigenen Prozess systematisch um weitere agile Methoden anzureichern. 1.4. Umfeld Der Hype zur agilen Softwareentwicklung ist ungebrochen. Es wird viel in Blogs, Artikeln und Büchern darüber geschrieben und auf Konferenzen präsentiert und diskutiert. Viel wichtiger ist, dass das agile Vorgehen in der Praxis angekommen ist. Dies kann den folgenden Umfrageergebnissen entnommen werden: 2008, 1. Quartal - Agilität wird Mainstream: Ergebnisse der Online-Umfrage 2008 [1] 36% der 207 Befragten gaben an agil vorzugehen. 2009, 3. Quartal - Forrester/Dr. Dobb’s Global Developer Technographics Survey [2] 35% der 1.298 Befragten gaben an agil vorzugehen. 2010, 3. Quartal - Agile Softwareentwicklung am Standort Deutschland [5] 44% der 237 Befragten gaben an bereits Erfahrungen mit agilen Methoden gesammelt zu haben. 2011, 2. Quartal - Umfrage 2011: Softwaretest in der Praxis [4] 28% der 1.211 Teilnehmer gaben an ein agiles Vorgehensmodell zu nutzen. Aufgrund der zunehmenden Verbreitung und dem vorherrschenden Interesse gibt es viele Informationsquellen zur agilen Softwareentwicklung. Eine gelungene Übersicht bietet die Broschüre „Agile Softwareentwicklung - Ein Überblick“ [6], welche jedoch nicht die gewünschte Tiefe dieser MasterThesis erreicht. Die Grundlagen werden aus verschiedenen Quellen zusammengetragen, wobei sich auf die Werke der Erfinder konzentriert wird. Auf die verwendete Literatur wird in den entsprechenden Kapiteln verwiesen. Möglichkeiten zur Einführung agiler Prozesse und Methoden werden in der Literatur bereits vielfach genannt. Hier ist beispielsweise ein Kapitel aus dem Buch von Boris Gloger zu nennen: „Einführung von Scrum in großen Projekten und Organisationen“ [7, pp. 273-352]. Es gibt aber auch ganze Bücher, die sich mit dem Thema beschäftigen: „A Practical Guide to Feature-Driven Development“ [8], „Extreme Programming Applied: Playing to Win“ [9] und „Agile Projekte mit Scrum, XP und Kanban in Unternehmen durchführen“ [10]. Diesen Werken werden hilfreiche Ideen und Ratschläge entnommen, um Möglichkeiten für das weitere Vorgehen zu bestimmen. Speziell auf Banken bezogene Werke werden in dieser Arbeit mangels öffentlicher Verfügbarkeit nicht einbezogen. Allerdings wurde Feature Driven Development bei einem Projekt in einer Bank entwickelt. Hierauf wird in der Literatur jedoch ausschließlich historisch Bezug genommen und nicht auf den Prozess selber. Patrick Rehder 10 >>> Grundlagen: Agile Softwareentwicklung 2. Master-Thesis Grundlagen: Agile Softwareentwicklung Nach dem Agile Manifest werden die folgenden drei agilen Prozesse betrachtet: Scrum Feature Driven Development Extreme Programming 2.1. Agile Manifest Februar 2001, Snowbird Ski Resort (Nord Amerika): Siebzehn anerkannte und erfahrene Softwareentwickler3 mit ähnlichen Ideen trafen sich für ein Wochenende, um sich über das Vorgehen in der Softwarenentwicklung auszutauschen. Dieses Treffen kann als Geburtsstunde der agilen Softwareentwicklung bezeichnet werden. Die Teilnehmer einigten sich auf den Begriff der „Agilität“, welcher seither verwendet wird. Außerdem wurde das Agile Manifest [11] verfasst, welches die Gedanken hinter der agilen Softwareentwicklung einfängt und von allen Teilnehmern anerkennend unterzeichnet wurde. [12, pp. 5, 6] [13, pp. vii, viii, ix] Doch was macht das Agile Manifest aus? – Es sind die Werte, die vom Manifest beschrieben werden. Sie sind die Basis für ein gemeinsames Verständnis der agilen Softwareentwicklung. wichtiger wichtig Individuen und Interaktionen Prozesse und Werkzeuge funktionierende Software umfassende Dokumentation Zusammenarbeit mit dem Kunden Vertragsverhandlungen Reagieren auf Veränderung Befolgen eines Plans Abbildung 1 - Die Werte vom Agile Manifest Das Agile Manifest nennt acht Bereiche der Softwareentwicklung, die paarweise miteinander verglichen werden (siehe Abbildung 1). Hierbei handelt es sich um einen wertenden Vergleich, der immer 3 zum Beispiel: Ken Schwaber (Scrum), Jeff Sutherland (Scrum) und Kent Beck (Extreme Programming) Patrick Rehder 11 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis einen Bereich als wichtiger und wertvoller herausstellt. Durch diese Wertung entsteht ein Bild, auf was es in der agilen Softwareentwicklung ankommt. Im Zusammenhang mit der Wertung ergibt sich oft das Missverständnis, dass die agile Softwareentwicklung ohne Prozesse, ohne Dokumentation, ohne Verträge und ohne Planung auskommt. Dies stimmt nicht: Die Werte auf der rechten Seite werden zwar nicht primär verfolgt, sie sind aber dennoch wichtig. Warum agile Methoden sinnvoll sind geht nur indirekt aus dem Agile Manifest hervor. Folgendes spricht dafür: Individuen und Interaktion sind wichtiger als Prozesse und Werkzeuge Das Wesen der Softwareindustrie liegt in der Verarbeitung von Wissen. Genauer gesagt der Abbildung von Prozessen und Arbeitsabläufen in Software. Diesem Umstand wird sich in der Softwareentwicklung traditionell über Ideen der Massenfertigung4 genähert. Es wird versucht Arbeitsabläufe in möglichst kleine Einheiten zu zerbrechen, die von spezialisierten Mitarbeitern ausgeführt werden: Analysten analysieren, Architekten entwerfen, Programmierer programmieren und Tester testen. Jeder Mitarbeiter übernimmt hierbei immer ähnliche Aufgaben. Dies führt im besten Fall zu einer hohen Produktivität und im schlechtesten Fall zur Ermüdung und Demotivation des Mitarbeiters. [14, p. 28 f.] Die oft verwendete Bezeichnung „Ressource“ verdeutlich, dass Menschen aus Prozesssicht betrachtet werden und nicht als Individuum. Der dahinterliegende Gedanke ist aus Prozesssicht wünschenswert, aber nicht realistisch: Wenn zwei Menschen die Anforderungen gemäß Prozessdefinition erfüllen, können sie einfach ausgetauscht werden. Das im gleichen Zusammenhang gerne erwähnt wird, wie wichtig der „Faktor Mensch“ ist, wirkt widersinnig. [15] Dieser Widerspruch wird vom Manifest zugunsten des Menschen entschieden. Das Manifest hebt außerdem die Interaktion zwischen den Beteiligten hervor. In traditionellen Prozessmodellen wird selbstverständlich auch miteinander interagiert, allerdings meist über Dokumente. Zu nennen ist das Wasserfallmodell, welches bei Phasenübergängen prozessbedingt Dokumente verlangt. Das Weiterreichen von Informationen über Dokumente führt jedoch zu einem immensen Wissensverlust. [12, p. 18] Der Grund hierfür liegt in der Kommunikationsart „Papier“. In Abbildung 2 werden unterschiedliche Kommunikationsarten hinsichtlich Effektivität und Vielfalt des Kommunikationskanals (Sprache, Gestik, …) aufgeführt. Die Gedanken hierzu stammen ursprünglich von Alistair Cockburn [16, p. 84] und wurden von Scott Amber übernommen und erweitert. [17, p. 84] Wie Tom DeMarco und Timothy Lister bereits 1987 festhielten, sind die größten Probleme nicht technologischer sondern soziologischer Natur. [18, p. 5] 4 Schülerduden Wirtschaft: „Bei der Massenfertigung werden gleiche Erzeugnisse über eine längere Zeit hinweg in großen Mengen hergestellt.“ [67, p. 139] Patrick Rehder 12 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis hoch Effektivität der Kommunikation Diskussion Gespräch Gespräch mit Hilfsmitteln (z.B. Whiteboard) Videokonferenz Telefon E-Mail Videoaufnahme Tonaufnahme Dokumentation Papier niedrig Vielfalt des Kommunikationskanals hoch Abbildung 2 - Kommunikationsarten zur Diskussion und Dokumentation [17, p. 84] Funktionierende Software ist wichtiger als eine umfassende Dokumentation Der Zweck der Softwareentwicklung ist es Softwaresysteme zu entwickeln, die dem Anwender einen Nutzen bringen. Dieser Nutzen kann nur von einem funktionierenden System erbracht werden, nicht von einer umfassenden Dokumentation. Die Dokumentation kann ein funktionierendes System aus Anwendersicht höchstens unterstützten, so dass das System leichter zu verstehen ist oder die Weiterentwicklung beschleunigt wird. Da das primäre Ziel der Softwareentwicklung darin besteht Software zu entwickeln, ist es nur logisch sich auf die Entwicklung von Software zu konzentrieren. Das alleinige Erstellen von Dokumenten führt dazu, dass sich der Kunde in falscher Sicherheit wiegt. Ihm wird ein Fortschritt aufgezeigt, der ihm keinen Nutzen bringt. Es ist nicht zielstrebig mit einer umfassenden Dokumentation zu beginnen – dieses Vorgehen wird besser durch „Dokumentationsentwicklung“ beschrieben, nicht durch Softwareentwicklung. [9, p. 17] [17, pp. 6, 7] Zusammenarbeit mit dem Kunden ist wichtiger als Vertragsverhandlungen Im Buch „The Art of Lean Software Development“ wird die 80/20 Regel genannt. Diese besagt, dass in der Regel 80% der Anforderungen des Anwenders durch 20% der Funktionen abgedeckt werden. Außerdem wird auf eine Studie aus dem Jahr 2001 verwiesen, die 400 Projekte über einen Zeitraum von 15 Jahren betrachtet hat und herausfand, dass weniger als 5% des erzeugten Quelltextes genutzt werden. [12, p. 17] Dies zeigt, dass es wichtig ist, mit dem Kunden und dem Anwender zusammenzuarbeiten. Die Anforderungen des Kunden müssen hinsichtlich des Nutzens bestimmt werden, es gilt „goldene Wasserhähne“ zu vermeiden. Die Zusammenarbeit mit dem Kunden wird im Manifest wichtiger eingestuft, als die Verhand- Patrick Rehder 13 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis lung von Verträgen. Hierzu passt eine Aussage von Traian Kaiser5, die er auf dem ScrumDay 2011 machte. Sinngemäß: „Verträge sind weder produktiv, noch risikominimierend, noch transparent!“. Anstatt Geld in Juristen zu investieren, die sich damit beschäftigen was passiert, wenn das Projekt scheitert, könnte das Geld bereits in die Entwicklung fließen und Nutzen für den Kunden generieren. Reagieren auf Veränderung ist wichtiger als das Befolgen eines Plans Einen Plan zu machen ist sinnvoll. Sich auf den Plan zu beziehen ebenfalls – zumindest solange der Plan nicht von der Realität abweicht. Einen veralteten Plan mit Scheuklappen zu verfolgen ist sogar kontraproduktiv. Schließlich wird Zeit investiert um in eine falsche Richtung zu arbeiten, anstatt auf Abweichungen zu reagieren. [16, p. 179] Softwareprojekte unterliegen einer hohen Wahrscheinlichkeit für sich verändernde Bedingungen. Die Tatsache dass Software von und für Menschen entwickelt wird, reicht aus um dies zu verdeutlichen. Menschen können sich irren, Fehler machen, sich falsch verstehen oder ihre Meinung ändern. Der Wert einer Software definiert sich über deren Nutzen für den Kunden. Da die Welt während der Entwicklung nicht still steht, können sich die Anforderungen schnell wieder ändern. Wird nicht auf Veränderungen reagiert, sinkt der Wert der Software. Außerdem werden neue Ideen, Wünsche und Probleme meist erst erkannt, wenn eine Aufgabe im Detail bearbeitet wird. [14, p. 44] Es wird von Software sogar erwartet veränderbar zu sein. Durch Software werden Probleme gelöst, die schwierig zu überblicken sind und sich ändern. Andernfalls würde es sich anbieten die Lösung direkt über Hardware zu realisieren. [9, pp. 9, 10] Die zwölf Prinzipien helfen dabei, die Idee hinter dem Agile Manifest besser zu verstehen. Ins Deutsche übersetzt, lauten sie wie folgt [11]: „Unsere höchste Priorität ist es, den Kunden durch frühe und kontinuierliche Auslieferung wertvoller Software zufrieden zu stellen.“ Anforderungsänderungen sind auch spät in der Entwicklung willkommen. „Agile Prozesse nutzen Veränderungen zum Wettbewerbsvorteil des Kunden.“ „Liefere funktionierende Software regelmäßig innerhalb weniger Wochen oder Monate und bevorzuge dabei die kürzere Zeitspanne.“ „Fachexperten und Entwickler müssen während des Projektes täglich zusammenarbeiten.“ „Errichte Projekte rund um motivierte Individuen. Gib ihnen das Umfeld und die Unterstützung die sie benötigen und vertraue darauf, dass sie die Aufgabe erledigen.“ „Die effizienteste und effektivste Methode, Informationen an und innerhalb eines Entwicklungsteams zu übermitteln, ist im Gespräch von Angesicht zu Angesicht.“ 5 Traian Kaiser (XING AG, Director Agile Project Management und PMO) Patrick Rehder 14 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis „Funktionierende Software ist das wichtigste Fortschrittsmaß.“ „Agile Prozesse fördern nachhaltige Entwicklung. Die Auftraggeber, Entwickler und Benutzer sollten ein gleichmäßiges Tempo auf unbegrenzte Zeit halten können.“ „Ständiges Augenmerk auf technische Exzellenz und gutes Design fördert Agilität.“ „Einfachheit -- die Kunst, die Menge nicht getaner Arbeit zu maximieren -- ist essenziell.“ „Die besten Architekturen, Anforderungen und Entwürfe entstehen durch selbstorganisierte Teams.“ „In regelmäßigen Abständen reflektiert das Team wie es effektiver werden kann und passt sein Verhalten entsprechend an.“ In der Umfrage „Forrester/Dr. Dobb’s Global Developer Technographics Survey“ wurden die Prozesse zur Softwareentwicklung in drei Kategorien unterteilt [2, p. 2]: agile, iterative und phasenorientierte6 Prozesse. Doch was unterscheidet die agile von der iterativen Softwareentwicklung? – Nach der Ausarbeitung dieses Unterkapitels wird der Unterschied klar. Bei der agilen Softwareentwicklung geht es in erster Linie um die im Manifest genannten Werte. Es geht nicht um den Prozess selbst, welcher beim iterativen Vorgehen im Vordergrund steht. 6 In der Studie werden phasenorientierte als Wasserfall-Prozesse bezeichnet, was als nicht so passend empfunden wurde. Patrick Rehder 15 >>> Grundlagen: Agile Softwareentwicklung 2.2. Master-Thesis Scrum Die Basis von Scrum liegt in der empirischen Prozesssteuerung. Diese geht davon aus, dass Wissen aus Erfahrung gewonnen wird und dass Entscheidungen aufgrund bekannter Tatsachen getroffen werden. [19, p. 4] Sofern sich Prozesse exakt definieren lassen, werden in der Praxis normalerweise definierte anstelle empirischer Prozesse verwendet. Dies ist allerdings nur möglich, wenn die einzelnen Zwischenschritte vom Prozess anschaulich beschrieben werden können. Ist dies nicht der Fall, ist die Komplexität der Zwischenschritte zu hoch. Als Indikator hierfür kann der Aufwand zur Nachbesserung der Produktqualität genutzt werden. Ist der Aufwand zu hoch, ist eine empirische Prozessteuerung in Betracht zu ziehen. [20, p. 3] In der Massenfertigung stellt sich die Frage: definiert oder empirisch? In der Softwareentwicklung lautet die Antwort klar: empirisch. Der Prozess der Softwareentwicklung weist eine hohe Komplexität auf. Dies wird von Ken Schwaber in „Agiles Projektmanagement mit Scrum“ weiter erläutert, siehe hierzu [20, p. 4]. Der Scrum Guide nennt drei Säulen (siehe Abbildung 3). Auf diese stützt sich die empirische Prozesssteuerung und damit auch Scrum. Transparenz „Die wesentlichen Aspekte des Prozesses müssen für diejenigen Personen erkennbar sein, die für das Prozessergebnis verantwortlich sind. Transparenz erfordert, dass diese Aspekte durch einen gemeinsamen Standard definiert sind, so dass Beobachter ein gemeinsames Verständnis über das Beobachtete teilen.“ Überprüfung „Scrum Anwender müssen ständig die Scrum Artefakte und den Fortschritt auf dem Weg zur Erreichung des Ziels überprüfen, um unerwünschte Abweichungen zu entdecken. Die Häufigkeit der Überprüfungen sollte […] nicht so hoch sein, dass die eigentliche Arbeit dadurch behindert wird. Der größte Nutzen kann aus einer Überprüfung gezogen werden, wenn sie ständig durch sachkundige Personen am Ort des Geschehens vorgenommen wird.“ Anpassung „Wenn bei einer Überprüfung festgestellt wird, dass einer oder mehrere Aspekte des Prozesses außerhalb akzeptabler Grenzen liegen und das Produktergebnis dadurch ebenfalls nicht zu akzeptieren sein wird, muss so schnell wie möglich eine Anpassung des Prozesses oder des Arbeitsgegenstandes vorgenommen werden, um weitere Abweichungen zu minimieren.“ Abbildung 3 - Scrum: „Die drei Säulen der empirischen Prozesssteuerung“ [19, p. 4] Es geht bei Scrum darum Transparenz zu schaffen, um das Vorgehen bewerten und anpassen zu können. Ein Kollege hat passend hierzu einen Satz von einem Seminar mitgebracht: „Scrum löst deine Probleme nicht von alleine. Es sorgt nur dafür, dass sie sichtbar werden und wehtun.“ Daran schließt sich folgender Gedanke an: „Einsicht ist der erste Schritt zur Besserung.“ Patrick Rehder 16 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Der Scrum Guide enthält eine interessante Beschreibung: „Scrum ist ein Framework, dass die Entwicklung komplexer Produkte unterstützt.“ [19, p. 5] Scrum kann also zur Entwicklung von Produkten genutzt werden. Damit ist es nicht auf die Softwareentwicklung beschränkt. Der Erklärung von Scrum als Begriff bleibt der Scrum Guide jedoch schuldig. Übersetzt bedeutet er Gedränge – und zwar im Kontext der Sportart Rugby. „Zwei Mannschaften stehen sich in einem kreisförmigen Gebilde […] gegenüber und versuchen gemeinschaftlich den Gegner daran zu hindern, Raum zu gewinnen […].“ [14, p. 10] Die Idee, Rugby metaphorisch zu nutzen, stammt nicht von Ken Schwaber oder Jeff Sutherland7 selbst, sie entspringt einem Artikel, der die Beiden faszinierte. [21, p. 2] Hirotaka Takeuchi und Ikujiro Nonaka beschrieben in „The New New Product Development Game“, dass eine hohe Qualität, geringe Kosten und die Abgrenzung zu anderen Produkten alleine nicht ausreichen, um sich auf dem heutigen Markt (1980er) hervorzutun. Es ist ebenfalls nötig schnell und flexibel zu agieren. Der „Rugby“-Ansatz (auch ganzheitlicher Ansatz genannt) verspricht diese Anforderungen an die Produktentwicklung besser zu erfüllen – ein Team versucht gemeinsam als Einheit voranzukommen. [22, pp. 2, 3] Unter der Überschrift „Moving the Scrum downfield“ erläutern sie, welche Eigenschaften der Produktentwicklungsprozess in führenden Unternehmen aufweist. [22, p. 4] Der Begriff „Scrum“ wird in dieser Überschrift das erste Mal erwähnt. Abbildung 4 - Scrum: „Der Begriff als Zeichnung“ [www.scrum-kompakt.de] 7 Ken Schwaber und Jeff Sutherland sind die Schöpfer von Scrum. Patrick Rehder 17 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis In den folgenden Unterkapiteln werden die einzelnen Bestandteile vom Scrum Framework erläutert. Da sich einige der betrachteten Begriffe gegenseitig bedingen, soll Tabelle 3 die Orientierung erleichtern: Rollen Seite Ereignisse Seite Artefakte Seite Product Owner 18 Sprint 21 Vision 25 Scrum Master 19 Sprint Planning 1 + 2 22 Sprint Ziel 26 Entwicklungs-Team 19 Grooming 22 Product Backlog 27 Kunde 20 Daily Scrum 23 Sprint Backlog 28 Anwender 20 Sprint Review 23 Impediment Backlog 29 Manager 20 Sprint Retrospektive 24 Releaseplan 29 Definition of Done 29 Produkt-Inkrement 30 Tabelle 3 - Scrum: „Register der Bestandteile“ 2.2.1. Rollen Rollen werden im Rahmen von Scrum als Container für Verantwortlichkeiten gesehen. Es ist nicht möglich, in eine Rolle eingesetzt zu werden. Der betroffene Mitarbeiter muss die Rolle freiwillig übernehmen; die Entscheidung liegt bei ihm. Es existiert auch keine Idealbesetzung für eine Rolle durch eine bestimmte Position8. [14, pp. 73-75] Zu den Rollen im Detail: Product Owner, Scrum Master und Entwicklungs-Team sind im offiziellen Scrum Guide [19, pp. 5-8] aufgeführt. Kunde, Anwender und Manager werden zusätzlich von Boris Gloger [14, pp. 14, 15] genannt. Product Owner Der Product Owner (PO) ist verantwortlich für die Eigenschaften und die Wertschöpfung des Produkts. Hierzu erledigt er die folgenden Aufgaben: Er entwickelt die Vision, um alle am Projekt beteiligten Personen anzutreiben und für ein gemeinsames Verständnis zu sorgen. Er vermittelt die Bedeutung und Dringlichkeit des Projekts. Er erstellt, verbessert und entfernt Einträge im Product Backlog gemeinsam mit dem Entwicklungs-Team. 8 Er priorisiert die Einträge im Product Backlog nach dessen Geschäftswert. Position meint in diesem Fall eine Position in einem Unternehmen, wie Abteilungsleiter oder Vorstand. Patrick Rehder 18 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Er steht als primärer Ansprechpartner für fachliche Fragen vom Entwicklungs-Team zur Verfügung. Er nimmt die vom Entwicklungs-Team umgesetzten Einträge des Product Backlogs im Sprint Review ab. [14, p. 95] Dies geschieht unter Berücksichtigung der Akzeptanztests und der Definition of Done. Er beendet das Projekt, wenn die Wirtschaftlichkeit nicht mehr gegeben ist. [23, p. 221] Scrum Master Der Scrum Master ist verantwortlich für die korrekte Anwendung von Scrum und der Beseitigung von Impediments (deutsch: Hindernisse). Hierzu erledigt er die folgenden Aufgaben: Er sorgt dafür, dass Scrum von allen Beteiligten verstanden und gelebt wird. Er pflegt das Impediment Backlog und sorgt dafür, dass die darin enthaltenen Impediments gelöst werden. Er unterstützt das Entwicklungs-Team und den Product Owner, im Sinne von „fördern“, nicht im Sinne von „Aufgaben übernehmen“. Letzteres soll die Ausnahme bleiben. [14, p. 112] Der Scrum Master lässt sich gut mit einem Trainer vergleichen. Beide schaffen ein ideales Umfeld für ihr Team und sorgen dafür, dass das Team zu Höchstleistungen aufläuft. Entwicklungs-Team Das Entwicklungs-Team ist dafür verantwortlich, dass alle Einträge im Sprint Backlog zum Ende des Sprints fertiggestellt sind. Hierzu werden folgende Aufgaben vom Entwicklungs-Team bewältigt: Das Entwicklungs-Team organisiert sich selbst. Es arbeitet nicht auf Anweisung von „Oben“. Das Entwicklungs-Team hält täglich ein Daily Scrum ab. Das Entwicklungs-Team schätzt den Arbeitsumfang der Einträge des Product Backlogs. Das Entwicklungs-Team stellt das Sprint Backlog auf Basis der verfügbaren Kapazität9 zusammen und gibt die Zusage, alle Einträge im kommenden Sprint fertigzustellen. Das Entwicklungs-Team erstellt im Sprint Planning 2 Aufgaben zu den Einträgen im Sprint Backlog. Das Entwicklungs-Team demonstriert die fertiggestellten Einträge des Sprint Backlogs im Sprint Review. Ein Entwicklungs-Team muss interdisziplinär aufgestellt sein. Es müssen alle Kompetenzen und Fertigkeiten zur Bewältigung des Projekts vorhanden sein. Dies ist hinsichtlich der Größe des Entwicklungs-Teams zu berücksichtigen. Das Entwicklungs-Team darf nicht zu klein sein, da dies die Wech9 Die Kapazität setzt sich aus der Anzahl der Entwickler und ihrer verfügbaren Zeit zusammen. Bekannte Abwesenheiten, wie Fortbildungen, Urlaub und private Angelegenheiten sind abzurechnen. Patrick Rehder 19 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis selwirkungen innerhalb des Teams reduziert; aber auch nicht zu groß, da dies einen erhöhten Koordinationsaufwand bedeutet. Der Scrum Guide nennt drei Personen als Minimum und sieben Personen als Maximum. [19, p. 6] Hinsichtlich ihrer Bezeichnung werden alle Mitglieder des Entwicklungs-Teams als Entwickler bezeichnet. Egal ob sie mehr entwickeln, eher testen oder sich lieber um die Architektur kümmern. [19, p. 6] Kunde Der Kunde ist für die Finanzierung des Projekts verantwortlich. Hierfür verlangt er einen Gegenwert: die zu entwickelnde Software. Der Wert für den Kunden entsteht durch den Nutzen, den die Software erbringt. [14, pp. 118, 119] Es bietet sich meist an, dass die Rolle des Product Owners von einem Kunden besetzt wird. Dies ist jedoch nicht zwingend notwendig. Eine Trennung zwischen Kunde und Product Owner hat den Vorteil, dass der Product Owner damit näher ans Team rückt; er ist schließlich kein „Externer“. [14, pp. 118, 119] Anwender Die Rolle des Anwenders bringt keine Verantwortung mit sich. Er ist derjenige, der das Produkt benutzen wird. Deswegen stellt er eine wesentliche Informationsquelle dar, die aktiv vom Team abgerufen werden soll. Letztlich soll die zu erstellende Anwendung einen Nutzen für den Kunden generieren. Dieser Nutzen wird jedoch maßgeblich durch den Anwender beeinflusst. Nur wenn die Software vom Anwender ohne Probleme eingesetzt werden kann, kann der beabsichtigte Nutzen generiert werden. [14, pp. 120, 121] Manager Der Manager ist dafür verantwortlich, die idealen Rahmenbedingungen für alle Scrum Teams zu schaffen. Hierzu übernimmt er die folgenden Aufgaben: Er beseitigt die vom Scrum Master aufgezeigten Impediments, da er über die notwendigen Befugnisse verfügt. Er kümmert sich um das Umfeld der Scrum Teams. Beispielsweise ermöglicht er das Bereitstellen von Büroausstattung und Infrastruktur. Er beobachtet die Scrum Teams und nimmt sich Zeit für sie. Da sich das Scrum Team selbst organisiert befürchten viele Manager, dass sie überflüssig werden. Vor allem das mittlere Management hegt diese Ängste. Sie sind jedoch unbegründet. Das mittlere Management kann die Rolle Manager annehmen. Es ist jedoch umzudenken: Aus anweisenden Führungskräften werden unterstützende Führungskräfte. Sie empfangen und verarbeiten Impulse aus den Scrum Teams, anstatt Anweisungen von Oben zu erteilen. [14, pp. 121, 124] Patrick Rehder 20 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis 2.2.2. Ereignisse Für jedes Ereignis wird in Scrum ein Start- und Endzeitpunkt definiert. Das sich ergebende Zeitfenster soll dafür sorgen, dass Besprechungen nicht ausufern und Ereignisse besser in den Tagesablauf eingeplant werden können. Wenn das Zeitfenster nicht ausreicht, muss ein neues vereinbart werden – das bestehende Zeitfenster wird nicht einfach verlängert. Dieses Vorgehen wird in Scrum als Timeboxing bezeichnet. Damit keine Zeit von Kollegen verschwendet wird ist außerdem Pünktlichkeit geboten. [19, p. 8], [14, p. 183] Sprint Der Sprint stellt das größte Zeitfenster im Scrum Prozess dar und dient als Container für die Produktentwicklung und kleinere Ereignisse. In der Praxis wird die Länge üblicherweise in Wochen festgelegt. Ein Sprint dauert entweder eine, zwei, drei oder vier Wochen, wobei die Obergrenze von einem Monat durch den Scrum Guide festgelegt wird. [19, p. 8] Die Sprintdauer soll während eines Projekts immer gleich sein, um für Kontinuität und Sicherheit zu sorgen. Aus diesem Grund haben Ereignisse im Sprint auch ihren festen Platz. Ein Sprint beginnt immer mit dem Sprint Planning und endet mit dem Sprint Review und der Retrospektive. Außerdem hält das Entwicklungs-Team an jedem Tag, zur selben Uhrzeit ein Daily Scrum ab. Einzig das Grooming (deutsch: Körperpflege) hat keinen festen Zeitpunkt oder Rhythmus. Außerdem bietet der Sprint den nötigen Raum für eine kontinuierliche Verbesserung. Im Sprint sind die Phasen vom Shewhart Cycle zu erkennen: plan, do, check, act (siehe Tabelle 4). Beim Shewhart Cycle handelt es sich um ein anerkanntes Vorgehen, welches bei mehrfacher Iteration sowohl Prozess, als auch Produkt verbessern kann. Bekannt gemacht wurde der Shewhart Cycle in den 50ern durch Dr. W. Edwards Deming, weswegen er auch unter dem Namen Deming Cycle anzutreffen ist. [14, pp. 48, 49] Sprint Grooming Sprint Planning 1 + 2 Produktentwicklung Daily Scrum Shewhart Cycle plan do Sprint Review check Sprint Retrospektive act Tabelle 4 - Scrum: „Der Shewhart Cycle im Sprint“ [14, p. 49] Zeitlich betrachtet steht der größte Teil des Sprints für die eigentliche Produktentwicklung zur Verfügung – etwa 80%. In der folgenden Tabelle 5 ist eine Rechnung abgebildet, die auf Basis eines vierwöchigen Sprints, die empfohlenen Zeitfenster je Ereignis darstellt und die verbleibende Zeit zur Produktentwicklung berechnet. Patrick Rehder 21 >>> Grundlagen: Agile Softwareentwicklung 160,00 Stunden = Master-Thesis (100%) Stunden im Sprint Stunden Stunden Stunden Stunden Stunden Stunden (2,5%) (2,5%) (7,5%) (≈3%) (2,5%) (≈2%) Sprint Planning 1 Sprint Planning 2 Grooming Daily Scrums Sprint Review Sprint Retrospektive 128,25 Stunden (≈80%) verbleibende Zeit zur Produktentwicklung 4,00 4,00 12,00 4,75 4,00 3,00 (4 Wochen á 40 Stunden) (5-10% je Sprint [14, p. 184]) (19 Tage10 á 15 Minuten) Tabelle 5 - Scrum: „Zeit zur Produktentwicklung in einem vierwöchigen Sprint“ [19] Als Ergebnis soll jeder Sprint ein potentiell auslieferbares Produkt-Inkrement liefern. [19, p. 16] Sprint Planning 1 + 2 Bevor mit der Entwicklung begonnen werden kann, ist zu bestimmen, was in diesem Sprint zu erledigen ist und wie dies getan werden soll. Hierzu dient das Sprint Planning. Im ersten Teil vom Sprint Planning wird ausschließlich das „was“ betrachtet. „Der Product Owner stellt dem Entwicklungs-Team die geordneten [und geschätzten] Einträge des Product Backlogs vor und das gesamte Scrum Team verschafft sich gemeinsam ein Verständnis über die […] zu verrichtende Arbeit.“ [19, p. 10] Danach erfolgt die Auswahl der fertigzustellenden Backlog Items durch das Entwicklungs-Team. Entscheidend sind hierbei Priorität und Arbeitsumfang der Backlog Items. Letzteres steht im Bezug zur Kapazität des Entwicklungs-Teams. In den ersten Sprints muss das Entwicklungs-Team seine Kapazität abschätzen. Später ist es möglich die Auswahl anhand von Erfahrungen der vergangenen Sprints zu treffen. Nach der Auswahl sucht das Scrum Team gemeinsam eine passende Beschreibung für diesen Sprint: das Sprint Ziel. Der zweite Teil dreht sich um das „wie“. Sprich: Welche Aufgaben sind zu erledigen, um die ausgewählten Backlog Items fertigzustellen. Der Product Owner muss beim Sprint Planning 2 nicht zwingend anwesend sein. Ist er anwesend, können jedoch Fragen des Entwicklungs-Teams direkt geklärt werden. Für beide Planungsrunden gilt: „Nicht der Plan, […] die Artefakte [oder] die Dokumente […] sind der Kern. Am Ende zählt nur das Bild in den Köpfen der Beteiligten.“ [14, p. 134] Grooming In der Praxis finden sich häufig alternative Bezeichnungen zu Grooming [14, p. 184]: 10 Estimation Meeting Pre-Planning Meeting Release-Planning Meeting Die 19 Tage ergeben sich daraus, dass am Tag des Sprint Plannings kein Daily Scrum durchgeführt wird. Patrick Rehder 22 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Aus diesen Begriffen lässt sich schon besser deuten, was sich hinter Grooming verbirgt. Beim Grooming wird das Product Backlog durch den Product Owner und das Entwicklungs-Team gepflegt. Als wichtigster Bestandteil werden die Backlog Items vom Entwicklungs-Team auf ihren Arbeitsumfang geschätzt. Die Schätzung erfolgt relativ in einer imaginären Einheit. Als Referenz dient hierbei ein leicht zu überblickendes Backlog Item. Der Grund für die relative Schätzung liegt darin, dass nur der Umfang des Backlog Items betrachtet werden soll und nicht der Aufwand. Es soll das „was“ und nicht das „wie“ betrachtet werden. Für das Grooming gibt es keine festen Vorgaben, wie oft und wann es in einem Sprint stattfinden muss. Zu Beginn eines Projekts kann es sinnvoll sein, mehrere Termine anzusetzen, da das Product Backlog erfahrungsgemäß einer größeren Veränderung unterliegt. Später kann es genügen, ein Grooming je Sprint durchzuführen. [14, p. 185] Es ist jedoch wichtig, dass das Grooming im Sprint Planning berücksichtigt wird, damit der Sprint weiterhin planbar ist. Daily Scrum Das Daily Scrum dient zur Abstimmung des Entwicklungs-Teams untereinander. Das Daily Scrum wird täglich durchgeführt und dauert nie länger als 15 Minuten. In diesen 15 Minuten muss jeder Entwickler die folgenden drei Fragen möglichst knapp beantworten [14, p. 200], [19, p. 11]: Was habe ich seit dem letzten Daily Scrum erreicht? Was will ich bis zum nächsten Daily Scrum erreichen? Welche Impediments sind dabei im Weg? Wenn Probleme oder Fragen auftauchen, die nicht innerhalb weniger Sekunden besprochen werden können, müssen diese unabhängig vom Daily Scrum geklärt werden. Sprint Review Im Sprint Review demonstriert das Entwicklungs-Team die fertiggestellten Backlog Items. Die Vorbereitung hierfür soll möglichst gering ausfallen. Zur Orientierung nennt Ken Schwaber den maximalen Zeitraum einer Stunde [24, p. Appendix A]. Dies ist eine realistische Obergrenze, denn die Entwickler müssen lediglich festlegen, in welcher Reihenfolge welcher Entwickler welches Backlog Item vorstellt. Außerdem werden nur abgeschlossene Backlog Items präsentiert. Der Geschäftswert eines Backlog Items ergibt sich ausschließlich aus der vollständig brauchbaren Funktion. [14, p. 209] Um die Funktion darzustellen, wird das aktuelle Produkt-Inkrement genutzt. Beim Sprint Review soll sich herausstellen, was funktioniert und was nicht – dies ist im Sinne der Transparenz. Nach der Demonstration entscheidet der Product Owner ob ein Backlog Item als fertiggestellt gilt oder nicht. Die Vorführung ist aber nicht nur für den Product Owner interessant. Sie kann von allen Interessenten dazu genutzt werden, sich über den aktuellen Stand des Projekts zu informieren. Außerdem sollen alle relevanten Interessenvertreter (Product Owner, Kunde, Anwender) über ihre Eindrücke berichten, um daraus neue Einträge im Product Backlog zu gewinnen oder vorhandene zu aktualisieren. Patrick Rehder 23 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Sprint Retrospektive Die Idee der Retrospektive bringt Holger Koschek gut auf den Punkt: „Sie ist der Schlüssel zur Prozessverbesserung, gibt die Teamstimmung wieder […] [und] deckt Motivationsprobleme auf. Wer auf die Retrospektive verzichtet, […] verzichtet auf die Möglichkeit sich kontinuierlich zu verbessern und sein Projektvorgehen an veränderte Bedingungen anzupassen.“ [10, p. 25] Jeder Sprint endet mit einer Retrospektive – einem Rückblick11. In diesem Ereignis beantwortet das Scrum Team die folgenden Fragen im Hinblick auf den vergangenen Sprint [23, pp. 94-100]: Welche wichtigen Ereignisse gab es? Was lief gut? Was kann verbessert werden? Die erste Frage dient dazu, sich den Sprint anhand wichtiger Ereignisse wieder ins Gedächtnis zu rufen. Durch die zweite Frage werden gute Ereignisse und Abläufe aufgezeigt und damit bewusst vom Team wahrgenommen. Der letzte Punkt enthält den eigentlichen Kern der Retrospektive: das Finden von Möglichkeiten zum Verbessern. Boris Gloger nennt einen Sechs-Punkte-Ablauf, der seiner Meinung nach den gelungenen Ablauf einer Retrospektive garantiert [14, pp. 216-226]: 1. Sicherheit schaffen 2. Fakten sammeln 3. Funktionierende Prozesse finden 4. Nicht funktionierende Prozesse finden 5. Kompetenz zur Veränderung bestimmen 6. Priorisierung Zum 1. Schritt: Jeder Teilnehmer soll im Rahmen einer Retrospektive frei und offen reden können, ohne dass ihm daraus ein Nachteil entsteht. Durch die explizite Abhandlung dieses Schritts steigt die Wahrscheinlichkeit, dass alle Mitglieder des Scrum Teams ihre wahre Meinung kundtun. Es gilt: Jede Meinung ist willkommen und bereichert die Retrospektive. Die Schritte zwei bis vier beantworten schlicht die oben genannten Fragen. Nachdem die Probleme im vierten Schritt identifiziert wurden, geht es im fünften Schritt darum, die Probleme in zwei Listen einzuteilen. Als Kriterium gilt, ob das jeweilige Problem vom Team behandelt werden kann oder nicht. Der letzte Schritt wird vom Team dazu genutzt, die Probleme je Liste zu priorisieren. 11 Retrospektive (lat. retrospectare „zurückblicken“) [wikipedia.org] Patrick Rehder 24 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Die Retrospektive wird nicht dazu genutzt Maßnahmen zu bestimmen. Dies wird im anschließenden Sprint Planning gemacht. Nur so besteht die Möglichkeit Maßnahmen direkt einplanen zu können. [25, p. 21] 2.2.3. Artefakte Alle vom Scrum Team erzeugten Resultate werden als Artefakt bezeichnet. Die Übersicht in Tabelle 6 zeigt, dass je Quellen unterschiedlich viele Artefakte genannt werden: Scrum Guide [19, pp. 13-16] Boris Gloger [14, pp. 16, 17] wibas Scrum Browser [26] Produkt Backlog Product Backlog Product Backlog Sprint Backlog Sprint Backlog Sprint Backlog Inkrement Das Produkt-Inkrement Increment Vision Product Backlog Item Sprint Goal Sprint Goal Selected Product Backlog Die Aufgaben Der Releaseplan Das Impediment Backlog Definition of Done Tabelle 6 - Scrum: „Übersicht möglicher Artefakte“ Im Folgenden erläutert werden: Product Backlog, Sprint Backlog, Produkt-Inkrement, Vision, Sprint Ziel, Releaseplan, Impediment Backlog und Definition of Done. Drei von Boris Gloger genannte Artefakte werden nicht als eigenständiges Artefakt betrachtet. Die Product Backlog Items sind Bestandteil vom Product Backlog und die Aufgaben sind Bestandteil vom Sprint Backlog; diese werden im Rahmen ihres Elternelements betrachtet. Das Zwischenprodukt zwischen dem ersten und zweiten Teil vom Sprint Planning wird als Selected Product Backlog bezeichnet. Damit handelt es sich um eine spezielle Bezeichnung vom Sprint Backlog zu einem bestimmten Zeitpunkt, was nicht als eigenständiges Artefakt anzusehen ist. Vision „Wenn Du ein Schiff bauen willst, dann trommle nicht Männer zusammen um Holz zu beschaffen, Aufgaben zu vergeben und die Arbeit einzuteilen, sondern lehre sie die Sehnsucht nach dem weiten, endlosen Meer.“ ― Antoine de Saint-Exupéry (1900-44), französischer Flieger und Schriftsteller Ein Scrum Projekt beginnt mit einer Vision. Sie gibt dem Projekt einen Sinn und definiert das gemeinsame Ziel. [24] Die Vision muss möglichst präzise und klar sein, damit sie leicht aufgenommen wird und in Erinnerung bleibt. Sie soll aber nicht beschreiben, wie das Ziel zu erreichen ist. Dies würde den Raum der Lösungsmöglichkeiten unnötig einschränken. [14, p. 141] Die Vision wird vom Product Owner entwickelt und kommuniziert. Patrick Rehder 25 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Eine Vision zu entwickeln und zu präzisieren ist keine leichte Aufgabe. Zur Orientierung kann beispielsweise das von Jim Highsmith entwickelte Schema genutzt werden [14, p. 143] [27]: Für <Welche Kunden?> die <Welches Bedürfnis haben die Kunden?> ist <Wie soll das Produkt heißen?> eine <Welcher Produktkategorie gehört es an?> die <Welchen besonderen Nutzen bringt das Produkt?> anders als <Welche Alternative gibt es auf dem Markt?> unser Produkt <Welches Alleinstellungsmerkmal hat unser Produkt zur Alternative?> Hier beispielhaft ausgefüllt: Für Besitzer eines Smartphones mit Android die ihre Daten schützen wollen ist FileSafe eine App die ein bestimmtes Verzeichnis verschlüsselt anders als Encrypt/Decrypt wird unser Produkt über Werbung finanziert, nicht über einen Kaufpreis. Sprint Ziel Mit dem Sprint Ziel setzt sich das Scrum Team in jedem Sprint eine schwierige, aber durchführbare Aufgabe. Es bietet dem Scrum Team die Möglichkeit, sich gemeinsam auf etwas zu konzentrieren. So steht das zu erreichende Ziel im Raum und nicht die zu erledigenden Aufgaben. Außerdem sorgen leichter Druck und eine echte Herausforderung für mehr Leistung im Scrum Team, dies zeigt die Kreativitätsforschung, wie Boris Gloger anführt. [14, p. 188] Unabhängig von Scrum sind gute Ziele SMART; so auch die Sprint Ziele [14, p. 189] [28, p. 120]: Spezifisch (Ist das Ziel verständlich und nicht zu allgemein?) Messbar (Kann der Erfolg des Ziels gemessen werden?) Akzeptiert (Hat das Ziel einen Sinn, eine Bedeutung?) Realistisch (Ist das Ziel überhaupt erreichbar?) Terminiert (Hat das Ziel einen zeitlichen Rahmen?) Das Sprint Ziel wird im Sprint Planning 1 zwischen Product Owner und Entwicklungs-Team auf Basis der ausgewählten Backlog Items vereinbart. Patrick Rehder 26 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Product Backlog Das Product Backlog beschreibt „was“ entwickelt werden soll. Die gewünschten Eigenschaften, Erweiterungen, Funktionen und Merkmale des Produkts werden in Form von Backlog Items erfasst. [26] Ein Product Backlog Item verfügt hierzu über die folgenden Attribute [19, p. 14]: Beschreibung Priorität (durch den Product Owner festgelegt) Arbeitsumfang (durch das Entwicklungs-Team geschätzt) Für die Beschreibung von Backlog Items können zum Beispiel User Stories genutzt werden [29]: Als <Benutzerrolle> will ich <das Ziel>[, so dass <Grund für das Ziel>]. Hier beispielhaft ausgefüllt: Als Kunde will ich mich anmelden können. Als Kunde will ich mich anmelden können, so dass ich meine bisherigen Bestellungen einsehen kann. Die Form des Product Backlogs ist nicht entscheidend und wird nicht vorgegeben. Im Kapitel 2.2.1 Rollen wurde bereits erwähnt, dass der Product Owner auf Basis des Geschäftswerts die Priorität der Backlog Items festlegt. Ein Backlog Item, dass nach der Umsetzung einen großen Geschäftswert liefert, ist zu bevorzugen. Hierdurch ergibt sich ein optimales Kosten-NutzenVerhältnis. Da es in der Praxis oft Missverständnisse zum Product Backlog gibt, führt Boris Gloger fünf Punkte auf, die nicht auf ein Product Backlog zutreffen [14, pp. 146, 147]: Das Product Backlog besteht nicht aus Anforderungen. Das IEEE definiert „Anforderung“ wie folgt: „Eine Anforderung ist: (1) Eine Bedingung oder Fähigkeit, die von einem Benutzer (Person oder System) zur Lösung eines Problems oder zur Erreichung eines Ziels benötigt wird. (2) Eine Bedingung oder Fähigkeit, die ein System oder Teilsystem erfüllen oder besitzen muss, um einen Vertrag, eine Norm, eine Spezifikation oder andere, formell vorgegebene Dokumente erfüllen. (3) Eine dokumentierte Repräsentation einer Bedingung oder Eigenschaft gemäß (1) oder (2).“ [30, p. 11] Ein Backlog Item als Anforderung zu bezeichnen, ist nicht falsch. Der Inhalt eines Backlog Items wird durch Punkt (1) beschrieben und die schriftliche Repräsentation über Punkt (3). Boris Gloger meint an dieser Stelle, dass ein Backlog Item nicht beschreiben darf, wie etwas umzusetzen ist: „Auf der Produkt-Katalog-Hauptseite gibt es ein Displayfeld für den Preis.“ Was er als Patrick Rehder 27 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis klassische Anforderung bezeichnet. Es muss wie folgt heißen: „Als Kunde kann ich den Preis eines Buches einfach erkennen, so dass ich entscheiden kann, ob ich das Buch kaufe.“ [14, p. 146] Das Product Backlog ist keine Spezifikation eines Produktes. Eine Spezifikation ist sehr detailliert. Dies geht aus der Definition von Cynthia Stackpole im Rahmen der Projektmanagementmethode PMBOK hervor: “Specification. A document that specifies, in a complete, precise, verifiable manner, the requirements, design, behavior, or other characteristics of a system, component, product, result, or service and, often, the procedures for determining whether these provisions have been satisfied. […]” [31, p. 794] Ein Product Backlog soll diesen Detailgrad nicht erreichen. Es soll vor allem als Gedächtnisstütze dienen und Diskussionen provozieren. Das Product Backlog ist nie vollständig. Der Satz findet sich im Scrum Guide – nahezu wörtlich: „Ein Product Backlog ist niemals vollständig.“ [19, p. 14] Mit nie vollständig ist gemeint, dass das Product Backlog nie fertig ist. Es ist immer möglich neue Backlog Items aufzunehmen und vorhandene Backlog Items anzupassen oder zu verwerfen. Das Product Backlog wird nicht alleine vom Product Owner geschrieben. Der Product Owner ist für die Pflege des Product Backlogs verantwortlich. Er muss sie jedoch nicht selber durchführen. Den Arbeitsumfang eines Backlog Items einzuschätzen ist ihm sogar untersagt, da er nicht über die notwendige Kompetenz verfügt. Es ist von daher möglich, dass das Entwicklungs-Team dem Product Owner dabei hilft, die Ideen in Form von Backlog Items zu erfassen. Es gibt keine technischen Product Backlogs. Eine der wichtigsten Eigenschaften von Product Backlog Items ist es, dass sie einen Geschäftswert liefern. Bei fachlichen Funktionen ist dies der Fall; bei rein technischen in der Regel nicht. Ein Refactoring kann beispielsweise den Aufwand für andere Aufgaben reduzieren. Es liefert aber für sich gesehen keinen Nutzen für den Kunden. Vielmehr müsste das Refactoring, als Teil der Aufgaben gesehen werden, die hierdurch schneller umgesetzt werden kann. Sprint Backlog Das Sprint Backlog besteht aus den im Sprint Planning 1 ausgewählten Backlog Items und den zugehörigen im Sprint Planning 2 definierten Aufgaben. Damit stellt das Sprint Backlog die Grundlage für die Entwicklung innerhalb des Sprints dar. Das Entwicklungs-Team bedient sich an den Aufgaben und arbeitet diese über den Sprint ab. Patrick Rehder 28 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Impediment Backlog Das Impediment Backlog wird vom Scrum Master gepflegt und enthält alle Impediments die im Laufe des Projekts identifiziert wurden und den Projektverlauf stören. Insbesondere das Daily Scrum und die Sprint Retrospektive sind Ereignisse in denen Impediments benannt, beziehungsweise aufgedeckt werden. Für die Struktur eines Impediment Backlogs nennt Holger Koschek12 die folgenden vier Spalten [23, p. 161]: Bezeichnung vom Impediment Wer kann das Impediment beseitigen? (Scrum Master, Scrum Team oder Andere) Wann wurde das Impediment bekannt? Wann wurde das Impediment gelöst? Die Form ist nicht vorgegeben. Dem Scrum Master stehen alle Möglichkeiten offen. Releaseplan Der Releaseplan ergibt sich aus drei Faktoren [14, p. 130]: Reihenfolge der Backlog Items auf Basis der Priorität geschätzter Arbeitsumfang der Backlog Items Kapazität13 des Entwicklungs-Teams Aus diesen Faktoren kann errechnet werden, welche Funktionalität voraussichtlich in welchem Sprint fertiggestellt wird. Der Ausblick erfolgt auf Basis des derzeitigen Wissens und muss nach jeder Änderung der Faktoren neu berechnet werden. Hierbei wird der Releaseplan jedes Mal etwas genauer. Der Arbeitsumfang von Backlog Items wurde auf Basis neuer Erkenntnisse noch einmal neu geschätzt oder die Kapazität des Entwicklungs-Teams wurde nach einem Sprint aktualisiert. Die Pflege obliegt dem Product Owner. Er hat schließlich ein Interesse daran zu wissen, welche Funktionen in einem Release enthalten sein werden. Bei einem Release stellt der Product Owner dem Kunden das aktuelle Produkt-Inkrement zur Verfügung. [26] Definition of Done Die Definition of Done soll für ein gemeinsames Verständnis im Scrum Team sorgen, wann ein Backlog Item fertig ist. Für das Produkt bedeutet dies, dass die durch fertige Backlog Items geforderten Funktionen uneingeschränkt zur Verfügung stehen müssen. Das gemeinsame Verständnis ist insbesondere für die Kommunikation zwischen Entwicklungs-Team und Product Owner wichtig. Schließlich nimmt der Product Owner die Backlog Items im Sprint 12 13 Holger Koschek arbeitet als Berater und Coach für agile Vorgehensweisen bei der Holisticon AG. [23, p. ii] Anmerkung: Die Kapazität wird bei Scrum in Form der Velocity (deutsch: Geschwindigkeit) erfasst. Patrick Rehder 29 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Review ab. Dem Entwicklungs-Team muss folglich bewusst sein, was der Product Owner verlangt. Außerdem hilft die Definition of Done dem Entwicklungs-Team beim Schätzen der Backlog Items. Sie gibt an, was bei der Entwicklung bedacht werden muss und damit auch was den Arbeitsumfang des Backlog Items beeinflusst. [19, p. 16] Die Definition of Done enthält die nicht-funktionalen Anforderungen14. [26] Bei einem frischen Scrum Team wird der Umfang der Definition geringer ausfallen, als bei einem erfahrenen Scrum Team. Gemäß dem Prinzip der Verbesserung wird die Definition of Done über die Zeit ausgebaut und damit für eine Qualitätssteigerung gesorgt. [19, p. 17] Produkt-Inkrement Der fertige Teil eines Produkts wird bei Scrum als Produkt-Inkrement bezeichnet. Es setzt sich aus den Funktionen aller fertiggestellten Backlog Items unter Berücksichtigung der Definition of Done zusammen. Das Produkt-Inkrement muss zum Ende jedes Sprints in einem einsatzfähigen Zustand sein, so dass der Product Owner es ohne weitere Anpassungen an den Kunden ausliefern kann – auch wenn die Auslieferung tatsächlich nicht nach jedem Sprint erfolgt. [19, p. 16] 14 Eine ausführliche Erläuterung zu nicht-funktionalen Anforderungen befindet sich im ISO/IEC 25010:2011. Patrick Rehder 30 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis 2.2.4. Das Zusammenspiel Nachdem die einzelnen Bestandteile betrachtet wurden, wird der Ablauf im Gesamten anhand des Artikels „The Scrum Framework in 30 Seconds“ skizziert [32]: 1. Der Product Owner entwickelt eine Vision vom zu entwickelnden Produkt. 2. Der Product Owner erstellt mit dem Entwicklungs-Team eine Liste der gewünschten Funktionen: das Product Backlog. 3. Die einzelnen Einträge werden vom Entwicklungs-Team auf ihren Umfang geschätzt und durch den Product Owner über ihren Geschäftswert priorisiert. 4. Im ersten Teil des Sprint Plannings wählt das Entwicklungsteam die wichtigsten Einträge aus dem Product Backlog aus und erstellt damit das Sprint Backlog. 5. Im zweiten Teil des Sprint Plannings entscheidet das Entwicklungs-Team über die Umsetzung der Einträge des Sprint Backlogs und zerteilt diese hierzu in kleine Aufgaben. 6. Die gefundenen Aufgaben werden in einem definierten Zeitraum (ein bis vier Wochen) abgearbeitet: dem Sprint. 7. Jeden Tag informiert sich das Entwicklungs-Team gegenseitig im Daily Scrum über den Fortschritt und aufgetretene Probleme. 8. Die Pflege des Product Backlogs erfolgt während des Sprints im sogenannten Grooming. 9. Die Entwicklung endet mit dem Sprint Review, hier werden die fertiggestellten Einträge des Sprint Backlogs am Produkt-Inkrement vorgestellt. Die umgesetzten Funktionen müssen ohne Anpassungen produktiv eingesetzt werden können. 10. Der Sprint endet mit einer Retrospektive. Diese wird vom Scrum Team dazu genutzt den vergangenen Sprint zu reflektieren und primär Maßnahmen zur Steigerung der Produktivität zu finden. 11. Es beginnt ein neuer Sprint (siehe Schritt 4). Dieser Kreis wird solange wiederholt bis das Kosten-Nutzen-Verhältnis kippt. Dies ist der Fall, wenn der zu erwartende Geschäftswert die Entwicklung nicht mehr rechtfertigt. Es existieren viele Grafiken zu Scrum, die den Ablauf übersichtlich darstellen. Insbesondere der wibas Scrum Browser ist zu nennen. Er bietet sowohl einen schnellen Überblick, als auch detaillierte Informationen zu den Rollen, Ereignissen und Artefakten von Scrum. Aufgrund der gelungen Übersicht wird auf eine Grafik verzichtet und auf den wibas Scrum Browser verwiesen: www.scrumbrowser.com Patrick Rehder 31 >>> Grundlagen: Agile Softwareentwicklung 2.3. Master-Thesis Feature Driven Development Feature Driven Development (FDD) ging aus einem gescheiterten Projekt für eine Bank hervor. Eine externe, namhafte Firma war mit diesem Projekt betraut. Sie konzipierte über zwei Jahre und kam letztlich zu dem Ergebnis, dass das Projekt nicht durchführbar sei. Zu diesem Zeitpunkt waren rund dreieinhalbtausend Seiten mit Modellen der zukünftigen Software entstanden, aber noch keine einzige Zeile Quelltext. Für den zweiten Versuch entwickelten Jeff De Luca und Peter Coad einen neuen Prozess, der später als Feature Driven Development bekannt wurde. Sie stellten das Projekt fertig: pünktlich und signifikant unter dem festgelegten Budget – ein glänzender Erfolg. [33, p. 1], [13, p. 150] Im Zuge dieses Erfolgs wurde Jeff De Luca von John Gage (Sun Microsystems) gebeten, das in der Praxis entwickelte Verfahren aufzuschreiben. [13, p. 149] Im Jahr 1999 erschien das Buch „Java Modeling in Color with UML“. Dessen letztes Kapitel die Überschrift „Feature-Driven Development“ [34] trägt. Ansonsten ist die Fülle an Literatur verglichen mit Scrum jedoch gering. Auch die Community (www.featuredrivendevelopment.com) macht einen verschlafenen Eindruck. Die letzten offiziellen Beiträge wurden 2008 erstellt, einzig die Liste der Zertifizierten wird aktuell gehalten. (Stand: April, 2012) Laut Jeff De Luca zeichnet sich Feature Driven Development dadurch aus, dass es die Bedürfnisse aller am Entwicklungsprozess Beteiligten berücksichtig. Alle Entwickler werden mit den Aufgabenfeldern Analyse, Design und Implementierung betraut. Aufgrund von kurzen Iterationen stellen sie häufig etwas fertig und werden dadurch regelmäßig mit neuen Aufgaben15 betraut. Manager erhalten Methoden zum Planen, Überwachen und Berichten vom Projektstatus. Außerdem wirkt das regelmäßige Fertigstellen von Programmteilen risikominimierend. Kunden und Anwender erhalten früh greifbare Ergebnisse und können sich darauf beziehen. [34, pp. 183, 184] [8, pp. xix, xxii] Zusammenfassend werden Feature Driven Development folgende Eigenschaften zugesprochen [8, p. xxii]: Das Vorgehen erfolgt iterativ, in kleinen Zyklen. In jedem der fünf Prozesse16 wird betont auf Qualität geachtet. Greifbare Ergebnisse werden regelmäßig erarbeitet. Der Projektstatus und -fortschritt wird klar und mit möglichst wenig Aufwand dargestellt. Die Begriffe der Bestandteile von Feature Driven Development sind der aktuellen Prozessbeschreibung [35] entnommen. Einzig der Chief Modeler bildet eine Ausnahme, dies wird später erläutert. Um die Orientierung zu erleichtern, wird in Tabelle 7 ein Überblick über die Begriffe von Feature Driven Development gegeben. 15 16 „Developers love new things.“ [34, p. 183] Feature Driven Development besteht aus fünf Unterprozessen, diese werden in Kapitel 2.3.2 erläutert. Patrick Rehder 32 >>> Grundlagen: Agile Softwareentwicklung Rollen Master-Thesis Seite Prozesse Seite Project Manager 33 Develop an Overall Model 36 Domain Expert 33 Build a Features List 37 Chief Modeler 34 Plan by Feature 38 Development Manager 34 Design by Feature 39 Chief Programmer 34 Build by Feature 40 Class Owner 35 Tabelle 7 - FDD: „Register der Bestandteile“ 2.3.1. Rollen Feature Driven Development verfügt über sechs Schlüsselrollen: Project Manager, Domain Expert, Chief Modeler, Development Manager, Chief Programmer und Class Owner. Im Buch „A Practical Guide to Feature-Driven Development“ werden noch neun weitere Rollen genannt. Diese werden aufgrund des Umfangs nicht in dieser Arbeit erläutert. [8, pp. 28-31] Die Übernahme einer Rolle ist nicht auf eine Person beschränkt. Es ist sowohl möglich dass eine Person mehrere Rollen einnimmt, als auch dass eine Rolle von mehreren Personen übernommen wird. Dies ist je nach Größe des Projekts und den damit einhergehenden Anforderungen an die Rolle zu überlegen. [8, p. 29] Project Manager Der Project Manager ist dafür verantwortlich den Fortschritt darzustellen, die Kosten zu beobachten, benötigte Ressourcen bereitzustellen und sich um das Projektteam zu kümmern. Er erkennt, beseitigt und verhindert Störungen, die auf das Projekt einwirken. Der Project Manager soll seine Aufgabe im Sinne eines Service verstehen. Er stellt seinem Projektteam eine ideale Umgebung zur Verfügung und sorgt dafür, dass das Projektteam effizient arbeiten kann. [8, p. 28] Domain Expert Der Domain Expert benötigt ein fundiertes Verständnis vom Fachgebiet, als auch die nötigen Fähigkeiten dieses Wissen anderen Menschen verständlich zu machen. Ist eine dieser Voraussetzungen nicht gegeben, ist der Erfolg des Projekts gefährdet. In diesem Fall geht der Domain Expert entweder von falschen Anforderungen aus oder die Entwickler verstehen ihn nicht richtig. Außerdem muss der Domain Expert im neuen Softwaresystem eine Verbesserung zur jetzigen Situation sehen. Wenn von fachlicher Seite kein Mehrwert zu erkennen ist, sollte das System auch nicht entwickelt werden. Letztlich muss der Domain Expert wissen, was sinnvoll ist und was nicht. Dies trifft auch auf den Detailgrad der Anforderungen zu. Bei Feature Driven Development werden die Anforderungen zu Beginn nicht bis ins kleinste Detail erfasst. Die Anforderungen werden über die Laufzeit des Projekts immer weiter verfeinert. Dies wiederum erfordert, dass der Domain Expert erreichbar ist. [13, p. 154] [8, p. 30] Patrick Rehder 33 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Chief Modeler In einem Interview (2007) sagte Jeff De Luca, dass er mit der Bezeichnung Chief Architect nicht mehr zufrieden sei. Er nennt die Rolle nun Chief Modeler und begründet dies damit, dass die Rolle unter dem alten Titel zu hoch gehandelt wurde. Der Chief Modeler soll die Domain Experts und Chief Programmer auf Basis seiner Erfahrung anleiten und zusammenbringen – und nicht das Design in Eigenregie entwickeln. [33, p. 4] Der Chief Modeler ist dafür verantwortlich, dass ein in sich schlüssiges Overall Design erstellt wird. Um dies zu gewährleisten benötigt er ein exzellentes technisches Verständnis, viel Erfahrung im Modellieren und ausgeprägte zwischenmenschliche Fähigkeiten. Mit diesen Eigenschaften organisiert und moderiert er die Treffen der Domain Experts und Chief Programmer, in denen gemeinsam das Overall Design entwickelt wird. Bei Meinungsverschiedenheiten stellt er die letzte Instanz dar. [8, pp. 28, 29] Feature Driven Development ist in fünf Prozesse unterteilt. Da das Overall Design bereits im ersten Prozess entwickelt wird, wird die Rolle des Chief Modelers nur in diesem Prozess benötigt. [35, pp. 1, 2] Development Manager Der Development Manager ist für die störungsfreie Arbeit der Chief Programmer untereinander verantwortlich. Sofern sich Konflikte zwischen Chief Programmern nicht direkt lösen lassen, muss der Development Manager einschreiten und eine Lösung herbeiführen. In kleineren Projekten bietet es sich an, die Rolle des Development Managers mit dem Chief Modeler oder dem Project Manager zu kombinieren. [8, p. 29] Chief Programmer Ein Chief Programmer ist an allen Prozessen von Feature Driven Development beteiligt. Hierbei muss er sich stets mit den anderen Chief Programmern abstimmen. Begonnen wird mit dem Overall Design, das die Chief Programmer zusammen mit den Domain Experts unter Leitung des Chief Modelers entwickeln. Danach bestimmen die Chief Programmer die benötigten Funktionen in Form von Features und verteilen diese untereinander. Die Features werden nicht direkt durch die Chief Programmer umgesetzt. Sie bilden hierzu Feature Teams, welche das Design im Detail und die Implementierung übernehmen. [8, p. 29] Gemäß Brooks Gesetz sorgt der Einsatz zusätzlicher Entwickler für eine Verlangsamung: “Adding manpower to a late software project makes it later.” [36, p. 25] Jeff De Luca unterstützt diese Aussage, sagt aber auch, dass es eine Ausnahme gibt. Mit leichtgewichtigen Prozessen, die Funktionalität möglichst klein und auf den Kundennutzen bezogen betrachten, ist es möglich weitere Entwickler zum Projekt hinzuzuziehen und dadurch eine Steigerung der Geschwindigkeit zu erreichen. Durch weitere Chief Programmer, können weitere Feature Teams gebildet werden, die Features parallel zu den bestehenden Feature Teams umsetzen. Diese Skalierung ist nicht beliebig möglich, da Features auch in Abhängigkeit zueinander stehen können. [34, p. 196] Patrick Rehder 34 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Class Owner Über die Rolle des Class Owners, übernimmt ein Entwickler die Verantwortung für eine oder mehrere Klassen. Er ist derjenige, der alle seine Klassen betreffenden Arbeiten durchführt. Dieses Prinzip wird als Class Ownership bezeichnet; eine Klasse gehört einem Entwickler. Feature Driven Development grenzt sich in diesem Punkt von Scrum und Extreme Programming ab. Letztere nutzen das gegenteilige Prinzip – Collective Ownership. Die Vorteile von Class Ownership und Collective Ownership sind in Tabelle 8 gegenübergestellt. Vorteile der Class Ownership Vorteile der Collective Ownership Der Verantwortliche für eine Klasse kennt sich in dieser sehr gut aus. Hierdurch kann er schnell Anpassungen vornehmen oder Auskunft über die Funktionsweise geben ohne sich erst einarbeiten zu müssen. Der Sinn, Aufbau und die Funktionsweise einer Klasse ist mehreren Entwicklern bekannt. Die Abwesenheit eines Entwicklers kann somit besser vom Team aufgefangen werden. Da eine Klasse nur von einem Entwickler bearbei- Die Verteilung von Aufgaben gestaltet sich tet wird, kann es nicht zu Versionskonflikten17 einfacher, da die Aufgaben nicht noch weiter auf kommen. einzelne Klassenbesitzer aufgeteilt werden müssen. Die Klassen eines Entwicklers weisen einen Die Auslastung der Entwickler ist einfacher zu einheitlichen Schreibstil auf. Dies sorgt für eine gewährleisten, da nicht nur bestimmte Entwickler bessere Lesbarkeit der Klassen. Änderungen durchführen dürfen. Durch die Kombination aus Verantwortung und Da die Verantwortung für den Quelltext im Team Ehrgeiz kann ein Entwickler dazu motiviert liegt, wird die Schuld im Falle eines Fehlers vom werden, seine Klassen möglichst effizient zu gesamten Team übernommen. gestalten. Da Entwickler nur ihre Klassen bearbeiten, kann Fehler werden mit einer höheren Wahrscheines nicht dazu kommen, dass ein Entwickler durch lichkeit entdeckt, da der Quelltext durch andere das Ändern einer fremden Klasse, einen Fehler Entwickler angesehen werden muss. verursacht. Tabelle 8 - FDD: „Die jeweiligen Vorteile von Class Ownership und Collective Ownership“ Sofern die Klasse eines Class Owners für die Umsetzung eines Features benötigt wird, wird der Class Owner temporär zu einem Feature Team hinzugefügt. Das Feature Team besteht aus allen Class Ownern, die zur Umsetzung eines Features benötigt werden. Das Feature wird in Gänze durch das Feature Team bearbeitet: es wird analysiert, entworfen, entwickelt, getestet und dokumentiert. [33, p. 5] [13, p. 155] [34, p. 196] [8, pp. 29, 30] [37, pp. 9-11] 17 Versionskonflikte: Eine Datei wird parallel von mehreren Personen verändert, so dass die Änderungen nachträglich zusammengeführt werden müssen. Patrick Rehder 35 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis 2.3.2. Prozesse Feature Driven Development besteht aus fünf Prozessen [35]: Develop an Overall Model, Build a Features List, Plan by Feature, Design by Feature und Build by Feature. Die Anordnung der Prozesse wird in Abbildung 5 dargestellt. Vor allem die Prozesse #4 und #5 fallen auf. Sie machen zusammen über Dreiviertel der Zeit aus und werden mindestens alle zwei Wochen erneut durchlaufen. Was auf den ersten Blick nicht aus der Grafik hervorgeht ist, dass die fünf Prozesse insgesamt auch erneut durchlaufen werden. Ein solcher Durchlauf darf maximal sechs Monate in Anspruch nehmen, danach muss eine Iteration erfolgen. [6, p. 19] Die Grafik liefert einen Hinweis darauf: Es wird zwischen initialem und fortlaufendem Anteil unterschieden wird. Abbildung 5 - FDD: „Prozessübersicht mit zeitlicher Verteilung“ [34, p. 198] Die fünf Prozesse werden auf Basis der aktuellsten Prozessbeschreibung [35] erläutert: Develop an Overall Model Im Prozess #1 wird das Overall Model des zu entwickelnden Systems erstellt. Hierzu resultiert der Prozess in folgenden Ergebnissen: Die zentralen Klassen sind identifiziert und werden durch ein UML Klassendiagramm in Verbindung gebracht. Komplexe, fachliche Abläufe werden über UML Sequenzdiagramme abgebildet. Notizen zu getroffenen Entscheidungen reichern die Diagramme an. Der Detailgrad ist im Prozess #1 gering zu halten. Sonst besteht die Gefahr, dass sich während der Modellierung in Detailfragen verloren wird. Diese Fragen werden in den Prozessen #4 und #5 beantwortet. In der Prozessbeschreibung werden die folgenden Schritte genannt: 1. Der Project Manager stellt das Modeling Team aus Chief Programmern, Domain Experts und einem Chief Modeler zusammen. Patrick Rehder 36 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis 2. Ein Domain Expert gibt einen Überblick über das Fachgebiet. Das Modeling Team sichtet vorhandene Dokumente, wie beispielsweise Datenmodelle, Anforderungsbeschreibungen oder Richtlinien. Das Modeling Team teilt sich in kleine Gruppen auf, die maximal drei Personen umfassen. Jede dieser Gruppen entwickelt ein mögliches Modell für das Fachgebiet. Die Ergebnisse der einzelnen Gruppen werden anschließend dem gesamten Modeling Team vorgestellt. Für diesen Schritt kann es hilfreich sein, wenn der Chief Modeler zuvor ein Schema vorgibt. Dies sorgt für vergleichbare Ergebnisse, schränkt aber zugleich den Lösungsraum ein. 3. Nun verständigt sich das gesamte Modeling Team unter Moderation vom Chief Modeler auf ein gemeinsames Overall Model. Dieses kann entweder von einer Gruppe übernommen werden, eine Mischung aus verschiedenen Modellen darstellen oder auch ein neues Modell sein. 4. Die Schritte 3 und 4 werden mehrfach durchlaufen und das Overall Model bei jedem Durchlauf weiter verfeinert. Der Chief Modeler beendet diese Schleife, wenn er mit dem Ergebnis zufrieden ist. [8, p. 133] Während des gesamten Prozesses werden signifikante Entscheidungen schriftlich fixiert. Es wird notiert, warum sich für etwas entschieden wurde als auch betrachtete andere Lösungen. Hierdurch wird gewährleistet, dass die getroffenen Entscheidungen später nachvollzogen werden können. Die Überprüfung der Ergebnisse erfolgt durch die Domain Experts. Diese können anhand des entwickelten Overall Models und den geführten Gesprächen erkennen, ob ihre Anforderungen richtig verstanden wurden. Außerdem besteht die Möglichkeit den Kontakt mit der Fachabteilung zu suchen. Build a Features List Der Prozess #2 besteht aus den folgenden Schritten: 1. Der Project Manager stellt mithilfe vom Chief Modeler und dem Development Manager das Features List Team zusammen. Das Features List Team besteht aus den Chief Programmern, die am Prozess #1 teilgenommen haben. Domain Experts können ebenfalls beteiligt sein. Meist gehören sie jedoch nicht zum Features List Team, sondern stehen ausschließlich für Fragen zur Verfügung. 2. Das Features List Team identifiziert die Features auf Basis seiner Erfahrungen aus Prozess #1. Die Features werden gruppiert und schriftlich fixiert. Ein Feature stellt die Beschreibung einer Funktion dar, die einen Kundennutzen bringt. Der Umfang eines Features wird durch die maximale Entwicklungsdauer eingeschränkt. Sie darf maximal 2 Wochen [6, p. 19] betragen. Außerdem erfolgt die Bezeichnung nach folgendem Muster: <action> <result> <object> Patrick Rehder 37 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Hier zwei Beispiele: Berechne die Summe des Warenkorbs. Stelle eine Auswahl der möglichen Versandarten für eine Bestellung dar. Da Features sehr granular sind, und bei großen Projekten18 in einer entsprechenden Anzahl identifiziert werden, ist es unerlässlich die Features zu strukturieren. Hierfür werden sogenannte Feature Sets und Major Feature Sets verwendet. Ein Feature Set beschreibt eine Tätigkeit und ein Major Feature Set ein Fachgebiet. Das folgende Beispiel könnte der Planung einer Webpräsenz entnommen sein: Major Feature Set Online Shop Feature Set ......... Bestellung durchführen Feature ......... ......... Berechne die Summe des Warenkorbs. Feature ......... ......... Stelle eine Auswahl der möglichen […]. Der Prozess #2 endet, wenn der Project Manager und der Development Manager mit der erstellten Features List zufrieden sind. [8, p. 143] Zu diesem Zeitpunkt sind die Features zwar strukturiert, aber noch nicht priorisiert. [13, p. 153] Plan by Feature In Prozess #3 werden die Features priorisiert und verteilt. Es wird mit folgendem Schritt begonnen: 1. Der Project Manager stellt das Planning Team aus dem Development Manager und den Chief Programmern zusammen. Die folgenden Schritte werden nicht der Reihe nach, sondern parallel abgearbeitet: Das Planning Team ordnet jedem Feature Set ein Fertigstellungsdatum zu – es sind nur Monat und Jahr anzugeben. Die Feature Sets werden unter den Chief Programmer verteilt. Jede Klasse wird einem Entwickler zugeteilt, dem Class Owner. Wobei auch Chief Programmer Klassen übernehmen können und damit Class Owner werden. Die parallele Bearbeitung ist notwendig, da sich die Schritte aufgrund neuer Erkenntnisse gegenseitig beeinflussen. Außerdem müssen noch folgende Punkte bei der Planung berücksichtigt werden: 18 Abhängigkeiten zwischen Features müssen beachtet werden. Risikoreiche und komplexe Feature Sets sollen möglichst früh realisiert werden. Die Arbeitsbelastung von Class Ownern soll gleichmäßig verteilt sein. Meilensteine müssen berücksichtigt werden, beispielsweise Vorabversionen. Um eine Größe zu nennen: Im ersten FDD-Projekt wurden 2000 Features identifiziert. [13, p. 150] Patrick Rehder 38 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Die Ergebnisse von Prozess #3 werden als Development Plan bezeichnet. Es handelt sich hierbei um eine erweiterte Features List und eine Liste mit der Zuordnung von Entwicklern auf „ihre“ Klassen: der Class Owner List. Sofern der Project Manager und der Development Manager mit dem Development Plan zufrieden sind, wird der Prozess #3 beendet. [8, pp. 154, 155] Design by Feature Die lineare Abfolge der vorherigen Prozesse, wird an dieser Stelle durchbrochen; Prozess #4 wird je Feature durchgeführt. Der Chief Programmer ist für das Durchführen der folgenden Schritte verantwortlich: 1. Der Chief Programmer stellt je Feature ein Feature Team zusammen. Ein Feature Team besteht aus allen Class Ownern, deren Klassen vom umzusetzenden Feature betroffen werden. 2. Sofern vorhanden, können referenzierte Dokumente durch das Feature Team gesichtet werden. In Abhängigkeit zur Komplexität des Features kann es sinnvoll sein, dass ein Domain Expert dem Feature Team den Anwendungsbereich noch einmal erläutert. 3. Das Feature Team entwickelt nun ein UML Sequenzdiagramm, welches das Feature beschreibt. Wie in Prozess #1 sind signifikante Entscheidungen schriftlich zu fixieren. 4. Der Chief Programmer reichert das Overall Model mit neu identifizierten Klassen, Methoden und Attributen an. 5. Jeder Class Owner schreibt Klassen- und Methodenkommentare für seine Klassen. Auf Basis der Kommentare generiert der Chief Programmer die API-Dokumentation. 6. Die Ergebnisse prüft das Feature Team bei einer Inspektion19. Hierbei aufgezeigte Fehler werden direkt durch das Feature Team behoben. 7. Jeder Class Owner erstellt je Klasse eine Liste mit durchzuführenden Aufgaben. Danach entwickelt er einen persönlichen Terminplan, in dem er notiert, wann er welche Aufgabe erledigen wird. Das Ergebnis von Prozess #4 wird als inspiziertes Design Package bezeichnet, es setzt sich aus den folgenden Bestandteilen zusammen: Referenzierte Dokumente UML Sequenzdiagramm aktualisiertes Overall Model generierte API-Dokumentation Terminplan der Class Owner 19 Der Umfang oder exakte Ablauf einer Inspektion wird nicht weiter erläutert. Da es standardübergreifend keine einheitliche Definition gibt, sind Umfang und Ablauf selbst zu bestimmen. Patrick Rehder 39 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Build by Feature Im Prozess #5 werden die Features umgesetzt. Das zuvor erarbeitete Design Package dient hierbei als gemeinsame Basis. Die im Folgenden genannten Schritte werden je Klasse durchgeführt: 1. Der Class Owner passt die Methoden seiner Klassen so an, dass sie den Anforderungen des Features genügen. 2. Der Quelltext wird einer Inspektion unterzogen. Hierbei sind die folgenden Szenarien durch den Chief Programmer abzuwägen: Keine Inspektion für triviale Änderungen durchführen. [8, p. 185] Inspektion für mehrere Klassen in einer Sitzung durchführen. Inspektion erst nach dem Erstellen der Unit-Tests durchführen. 3. Der Class Owner schreibt für jede Methode Unit-Tests. 4. Die Klasse wird nun durch den Class Owner freigegeben. Dieser Schritt verdeutlicht, dass die Klasse fertig ist und bezüglich dieses Features nicht mehr bearbeitet wird. Der Grad der freigegebenen Klassen dient dem Chief Programmer als Fortschrittsmaß. Nachdem ein Feature umgesetzt wurde, werden die Prozesse #4 und #5 erneut für weitere Features durchlaufen. 2.3.3. Nachbetrachtung Beim Betrachten der einzelnen Prozesse entsteht schnell der Anschein, dass Menschen bei Feature Driven Development keinen hohen Wert besitzen. Das Gegenteil ist jedoch der Fall: Wenn die Projektbeteiligten nicht über die benötigten Fähigkeiten verfügen, können die Prozesse noch so gut sein – das Projekt wird mit hoher Wahrscheinlichkeit scheitern. Gute Prozesse wiederum können guten Projektteams dabei helfen effizienter zu arbeiten. Ein gutes Projektteam stellt den Schlüssel für ein erfolgreiches Projekt dar. Der Grund hierfür liegt darin, dass es sich bei der Softwareentwicklung um eine Aktivität zwischen Menschen handelt. [13, p. 150] Um die Kommunikation zwischen den am Projekt beteiligten Menschen zu erleichtern, werden Modelle gegenüber Texten bevorzugt. Durch die Nutzung von UML zur Modellierung entsteht ein weiterer Vorteil: Mithilfe entsprechender Tools ist es möglich, das Modell und den Quelltext synchron zu halten. [13, p. 149] Generell wird bei Feature Driven Development viel Wert auf das Generieren von Inhalten gelegt (siehe API-Dokumentation in Prozess #4). Gemäß dem agilen Manifest sollen Anforderungsänderungen zu jeder Zeit des Projekts willkommen geheißen werden. [11] Dies wird bei Feature Driven Development über die maximale Laufzeit von sechs Monaten für einen kompletten Prozessdurchlauf sichergestellt, als auch über die 10%Schlupfregel20. Die Begrenzung der maximalen Laufzeit sorgt dafür, dass die Anforderungen spätestens nach sechs Monaten neu betrachtet werden. Die 10%-Schlupfregel handelt noch kurzfristigere Anforderungsänderungen ab. Sie besagt, dass eine Features List um knapp zehn Prozent anwachsen 20 Übersetzt aus dem Englischen: „10% Slippage Rule“. [8, p. 235] Patrick Rehder 40 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis darf, ohne dass Maßnahmen vom Project Manager erforderlich werden. Danach muss der Project Manager über einen der folgenden Punkte eingreifen [8, pp. 235-237]: weniger wichtige Features streichen Projektlaufzeit verlängern Kapazität durch neue Chief Programmer und Entwickler erhöhen Damit der Prozentsatz der neuen und geänderten Features nachverfolgt werden kann, empfiehlt es sich die betroffenen Features entsprechend zu markieren. [13, p. 155] Feature Driven Development auf einen Blick [6, p. 19]: bietet eine elegante Strukturierungsmöglichkeit für Anforderungen auch für große Projektteams gut geeignet bietet durch sein Rollenmodell eine gesunde Basis für ein diszipliniertes Vorgehen ist für Festpreisprojekte gut geeignet lässt sich leichter als andere agile Vorgehen in große Organisationen einführen Patrick Rehder 41 >>> Grundlagen: Agile Softwareentwicklung 2.4. Master-Thesis Extreme Programming Extreme Programming (XP) nimmt anerkannte Methoden der Softwareentwicklung und kombiniert diese mit dem Ansatz: „Wenn ich aus Erfahrung weiß, dass etwas gut funktioniert, setze ich es im maximal möglichen Rahmen ein.“ Kent Beck, der Erfinder von Extreme Programming, hatte hierbei das Bild eines Steuerpults im Kopf. Jede Methode stellt darauf einen Regler dar, welcher bis zum Anschlag aufgedreht wird. Er wollte sehen was passiert – „Überraschenderweise erwies sich dieses Paket von [Methoden] als stabil, vorhersehbar und flexibel.“ [38, p. xv] Abbildung 6 - XP: „Den Regler auf 10 drehen.“ [38, p. xv] Laut Kent Beck verspricht Extreme Programming [38, p. xvi]: Projektrisiken zu reduzieren. Sich ändernde, geschäftliche Anforderungen zu berücksichtigen. Die Produktivität fortlaufend zu erhöhen. Dass Softwareentwicklung im Team Spaß macht. Hierzu werden vier Tätigkeiten für die Entwicklung von Software genannt: Zuhören, Entwerfen, Programmieren und Testen. Diese Tätigkeiten werden über Methoden realisiert, welche wiederum definierte Werte und Prinzipien berücksichtigen. Der Zusammenhang wird in Abbildung 7 verdeutlicht. [39, p. 'Defining XP'] Patrick Rehder 42 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Abbildung 7 - XP: „Unter der Lupe betrachtet.“ Im Folgenden werden die Bestandteile von Extreme Programming einzeln erläutert. Angefangen mit den Werten, werden folgend die Prinzipien und zum Schluss die Methoden betrachtet. Die vier Tätigkeiten werden nicht weiter im Detail behandelt, da diese bereits aufgelistet wurden und die Begriffe sprechend sind. Zur besseren Übersicht sind die einzelnen Bestandteile in Tabelle 9 indexiert. Werte Seite Methoden Seite Communication 44 Energized Work 49 Simplicity 45 Whole Team 50 Feedback 45 Sit Together 50 Courage 45 On-Site Customer 51 Respect 46 Informative Workspace 51 Prinzipien Seite User Stories 51 Rapid Feedback / Reflection 46 Weekly Cycle 52 Assume Simplicity 46 Quarterly Cycle 52 Incremental Change / Baby Steps 47 Metaphor 53 Embrace Change / Improvement 47 Slack 53 Quality Work / Quality 47 Incremental Simple Design 53 Humanity 47 Collective Ownership 54 Economics 47 Coding Standards 54 Mutual Benefit 47 Test-First Programming 55 Self-Similarity 48 Pair Programming 56 Diversity 48 Refactoring 57 Patrick Rehder 43 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Flow 48 Continuous Integration 57 Opportunity 48 Ten-Minute Build 58 Redundancy 48 Failure 48 Accepted Responsibility 48 Tabelle 9 - XP: „Register der Bestandteile“ Es ist auffällig, dass das Bestandteil-Register für Extreme Programming mehr Begriffe enthält, als die Register von Scrum und Feature Driven Development. Dies liegt daran, dass Extreme Programming feiner strukturiert ist. Des Weiteren wird neben der ersten Version [38] auch die weiterführende Version [40] berücksichtigt. In der weiterführenden Version wurden unter anderem neue Methoden aufgenommen; aber auch vorhandene angepasst und umbenannt. Holger Breitling bezeichnet die weiterführende Version in einem Artikel als Extreme Programming 2.0 und findet folgende Adjektive: „[…] nachdenklicher, durchdachter, differenzierter als das ursprüngliche XP, aber auch weniger frisch, komplizierter und unübersichtlicher.“ [41] 2.4.1. Werte Software wird von Menschen entwickelt. Jeder Beteiligte am Prozess, hat hierbei eine eigene Vorstellung davon, was wertvoll ist und was nicht. Für eine effektive und effiziente Zusammenarbeit der Beteiligten ist es jedoch entscheidend eine gemeinsame Wertvorstellung zu entwickeln. Ein gemeinsames Wertverständnis sorgt dafür, dass das Vorgehen einheitlich wahrgenommen wird. Extreme Programming nennt für eine gemeinsame Basis fünf Werte. Gemäß Kent Beck sortiert, lauten diese wie folgt: Communication Simplicity Feedback Courage Respect Die Werte werden im Kommenden einzeln erläutert. Als Quelle dienen die beiden Werke von Kent Beck, in der ersten [38, pp. 29-35] und zweiten Auflage [40, p. 'Chapter 4. Values']. Communication In der Softwareentwicklung lassen sich viele Probleme auf einen Mangel an Kommunikation zurückführen. Die Ausprägungen sind vielfältig. Zum Beispiel: Aus Bequemlichkeit werden Annahmen über die Wünsche des Kunden getroffen, anstatt ihn zu fragen. Patrick Rehder 44 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Aus Angst vor Konsequenzen werden negative Nachrichten nicht mitgeteilt. Aus Scham werden Probleme langwierig alleine gelöst, statt auf das Wissen eines Anderen zuzugreifen. Viele Methoden bei Extreme Programming verlangen deswegen explizit die Kommunikation zwischen den Beteiligten. Hinter dem Wert Communication verbirgt sich aber nicht nur, dass überhaupt kommuniziert wird. Es geht auch darum über welches Medium kommuniziert wird. Dieses Thema wurde bereits im Rahmen vom Agile Manifest erläutert (siehe „Individuen und Interaktion sind wichtiger als Prozesse und Werkzeuge“ ab Seite 12). In Extreme Programming soll ein Gespräch stets einem anderen Medium vorgezogen werden. Simplicity Der Wert Simplicity lässt sich als Einfachheit übersetzen. Dahinter verbirgt sich, dass in Extreme Programming immer eine möglichst einfache Lösung gewählt werden soll. Die gewählte Lösung muss hierbei den Anforderungen des Kunden genügen, aber eben nicht mehr. Sie lässt sich deswegen schneller und kostengünstiger umsetzen, als eine allgemeine Lösung. Hierbei wird in Kauf genommen, dass eine Änderung im Nachhinein eventuell mehr kostet. Diese Ansicht ist vor allem für den Kunden wertvoll, denn er erhält nur die Funktionen die er auch wirklich benötigt. Feedback Bei Extreme Programming wird davon ausgegangen, dass sich innere und äußere Begebenheiten stets ändern können. Um sich daran anpassen zu können, müssen diese Änderungen wahrgenommen werden. Das Feedback (deutsch: Rückmeldung) übernimmt diese Aufgabe. Hierbei gilt: Feedback ist möglichst häufig einzuholen, damit Änderungen unmittelbar bekannt werden und darauf reagiert werden kann. Als Beispiel lassen sich Unit-Tests nennen. Unit-Tests geben schnell Aufschluss darüber, ob die getesteten Methoden so arbeiten wie erwartet. Vor dem Hintergrund späterer Änderungen ist dies besonders hilfreich; es bildet Vertrauen ins System. Courage Courage bedeutet Mut, welcher bei Extreme Programming durch die Beteiligten aufzubringen ist. Mut ist vor allem im Kontext der zuvor genannten Werte wertvoll: Kommunikation wird gefördert, wenn der Mut aufgebracht wird unangenehme und wahre Tatsachen offen anzusprechen. Es sorgt auch für Vertrauen. Einfachheit wird gefördert, wenn der Mut aufgebracht wird vorhandene Lösungen zu verwerfen, um bessere Lösungen und neue Ideen zu finden. Feedback wird gefördert, wenn der Mut aufgebracht wird nach Problemen zu suchen und wirkliche Lösungen zu bestimmen. Patrick Rehder 45 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Respect Ursprünglich nannte Kent Beck vier Werte. In seiner überarbeiteten Version fügte er noch einen fünften Wert hinzu: Respekt. Die Beteiligten müssen sich sowohl gegenseitig, als auch das Projekt respektieren – sonst funktioniert Extreme Programming nicht. Es geht bei der Softwareentwicklung um die Menschen und ihr Miteinander: jede Meinung ist wichtig, jeder Gedanke ist wichtig, jede Idee ist wichtig – jeder ist wichtig. 2.4.2. Prinzipien Werte sind sehr allgemein. Es ist deswegen wahrscheinlich, dass die Werte von unterschiedlichen Personen, unterschiedlich gedeutet werden. Aus diesem Grund nennt Extreme Programming Prinzipien. Sie geben den Werten eine Ausrichtung. Die erste Version nennt fünf Grund- und zehn weiterführende Prinzipien. Die überarbeitete Version vierzehn Prinzipien. Da Kent Beck die Prinzipien hierbei komplett überarbeitet hat, ist es schwierig die Versionen gegenüberzustellen. In der überarbeiteten Version sind sowohl bestehende, als auch neue Ideen eingeflossen. Im Folgenden werden zuerst die fünf Grundprinzipien der ersten Version und danach die thematisch nicht genannten Prinzipien der überarbeiteten Version erläutert. Aufgrund des Umfangs wird darauf verzichtet, die weiterführenden Prinzipien der ersten Version explizit zu nennen; zumal einige der Prinzipien in den überarbeiteten Prinzipien aufgehen. Als Quelle dienen die beiden Werke von Kent Beck, in der ersten [38, pp. 38-42] und zweiten Auflage [40, p. 'Chapter 5. Principles'], als auch die Zusammenfassung von Eckhart Hanser [42, pp. 17-20]. Die fünf Grundprinzipien Rapid Feedback / Reflection Unmittelbares Feedback (engl. Rapid Feedback) und Reflexion (engl. Reflection) beschreiben den Wert Feedback genauer. Der Gedanke hinter unmittelbarem Feedback ist, dass bereits früh Erkenntnisse gewonnen werden, so dass zeitnah darauf reagiert werden kann. Unmittelbares Feedback ergibt allerdings nur Sinn, wenn das Team an Verbesserungen interessiert ist. Dieser Punkt wird von der Reflexion aufgegriffen. Ein gutes Team erledigt seine Arbeit nicht nur, es überlegt wie es sich verbessern kann. Assume Simplicity Hinter Assume Simplicity verbirgt sich die Idee, Probleme so zu betrachten, als seien sie ganz einfach zu lösen. Dieses Prinzip verkörpert damit direkt den Wert der Einfachheit, welcher zuvor bereits erläutert wurde. Patrick Rehder 46 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Incremental Change / Baby Steps Die Prinzipien Incremental Change und Baby Steps beschreiben im Kern, dass es besser ist, immer wieder kleine Schritte zu machen, als einmal einen Großen. Kleinere Schritte sind besser zu überblicken und damit zu kontrollieren. Dies trifft sowohl auf Änderungen am Prozess, als auch auf Entwicklungsarbeiten zu. Bei Entwicklungsarbeiten ist es außerdem hilfreich regelmäßig vorzugehen. Dies sorgt für Routine und reduziert damit den Organisationsaufwand. Embrace Change / Improvement Bei der Entwicklung von Software gibt es kein perfektes Vorgehen. Es gibt nur die Möglichkeit, sein derzeitiges Vorgehen weiter zu perfektionieren. Die eigenen Prozesse müssen ständig hinterfragt werden, um für Verbesserung (engl. Improvement) zu sorgen. Hierbei ist es eine Grundvoraussetzung, dass alle Beteiligten auch bereit sind Veränderungen zu begrüßen (engl. embrace changes). Quality Work / Quality Qualität (engl. Quality) wird bei Extreme Programming als unantastbare Größe gesehen. Sie dient nicht als Stellgröße, falls ein Projekt in Verzug gerät. Es ist ein Trugschluss zu denken, dass mindere Qualität für eine schnellere Lieferung sorgt. Durch das Vernachlässigen von Qualität schleichen sich Fehler ein, die nachträglich zu mehr Aufwand führen. Außerdem ist es bei einer geringeren Qualität wahrscheinlicher, dass die gelieferte Software nicht den erwarteten Nutzen erbringt. Damit ist weder dem Kunden, noch dem Entwicklungsteam geholfen. Weitere Prinzipien Humanity Das Prinzip der Menschlichkeit (engl. Humanity) besagt: Software wird von Menschen entwickelt, dies muss bedacht werden. Für eine optimale Leistung, müssen menschliche Bedürfnisse berücksichtigt werden. Zum Beispiel: Sicherheit des Arbeitsplatzes, persönliche Weiterbildung und Akzeptanz im Team. Economics Wirtschaftlichkeit (engl. Economics) ist stets zu gewährleisten. Wenn die Kosten den Nutzen übersteigen, gibt es keine Rechtfertigung für ein Projekt. Außerdem ist folgende Regel für Investitionen zu bedenken: Je früher Geld eingenommen wird, desto besser und je später Kosten entstehen, desto besser. [28, p. 1309] Mutual Benefit Bei Extreme Programming soll kein Nutzen auf Kosten anderer, sondern gegenseitiger Nutzen (engl. Mutual Benefit) gewonnen werden. Tätigkeiten sollen stets Vorteile für alle Beteiligten mit sich bringen. Patrick Rehder 47 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Self-Similarity Das Prinzip der Selbstähnlichkeit (engl. self-similarity) besagt, dass gute Lösungen auch in einem anderen Kontext funktionieren können – dies gilt es auszuprobieren. Diversity Die Vielfalt (engl. Diversity) der Teammitglieder und Ideen ist ein weiteres Prinzip. Es geht darum, dass unterschiedliche Eigenschaften und Fähigkeiten von Teammitgliedern zu völlig neuen Lösungen führen können. Die entstehende Vielfallt an Ideen ist als Chance zu sehen: Es kann immer die beste Idee ausgewählt werden. Flow Damit der Kunde den aktuellen Stand der Software nutzen und sich darauf beziehen kann, ist ein ständiger Fluss (engl. Flow) anzustreben. Die Software soll dem Kunden schnellstmöglich zur Verfügung gestellt und danach kontinuierlich angepasst werden. Opportunity Jedes Problem soll bei Extreme Programming als Gelegenheit (engl. Opportunity) betrachtet werden. Gelegenheiten sich zu verbessern. Es darf nicht das Ziel sein, Probleme nur zu überstehen. Dieses Prinzip minimiert die Schwächen und maximiert die Stärken des Teams. Redundancy Redundanz (engl. Redundancy) sorgt für Sicherheit, dieses Prinzip ist deswegen in kritischen und komplexen Bereichen der Softwareentwicklung anzuwenden. Das Auffinden von Fehlern ist ein gutes Beispiel für einen solchen Bereich, es ergibt Sinn nicht einmalig nach Fehlern zu suchen, sondern hierfür mehrere Instanzen vorzusehen. Failure Ein Misserfolg (engl. Failure) kann dazu genutzt werden, Wissen zu gewinnen. So ist trial and error ein zweckmäßiger Weg, schnell Erkenntnisse zu gewinnen. Außerdem kann es günstiger sein, eine Lösung auszuprobieren, statt lange darüber zu diskutieren. Im Kern besagt dieses Prinzip, dass Fehler nicht immer schlecht sind – wenn aus ihnen gelernt wird. Accepted Responsibility Wenn Aufgaben vorgeschrieben werden, ist es unwahrscheinlich dass sie engagiert umgesetzt werden. Um das Engagement einer Person zu wecken, muss sie die Verantwortung für eine Aufgabe übernehmen (engl. Accepted Responsibility). Verantwortung kann nicht zugewiesen werden. Letztlich muss nicht nur jeder die Verantwortung für seine Aufgaben übernehmen; das Team muss sich für das Produkt verantwortlich fühlen. Patrick Rehder 48 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis 2.4.3. Methoden Die Methoden von Extreme Programming geben sich wie ein Baukasten. Sie müssen nicht alle auf einmal eingeführt werden, sondern können nach und nach etabliert werden. Der Einsatz einer Methode führt bereits zu einer Verbesserung. Für eine entschiedenere Verbesserung müssen sich die Methoden jedoch gegenseitig stützen. Hierbei ist es nicht sinnvoll den Einsatz einer Methode zu erzwingen. Wenn eine Methode nicht funktioniert, ist sie nicht einzusetzen. Die erste Version von Extreme Programming enthält 12 Methoden. In der überarbeiteten Version sind 25 Methoden genannt, die sich in 13 primäre und 12 resultierende Methoden aufteilen. Die 12 resultierenden Methoden werden in dieser Arbeit nicht weiter erläutert, da sie erst nach den primären Methoden relevant werden. Wenn bei den verbleibenden Methoden die Übereinstimmungen zusammengefasst werden, ergibt sich eine Summe von 18 Methoden. Die 18 Methoden wurden in drei Kategorien eingeordnet, siehe Tabelle 10. Allgemein Ablauf und Planung Entwicklung Energized Work User Stories Incremental Simple Design Whole Team Weekly Cycle Collective Ownership Sit Together Quarterly Cycle Coding Standards On-Site Customer Metaphor Test-First Programming Informative Workspace Slack Pair Programming Refactoring Continuous Integration Ten-Minute Build Tabelle 10 - XP: „Strukturierung der Methoden“ Als Quelle dienen die beiden Werke von Kent Beck, in der ersten [38, pp. 53-62] und zweiten Auflage [40, p. 'Chapter 7. Primary Practices'], als auch die Zusammenfassung von Eckhart Hanser [42, pp. 2140] und das Buch „Software entwickeln mit eXtreme Programming“ [43, pp. 23-120]. Allgemein Energized Work „Niemand kann […] über viele Wochen hinweg, 60 Stunden in der Woche arbeiten und dann immer noch frisch, kreativ, sorgfältig und voller Selbstvertrauen sein.“ [38, p. 60] Bei regelmäßigen Überstunden kann nicht von energiegeladener Arbeit (engl. energized work) gesprochen werden. Dies zeigt vielmehr, dass es ein Problem gibt, welches erkannt und gelöst werden muss. Wer krank oder müde ist, wer ständig Anrufe erhält oder auf E-Mails antwortet, der kann nicht 100% seiner Leistung erbringen. Patrick Rehder 49 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Für energiegeladene Arbeit müssen die genannten Störungen beseitigt werden: wer krank ist bleibt zuhause, wer müde ist legt sich früher hin und wer ständig abgelenkt wird, der stellt das Telefon auf lautlos und beendet das E-Mail-Programm. Es bietet sich an, den Arbeitstag in Abschnitte zu unterteilen: Programmierzeit, Verwaltungszeit und Pausen. In den einzelnen Abschnitten wird sich auf die entsprechende Arbeit konzentriert. Dies gilt auch für Pausen, sie sind genauso intensiv wahrzunehmen wie die vorangegangene Arbeit. Whole Team Ein ganzes Team (engl. Whole Team) vereint alle Fähigkeiten in sich, die derzeit zur Bearbeitung des Projekts benötigt werden. Es ist möglich, dass Teammitglieder im Laufe eines Projekts aufgrund ihrer Fähigkeiten aufgenommen oder abgegeben werden. Das derzeitige Team sieht sich hierbei stets als Ganzes, der Team-Gedanke ist wichtig – nur wenn alle an einem Strang ziehen ist die Wirkung maximal. Sit Together Diese Methode besagt, dass das Team zusammensitzen (engl. Sit Together) soll. Dies ist zum einen die Voraussetzung für andere Methoden (zum Beispiel: Pair Programming), aber auch förderlich für den Wert der Kommunikation. Nur wenn das Team gemeinsam in einem Raum sitzt, besteht die Möglichkeit, kurzfristig Fragen in die Runde zu werfen oder Gespräche zwischen anderen Kollegen aufzugreifen, um hilfreiches beizusteuern. Eine förderliche Anordnung der Büromöbel ist in Abbildung 8 skizziert. Im Zentrum des Raums befinden sich Arbeitsplätze fürs Pair Programming und an den Wänden kleine Parzellen für ungestörte Einzelarbeit. Abbildung 8 - XP: „Team Workspace“ [40, p. 'Figure 5. A team workspace'] Patrick Rehder 50 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis On-Site Customer Die Methode On-Site Customer oder „Kunde vor Ort“ sieht vor, dass der Kunde nicht nur zu Beginn des Projekts einmal vorbeischaut und sagt was er haben möchte, sondern täglich für Fragen zur Verfügung steht. Hierbei ist es im Sinne der Kommunikation von Vorteil, wenn der Kunde im TeamBüro sitzt und bei Unklarheiten direkt kontaktiert werden kann. Der Nutzen wird maximiert wenn der On-Site Customer die folgenden Punkte erfüllt: Er verfügt über fundierte fachliche Kenntnisse. Er arbeitet mit der zu ersetzenden Anwendung. Er soll die zu entwickelnde Anwendung später nutzen. Für die Entwickler gilt: Wenn die fachlichen Anforderungen nicht eindeutig sind, ist der On-Site Customer zu fragen. Es sollen keine Annahmen von Entwicklern getroffen werden. Auch bei gleichwertigen Lösungen gilt: Nicht selber entscheiden, sondern den On-Site Customer fragen. In der Praxis ist es meist schwierig eine Person aus der Fachabteilung zu 100% freizustellen – dies ist erfahrungsgemäß auch nicht notwendig. Der On-Site Customer verfügt über Freiräume, in denen er sich um seine eigentlichen Aufgaben kümmern kann. Für den Fall, dass es dem On-Site Customer nicht möglich ist im Team-Büro zu sein, nennt Eckart Hanser eine interessante Lösung: Der On-Site Customer erhält ein „rotes Telefon“, dessen Nummer im Idealfall nur den Entwicklern bekannt ist. Das „rote Telefon“ kann beispielsweise ein Prepaid-Handy sein. Anrufe auf diesem Telefon werden vom On-Site Customer schnellstmöglich entgegengenommen und zeitnah beantwortet. Informative Workspace Eine informative Arbeitsumgebung (engl. Informative Workspace) bietet die Möglichkeit, sich innerhalb weniger Sekunden über den aktuellen Stand des Projekts zu informieren. Dies lässt sich beispielsweise über die Anordnung der User Stories in Kategorien (zum Beispiel: offen, in Arbeit, erledigt) an einer Wand erreichen. Anstatt aktuelle Messdaten21 über E-Mail zu verschicken oder auf einer internen Webseite bereitzustellen, soll eine große Tafel im Team-Büro zum Darstellen genutzt werden. Ablauf und Planung User Stories User Stories oder Benutzergeschichten benennen Funktionen, die von der Anwendung zur Verfügung gestellt werden sollen. Jede User Story verfügt hierbei mindestens über die folgenden Informationen: 21 Bezeichnung Beschreibung (zwei bis drei Halbsätze) zum Beispiel: Fehler in Produktion oder Anzahl der Klassen Patrick Rehder 51 >>> Grundlagen: Agile Softwareentwicklung Aufwand Master-Thesis (durch die Entwickler geschätzt) Der geringe Detailgrad gewährleistet, dass die Informationen auf einer DIN A5 Karte Platz finden. Hierbei ist eine physische Repräsentation, laut Kent Beck, stets einer digitalen vorzuziehen. Die User Stories lassen sich so einfacher in Besprechungen verwalten, außerdem können sie an einer Wand aufgehängt (siehe Informative Workspace) und anhand ihres Status sortiert werden. Die Gesamtheit der User Stories reicht nicht aus, um das System zu spezifizieren. Eine Funktion lässt sich nicht allein auf Basis der zugehörigen User Story umsetzen. Die kurze Beschreibung reicht nicht aus, um die Gedanken des Kunden vollständig wiederzugeben. Dies ist gewünscht; der Entwickler soll die Details vom Kunden erfragen. Aus diesem Grund ist es wichtig, dass der Kunde auch zur Verfügung steht. User Stories werden zur Iterationsplanung genutzt. Alle vom Kunden gewünschten Funktionen werden in Form von User Stories aufgeschrieben. Danach wird der Aufwand zur Umsetzung für jede User Story von den Entwicklern geschätzt und notiert. Der Kunde erhält damit einen Überblick, wie viel je Funktion investiert werden muss. Auf Basis dieser Information kann der Kunde die User Stories priorisieren und damit festlegen, was zuerst umgesetzt werden soll. Die Entwickler können nun, anhand ihrer Kapazität, die User Stories für die kommende Iteration auswählen. Weekly Cycle Die User Stories werden in Iterationen abgearbeitet. Zu Beginn einer Iteration werden die umzusetzenden User Stories vom Team ausgewählt. Die Auswahl erfolgt im sogenannten Iteration Planning Meeting und wird auf Basis der Priorität für den Kunden und der Kapazität des Teams durchgeführt. Als Zeitraum nannte Kent Beck ursprünglich ein bis vier Wochen. In der überarbeiteten Version legte er sich letztlich auf einen wöchentlichen Zyklus (engl. Weekly Cycle) fest. Dieser sei Ideal, da er eine natürliche Grenze hat – das Wochenende. Das Team kann sich darauf konzentrieren, die gewählten User Stories bis zum Wochenende zu erledigen und nach dem Wochenende, ausgeruht in die neue Iteration starten. Am Ende der Iteration werden dem Kunden die umgesetzten User Stories vorgestellt. Dieser kann sich ein Bild von der Umsetzung machen und unmittelbar Feedback geben. Dadurch können neue User Stories entstehen, alte verworfen, verändert oder umpriorisiert werden. Ziel jeder Iteration ist es, eine produktiv einsetzbare Anwendung zu haben, die den Anforderungen des Kunden genügt. Quarterly Cycle Der Quartalszyklus (engl. Quarterly Cycle) lehnt sich am Quartal eines Jahres an und umfasst damit drei Monate. Dies ist der von Kent Beck empfohlene Zeitraum für ein Release. Für die Planung eines Release ist es schwierig, den Inhalt anhand von User Stories zu überblicken. Es bietet sich an, für ein Release Themen zu definieren. Die User Stories können dann anhand solcher Themen gruppiert werden. Patrick Rehder 52 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Außerdem soll in jedem Quartal eine Reflexionssitzung erfolgen, in der Probleme identifiziert und Lösungen gesucht werden. Metaphor Eine Metapher (engl. Metaphor) kann dazu genutzt werden, das Softwaresystem in einem übertragenen Sinn zu betrachten. Als Beispiel kann für ein Textverarbeitungsprogramm, eine Schreibmaschine als Metapher verwendet werden. Der Vorteil liegt darin, dass alle Beteiligten hierdurch eine vertraute Vorstellung vom zu entwickelnden System erhalten. Außerdem kann eine Metapher die Kreativität im Team anregen und zu neuen Ideen führen. Es ist jedoch nicht einfach eine gute Metapher zu finden, die gleichzeitig von allen Beteiligten auf die gleiche Weise verstanden wird. Slack Slack lässt sich unter anderem mit Pufferzeit oder Leerlauf übersetzten. Diese Methode wird durch beide Begriffe in Kombination ideal beschrieben: Jeder Plan soll über Pufferzeiten verfügen. Hierbei ist ein Teil der verfügbaren Zeit entweder gar nicht oder mit niedrig priorisierten, notfalls wegzulassenden Aufgaben zu verplanen. Das eigentliche Ziel bleibt damit erreichbar, auch wenn unvorhersehbare Ereignisse eintreten (zum Beispiel: Krankheit oder Fehleinschätzung). Bleiben Pufferzeiten unangetastet, besteht immer noch die Möglichkeit, weitere Aufgaben im Nachhinein einzuplanen. Leerlauf bezeichnet einen Zeitraum, der nicht durch vorgegebene Aufgaben definiert wird. Die freie Zeit soll von den Entwicklern für eigene Interessen genutzt werden, dies kann beispielsweise eine neue Technologie oder andere Vorgehensweise sein, aber auch die Mitarbeit an einem Open Source Projekt. Hierbei gewonnene Ideen können sich positiv auf das eigentliche Projekt auswirken. Entwicklung Incremental Simple Design Ziel des schrittweisen, einfachen Entwurfs (engl. Incremental Simple Design) ist es, zu jedem Zeitpunkt der Entwicklung die einfachst mögliche Architektur zu haben, die den bekannten Anforderungen entspricht. Die Architektur wird beim Incremental Simple Design regelmäßig kontrolliert und angepasst, damit sie den momentanen Anforderungen bestmöglich gerecht wird. Hierbei ist es nicht untersagt eine grundlegende Struktur festzulegen oder Frameworks zu verwenden. Der Einsatz von Architectural Patterns ist zum Beispiel sinnvoll, da hierdurch ein gemeinsames Verständnis der Struktur gewährleistet wird. Jeder Teil, eines auf einem einfachen Entwurf basierenden Systems, muss sein Vorhandensein rechtfertigen. Das System soll die folgenden Merkmale erfüllen: Das System besteht alle Tests. Das System ist selbstbeschreibend. Patrick Rehder 53 >>> Grundlagen: Agile Softwareentwicklung Das System einhält keinen gleichen Quelltext an verschiedenen Stellen. Das System besteht aus so wenigen Klassen wie möglich. Die Klassen im System enthalten so wenige Methoden wie möglich. Master-Thesis Die Merkmale sind hierbei in absteigender Reihenfolge zu berücksichtigen. Es ist beispielsweise wichtiger, dass sich das System selbst beschreibt, als dass die Zahl der Klassen möglichst gering ist. Eine beliebte Ausprägung von Incremental Simple Design ist die Quick Design Session. Eine Runde mit wenigen Entwicklern (drei sind am besten, fünf das Maximum) trifft sich, um die Architektur des Systems zu besprechen und weiterzuentwickeln. Es gilt die Regel: „Lieber ausprobieren, statt zu diskutieren.“ Collective Ownership Die Methode vom Kollektivbesitz (engl. Collective Ownership) besagt, dass das Team gemeinsam für den Quelltext verantwortlich ist. Jeder Entwickler darf jede Stelle im Quelltext anpassen – es wird sogar von ihm erwartet: „Von jedem, der eine Möglichkeit sieht, irgendeinen Teil des Codes etwas Sinnvolles hinzuzufügen, wird erwartet, dass er dies jederzeit tut.“ [38, p. 59] Hauptsächlich lassen sich die folgenden Vorteile gegenüber der Einzelverantwortlichkeit auflisten: Der Ausfall eines Teammitglieds kann leichter kompensiert werden, da der Quelltext auch anderen Entwicklern bekannt ist. Oft genutzter Quelltext, wird durch mehrere Entwickler begutachtet. Fehler fallen hier mit einer größeren Wahrscheinlichkeit auf und werden direkt behoben. Bei Fehlern versucht der Entdecker schnellstmöglich eine Lösung zu finden und nicht einen Schuldigen. Der Schuldige steht automatisch fest: das Team. Bei einem stark schwankenden Qualitätsniveau im Team und in großen Softwaresystemen stößt Collective Ownership jedoch an seine Grenzen: Bei Ersterem ist es wahrscheinlich, dass der Quelltext von schwächeren Teammitgliedern überarbeitet und angepasst werden muss, um den Qualitätsansprüchen des Teams zu genügen. Um dieses Problem zu lösen, muss das Qualitätsniveau im Team vereinheitlicht werden. Hier eignet sich vor allem die später erläuterte Methode Pair Programming. Der zweite Punkt bezieht sich darauf, dass Entwickler in großen Systemen viel Zeit aufwenden, sich in unbekannten Quelltext einzuarbeiten. Der Aufwand hierfür kann jedoch reduziert werden, wenn die Methoden übersichtlich gestaltet und ausreichend dokumentiert sind. Coding Standards Coding Standards sind Richtlinien für das Programmieren. Sie geben beispielsweise vor welche Form der Quelltext haben soll, wie Dateien und Klassen zu benennen und welche Werkzeuge einzusetzen Patrick Rehder 54 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis sind. Das Vorgehen beim Programmieren soll vereinheitlich werden. Beim optimalen Einsatz von Coding Standards ist nicht mehr zu erkennen, welcher Entwickler welchen Quelltext geschrieben hat. Ein Coding Standard soll den folgenden Punkten genügen: Der Programmieraufwand soll durch die Richtlinien so gering wie möglich gehalten werden; sonst hält sich keiner dran. Die Richtlinien sollen kurz, einfach und klar formuliert sein; sonst liest sie keiner. Die Kommunikation soll durch ein einheitliches Verständnis beim Programmieren gefördert werden. Letztlich muss das gesamte Team die Richtlinien freiwillig befolgen. Test-First Programming22 Beim Test-First Programming wird nicht mit dem produktiven Quelltext begonnen, sondern mit automatisierten Testfällen. Daraus ergeben sich mehrere Vorteile: Da frisch erstellte Testfälle erst einmal fehlschlagen, können sie während der Entwicklung zur Anzeige des Fortschritts genutzt werden. Beim Test-First Programming kann nicht drauflos entwickelt werden. Der Entwickler muss sich über die beabsichtigte Funktion im Klaren sein und sich Gedanken über die Schnittstelle machen, um die Testfälle erstellen zu können. Die Schnittstelle wird durch den Testfall von außen betrachtet, was der späteren Nutzung entspricht. Die Schnittstelle wird damit auf ihre Nutzung optimiert. Komplexere Komponenten lassen sich schwieriger testen, als einfachere Komponenten. Beim Test-First Programming entstehen deswegen tendenziell, einfachere Komponenten. Wenn sich etwas nicht gut testen lässt, ist dies meist ein Hinweis auf ein unzureichendes Design. Testfälle prüfen, ob sich das System so verhält wie es soll. Wenn alle Testfälle ohne Fehler durchlaufen, schafft dies Vertrauen in das getestete System. Dies ist besonders wertvoll, wenn das System geändert oder erweitert wird. Die beabsichtigte Nutzung einer Komponente wird durch einen Testfall dokumentiert. Beim Extreme Programming wird zwischen zwei Test-Arten unterschieden: Ein Komponententest oder Unit-Test bezieht sich auf eine Komponente im System. Zum Beispiel ein Modul oder eine Klasse. Die Testfälle werden von den Entwicklern geschrieben. Für viele Programmiersprachen gibt es passende Frameworks, die das Erstellen und automatisierte Ausführen von Testfällen vereinfachen. 22 Die Methode Test-Frist Programming wird auch beim Test-Driven Development (TDD) eingesetzt. [69] Patrick Rehder 55 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Durch Akzeptanztests oder auch Funktionstests wird geprüft, ob eine realisierte User Story den Erwartungen des Kunden entspricht. Aus einem Akzeptanztest können diese Erwartungen extrahiert werden, was die Umsetzung erleichtert. Der Aufwand für eine automatisierte Überprüfung ist hingegen meist unverhältnismäßig hoch. Es bietet sich deswegen an, zumindest einen Teil der Tests manuell auszuführen. Test-First Programming ist auch beim Beseitigen von Fehlern anzuwenden. Bevor ein Fehler behoben wird, wird ein Testfall zu diesem Fehler geschrieben. Falls der Fehler später wieder eingebaut wird, schlägt der Test fehl und weist darauf hin. Pair Programming Wenn sich zwei Entwickler einen Rechner teilen und gemeinsam an einer Aufgabe arbeiten, wird dies als Pair Programming bezeichnet. Da nur ein Entwickler zurzeit aktiv den Rechner bedient, ist der Gedankenaustausch zwischen beiden entscheidend. Der eingebende Entwickler erklärt dem beisitzenden Entwickler warum er etwas macht und der beisitzende Entwickler weist den eingebenden Entwickler auf Fehler hin. Die Paarungen, als auch die Rolle des Eingebenden und Beisitzenden, sollen hierbei nicht fest vergeben sein, sondern kontinuierlich wechseln. Es lassen sich die folgenden Vorteile aufzählen: Je zwei Entwickler wird nur ein leistungsfähiger Entwicklungsrechner zwingend benötigt. Mögliche Rechner an Einzelarbeitsplätzen (siehe Sit Together, Seite 50) müssen nicht über das Leistungsniveau eines Entwicklungsrechners verfügen. Der Quelltext und das Design unterliegen einem ständigen Review durch den Beisitzenden, hierbei werden Fehler entdeckt und dadurch die Qualität gesteigert. Durch den fortlaufenden Austausch von Erfahrungen, gleicht sich das Niveau zwischen unerfahrenen Entwicklern und Experten mit der Zeit an. Wenn der eingebende Entwickler nicht weiterkommt, können die Rollen getauscht werden und der beisitzende Entwickler übernimmt. Da zwei Entwickler über die Lösung eines Problems nachdenken, ergeben sich neue Lösungsideen, die einem Entwickler alleine nicht eingefallen wären. Der Ausfall eines Entwicklers kann, aufgrund des verteilten Wissens, besser vom Team kompensiert werden. Es ist für ein Entwickler-Paar einfacher sich gemeinsam auf eine Aufgabe zu konzentrieren. Die Zeit des Kollegen will schließlich nicht mit für ihn belanglosen Dingen23 verschwendet werden. Team-Praktiken werden einheitlicher gelebt, da sich ein einzelner Entwickler nicht unentdeckt darüber hinwegsetzen kann. 23 Für den Kollegen können zum Beispiel belanglos sein: Telefonate, E-Mails und Börsenkurse. Patrick Rehder 56 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Pair Programming ist eine der bekanntesten Methoden von Extreme Programming und wird aufgrund unterschiedlichster Meinungen viel diskutiert. Insbesondere die Auswirkung auf Qualität, Zeit- und Kostenaufwand wurde in vielen Studien untersucht. Die Anzahl an Studien ist sogar so groß, dass es inzwischen zusammenfassende Studien gibt. Johannes Brodwall bringt das Ergebnis der zusammenfassenden Studie „Are Two Heads Better than One? On the effectiveness of pair programming“ in einem Online-Artikel auf den Punkt [44]: Pair Programming sorgt dafür, dass ein Projekt etwas früher fertig wird, mit einer signifikant besseren Qualität, aber zu höheren Kosten. Er bemängelt jedoch, dass die folgenden Punkte in der Studie nicht berücksichtigt werden: Eine bessere Qualität sorgt langfristig für geringere Kosten. Der Ausfall eines Entwicklers kann durch Wissensteilung besser kompensiert werden. Der Einfluss von Erfahrung beim Pair Programming. Refactoring Beim Refactoring oder Überarbeiten, nennt Extreme Programming zwei Beweggründe: Das Hinzufügen einer neuen Funktion wird vereinfacht. Es gibt eine einfachere Lösung, als die gerade implementierte. Durch Refactorings wird versucht den Aufwand für zukünftige Änderungen zu reduzieren und das System damit wartbar zu machen. Hierbei dürfen die Anforderungen der Kunden und Anwender nicht aus den Augen verloren werden. Eine Voraussetzung für Refactorings sind flächendeckende Komponententests. Nur so lässt sich gewährleisten, dass Änderungen keine Seiteneffekte auf die Funktionalität haben. Um das Risiko weiter zu senken bietet es sich an, große Refactorings in kleine Schritte zu unterteilen. Continuous Integration Bei einer kontinuierlichen Integration (engl. continuous integration) werden die Anpassungen der einzelnen Entwickler in möglichst kleinen Schritten im Gesamtsystem zusammengefügt. Sie stehen den anderen Entwicklern damit schnell zur Verfügung. Dadurch fallen konkurrierende Änderungen schneller auf oder entstehen gar nicht erst. Die Integration umfasst nicht nur das Zusammenfügen des Quelltextes, sondern auch das Sicherstellen der Funktionalität vom Gesamtsystem. Der Funktionsumfang soll hierbei auf einem extra Integrationssystem geprüft werden, welches der produktiven Umgebung möglichst ähnlich ist. Nur so fallen fehlende Komponenten auf, die auf dem Entwicklungsrechner installiert sind, aber nicht mit verteilt werden. Da eine Integration möglichst oft stattfinden soll, sind Tests möglichst zu automatisieren. Dies spart nicht nur Zeit, sondern stellt auch sicher, dass keine Tests vergessen oder aus Bequemlichkeit ausgelassen werden. Patrick Rehder 57 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis Ten-Minute Build Laut der Methode Ten-Minute Build darf ein Build nicht länger als zehn Minuten24 dauern. Unter Build ist in diesem Fall das Übersetzten der Anwendung und das Ausführen aller automatisierten Tests zu verstehen. Ein längerer Build würde dafür sorgen, dass die Akzeptanz für den Build sinkt und dieser nicht mehr so häufig genutzt wird. Wenn der Build länger dauert, muss der Vorgang optimiert werden. Eine Möglichkeit ist es das System in Abschnitte zu unterteilen, um nur die Abschnitte übersetzten und testen zu müssen, die sich auch geändert haben. Ein weiterer Weg ist es die Geschwindigkeit über leistungsfähigere Hardware zu erhöhen. 2.4.4. Rollen Die in Extreme Programming genannten Rollen haben sich in vergangenen Projekten etabliert; beziehungsweise wurden dort vorgefunden. Sie sind jedoch weder ein Garant für den Erfolg eines Projekts, noch sind sie zwingend in jedem Projekt zu besetzen. Es soll nicht darum gehen die Teammitglieder in Rollen zu pressen, um ein vordefiniertes System zu besetzten; es muss darum gehen, ein neues System auf Basis der Stärken der Mitglieder zu entwickeln. Zu Beginn eines Projekts kann es jedoch hilfreich sein, sich an den vordefinierten Rollen zu orientieren. Die Rollen sind hierbei flexibel zu behandeln: Eine Rolle kann von mehreren Teammitgliedern übernommen werden und ein Teammitglied kann mehrere Rollen innehaben. Unter dem Begriff „Team“ sind an dieser Stelle übrigens sowohl Entwickler, Kunden, als auch das Management gemeint. Letztlich müssen alle Beteiligten das große Ganze im Blick haben: Die Entwicklung einer Anwendung unter ökonomischen Gesichtspunkten. [38, pp. 139, 140] [40, p. 'Chapter 10. The Whole XP Team'] [43, p. 121] Aufgrund des Umfangs werden die einzelnen Rollen in dieser Arbeit nicht erläutert. 2.4.5. Nachbetrachtung Auf den ersten Blick gibt Extreme Programming vor, wie bei der Softwareentwicklung in kleinen, lokalen Teams25 vorzugehen ist. Dahinter verbirgt sich der Wunsch ein Gemeinschaftsdenken zu entwickeln. Die Art und Weise soll sich ändern, wie die Beteiligten miteinander umgehen. Die Aufgaben sollen nicht durch Vorgesetzte diktiert werden – sie sollen bereitwillig übernommen werden. Dem Kunden soll kein Schauspiel geboten werden. Er soll Nutzen erhalten. Er soll dem Team vertrauen. [13, p. 28] Die Methoden alleine reichen hierzu nicht aus. Auch wenn sie detailliert beschrieben sind und auf bewährten Verfahren beruhen. Sie ergeben erst im Kontext der Werte und Prinzipien betrachtet den 24 Erfahrungswert von Kent Beck Ein kleines, lokales Team im Sinne von Extreme Programming besteht aus zwei bis zehn Entwickler, welche gemeinsam an einem Ort arbeiten. [38, p. xviii] 25 Patrick Rehder 58 >>> Grundlagen: Agile Softwareentwicklung Master-Thesis gewünschten Sinn. Neben der Einführung der Methoden ist es entscheidend, die Werte und Prinzipien zu vermitteln. [38, p. xviii] Die Einführung von Extreme Programming gestaltet sich einfach, da die einzelnen Methoden schrittweise etabliert werden können [38, p. 123]: 1. Das größte Problem beim derzeitigen Vorgehen identifizieren. 2. Lösung des Problems über ein oder mehrere Methoden von Extreme Programming. 3. Wenn das Problem nicht mehr das Größte ist, geht es wieder zum ersten Punkt. Die Methoden schrittweise einzuführen birgt weniger Risiken, als alle Methoden auf einmal einzusetzen. Dies gilt insbesondere für laufende Projekte, die auf Extreme Programming umstellen wollen. Dass Extreme Programming nur richtig erlernt werden kann, wenn es in der Praxis angewendet wird, spricht ebenfalls für eine schrittweise Einführung. Nur über Methoden zu lesen versetzt einen noch nicht in die Lage eine Methode zu beherrschen. [40, pp. 'Chapter 3. Values, Principles, and Practices'] Extreme Programming (XP) auf einen Blick [6, p. 13] [38, p. xvii]: XP gibt frühzeitig und fortlaufend Feedback durch kurze Zyklen. XP berücksichtigt sich ändernde geschäftliche Anforderungen. XP ist vor allem für kleine Projekte geeignet (2 bis 10 Entwickler). XP legt großen Wert auf Qualität. XP macht klare Vorgaben für Management, Team und Programmierung. XP ist eine mächtige, aber anspruchsvolle Methode. Patrick Rehder 59 >>> Grundlagen: Agile Softwareentwicklung 2.5. Master-Thesis Zusammenfassende Betrachtung In diesem Kapitel werden die drei zuvor erläuterten Prozesse: Scrum, Feature Driven Development und Extreme Programming gemeinsam betrachtet. Begonnen wird mit einer gelungenen Übersicht aus der Broschüre „Agile Softwareentwicklung - Ein Überblick“, siehe Tabelle 11. Die Übersicht beschreibt, unter welchen Voraussetzungen sich welcher Prozess besser eignet. Je mehr Sterne, desto besser ist der Prozess unter den gegebenen Voraussetzungen geeignet. Voraussetzungen Scrum FDD XP Großes Projekt Kleines Projekt Festpreisprojekt Zugriff auf Fachexperten ist schwierig Selbstgesteuerte Teams Entwickler sind räumlich getrennt Spezialisierung der Teammitglieder Erfahrung mit agilen Prozessen ist gering (mehr Sterne = Der Prozess ist unter den jeweiligen Voraussetzungen besser geeignet.) Tabelle 11 - Prozesseignung hinsichtlich Voraussetzung (angepasst) [6, p. 22] Die ungleiche Verteilung der Sterne in Tabelle 11 verdeutlicht, dass sich die Prozesse stark voneinander unterscheiden. Scrum konzentriert sich mehr auf die Prozessebene als Feature Driven Development und Extreme Programming, wodurch der Detailgrad auf Methodenebene geringer ausfällt. Feature Driven Development beschreitet hinsichtlich Organisationsstruktur einen anderen Weg. Während Scrum und Extreme Programming auf selbstgesteuerte Teams setzen, gibt es bei Feature Driven Development klare Hierarchien mit strikter Aufgabentrennung. Hierdurch entsteht ein Vorteil für Feature Driven Development: Es passt sich bequemer in klassische Organisationsstrukturen ein. Eine Sache haben Scrum, Feature Driven Development und Extreme Programming jedoch gemein: Sie vertreten alle die Werte und Prinzipien vom Agile Manifest. Letztlich sind es diese Werte und Prinzipien, die ein agiles Vorgehen ausmachen. Patrick Rehder 60 >>> Derzeitiges Vorgehen 3. Master-Thesis Derzeitiges Vorgehen Dieses Kapitel ist in vier Unterkapitel untergliedert: Business-Unit „Externe Produkte“ (CtB10) Vorgehensmodell Techniken und Methoden Umfrage in der Business-Unit Zunächst wird die Business-Unit „Externe Produkte„ vorgestellt, auch die durchgeführten Projekte werden betrachtet. Darauffolgend wird ein allgemeingültiges Vorgehensmodell aufgezeigt, welches das aktuelle Vorgehen beschreibt. Die anschließend beschriebenen Methoden detaillieren das zuvor gezeigte Vorgehensmodell und verdeutlichen den Stand der Business-Unit beim Entwickeln und Steuern von Projekten. Im letzten Kapitel wird die Betrachtung durch das Meinungsbild der BusinessUnit abgeschlossen, welches über eine Umfrage ermittelt wurde. 3.1. Business-Unit „Externe Produkte“ (CtB10) Die Commerz Systems GmbH ist organisatorisch in drei Bereiche unterteilt: Steuerung / Service- und Zentralbereiche Run the Bank (RtB) Change the Bank (CtB) Der erste Bereich ist in sechs Business-Units gegliedert. Deren Aufgaben unterteilen sich in: Personalverwaltung, Finanzbuchhaltung und infrastrukturelle Tätigkeiten. Run the Bank teilt sich ebenfalls in sechs Business-Units auf. Diese kümmern sich um die Administration und den Betrieb von Softwaresystemen in der Commerzbank. Die Business-Unit „Externe Produkte“ ist eine von zehn Business-Units aus dem Bereich Change the Bank. Die Aufgaben dieses Bereichs liegen in der Neu- und Weiterentwicklung von Softwaresystemen für die Commerzbank. Insgesamt ist die Commerz Systems GmbH damit in 22 Business-Units untergliedert. Die Business-Unit „Externe Produkte“ umfasst 13 Entwickler (Stand: Mai 2012), welche durch einen Business-Unit Manager geleitet werden. Durch die unterschiedlichen Kenntnisse und Interessen der Team-Mitglieder verfügt die Business-Unit über breit gefächerte fachliche, technische, und methodische Kompetenzen. Neben der täglichen Projekt- und Wartungsarbeit hat das Thema Ausbildung eine hohe Bedeutung in der Business-Unit. Im Folgenden werden die letzten drei großen Projekte der Business-Unit beschrieben. Patrick Rehder 61 >>> Derzeitiges Vorgehen Master-Thesis ASTAT ASTAT ist eine branchenunabhängige Softwarelösung für Revisionen. Bei einer Revision handelt es sich um eine Stabsabteilung, zum Beispiel: bei einer Bank oder einem börsennotierten Unternehmen. Sie ist gesetzlich vorgeschrieben und unterstützt den Vorstand im Rahmen seiner Kontrollfunktion. Die Entwicklung der Software wird im Auftrag der Rot AG durchgeführt, welche den Vertrieb übernimmt. ASTAT ist damit das einzige Produkt, welches nicht direkt im Auftrag der Commerzbank entwickelt wird. Hieraus resultiert auch die Bezeichnung der Business-Unit: Externe Produkte. [45, pp. 5, 6] NIOB Die Anwendung NIOB wurde für die unternehmensinterne Nutzung entwickelt. Mit ihr ist es möglich Verträge zu verwalten, in denen externe Dienstleister auf interne Projekte vermittelt werden. Das Datenvolumen beträgt etwa 800 Projekte, auf die rund 1000 Dienstleister aus 500 Firmen vermittelt werden. TANTAL Dieses Projekt entstand im Rahmen der Übernahme der Dresdener Bank durch die Commerzbank. Es handelt sich um ein Produkt zur Depotverwaltung von fondgebundenen Rentenversicherungen, welche über die Allianz vermittelt und dessen zugehöriges Depot von der Commerzbank verwaltet wird. Da die EDV Systeme der Dresdener Bank komplett abgeschaltet wurden und das alte Softwaresystem für davon betroffene Großrechner konzipiert war, wurde TANTAL komplett neu entwickelt. Nach der Neuentwicklung wurde die Wartung für dieses Produkt übernommen. Patrick Rehder 62 >>> Derzeitiges Vorgehen 3.2. Master-Thesis Vorgehensmodell Das Vorgehensmodell zur Softwareentwicklung in der Business-Unit „Externe Produkte“ kann nicht ohne weiteres durch ein klassisches Vorgehensmodell beschrieben werden. Dies ist deswegen schon schwierig, da sich das Vorgehen in den einzelnen Projekten voneinander unterscheidet. Dennoch lassen sich Gemeinsamkeiten erkennen, die über ein allgemeines Vorgehensmodell beschrieben werden (siehe Abbildung 9). [nach Vorabtest] Analyse Design Implementierung Test Verteilung [nächstes Release] Abbildung 9 - Allgemeines Vorgehensmodell Das allgemeine Vorgehensmodell lässt fünf Phasen erkennen, die nacheinander durchschritten werden. Dieses Vorgehen erinnert auf den ersten Blick an das Wasserfallmodell. Auch die Inhalte der Phasen spiegeln sich im Wasserfallmodell wieder: In der Analysephase werden die Anforderungen der zu entwickelnden Anwendung bestimmt und dokumentiert. Die technische Umsetzung wird in der Designphase besprochen und festgehalten. Während der Implementierung wird der Quelltext der Anwendung geschrieben, aber auch Maßnahmen zur Qualitätssicherung durchgeführt. Die Testphase wird in Form von Vorabtests oder eines Systemtest durchlaufen. Bei der Verteilung wird ein Installationspaket zusammen- und bereitgestellt. Hierbei wird ein Projekt durch alle Phasen von einem Team erfahrener Entwickler begleitet. Im Übergang von der Designphase zur Implementierung werden weitere Entwickler hinzugezogen. Die erfahrenen Entwickler stellen Aufgaben für die „neuen“ Entwickler bereit und stehen für Fragen zur Verfügung. Der Kontakt zum Kunden erfolgt größtenteils über die erfahrenen Entwickler. Im allgemeinen Vorgehensmodell ist der Rücklauf von der Test- zur Analysephase auffällig. Während eines geplanten Release werden ein oder mehrere Vorabtests durchgeführt. Bei einem solchen Vorabtest werden neben Fehlern, auch Änderungswünsche des Kunden identifiziert. Sofern der Umfang der gewünschten Änderung nicht nennenswert26 ist, wird die Änderung als Kleinstaufgabe aufgenommen und von einem Entwickler abgearbeitet. Ansonsten wird der Änderungswunsch durch 26 Nicht nennenswert sind beispielsweise kleine Änderungen an der Benutzeroberfläche, wie das Ändern einer Beschriftung oder das Verschieben eines Kontrollelements. Patrick Rehder 63 >>> Derzeitiges Vorgehen Master-Thesis das Entwicklungs-Team analysiert und geschätzt. Übersteigt der geschätzte Aufwand die Kapazität des Entwicklungs-Teams, muss der Kunde eine der folgenden Optionen wählen: Die Änderung soll nicht durchgeführt werden. Der Umfang vom Release wird verringert. Der Zeitraum für das Release wird vergrößert. Durch Vorabtests wird auch sichergestellt, dass der Kunde nicht erst im Systemtest bemerkt, dass die Anwendung nicht seinen Wünschen entspricht. Ein Release läuft im Schnitt über fünf Monate (siehe Tabelle 12). Da je Release ein bis zwei Vorabtestzyklen durchlaufen werden, umfasst ein Zyklus zwischen ein- und zweieinhalb Monaten. Projekt Version Dauer ASTAT 1 5 Monate ASTAT 2 ASTAT 3 Projekt Version Dauer NIOB 1 4 Monate 5 Monate TANTAL 1 6 Monate 4 Monate TANTAL 2 6 Monate Tabelle 12 - Projektdauer je Release (Dauer gerundet) Das allgemeine Vorgehensmodell deckt sowohl die Neu-, als auch die Weiterentwicklung ab. Nicht betrachtet wird hingegen das Vorgehen bei der Wartung von Software, welche sich vor allem durch kontinuierlich auftauchende Aufgaben auszeichnet. 3.2.1. Vorgehensmodell: ASTAT Abbildung 10 bildet das Vorgehen bei der Weiterentwicklung von ASTAT ab. Für die Abbildung gilt: In der linken, oberen Ecke ist je Phase zu erkennen, ob der Kunde oder das Entwicklungs-Team (ETeam) maßgeblich involviert ist. Kunde Fachkonzept erstellen E-Team Setup bereitstellen E-Team Fachkonzept schätzen Kunde Systemtest durchführen Kunde/E-Team E-Team Fachkonzept anpassen Kunde Vorabtest durchführen DV-Konzept anpassen E-Team Implementierung durchführen [Entwicklung abgeschlossen] Abbildung 10 - Vorgehen bei der Weiterentwicklung von ASTAT Die Analyse-Phase ist im abgebildeten Vorgehensmodell in drei Schritte unterteilt. Zu Beginn erstellt der Kunde das Fachkonzept, welches die im Release umzusetzenden Funktionen nennt und beschreibt. Nachfolgend werden die im Fachkonzept enthaltenen Themen durch das Entwicklungsteam Patrick Rehder 64 >>> Derzeitiges Vorgehen Master-Thesis geschätzt. Da der Zeitraum für das Release und die vom Entwicklungs-Team zu erbringende Leistung meist festgelegt sind, kann nur der Umfang variieren. Damit die Anforderungen von der zur Verfügung stehenden Kapazität gedeckt werden, wird das Fachkonzept entsprechend angepasst. Außerdem wird das Fachkonzept in diesem Schritt weiter detailliert und Fehler korrigiert. Aufbauend auf dem Fachkonzept, wird das Datenverarbeitungskonzept (DV-Konzept) erstellt. Dieser Schritt beschreibt die Design-Phase aus dem allgemeinen Vorgehensmodell. Das Datenverarbeitungskonzept beschreibt aus technischer Sicht, wie die Funktionen umgesetzt werden sollen. Da ASTAT weiterentwickelt wird, steht die grundlegende Architektur der Anwendung bereits fest. Die Schritte Implementierung, Vorab-, Systemtest und das Bereitstellen eines Setups weisen keine nennenswerten Merkmale auf, die nicht bereits genannt wurden. 3.2.2. Vorgehensmodell: NIOB Das Vorgehen bei der Neuentwicklung von NIOB ist in Abbildung 11 dargestellt. Kunde/E-Team Anforderungen ermitteln E-Team E-Team DV-Konzept erstellen [Entwicklung abgeschlossen] Kunde Implementierung durchführen Kunde Diskussion mithilfe von Entwürfen der Benutzeroberfläche Systemtest durchführen E-Team Vorabtest durchführen Anwendung verteilen [nächste Stufe] Abbildung 11 - Vorgehen bei der Neuentwicklung von NIOB Die Neuentwicklung von NIOB erfolgte in zwei Stufen, wobei das Vorgehensmodell je Stufe durchlaufen wurde. Im Gegensatz zum Vorgehen bei ASTAT sammelte der Kunde seine Anforderungen nicht in einem Fachkonzept. Der Kunde und das Entwicklungs-Team entwickelten die Anforderungen in einem Gespräch und hielten diese im Datenverarbeitungskonzept fest. Bei den Gesprächen halfen Entwürfe der Benutzeroberfläche ein gemeinsames Verständnis der Benutzeroberfläche zu schaffen. Die Designphase fiel entsprechend gering aus, da dieselbe Architektur wie bei ASTAT genutzt wurde. Die Schritte Implementierung, Vorab- und Systemtest weisen keine nennenswerten Merkmale auf, die nicht bereits genannt wurden. Da es sich bei NIOB um ein internes Projekt handelte, wurde die Verteilung der Software vom Entwicklungs-Team in Kooperation mit der Infrastruktur durchgeführt. Patrick Rehder 65 >>> Derzeitiges Vorgehen Master-Thesis 3.2.3. Vorgehensmodell: TANTAL In der folgenden Abbildung 12 wird das Vorgehensmodell bei TANTAL beschrieben. Kunde Kunde/E-Team Konzeption Neusystem Design entwerfen Fach- und Datenverarbeitungskonzept Use Cases E-Team Implementierung durchführen Kunde UML Klassen, Ablauf- und Sequenzdiagramme Datenmodell E-Team Installationspaket bereitstellen Vorabtest durchführen Kunde [Entwicklung abgeschlossen] Konzept vom Altsystem E-Team Systemtest durchführen Abbildung 12 - Vorgehen bei der Neuentwicklung von TANTAL Die Anforderungen an TANTAL ergaben sich weitgehend aus dem Altsystem, welches mit einigen Anpassungen nachgebildet werden sollte. Der Kunde stellte das Konzept des Altsystems bereit, auf dessen Basis ein Konzept für das Neusystem entwickelt wurde. Hierbei wurden vom EntwicklungsTeam Use Cases erarbeitet, die mit dem Kunden abgestimmt wurden, aber auch ein Fach- und ein Datenverarbeitungskonzept. Ein Use Case bildete jeweils die Grundlage für eine Aufgabe, die von einem Entwickler bearbeitet wurde. Design und Implementierung hingen in diesem Fall eng zusammen. Jeder Use Case wurde von einem Entwickler durch ein UML Ablauf- oder Sequenzdiagramm dargestellt. Die dabei identifizierten Klassen und Methoden wurden in ein Klassendiagramm eingefügt. Nachdem die Ergebnisse einem informellen Review unterzogen wurden, konnte der Entwickler mit der Umsetzung beginnen. Die Schritte Vorab-, Systemtest und Bereitstellen des Installationspakets weisen keine nennenswerten Merkmale auf, die nicht bereits genannt wurden. Patrick Rehder 66 >>> Derzeitiges Vorgehen 3.3. Master-Thesis Techniken und Methoden In diesem Kapitel werden einzelne Techniken und Methoden genannt, die in den Projekten Anwendung gefunden haben. Freiräume Damit sich das Vorgehen in der Business-Unit „Externe Produkte“ verbessern und weiterentwickeln kann, werden Freiräume27 vorgesehen. Freiräume bieten Teammitgliedern die Möglichkeit sich mit neuen Technologien, Prozessen und Methoden auseinandersetzen; beispielsweise beim Vorstellen von Themen durch Kollegen oder dem Besuch von Schulungen und Konferenzen. Es ist aber auch die Zeit gemeint, um neue Ideen umsetzen und etablieren zu können – den Veränderungen benötigen Zeit zur Ein- und zur Durchführung. Die Freiräume sind nicht fest vorgegeben, sondern werden nach Bedarf genommen. Hierbei bedarf es der Zustimmung des Vorgesetzten, dem Business-Unit Manager. Damit ist es entscheidend, dass der Vorgesetzte den Nutzen von Freiräumen erkennt und diese auch gewährt. In der Business-Unit „Externe Produkte“ ist dies der Fall. Die Methode Slack (siehe Seite 53) von Extreme Programming beschreibt ähnliches. Architecture Board Das Architecture Board besteht aus drei bis fünf erfahrenen Entwicklern. Diese treffen sich einmal in der Woche, um projektübergreifende Architekturthemen zu besprechen. Zum Beispiel: Verwendung neuer Technologien, Aufstellen von Programmierrichtlinien und Diskussionen über Zweckmäßigkeit von gemachten Umsetzungen. Jeder Entwickler hat außerdem die Möglichkeit Themen im Architecture Board zu platzieren; über diese Themen wird beraten und ein Vorgehen vorgeschlagen. Dies zeigt, dass es sich beim Architecture Board um eine beratende Einheit handelt. Bei Extreme Programming findet sich mit der Quick Design Session aus der Methode Incremental Simple Design (siehe Seite 53) eine ähnliche Einrichtung. Stand-Up Meetings Zweimal in der Woche trifft sich die Business-Unit zum Stand-Up Meeting. Dieses Treffen lehnt sich an die Idee des Daily Scrums (siehe Seite 23) an und soll 30 Minuten nicht überschreiten. Im Stehen sind von jedem Teilnehmer drei Fragen zu beantworten: 1. Was habe ich seit dem letzten Meeting erreicht? 2. Was will ich bis zum nächsten Meeting erreichen? 3. Welches Problem hindert(e) mich an der Erreichung? 27 Warum Freiräume so wichtig sind wird von Tom DeMarco in seinem Buch „Slack“ [70] beschrieben. Patrick Rehder 67 >>> Derzeitiges Vorgehen Master-Thesis Planning Poker Planning Poker ist eine Methode zum Schätzen mit mehreren Personen. Der Begriff wurde 2002 von James Grenning [46] eingeführt und über das Buch „Agile Estimation and Planning“ von Mike Cohn [47] weit verbreitet. Mittlerweile stellt Planning Poker einen essentiellen Bestandteil des agilen Methodenkoffers dar. Beim Planning Poker gibt es zwei Arten von Teilnehmern: Kunden und Entwickler. Der Kunde bringt die zu schätzenden Themen ein und steht für Fragen zur Verfügung. Die Entwickler schätzen die Themen gemeinsam ein. Hierzu erhält jeder Entwickler einen Satz Planning Poker Karten, wie in Abbildung 13 dargestellt. „Ist bereits umgesetzt.“ oder „Kann in wenigen Minuten umgesetzt werden.“ 0 ½ 1 2 3 5 8 13 20 40 100 ? ∞ c „Ich brauche mehr Informationen, bevor ich schätzen kann.“ „Diese Anforderung ist zu groß zum Schätzen.“ „Ich brauche eine Pause.“ Abbildung 13 - Umfassender Kartensatz für Planning Poker Die Zahlenkarten repräsentieren ihren Wert in einer festzulegenden Einheit. Ein Kartensatz muss nicht unbedingt alle der abgebildeten Karten enthalten. So bestand der ursprüngliche Kartensatz von James Grenning aus den Werten: 1, 2, 3, 5, 7, 10 und dem Unendlichkeitszeichen. Bei einer Schätzung in Tagen war es somit nicht möglich, über zwei Wochen zu schätzen. Dies zwingt den Kunden dazu, die Anforderungen feiner zu gliedern; Grenning erachtet dies für sinnvoll. [46, p. 3] Durchgesetzt haben sich jedoch die Werte von Mike Cohn, welche sich an die Fibonacci-Folge28 anlehnen. Durch die sich vergrößernden Abstände zwischen den Werten, wird die Unsicherheit beim Schätzen großer Anforderungen berücksichtigt. [23, p. 50] Je zu schätzender Anforderung werden die folgenden Schritte durchlaufen: 1. Der Kunde stellt die zu schätzende Anforderung vor. 2. Unklarheiten zur Anforderung werden in der Gruppe diskutiert. 3. Jedes Mitglied der Schätzrunde wählt verdeckt eine Karte. 4. Sobald alle gewählt haben, werden die gewählten Karten aufgedeckt. 5. Eine der folgenden Situationen tritt ein: a. Alle Karten sind nahezu identisch; das Schätzergebnis steht fest. b. Die Karten weichen voneinander ab. In diesem Fall wird über die Abweichung gesprochen. Diejenigen mit dem kleinsten und dem größten Wert stehen hierbei im 28 Fibonacci-Folge: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … Patrick Rehder 68 >>> Derzeitiges Vorgehen Master-Thesis Vordergrund. Danach wird eine neue Schätzrunde durchgeführt. Dies wird solange wiederholt, bis sich auf ein Schätzergebnis geeinigt wurde. In den Projekten ASTAT und TANTAL wurden die Anforderungen in der Analyse-Phase mithilfe von Planning Poker geschätzt. Als Einheit wurden Personentage gewählt. Außerdem war der Kunde in den Schätzrunden nicht vor Ort, stattdessen wurde auf Basis vom Fachkonzept oder der Use Cases geschätzt. Unklarheiten wurden hierbei notiert und zur nächsten Runde Planning Poker geklärt. Visual Studio Team Foundation Server Den Projekten ASTAT, NIOB und TANTAL ist die Verwendung der gleichen Programmiersprache gemein; alle Projekte nutzen C#. Da C# von Microsoft entwickelt wird ist Visual Studio die Entwicklungsumgebung der Wahl. Als zentrale Plattform, für die Softwareentwicklung in Teams, bietet Microsoft den Visual Studio Team Foundation Server an. Der Visual Studio Team Foundation Server wird in der Business-Unit „Externe Produkte“ für folgende Aufgaben verwendet: Versionsverwaltung des Quelltextes Verwaltung der Aufgaben (Work Item Tracking) zentralisierte Builds (Team Builds) Der Funktionsumfang vom Team Foundation Server wird damit im Kern ausgeschöpft. [48] Analoges Task Board An einer großen freien Wand wurde ein Whiteboard angebracht, dass eine Fläche von etwa 2m × 4,5m hat. Dieses Whiteboard wird unter anderem als Task Board genutzt. Ein Task Board ist eine tabellarische Darstellung von Aufgaben, die den aktuellen Stand je Aufgabe darstellt. (siehe Abbildung 14) Folgende Punkte sind im Zusammenhang zum Task Board zu nennen: Abbildung 14 - Schema: Task Board [25, p. 12] Die Methode ist leicht zu verstehen und mit einfachen Mitteln durchzuführen. Es entsteht ein Aufgabenpool, an dem sich die Entwickler bedienen können. Die aufgrund der Kartengröße in Kürze notierten Aufgaben sind ohne Kontextwissen nur zu erahnen. Hierdurch werden Diskussionen im Team und mit dem Kunden angeregt. Der Fortschritt kann auf einen Blick erkannt werden. Patrick Rehder 69 >>> Derzeitiges Vorgehen Master-Thesis In den genannten Projekten der Business-Unit „Externe Produkte“ wurde ein Task Board eingesetzt, allerdings nicht einheitlich. So wurde es zur Strukturierung von großen Aufgaben genutzt, bei denen viele kleine Schritte zu erledigen waren. Aber auch als analoge Repräsentation der Aufgabenverwaltung des Team Foundation Servers. Letzteres umfasste die doppelte Pflege in beiden Medien. Alle Projekte nutzten die Spalten: offen, in Arbeit, zum Review freigegeben, in Review und erledigt. Ein Task Board wird in der Praxis häufig für das Sprint Backlog (siehe Seite 28) bei Scrum eingesetzt. Bei Extreme Programming bedient es die Methode User Stories (siehe Seite 51) in Verbindung mit dem Informative Workspace (siehe Seite 51). Regeln für die Entwicklung Um ein einheitliches Vorgehen in der Business-Unit zu gewährleisten, werden Regeln festgelegt. Hierbei darf jedes Teammitglied neue Regeln vorschlagen, aber auch vorhandene Regeln in Frage stellen. Beispielhaft können folgende Bereiche für Regeln genannt werden: Namenskonventionen für Ordner, Dateien, Klassen und Methoden Richtlinien zur Formatierung und Strukturierung von Quelltext Einsatz bestimmter Technologien, wie zum Beispiel Logging oder Unit-Testing Mit steigender Zahl nimmt die Häufigkeit zu, mit der Regeln vergessen oder missachtet werden. Das Einhalten der Regeln muss deswegen geprüft werden und dass möglichst automatisiert. Bei Regeln mit Bezug zum Quelltext können hierzu beispielsweise Werkzeuge zur statischen Code Analyse eingesetzt werden. Ist eine Automatisierung nicht oder nur mit unverhältnismäßigem Aufwand möglich, bleibt das Review, um Entwickler auf vergessene Regeln aufmerksam zu machen. Beim Extreme Programming entspricht dies den Coding Standards (siehe Seite 54). Scrum sieht die Möglichkeit vor allgemeingültige Regeln über die Definition of Done (siehe Seite 29) festzulegen. Knowledge Database Eine Knowledge Database oder Wissensdatenbank stellt das Langzeitgedächtnis des Teams dar. Sie dient dazu Wissen zu konservieren und anderen Teammitgliedern zugänglich zu machen. Für diese Zwecke wird in der Business-Unit „Externe Produkte“ die Kollaborationsplattform SharePoint von Microsoft eingesetzt. Hierbei handelt es sich um eine browsergestützte Plattform, welche die Zusammenarbeit im Team vereinfachen soll. Der SharePoint stellt unter anderem ein Wiki zur Verfügung, dient als Versionsverwaltung für Dokumente und bietet die Möglichkeit Umfragen anzulegen. Reviews Das Ergebnis jeder Entwicklungsaufgabe wird in der Business-Unit „Externe Produkte“ von einem anderen Kollegen aus fachlicher und technischer Sicht geprüft. Diese Art des Reviews wird in der Literatur [49, p. 96] als informelles Review bezeichnet. Bei einem informellen Review wird der Patrick Rehder 70 >>> Derzeitiges Vorgehen Master-Thesis Aufwand möglichst gering gehalten. Aufgrund der geringen Vorgaben hängt das Ergebnis stark von den Ansprüchen und der Wahrnehmung des Gutachters ab. Die Durchführung eines Reviews ist sowohl im Task Board als auch in der Aufgabenverwaltung vom Team Foundation Server integriert. Eine Aufgabe gilt erst als erledigt, wenn die im Review gefunden Anmerkungen mit dem Entwickler abgestimmt und von diesem behoben wurden; die Korrektur wiederum ist vom Gutachter zu prüfen. Für das Durchführen eines Reviews gab es eine Checkliste, die an eine Definition of Done (siehe Seite 29) erinnert. Retrospektiven In Anlehnung an Scrum wurden bei ASTAT, NIOB und TANTAL Retrospektiven durchgeführt, jeweils zum Ende eines Release. Durch das Betrachten eines großen Zeitraums, dehnten sich die Retrospektiven entsprechend aus. Der Ablauf der Retrospektiven orientierte sich stark am Sechs-Punkte-Ablauf einer Retrospektive von Boris Gloger (siehe Seite 24) und gestaltet sich wie folgt: 1. Einleitung In diesem Schritt erklärt der Moderator was eine Retrospektive ist und welche Ziele durch sie verfolgt werden. Dieser Schritt wird übersprungen, wenn dies allen Anwesenden bereits bekannt ist. 2. Geschützten Raum herstellen / Sicherheit erzeugen Der Moderator erläutert folgende Punkte: Alle Gespräche und Anmerkungen bleiben im Raum; Es sollen keine Sündenböcke gesucht werden; Der Moderator verhält sich neutral. Danach holt sich der Moderator von jedem Teilnehmer das Einverständnis für eine offene Aussprache der Projekterlebnisse ein. 3. Faktensammlung Auf einem Zeitstrahl werden Ereignisse gesammelt, die prägnant für den Zeitraum waren. Je Ereignis wird eine Karte erstellt, an den Zeitstrahl geheftet und mündlich mit zwei bis drei Sätzen erklärt. 4. Welche Prozesse haben funktioniert? In diesem Schritt werden Prozesse gesammelt, die gut funktioniert haben. Je Prozess wird eine Karte erstellt, an eine Pinnwand geheftet und ebenfalls mit zwei bis drei Sätzen erläutert. Danach wird nach Prozessen Ausschau gehalten, die in dieser Form unbedingt erhalten werden müssen; diese werden besonders markiert. 5. Welche Prozesse haben nicht funktioniert? In diesem Schritt werden Prozesse gesammelt, die nicht gut funktioniert haben. Für jeden Prozess wird eine Karte erstellt, an eine Pinnwand geheftet und auch mit zwei bis drei Sätzen veranschaulicht. Patrick Rehder 71 >>> Derzeitiges Vorgehen Master-Thesis 6. Gruppierung der Ergebnisse des fünften Punkts Die nicht funktionierenden Prozesse werden in zwei Gruppen unterteilt: In Prozesse die das Team verändern kann und in Prozesse die nicht vom Team beeinflusst werden können. 7. Weglassbar: Festlegung von Maßnahmen zur Veränderung Das Festlegen von Maßnahmen ist weglassbar, da es je nach betroffenem Prozess und nachfolgendem Projekt, nicht immer sinnvoll ist eine Maßnahme direkt zu bestimmen. 8. Feedbackrunde In der Feedbackrunde erhält jeder Teilnehmer die Möglichkeit zu sagen, ob ihm die Retrospektive gefallen hat oder nicht. 9. Protokoll erstellen Der Moderator erstellt Fotos von den Pinnwänden/Whiteboards und bereitet diese in einem Dokument auf. Patrick Rehder 72 >>> Derzeitiges Vorgehen 3.4. Master-Thesis Umfrage in der Business-Unit Die Umfrage erfolgt in drei Schritten: 1. Fragebogen entwickeln 2. Umfrage durchführen 3. Antworten auswerten In den folgenden Unterkapiteln werden Schritt 1 und 3 betrachtet. 3.4.1. Entwicklung des Fragebogens Die Umfrage wurde unter Zuhilfenahme des Dokuments „Online Befragungen mit echnopoll.com“ der Preyer GmbH [50] und dem „Leitfaden für die Erstellung eines Fragebogens“ von 2ask [51] entwickelt. Die einzelnen Schritte stellen sich wie folgt dar: Ziele bestimmen Es wurden die folgenden Ziele bestimmt: Das Vorgehen der Business-Unit soll für die Projekte ASTAT, NIOB und TANTAL ermittelt werden. Der aktuelle Kenntnisstand zur agilen Softwareentwicklung soll aufgezeigt werden. Sofern vorhanden, soll das Interesse an der agilen Softwareentwicklung aufgezeigt werden. Teilnehmerkreis festlegen Der Teilnehmerkreis beschränkt sich auf die Business-Unit „Externe Produkte“, es handelt sich deswegen um eine geschlossene Umfrage. Da zwei Mitglieder der Business-Unit bereits seit längerem in „fremden“ Projekten tätig sind und weiterhin sein werden, ergibt sich eine Summe von elf Teilnehmern. Medium bestimmen Die Umfrage soll über die Kollaborationsplattform SharePoint 2010 durchgeführt werden. Diese enthält alle benötigten Funktionen, um eine Umfrage zu erstellen. Für die Teilnahme wird lediglich ein Browser benötigt. Über diesen wird die Umfrage aufgerufen und durchgeführt. Die folgenden Punkte sprechen für eine „Online Umfrage“: Einige Mitglieder der Business-Unit sind derzeit in Frankfurt tätig und deswegen nur selten im Bremer Büro anzutreffen. Der Zugriff zum SharePoint steht den Kollegen jedoch unternehmensweit zur Verfügung. Die Anonymität kann bei Online Umfragen besser gewahrt werden, es ist keine Handschrift zu erkennen und die Abgabe erfolgt vertraulich. Voraussetzung hierfür ist, dass die Teilnahme nicht protokolliert wird. Patrick Rehder 73 >>> Derzeitiges Vorgehen Master-Thesis Es wurden bereits Umfragen in dieser Form durchgeführt. Das Vorgehen ist dem Team bekannt. Außerdem steht der SharePoint schon zur Verfügung und muss nicht extra eingerichtet werden. Teilnehmer können durch die Fragen geführt werden. Je nach Antwort lassen sich nachfolgende Fragen ein- oder ausblenden. Die Ergebnisse sind nach der Teilnahme direkt verfügbar und müssen nicht erst aufbereitet werden. Fragen erstellen Der Fragebogen ist in fünf Abschnitte unterteilt (siehe Tabelle 13). Nr. Bezeichnung des Abschnitts Fragen 1 Projektbewertung 2 2 Vorgehensmodelle 4 3 Techniken und Methoden 3 4 Agile Softwareentwicklung 3 5 Feedback 1 ∑ Summe 13 Tabelle 13 - Auflistung der fünf Abschnitte des Fragebogens In Summe setzt sich der Fragebogen aus dreizehn Fragen zusammen. Mit Ausnahme der letzten Frage, sind zu jeder Frage Antwortkategorien vorgegeben – es handelt sich damit um geschlossene Fragen. Aus den Antwortkategorien kann der Teilnehmer eine oder mehrere auswählen. Der Vorteil gegenüber offenen Fragen ist, dass die Fragen schneller und leichter zu beantworten sind. Außerdem wird die Auswertung vereinfacht, da die Antworten bereits gruppiert vorliegen. Dafür ist es aufwendiger geschlossene Fragen zu erstellen, weil die Antwortkategorien zusätzlich zur Frage entwickelt werden müssen. Der Fragebogen befindet sich im Anhang. Im Folgenden werden die Fragen abschnittweise näher erläutert: Abschnitt 1 Frage 1.1: Wie zufrieden bist Du mit dem Vorgehen in Bezug auf die Softwareentwicklung in den Projekten? Diese Frage soll die Zufriedenheit der Entwickler mit dem derzeitigen Vorgehen erfassen. Die Projekte ASTAT, NIOB und TANTAL werden hierbei einzeln bewertet. Damit in jeder Antwort eine Tendenz zu erkennen ist, wurde eine gerade Anzahl von Antwortkategorien gewählt. Aufgrund des guten Projektverlaufs und der positiven Stimmung in der Business-Unit, ist davon auszugehen, dass die Antworten zur „zufrieden“-Seite tendieren. Patrick Rehder 74 >>> Derzeitiges Vorgehen Master-Thesis Frage 1.2: Wie schätzt Du die Zufriedenheit der Auftraggeber mit dem Ergebnis ein? (Auftraggeber = Fachabteilung/Rot AG)? Diese Frage soll bestätigen, dass die Projekte gut verlaufen sind und die Auftraggeber mit den Ergebnissen zufrieden sind. Aufgrund des Aufwands wurde darauf verzichtet einen separaten Fragebogen für die Auftraggeber zu entwickeln. Abschnitt 2 Frage 2.1: Wie gut kennst Du die folgenden Vorgehensmodelle zur Entwicklung von Software? Durch diese Frage soll ein Überblick darüber gewonnen werden, welche Vorgehensmodelle dem Team bekannt sind. Die zur Auswahl stehenden Vorgehensmodelle wurden primär der Umfrage 2011: "Softwaretest in der Praxis" [4, pp. 7, 9] entnommen. Kanban wurde nicht übernommen, da Kanban als Methode in der Umfrage berücksichtigt wird. Des Weiteren wurden das Spiralmodell und Lean Development auf Grundlage der Studie „Agile Development: Mainstream Adoption Has Changed Agility“ ergänzt. [2, p. 2] Frage 2.2: Welches der genannten Vorgehensmodelle entspricht dem Vorgehen in den Projekten ASTAT, NIOB und TANTAL am ehesten? Für das Vorgehen in den genannten Projekten wurde kein bestimmtes Vorgehensmodell festgelegt. Es ist allerdings wahrscheinlich, dass die Antworten „Wasserfallmodell“ und „V-Modell“ gewählt werden, da in den Projekten phasenorientiert vorgegangen wurde. Frage 2.3: Wenn Du Dir ein Vorgehensmodell zur Softwareentwicklung für die Business-Unit „Externe Produkte“ aussuchen darfst, welches der folgenden wählst Du? Auf Basis vom allgemeinen Interesse der Business-Unit „Externe Produkte“ für Scrum, wird dies wahrscheinlich die häufigste Wahl sein; zumindest werden die Antworten zu agilen Vorgehensmodellen tendieren. Sollte dies nicht der Fall sein, wäre es umso schwieriger ein agiles Vorgehensmodell zu etablieren. Frage 2.4: Denkst Du, dass es realistisch ist, ein Vorgehensmodell in der Business-Unit „Externe Produkte“ einzuführen? Sofern Teilnehmer den Einsatz von Vorgehensmodellen ablehnen, können sie dies in Frage 2.3 mitteilen. Die Sicht in Frage 2.4 wird auf die Business-Unit erweitert. Der Befragte kann zeigen, dass er Bedenken damit hat, dass ein Vorgehensmodells vom Team angenommen wird. Abschnitt 3 Frage 3.1: Wie gut kennst Du die folgenden Techniken und Methoden? Durch diese Frage soll ein Überblick darüber gewonnen werden, welche Techniken und Methoden dem Befragten in welchem Grad bekannt sind. Die genannten Techniken und Methoden entstammen der agilen Softwareentwicklung oder werden dort zumindest intensiv genutzt. Die Liste ergibt sich aus einem Brainstorming, welches über folgende Quellen ergänzt wurde: Agile Techniken aus „State of Agile Survey“ [3, p. 4] Ereignisse und Artefakte aus Scrum (siehe Kapitel 2.2, ab Seite 16) Patrick Rehder 75 >>> Derzeitiges Vorgehen Master-Thesis Es handelt sich nicht um eine erschöpfende Liste aller agilen Techniken und Methoden. Dies ist auch nicht erforderlich, da nur ein Eindruck gewonnen werden soll. Frage 3.2: Welche der genannten Techniken und Methoden wurden in den Projekten ASTAT, NIOB und TANTAL eingesetzt? (Achtung: Mehrfachauswahl.) Diese Frage soll zeigen, dass bereits einige der genannten Techniken und Methoden in der Vergangenheit eingesetzt wurden. Frage 3.3: Welche der genannten Techniken und Methoden sollen Deiner Meinung nach zukünftig eingesetzt werden? (Achtung: Mehrfachauswahl.) Durch diese Frage wird kenntlich gemacht, welche Techniken und Methoden für sinnvoll erachtet werden. Abschnitt 4 Frage 4.1: Für wie wichtig hältst Du die folgenden Punkte in der Softwareentwicklung? Die zu bewertenden Punkte wurden dem agilen Manifest entnommen, wobei „Individuen und Interaktion“ und „Prozesse und Werkzeuge“ in vier Punkte aufgetrennt wurde (siehe Tabelle 14). Dadurch lässt sich prüfen, ob die Teilnehmer der Gewichtung des Manifests zustimmen. Da das Manifest den Kern der Agilität beschreibt, ist dies eine wichtige Erkenntnis. Punkt im Agile Manifest Individuen und Interaktionen Prozesse und Werkzeuge zu bewertende Punkt in der Umfrage Ideen des Einzelnen Interaktion zwischen den Beteiligten definierte Prozesse Werkzeuge/Tools funktionierende Software Funktionierende Software umfassende Dokumentation eine umfassende Dokumentation Zusammenarbeit mit dem Kunden Zusammenarbeit mit dem Kunden Vertragsverhandlungen Verträge mit dem Kunden Reagieren auf Veränderung schnelle Reaktion auf Veränderungen Befolgen eines Plans Festhalten an getroffenen Plänen Tabelle 14 - Zuordnung: Punkte im Agile Manifest und Punkte im Fragebogen Frage 4.2: Glaubst Du, dass die folgenden Punkte bei einer agilen Vorgehensweise mehr oder weniger ausgeprägt sind als bei einem nicht agilen Vorgehen? Über die positive oder negative Einschätzung der genannten Punkte kann festgestellt werden, ob die Teilnehmer in agilen Methoden eher eine Verbesserung oder eine Verschlechterung sehen. Frage 4.3: Welche dieser Aussagen trifft Deine Meinung zum Agilen Manifest am besten? Wie Frage 4.2 zielt diese Frage darauf ab, die Meinung zur agilen Softwareentwicklung zu bestimmen. Zugleich wird in Erfahrung gebracht, wer das Agile Manifest bereits kennt. Patrick Rehder 76 >>> Derzeitiges Vorgehen Master-Thesis Abschnitt 5 Frage 5.1: Hier ist der Platz für Anregungen, Wünsche, Kommentare und Kritik; alles auf diesen Fragebogen bezogen: Über dieses Freitextfeld kann der Befragte seine Meinung zum Fragebogen äußern. Was nicht nur für zukünftige Fragebögen interessant ist. Falls ein Teilnehmer beispielsweise schreibt, dass er einige Fragen nicht richtig verstanden hat, sind seine Antworten besonders kritisch zu betrachten. Qualitätssicherung Damit Fehler und missverständlich formulierte Fragen identifiziert werden, wurde der Fragebogen von mehreren Personen in mehreren Versionen Korrektur gelesen. 3.4.2. Auswertung der Antworten Die gewählten Antworten können der zusammenfassenden Übersicht29 entnommen werden, welche im Anhang hinterlegt ist. Dieses Kapitel behandelt die aus der Übersicht gewonnen Erkenntnisse. Einschätzung der Zufriedenheit Im ersten Abschnitt des Fragebogens musste jeder Teilnehmer die eigene Zufriedenheit mit dem derzeitigen Vorgehen und die Zufriedenheit des Kunden bewerten. Die Antworten jeder Antwortkategorie wurden gewichtet30 und je Projekt summiert. Über die Summe lässt sich bestimmen, ob die Teilnehmer in der Gesamtheit eher unzufrieden oder zufrieden sind. Das Ergebnis kann Tabelle 15 entnommen werden. Zufriedenheit … … zum Vorgehen … des Kunden ASTAT zufrieden unzufrieden NIOB neutral zufrieden TANTAL zufrieden sehr zufrieden Tabelle 15 - Einschätzung der Zufriedenheit Die folgenden zwei Punkte sind festzuhalten: Die Teilnehmer sind mit dem derzeitigen Vorgehen insgesamt zufrieden. Es lässt sich jedoch keine Tendenz zu einem „sehr zufrieden“ erkennen, damit gibt es hier Verbesserungspotential. Die Zufriedenheit des Kunden mit ASTAT wird überwiegend als unzufrieden eingeschätzt. Der Grund hierfür liegt im zuletzt angespannten Verhältnis zwischen dem Kunden und der Business-Unit. Die Spannung entstand durch Schätzzahlen für neue Funktionen, die nach Meinung des Kunden ungerechtfertigt hoch waren. 29 Da die Antworten in der Übersicht zusammengefasst wurden, ist es nicht möglich, die Antworten eines einzelnen Fragebogens nachzuvollziehen. 30 sehr unzufrieden = Wert -2, unzufrieden = Wert -1, zufrieden = Wert 1, sehr zufrieden = Wert 2 Patrick Rehder 77 >>> Derzeitiges Vorgehen Master-Thesis Bekanntheitsgrad von Vorgehensmodellen Die Teilnehmer mussten zu jedem der genannten Vorgehensmodelle eine der folgenden Optionen wählen: nie gehört, schon mal gehört, ich weiß was das ist, bereits eingesetzt. Vorgehensmodelle, bei denen mindestens fünf von zwölf Teilnehmern angaben, noch nie davon gehört zu haben, wurden in der Gruppe unbekannt eingestuft (siehe Tabelle 16). bekannt unbekannt Wasserfallmodell Scrum Extreme Programming V-Modell Rapid Prototyping Feature Driven Development Spiralmodell W-Modell V-Modell XT Crystal Lean Development Rational Unified Process Tabelle 16 - Bekanntheitsgrad der Vorgehensmodelle Interessant ist vor allem die Einstufung der Vorgehensmodelle, die in dieser Arbeit betrachtet werden: Keiner der Befragten gab an, noch nie von diesen gehört zu haben. Scrum haben die meisten bereits eingesetzt, während Extreme Programming eher theoretisch bekannt ist und von Feature Driven Development in der Mehrheit nur schon mal gehört wurde. Dies zeigt, dass agile Vorgehensmodelle bereits bekannt sind. Derzeitiges Vorgehensmodell Die Teilnehmer wählten, welches der genannten Vorgehensmodelle dem derzeitigen Vorgehen am ehesten entspricht. Das Ergebnis fiel unerwartet gemischt aus. Die Annahme, dass aufgrund des phasenorientierten Vorgehens bevorzugt das „Wasserfall-“ oder „V-Modell“ gewählt wird, bewahrheitete sich nicht. Drei Teilnehmer wählten zwar das Wassermodell, genauso viele aber auch Scrum. Es ist wahrscheinlich, dass Scrum aus zwei Gründen gewählt wurde: Einmal gibt es eine Iteration im derzeitigen Vorgehen und zum Zweiten wurden einzelne Elemente verwendet, die den agilen Techniken und Methoden zuzuordnen sind. Es bleibt festzuhalten, dass das derzeitige Vorgehen keinem bestimmten Vorgehensmodell entspricht. Dennoch ist es plausibel das derzeitige Vorgehen als Mischung aus Wasserfallmodell und Scrum zu bezeichnen. Ein zukünftiges Vorgehensmodell? Wenn sich die Teilnehmer ein zukünftiges Vorgehensmodell aussuchen könnten, würden sich zweidrittel für Scrum entscheiden. Das Ergebnis entspricht damit der getroffen Annahme, dass ein starkes Interesse für agile Vorgehensweisen in der Business-Unit „Externe Produkte“ vorherrscht. Da sich klar für ein bestimmtes Vorgehensmodell ausgesprochen wird und auch keine Probleme bei der Einführung eines Vorgehensmodells gesehen werden, ist die Einführung eines agilen Vorgehensmodells als realistisch anzusehen – zumindest aus Sicht der Business-Unit „Externe Produkte“. Patrick Rehder 78 >>> Derzeitiges Vorgehen Master-Thesis Bekanntheitsgrad von Techniken und Methoden Die Techniken und Methoden wurden in vier Kategorien eingeteilt (siehe Tabelle 17). sehr bekannt Automatisierter Buildprozess Continuous Integration Daily Standup Pair Programming Planning Poker Refactoring Retrospektive Task Board Unit-Testing bekannt User Stories Clean Code Development Definition of Done Burn Down Chart Timeboxing wenig bekannt Kanban Product Vision unbekannt Collective Code Ownership On-site Customer Tabelle 17 - Bekanntheitsgrad von Techniken und Methoden Nur vier der genannten Techniken und Methoden sind den Teilnehmern der Umfrage wenig oder unbekannt. Dies unterstützt die getroffene Aussage, dass agile Vorgehensmodelle bekannt sind. Es ist jedoch zu beachten, dass die Product Vision, der On-site Customer und die Collective Code Ownership wichtige Techniken und Methoden von Scrum und Extreme Programming sind. Da diese Vorgehensmodelle zuvor als bekannt eingestuft wurden und diese Techniken und Methoden unbekannt sind, ist noch nicht von einer tiefgreifenden Kenntnis zu sprechen. Derzeit eingesetzte Techniken und Methoden Die Hälfte der Teilnehmer wählten 8 der 18 genannten Techniken und Methoden aus, die in den Projekten ASTAT, NIOB und TANTAL eingesetzt wurden. Dies deckt sich mit der Aussage in der Motivation (Seite 7), dass agile Techniken und Methoden in der Business-Unit vereinzelt erprobt und genutzt werden. Außerdem finden sich die in Kapitel 3.3 (Seite 67) genannten Techniken und Methoden unter den meistgenannten Techniken und Methoden wieder. Zukünftig einzusetzende Techniken und Methoden Aus den Antworten zur Frage, welche Techniken und Methoden zukünftig eingesetzt werden sollen, können drei Punkte extrahiert werden: Techniken und Methoden die den Teilnehmern wenig oder unbekannt sind, wurden nicht für den zukünftigen Einsatz ausgewählt. Hierbei ist es denkbar dass die Methoden gewählt werden würden, wenn sie bekannt wären. Alle Techniken und Methoden die bereits eingesetzt werden, sollen auch weiterhin eingesetzt werden. Neben den bereits eingesetzten Techniken und Methoden besteht seitens der Befragten das Interesse weitere Techniken und Methoden einzusetzen. Patrick Rehder 79 >>> Derzeitiges Vorgehen Master-Thesis Einstellung zum agilen Vorgehen im Allgemeinen Die aus dem Agile Manifest gewonnenen zehn Punkte31 zur Softwareentwicklung wurden von den Teilnehmern bewertet. Um die Antworten auszuwerten, wurde die folgende Gewichtung genutzt: sehr wichtig = 2 Punkte, wichtig = 1 Punkt, neutral = 0 Punkte, unwichtig = -1 Punkt, sehr unwichtig = -2 Punkte. Das Ergebnis kann Abbildung 15 entnommen werden. wichtiger wichtig Individuen und Interaktionen 24 funktionierende Software 16 Zusammenarbeit mit dem Kunden 13 Reagieren auf Veränderung 15 13 3 3 -7 Prozesse und Werkzeuge umfassende Dokumentation Vertragsverhandlungen Befolgen eines Plans Abbildung 15 - Die Werte vom Agile Manifest in der Business-Unit „Externe Produkte“ Ohne explizit das Agile Manifest zu bewerten, stimmen die Teilnehmer der Wertung des Manifests zu. Im Zusammenhang mit der positiven Einschätzung einer agilen Vorgehensweise, welche aus den Antworten zu den Fragen 4.2 und 4.3 hervorgeht, stellt dies einen idealen Nährboden für die Einführung agiler Techniken, Methoden und Prozesse dar. 3.4.3. Fazit zur Umfrage Zusammenfassend können folgende Punkte zum Meinungsbild der Business-Unit genannt werden: 31 Es herrscht Zufriedenheit mit dem derzeitigen Vorgehen. Agile Vorgehensmodelle sind dem Team bereits bekannt. Das derzeitige Vorgehensmodell ist eine Mischung aus Scrum und dem Wasserfallmodell. Zweidrittel im Team würden sich bei Wahlfreiheit für Scrum entscheiden. Es werden keine Probleme gesehen ein Vorgehensmodell einzuführen. Viele agile Techniken und Methoden sind im Team bekannt. Bereits eingesetzte agile Techniken und Methoden sollen weiterhin eingesetzt werden. Das Team stimmt der Wertung vom Agile Manifest zu. Die im Fragebogen genannten Punkte werden den Punkten im Agile Manifest in Tabelle 14 auf Seite 76 zugeordnet. Patrick Rehder 80 >>> Mögliches Vorgehen 4. Master-Thesis Mögliches Vorgehen Das derzeitige Vorgehen in der Business-Unit „Externe Produkte“ bietet einen guten Ausgangspunkt, um das agile Vorgehen zu intensivieren. Folgende Punkte werden in Kapitel 3 (ab Seite 61) belegt: Der Kunde wird über Iterationen in den Prozess einbezogen. Schätzungen erfolgen nicht durch einzelne Personen, sondern durch Mehrere. Es wird nicht strikt nach Funktionen wie Entwickler, Tester und Datenbankspezialist getrennt – wobei es Vorlieben im Team gibt. Die Aufgaben werden nicht zugeteilt, sondern aus einem Aufgabenpool von den Entwicklern ausgewählt. Das Team setzt bereits agile Methoden ein. Die Werte vom Agile Manifest werden geschätzt. Dies bedeutet jedoch nicht, dass zukünftige Änderungen am Vorgehen zur Softwareentwicklung einen Freibrief erhalten. Jede Änderung betrifft Menschen. Menschen die von ihren Gewohnheiten abweichen müssen. Sie werden gezwungen unbekannte Wege zu gehen, die sie meist nicht beeinflussen können – es werden Ängste geweckt. Im Kern fällt die Reaktion der Betroffenen deswegen immer emotional aus; logische Argumente können daran nichts ändern. Veränderungen müssen sich für die Betroffenen gut anfühlen, damit sie akzeptiert werden. Denn es ist immer bequemer, dass bekannte Vorgehen beizubehalten. [9, p. 177] [8, p. 251] Es ist gefährlich zu glauben, dass sich eine Idee nur deswegen durchsetzt, weil sie gut ist. Die Vorteile rational zu vermarkten und eine Änderung anzustoßen reicht nicht aus. Eine nachhaltige Einführung benötigt die Akzeptanz aller Beteiligten – egal ob der Zündfunke im Management oder in Projekten entsteht. Vorträge auf dem ScrumDay2011 bestätigen dies, eine optimale Einführung geschieht von „Oben“ und von „Unten“. Alle Beteiligten zu überzeugen ist jedoch schwierig; folgende Punkte helfen dabei [52]: der Glaube an die Idee Leidenschaft, um die Idee zu verbreiten ein strategisches und geplantes Vorgehen Zeit um einen (kulturellen) Wandel zu ermöglichen mit Widerstand rechnen Patrick Rehder 81 >>> Mögliches Vorgehen Master-Thesis Die Einführung agiler Prozesse und Methoden kann außerdem durch einen erfahrenen Coach32 begünstigt werden. So wurde Scrum bei ImmobilienScout2433 von einem externen Coach eingeführt, was im Nachhinein als wesentlicher Erfolgsfaktoren genannt wurde. Der Grund hierfür liegt in der objektiveren Sicht des Coaches, da dieser die internen Prozesse des Unternehmens nicht kennt. [10, p. 49] Generell wurde in vielen Beiträgen auf dem ScrumDay2011 empfohlen, einen externen Coach zu beauftragen – und das nicht nur von Beratungsunternehmen. Neben dem Argument der Objektivität wurde häufig erwähnt, dass einem Coach meist mehr Gehör zuteilwird, als einem Mitarbeiter. Es gibt auch Unternehmen die eigene Coaching Teams aufbauen, um darüber agile Prozesse zu verbreiten. So zum Beispiel: die Deutsche Telekom AG [ScrumDay2011] und die XING AG [10, p. 137]. Für die Business-Unit „Externe Produkte“ sind folgende Punkte zu betrachten: Soll ein bestimmtes Vorgehensmodell eingesetzt werden? Ist ein eigenes Vorgehen mit weiteren agilen Methoden erstrebenswert? 4.1. Einsatz eines bestimmten Vorgehensmodells Ein bestimmtes Vorgehensmodell einzusetzen bedeutet in der agilen Welt nicht, dass sich dies nicht ändern kann. Einer der wichtigsten Eigenschaften agiler Teams ist, dass sie sich den Prozess auf ihre Bedürfnisse anpassen. Es ist vielmehr eine Frage des passenden Ausgangspunkts. Dieser ist entsprechend der Voraussetzungen zu wählen. Eine erste Orientierung liefert Tabelle 11 auf Seite 60; welche die Eignung von Scrum, Feature Driven Development und Extreme Programming bei unterschiedlichen Voraussetzungen bewertet. In der Business-Unit „Externe Produkte“ sind folgende Voraussetzungen zu finden: Der Größe der Business-Unit entsprechend handelt es sich um kleine Projekte. Die Projekte sind keine Festpreisprojekte. Fachexperten stehen meist nur über Telefon/E-Mail zur Verfügung. Das Team ist selbstgesteuert, es wird kein Vorgehen vorgeschrieben. Die Entwickler sitzen in einem Büro zusammen. Die Teammitglieder sind nicht spezialisiert, haben aber Vorlieben für Themengebiete. Es sind Erfahrungen mit agilen Methoden vorhanden, weniger mit agilen Prozessen. Laut Tabelle 11 (Seite 60) eignen sich unter diesen Voraussetzungen vor allem Scrum und Extreme Programming. 32 33 Statt Berater wird im agilen Umfeld häufig der Begriff Coach (deutsch: Trainer) verwendet. „ImmobilienScout24 ist der größte deutsche Internet-Marktplatz für Immobilien.“ [www.immobilienscout24.de] Patrick Rehder 82 >>> Mögliches Vorgehen Master-Thesis 4.1.1. Warum nicht Feature Driven Development? Feature Driven Development ist insbesondere für große Softwareprojekte geeignet. Softwareprojekte in denen viele Entwickler mit unterschiedlichem Talent und Hintergrund, sowie unterschiedlicher Erfahrung und Kultur aufeinandertreffen. [8, p. xxi] Vor allem die Größe der Projekte ist in der Business-Unit „Externe Produkte“ nicht gegeben. Dennoch ist es eine interessante Eigenschaft von Feature Driven Development, dass es sich gut in einen Rahmen aus Anforderungsanalyse und Test integrieren lässt. Die Anforderungen werden in Features überführt und das Softwaresystem wird nach der Entwicklung noch einmal einem Test unterzogen. [8, p. 260] Damit ließe sich Feature Driven Development gut ins derzeitige Vorgehen einsetzen (siehe Abbildung 16). Die Einführung von Feature Driven Development würde sich auf die Business-Unit beschränken. Der Kunde ist erst einmal nicht betroffen. Er kann nach und nach in den Prozess einbezogen werden. [nach Vorabtest] Analyse Feature Driven Development Test Verteilung [nächstes Release] Abbildung 16 - Vorgehensmodell mit Feature Driven Development Dass Feature Driven Development in einer Bank entwickelt wurde, kann vernachlässigt werden. In der Literatur wird nirgends ein spezifischer Bezug zur Softwareentwicklung in einer Bank hergestellt. Einzig die Vorgabe einer klaren Hierarchie mit festgelegten Zuständig- und Verantwortlichkeiten kann einer Bank zugeordnet werden – wie aber auch vielen anderen Unternehmen. Aufgrund der zu erwartenden Projektgrößen und der Teamkultur ist der Einsatz von Feature Driven Development nicht sinnvoll. 4.1.2. Scrum als eine Möglichkeit Viele Punkte sprechen für den Einsatz von Scrum: Laut Umfrage ist Scrum das Vorgehensmodell der Wahl. Die Kultur der Business-Unit passt zu Scrum. Die Größe der Projekte eignet sich für Scrum. Die Größe der Business-Unit eignet sich für Scrum. Viele der eingesetzten Techniken und Methoden sind Scrum entlehnt. Patrick Rehder 83 >>> Mögliches Vorgehen Master-Thesis Teamintern existieren damit gute Voraussetzungen für die Einführung von Scrum. Die Herausforderung liegt darin, den Kunden mit einzubeziehen. Im Falle der Commerzbank ist dies aufgrund der vielen unterschiedlichen Interessenvertreter umso schwieriger. Abhängig vom Projekt sind neben den Interessen der Fachabteilung, beispielsweise auch die Interessen der IT-Infrastruktur oder der ITSicherheit zu berücksichtigen. Eine Berücksichtigung der Interessen kann über den Product Owner gewährleistet werden: Wünscht der Kunde bestimmte Informationen zum Projekt, um beispielsweise die Sicherheit des Produkts über Architekturdiagramme zu bewerten, kann der Product Owner diese bereitstellen. Gegebenenfalls muss er ein Backlog Item zum Gewinnen von Informationen erstellen. Sofern der Kunde darin einen fachlichen Nutzen sieht, wird folgende Aussage auch nicht verletzt (siehe Seite 28): „Es gibt keine technischen Product Backlogs.“ Außerdem hat der Product Owner Einfluss auf die Definition of Done. Über sie kann er beispielsweise sicherstellen, dass bei jedem Backlog Item das Architekturschaubild aktualisiert werden muss. Eine Bündelung der verschiedenen Interessen über den Product Owner sorgt dafür, dass die Schnittstellen mit dem Kunden erhalten bleiben. Damit ist eine ähnliche Integration von Scrum in das derzeitige Vorgehensmodell denkbar, wie beim Feature Driven Development (siehe Abbildung 16). Ob ein solcher Rahmen bei neuen Projekten erforderlich ist, wäre zu prüfen. Der Kunde könnte beispielsweise Gefallen daran finden, wenn er kein Fachkonzept entwickeln muss und die Anforderungen stattdessen in einem Product Backlog gemeinsam gesammelt werden. Generell bieten neue Projekt die Chance dem Kunden die Vorteile von Scrum aufzuzeigen und mit ihm Scrum zu versuchen. Hierbei ist die Anzahl der benötigten Entwickler eine entscheidende Größe. Handelt es sich um ein kleines Projekt, ist es schwierig einen Product Owner und Scrum Master als Vollzeitaufgabe zu rechtfertigen – was Scrum so vorsieht. Eine Lösung hierfür sind Doppelrollen, was jedoch nicht unproblematisch ist. Mehrere Rollen in einer Person bergen das Risiko von Interessenskonflikten: Wird beispielsweise der Product Owner von einem Entwickler wahrgenommen, so kann dieser dazu tendieren das Product Backlog nach technologischem Interesse zu priorisieren, anstelle vom Geschäftswert. Doppelrollen gefährden außerdem die Qualität, mit der Aufgaben bearbeitet werden. Ein Scrum Master benötigt Zeit, um sich mit dem gelebten Prozess im Detail zu beschäftigen. Er sorgt dafür, dass das Scrum Team im Alltag motiviert ist innezuhalten, zurückzublicken und sich weiterzuentwickeln. [10, pp. 168-170] Insgesamt bleibt festzuhalten, dass die Einführung von Scrum als realistisch anzusehen ist. Patrick Rehder 84 >>> Mögliches Vorgehen Master-Thesis 4.1.3. Extreme Programming als andere Möglichkeit Gemäß den Voraussetzungen in der Business-Unit „Externe Produkte“ eignet sich auch Extreme Programming als mögliches Vorgehensmodell. Dem Kapitel 2.4 (ab Seite 42) ist zu entnehmen, dass es sich bei Extreme Programming um eine Sammlung bewährter Methoden zur Softwareentwicklung handelt, welche maximal möglich eingesetzt werden. Auch bei der Einführung von Extreme Programming wird diese extreme Art verfolgt: Es gilt nicht Extreme Programming zu verkaufen; Extreme Programming muss gemacht werden, um dann die Resultate zu verkaufen. Der Einsatz von Extreme Programming erfolgt nicht zum Selbstzweck, sondern um zu gewinnen34. [9, pp. 27, 28, 176] Durch das offensive Vorgehen soll Erfahrung gewonnen werden, die zur Bewertung des Vorgehens genutzt werden kann. Dennoch wird nicht empfohlen blind loszustürmen. Es wird nahegelegt Extreme Programming in einem unkritischen Projekt zu erproben. Außerdem gilt es klein anzufangen und nicht sofort alle Methoden einzusetzen. Folgendes Vorgehen wird vorgeschlagen [38, p. 123]: 1. Das größte Problem im Entwicklungsprozess identifizieren. 2. Passende Methode(n) von Extreme Programming auswählen. 3. Gewählte Methode(n) einführen. 4. Wenn es das größte Problem nicht mehr gibt, wieder bei Punkt 1 beginnen. Hierbei wird es empfohlen maximal zwei Wochen zwischen einem Zyklus zu lassen. Der Grund hierfür liegt in der Wechselwirkung, die von den Methoden untereinander erzeugt wird. Diese Wechselwirkung wirkt sich positiv auf den Gesamtprozess aus und stellt damit einen wichtigen Effekt von Extreme Programming dar. [9, pp. 34, 35] Im Kapitel 2.4.4 (Seite 58) wird auf die Rollen von Extreme Programming hingewiesen. Für die Einführung von Extreme Programming ist insbesondere eine zu nennen: Der Coach. Ein Coach begleitet das Team und unterstützt beim Einführen vor allem mit seiner Erfahrung. Damit ist diese Rolle, der Rolle des Scrum Masters ähnlich; es sind die im vorigen Kapitel aufgeführten Doppelrolleneffekte zu beachten. [38, p. 73] Der Einsatz von Extreme Programming bedeutet, sich mit allen Aspekten des Prozesses zu beschäftigen und nicht nur einzelne Methoden zu selektieren. Derzeit werden Methoden in der BusinessUnit bereits selektiv genutzt, zu nennen sind Coding Standards, Continuous Integration und Refactoring. Weitere Methoden einzuführen ist aufgrund der Voraussetzungen als realistisch anzusehen und damit Extreme Programming als Ganzes einzuführen. 34 Unter „gewinnen“ ist zu verstehen, dass Softwareprojekte erfolgreich durchgeführt werden. Patrick Rehder 85 >>> Mögliches Vorgehen 4.2. Master-Thesis Einsatz eines eigenen Vorgehensmodells Ein eigenes Vorgehensmodell einzusetzen, ist in der Praxis nicht unüblich: 17% von etwa 4.700 Befragten (2010) gaben an, einen Hybriden aus Scrum und Extreme Programming zu nutzen; 5% setzen einen eigenen Hybriden ein. [3, p. 4] 27% von etwa 250 Befragten (2011) gaben an ein eigenes oder angepasstes Modell zu nutzen. [4, p. 9] „Die wenigsten agilen Teams folgen genau einer dieser Methoden, sondern arbeiten mit agilen Praktiken aus unterschiedlichen Methoden und passen ihren Prozess ihren Bedingungen an.“ [6, p. 20] Ein Erfahrungsbericht berichtet von einer pragmatischen Mischung aus Scrum, Extreme Programming und Feature Driven Development. [10, p. 105] Vor dem Agile Manifest ist die Entstehung eines eigenen Vorgehensmodells sogar als logische Konsequenz der agilen Softwareentwicklung zu sehen. Aus dem Agile Manifest geht hervor, dass der Prozess den beteiligten Individuen untergeordnet ist. Bei Problemen sind nicht die Beteiligten in den Prozess zu pressen – es ist der Prozess zu überdenken. Dieser Gedanke stellt die Basis für das Streben nach Verbesserungen dar. Der eingesetzte Prozess wird immer weiter an die eigenen Bedürfnisse angepasst, so dass er irgendwann als eigener, angepasster Prozess gelten kann. Die Grenzen zwischen einem bestimmten und einem eigenen Prozess verschwimmen. Damit ist es eine Frage der Ausgangsposition. Der Vorteil direkt ein eigenes Vorgehensmodell zu entwickeln liegt darin, dass es einem die maximale Freiheit liefert. Um nicht von den Möglichkeiten erdrückt zu werden, ist es hilfreich sich an anderen Vorgehensmodellen zu orientieren. Dieses Vorgehen wurde in der Business-Unit „Externe Produkte“ bereits genutzt: Einzelne agile Methoden wurden erprobt und gegebenenfalls adaptiert. So ist das derzeitige Vorgehensmodell entstanden. Es ist denkbar dieses Vorgehen zur Weiterentwicklung beizubehalten. Wird das Erproben und Adaptieren neuer Methoden systematisch durchgeführt, ergibt sich daraus die Möglichkeit sein eigenes Vorgehensmodell zu entwickeln. Patrick Rehder 86 >>> Mögliches Vorgehen Master-Thesis 4.2.1. Continuous Method Evaluation Hinter diesem Namen verbirgt sich die Idee Methoden fortlaufend abzuschätzen, um daraus ein strukturiertes Vorgehen abzuleiten. Hierzu wird eine Liste mit Methoden regelmäßig vom Team hinsichtlich Kenntnis und Sinn bewertet. Über diese Informationen kann bestimmt werden, in welcher Reihenfolge die Methoden zu betrachten und mit welcher Intensität Schulungen durchzuführen sind. Um Störungen bei der Einführung neuer Methoden so gering wie möglich zu halten, soll sich zurzeit auf eine Methode oder eine Gruppe passender Methoden konzentriert werden. Bei einer kontinuierlichen Einführung sorgt dies zwar für einen konstanten Störpegel, dafür bleibt der Überblick gewahrt. Jede Methode durchläuft folgende Schritte: 1. Schulung zur Methode durchführen 2. Methode einsetzen 3. Einsatz der Methode prüfen Damit folgt dieser Ansatz der Idee von Extreme Programming eine Methode erst einmal einzusetzen, um diese danach zu bewerten. Die zuvor stattfindende Schulung stellt sicher, dass alle im Team ein gemeinsames Verständnis entwickeln. Der Aufwand je Methode ist hierbei als gering einzuschätzen, er variiert je Methode und Kenntnisstand im Team. Ein denkbares Vorgehen ist, dass sich ein Teammitglied mit einer Methode beschäftigt und sein Wissen in einer Präsentation oder einem Workshop weitervermittelt. Auflistung der zu bewertenden Methoden Eine beispielhafte Liste mit Methoden kann auf Basis der Grundlagen (Kapitel 2, ab Seite 11), dem Kapitel 3.3 „Techniken und Methoden“ (ab Seite 67) und Abschnitt 3 der Umfrage (Kapitel 3.4.1, ab Seite 73) erstellt werden (siehe Tabelle 18): Architecture Board Automatisierter Buildprozess Burn Down Chart Class Ownership Clean Code Development Coding Standards Collective Code Ownership Continuous Integration Daily Standup Definition of Done Energized Work Impediment Backlog Incremental Simple Design Informative Workspace Kanban Metaphor On-site Customer Pair Programming Planning Poker Product Backlog Product Vision Quarterly Cycle Refactoring Retrospektive Reviews Sit Together Slack Task Board Ten-Minute Build Test-First Programming Timeboxing Unit-Testing User Stories Weekly Cycle Whole Team Tabelle 18 - Beispiel: Liste mit 35 Methoden (alphabetisch sortiert) Patrick Rehder 87 >>> Mögliches Vorgehen Master-Thesis Da eine regelmäßige Befragung angestrebt wird, ist es unproblematisch mit einer kleinen Liste zu beginnen und diese dann zu erweitern. Dieses Vorgehen bietet sogar den Vorteil, dass die Befragten zu Beginn nicht von der Masse an Methoden erschlagen werden. Bewertung der Methoden Die Methoden sollen hinsichtlich Kenntnisstand und Sinnhaftigkeit von jedem Teammitglied bewertet werden. Es gilt außerdem in Erfahrung zu bringen, ob eine Methode bereits eingesetzt wird oder nicht. Um dies in Erfahrung zu bringen eignet sich ein Fragebogen, der dem dritten Abschnitt aus der Umfrage in der Business-Unit (Kapitel 3.4.1, ab Seite 73) ähnelt. Kennst Du „…“? Wertung Ja, kenne ich sogar sehr gut. 3 Ja, kenne ich. 1 Ja, aber nur vom Namen her. 0 Nein, nie gehört. 0 Möchte ich nicht einschätzen. ? Tabelle 19 - Frage 1: „Ist die Methode bekannt?“ Die in Tabelle 19 aufgeführte Frage bringt in Erfahrung, wie gut ein Teammitglied die entsprechende Methode kennt. Da jeder Antwortkategorie ein Wert zugeordnet ist, kann eine Teamwertung je Methode erfolgen. Anhand dieser Wertung kann eine Reihenfolge gebildet werden. Eine niedrige Wertung entspricht hierbei einem geringen Bekanntheitsgrad. Die Antwortkategorie „Möchte ich nicht einschätzen.“ wird bei der Wertung nicht berücksichtigt (deswegen das Fragezeichen) und kann vom Befragten dazu genutzt werden, keine Bewertung abzugeben. Wird die Antwortkategorie „Nein, nie gehört.“ oder „Ja, aber nur vom Namen her.“ gewählt, entfallen weitere Fragen zur Methode. Wird „…“ derzeit eingesetzt? Wertung Ja. 1 Nein. -1 Weiß ich nicht. ? Tabelle 20 - Frage 2: „Wird die Methode derzeit eingesetzt?“ Die Frage in Tabelle 20 gibt Auskunft darüber, ob eine Methode bereits eingesetzt wird. Die Antwortkategorien sind hierzu mit einem Wert versehen. Ist die Summe über alle Antworten zu einer Methode größer Null, ist davon auszugehen, dass die Methode aktuell eingesetzt wird. Falls der Befragte es nicht einschätzen kann, kann er die Antwortkategorie „Ich weiß nicht.“ wählen. Diese Antwortkategorie wird in der Wertung nicht berücksichtigt. Patrick Rehder 88 >>> Mögliches Vorgehen Master-Thesis Ist es Deiner Meinung nach sinnvoll „…“ einzusetzen? Wertung Ja, es ist sehr sinnvoll. 2 Ja, es ist sinnvoll. 1 Nein, es ist nicht sinnvoll. -1 Nein, es ist gar nicht sinnvoll. -2 Kann ich nicht einschätzen. ? Tabelle 21 - Frage 3: „Ist es sinnvoll die Methode einzusetzen?“ Über Frage 3 (Tabelle 21) kann ermittelt werden, ob eine Methode als sinnvoll eingeschätzt wird. Auf Basis der Teamwertung zur Methode lässt sich eine Reihenfolge erstellen. Bei Methoden die sich derzeit nicht im Einsatz befinden kann die Reihenfolge dazu genutzt werden, um die nächste einzuführende Methode auszuwählen. Befindet sich die Methode im Einsatz, kann aus der Teamwertung abgelesen werden, ob der Einsatz der Methode als sinnvoll erachtet wird. Für Anmerkungen und Kommentare soll zu jeder Methode ein Textfeld angeboten werden. Nachdem jede Methode eine Teamwertung zur Kenntnis, zum Einsatz und zur Sinnhaftigkeit erhalten hat, können Ranglisten in folgenden Kategorien gebildet werden: Methoden mit großem Schulungsbedarf Alle Methoden sortiert nach einer niedrigen Kenntniswertung. Einsatzbereitschaft der Methoden Alle Methode die nicht im Einsatz sind, sortiert nach einer hohen Sinnhaftigkeit. Erfolgreich angewendete Methoden Alle Methoden die im Einsatz sind, sortiert nach einer hohen Sinnhaftigkeit. Die Ranglisten bieten eine Orientierung für welche Methoden es sich lohnt, sich weiter mit ihnen zu beschäftigen. Für Methoden mit einem großen Schulungsbedarf wird ein Teammitglied gesucht, welches sich mit dem Thema beschäftigt. Eine Methode deren Einsatz als besonders sinnvoll erachtet wird, ist in einer Teamrunde zu besprechen und gegebenenfalls zu erproben. Wird eine Methode eingesetzt und von den meisten Teammitgliedern als nicht sinnvoll eingeschätzt, muss überlegt werden die Methode nicht weiter einzusetzen. Über die Ranglisten lässt sich ein Bild für das Vorgehen zur Einführung gewinnen. Dieses kann durch detaillierte Fragen weiter verfeinert werden, was jedoch den Aufwand je Teilnehmer und für die Auswertung erhöht. Digitale Befragung Für die Datenerhebung ist von jedem Teammitglied ein Fragebogen auszufüllen. Der Zeitbedarf ist hierbei in Summe nicht unerheblich: Sind für 35 Methoden je 3 Fragen zu beantworten, bei einer angenommen Antwortzeit von 15-20 Sekunden pro Frage, ergibt sich daraus eine Gesamtbearbeitungszeit von etwa 30 Minuten je Teilnehmer. Da eine regelmäßige Befragung geplant ist, summie- Patrick Rehder 89 >>> Mögliches Vorgehen Master-Thesis ren sich die Aufwände bei jeder Befragung. Um die Ergebnisse möglichst aktuell zu halten, ist insbesondere nach einer Schulung oder dem Einsatz einer Methode, eine Umfrage durchzuführen. Hierbei ist es jedoch nicht erforderlich immer alle Methoden neu zu bewerten, sondern nur betroffene Methoden. Dies reduziert den Aufwand für nachfolgende Befragungen. Der Aufwand zur Auswertung wurde noch nicht betrachtet. Da es sich um geschlossene Fragen handelt und den Antwortkategorien ein Wert zugewiesen wurde, ist es möglich die Ranglisten vollautomatisch zu erstellen. Somit entsteht bei wiederholten Umfragen kein Aufwand beim Auswerten. Nur die Freitextfelder können nicht automatisiert berücksichtigt werden. Die Anmerkungen direkt zu berücksichtigen ist allerdings auch nicht erforderlich. Sie können durchgesehen werden, wenn sich mit der jeweiligen Methode auseinandergesetzt wird. Um die Auswertung zu automatisieren ist es hilfreich, dass die Antworten über einen digitalen Fragebogen erfasst werden. Wobei das eingesetzte Umfrage-System in der Lage sein muss eine automatische Auswertung durchzuführen. Ist dem nicht so, muss das System zumindest über eine Exportfunktion verfügen, damit die Auswertung in einer anderen Anwendung erfolgen kann. Alternative kann auch eine eigene Anwendung entwickelt werden. Die Anzahl der Fragen ist überschaubar und die Auswertungslogik beschränkt sich auf die Grundrechenarten. Damit gestaltet sich eine solche Anwendung übersichtlich, wie folgenden Skizzen einer möglichen Benutzeroberfläche zeigen. Die Skizzen verdeutlichen außerdem, wie eine Befragung ablaufen könnte. Abbildung 17 - Skizze der Benutzeroberfläche: Methodenübersicht In der Methodenübersicht (siehe Abbildung 17) werden alle Methoden aufgelistet. Oben stehen Methoden die noch nicht bewertet wurden. Danach folgen in absteigender Reihenfolge die Methoden, deren Bewertung am längsten zurückliegt. Patrick Rehder 90 >>> Mögliches Vorgehen Master-Thesis Abbildung 18 - Skizze der Benutzeroberfläche: Frage 1 und Frage 2 Wird eine Methode in der Methodenübersicht ausgewählt, werden für diese Methode die Fragen zur Bewertung geöffnet (siehe Abbildung 18). Hat der Benutzer die Methode bereits bewertet, werden seine zuvor gegebenen Antworten hervorgehoben. Abbildung 19 - Skizze der Benutzeroberfläche: Frage 3 und Anmerkungen In Abbildung 19 wird die Bewertung über Frage 3 abgeschlossen, danach hat der Benutzer noch die Möglichkeit eine Anmerkung in einem Freitextfeld zu verfassen. Wird im Anmerkungsfenster die Schaltfläche „fertig“ gewählt, öffnet sich die Methodenübersicht des Benutzers. Patrick Rehder 91 >>> Mögliches Vorgehen Master-Thesis Abbildung 20 - Skizze der Benutzeroberfläche: Ranglisten In den Ranglisten (Abbildung 20) werden die Methoden anhand der Teambewertung entsprechend einsortiert. Es ist denkbar die Anwendung als Client-Server-Anwendung oder als Webanwendung umzusetzen. In den Skizzen wurde die Administration von den Benutzern und Methoden nicht berücksichtigt. 4.3. Nachbetrachtung Egal ob ein bestimmtes oder ein eigenes Vorgehensmodell als Basis für die Einführung genutzt wird, folgende Voraussetzungen müssen erfüllt sein: Die Projektbeteiligten müssen motiviert sein neue Wege zu gehen. Es muss Zeit zur Verfügung stehen und eventuell auch Geld, beispielsweise für Material. Wollen sich die Projektbeteiligten nicht anpassen, klammern sie sich am alten Vorgehen fest und versuchen die neuen Prozesse zu umgehen. Außerdem können sie Veränderungen bei anderen Projektbeteiligten schlecht machen und damit für eine schlechte Stimmung sorgen. Vorgesetzte haben darüber hinaus Befugnisse, mit denen sie Zeit und Geld zur Verfügung stellen – oder auch nicht. Ohne Zeit ist es nicht möglich sich mit einem neuen Prozess zu beschäftigen und diesen umzusetzen. Sind die Voraussetzungen gegeben, ist zwischen einer radikalen und einer iterativen Prozesseinführung zu wählen. Die Vorteile einer iterativen Einführung wurden zuvor bereits genannt, sie birgt jedoch auch Nachteile. Werden ständig Neuerungen etabliert, führt dies zu einer ständigen Belastung Patrick Rehder 92 >>> Mögliches Vorgehen Master-Thesis des Projektteams. Dies kann dazu führen, dass die Motivation über die Zeit versiegt und weitere Einführungen damit blockiert werden. Bei einer radikalen Prozesseinführung hingegen, wird zu einem Stichtag oder zu Beginn eines neuen Projekts das Vorgehen „komplett“ umgestellt. Hierdurch müssen sich die Beteiligten zwar geballt an etwas Neues gewöhnen, dafür ist die Gefahr geringer dass an alten Gewohnheiten festgehalten wird. [10, p. 70] Die beste Lösung liegt in einem gemischten Vorgehen: Zu Beginn wird ein Rahmen radikal eingeführt und danach kann dieser über Schleifen verbessert und angepasst werden. Vor diesem Hintergrund ist Continuous Method Evaluation nicht die beste Wahl, um ein agiles Vorgehen in einem klassisch organisierten Projektteam zu etablieren. Es bietet sich vielmehr an, wenn ein agiles Vorgehen bereits vorhanden ist und dieses um weitere Methoden erweitert werden soll. Für die Einführung agiler Prozesse und Methoden wird außerdem eine treibende Kraft benötigt, in Scrum und Extreme Programming sind hierfür extra Rollen vorgesehen. Es muss sich jemand verantwortlich fühlen, der sich zumindest mit dem Prozess oder der Methoden beschäftigt hat und die Umsetzung im Auge behält. Zu Beginn von Kapitel 4 wurden folgende Fragen in Bezug auf die Business-Unit gestellt: Soll ein bestimmtes Vorgehensmodell eingesetzt werden? Ist ein eigenes Vorgehen mit weiteren agilen Methoden erstrebenswert? Beide Szenarien sind denkbar. Aufgrund der Voraussetzungen sind Scrum und Extreme Programming geeignet, wobei Scrum vom Team bevorzugt wird. Beide würden das derzeitige Vorgehensmodell ablösen. Die Alternative besteht darin das aktuelle Vorgehen um weitere Methoden anzureichern. Hierfür könnte Continuous Method Evaluation erprobt werden. Patrick Rehder 93 >>> Ergebnis 5. Master-Thesis Ergebnis Kapitel 1.2 (Seite 8) führt die Ziele dieser Arbeit auf: Agile Softwareentwicklung betrachten Vorgehen analysieren und dokumentieren Mögliches Vorgehen zeigen Beim Betrachten der agilen Softwareentwicklung konnten wertvolle Erkenntnisse gewonnen werden. Ein agiles Vorgehen definiert sich über die Werte, welche im Agile Manifest festgehalten sind. Werden diese Werte in Softwareprojekten geschätzt, entsteht eine Kultur die berücksichtigt, dass Software von Menschen für Menschen entwickelt wird. In einer solchen Umgebung können sich Agile Prozesse wie Scrum, Feature Driven Development und Extreme Programming entfalten. Werden die Prozesse miteinander verglichen, zeigt sich die Agilität von ihrer vielfältigen Seite: Scrum beschreibt einen Rahmen mit einer flachen Hierarchie und gibt wenig Details vor. Feature Driven Development ist hierarchisch organisiert und kann gut skaliert werden. Extreme Programming konzentriert sich auf das Programmieren und detailliert auf Methodenebene beschrieben. Die Analyse des derzeitigen Vorgehens in der Business-Unit „Externe Produkte“ ergibt, dass das Team entweder bereits agil unterwegs ist oder zumindest eine Kultur vorherrscht, die zu einem agilen Vorgehen passt. Das identifizierte Vorgehensschema verfügt über Iterationen, die auch in agilen Prozessen vorgesehen sind. Außerdem werden bereits agile Methoden eingesetzt, wie beispielsweise Planning Poker oder ein Task Board. Aus der durchgeführten Umfrage geht hervor, dass die Teilnehmer mit den im Agile Manifest genannten Werten übereinstimmen und ein starkes Interesse an der Einführung von Scrum besteht. Das etablierte Vorgehen und die Kultur der Business-Unit „Externe Produkte“ zeigen, dass es auch in einer konservativen Umgebung möglich ist agile Ideen umzusetzen. Ein solches Vorgehen stellt erst einmal eine Insellösung dar. Das Etablieren einer agilen Insel ist im Falle der Business-Unit über folgende Voraussetzungen zu begründen: Vorhandenes Interesse im Team sich zu verbessern. Eine treibende Kraft im Team für ein agiles Vorgehen. Bereitstellen von Freiräumen durch den Vorgesetzten. Jeder der genannten Punkte bezieht sich auf Menschen. Die beteiligten Personen sind der maßgebliche Erfolgsfaktor für die Einführung einer agilen Vorgehensweise. Patrick Rehder 94 >>> Ergebnis Master-Thesis Das weitere Vorgehen für die Business-Unit lässt sich nicht eindeutig bestimmen, vielmehr konnten Möglichkeiten ausgemacht werden. Es ist sowohl denkbar, ein bestimmtes Vorgehensmodell zu etablieren, als auch das eigene Vorgehensmodell weiterzuentwickeln. Die aktuelle Situation (Stand: Juli 2012) zeigt, dass Scrum in einem neuen Projekt als Vorgehensmodell eingesetzt wird. Das gewünschte Vorgehen wurde zu Beginn mit dem Kunden in der Commerzbank besprochen, welcher letztlich gewillt war dies auszuprobieren. Aufgrund der geringen Projektbesetzung mit vier Entwicklern werden Scrum Master und Product Owner jeweils von einem Entwickler wahrgenommen. Zuvor wurde der Ablauf von Scrum bereits in einem Modell-Projekt mit Auszubildenden begutachtet, welches von der Business-Unit begleitet wurde. Letztlich wurde sich dafür entschieden ein bestimmtes Vorgehensmodell einzusetzen, nämlich Scrum. Patrick Rehder 95 >>> Glossar A. Master-Thesis Glossar keit zeugt, also regsam und wendig ist. [duden.de] Akzeptanztest 30 27 24 21 18 15 12 9 6 3 0 Tag 1 Tag 2 Tag 3 Tag 4 Tag 5 Tag 6 Tag 7 Tag 8 Tag 9 Tag 10 Tag 11 Tag 12 Tag 13 Tag 14 Etwas ist agil, wenn es von großer Beweglich- offene Aufgaben Agil Ein Akzeptanztest prüft, ob eine User Story den Erwartungen des Kunden entspricht. Vor der Umsetzung einer User Story sind vom Abbildung 21 - Beispiel: „Burn Down Chart“ Kunden sogenannte Akzeptanzkriterien zu Business-Unit definieren, die im Rahmen eines Akzeptanz- In der Commerz Systems GmbH werden tests geprüft werden. Abteilungen als Business-Unit bezeichnet. API Clean Code Development Als Application Programming Interface (API) Clean Code Development bezeichnet ein wird eine Schnittstelle bezeichnet, die von normgebendes Wertesystem für Software- anderen Komponenten, Programmen und entwickler, dessen Einhaltung die Qualität von Softwaresystemen genutzt werden kann. Software sichert. Ihm liegt der Anspruch Architectural Patterns zugrunde, die Lesbarkeit von Code zu standar- Architekturmuster (englisch: Architectural Patterns) beschreiben bewährte Ansätze für disieren, was allen beteiligten Entwicklern ein effektives Zusammenarbeiten gestattet. [54] Architekturen von Softwaresystemen. Da Crystal Architekturmuster auf Erfahrungen beruhen, „Crystal stellt keine einzelne agile Methode machen sie Erfahrung „wiederverwendbar“. dar, sondern eine Methodenfamilie. Eine [53, p. 164] Grundidee von Crystal besteht darin, dass Burn Down Chart kein Projekt dem anderen gleicht, dass jedes Ein Burn Down Chart stellt die Menge verbleibender Arbeit, der Zeit grafisch gegenüber Projekt in einer speziellen Situation angesiedelt ist und dass jedes Team besonders ist.“ [55, p. 14] (siehe Abbildung 21). Diese Darstellungsform erlaubt es den Gesamtfortschritt auf einen Blick abzulesen. Es ist jedoch nicht zu erkennen, wie weit eine einzelne Aufgabe abgearbeitet wurde. Patrick Rehder 96 >>> Glossar Master-Thesis Geschäftswert Overall Design Der Nutzen den die Funktion eines Software- Das Overall Design beschreibt bei Feature systems zur Verfügung stellt, wird als Ge- Driven Development die Gesamtarchitektur schäftswert bezeichnet. Der Geschäftswert ist des zu entwickelnden Systems. Es besteht aus meist schwer zu beziffern und stark vom einem Blickwinkel des Betrachters abhängig. Sequenzdiagrammen und Notizen zu getroffe- Kanban Klassendiagramm, gegebenenfalls nen Entscheidungen. Kanban stellt eine Methode zum Change PMBOK Management dar. Es ist das Ziel den beste- Beim henden Prozess schrittweise zu verbessern. Knowledge (PMBOK) handelt es sich um eine Hierbei spielt Visualisierung eine große Rolle. Sammlung von in der Praxis als geeignet [6, p. 14] identifizierter Vorgehensweisen, zur Durch- Project Management Body of führung von Projekten. Er wird vom American Klasse National Standards Institute (ANSI) aner- Eine Klasse ist ein Begriff aus der objektorien- kannt und vom Project Management Institute tierten Programmierung. Sie stellt ein abstrak- (PMI) gepflegt. [56, p. 15] tes Modell dar, aus welchem Objekte erzeugt werden können. Durch die Klasse wird vorge- Rapid Prototyping geben über welche Eigenschaften und Verhal- Hinter Rapid Prototyping oder auch nur tensweisen die Objekte später verfügen. Prototyping verbirgt sich in der Softwareent- Logging wicklung ein Vorgehen, bei welchem möglichst schnell ein Prototyp entwickelt wird. Das Protokollieren von Ereignissen während Dieser Prototyp wird dann als Gesprächsge- der Laufzeit eines Programmes wird als genstand für weitere Verbesserungen genutzt. Logging bezeichnet. Rational Unified Process Open Source Beim Rational Unified Process handelt es sich Open Source bezeichnet Software deren um ein Vorgehensmodell für die Entwicklung Lizenz folgende Merkmale aufweist: von Anwendungen. Der Prozess macht hierbei Der Quelltext liegt in einer für den intensiven Gebrauch der Modellierungsspra- Menschen lesbaren und verständli- che UML. Sogar der Prozess selber ist in UML chen Form vor. beschrieben. [57] Die Software darf beliebig kopiert, verbreitet und genutzt werden. Die Software darf verändert und in veränderter Form weitergegeben werden. Patrick Rehder 97 >>> Glossar Master-Thesis Refactoring White-Box-Test zuordnen. Ein „Refactoring […] bezeichnet in der Soft- Der Quelltext wird einer Reihe formaler ware-Entwicklung die manuelle oder automa- Prüfungen unterzogen, bei denen bestimmte tisierte Strukturverbesserung von Programm- Sorten von Fehlern/Schwachstellen im Code Quelltexten unter Beibehaltung des be- entdeckt werden können. Das Ziel hierbei ist obachtbaren immer nur das Aufzeigen von Fehlern, es wird Programm-Verhaltens. Dabei sollen die Lesbarkeit, Verständlichkeit, Wart- nichts aktiv am Code verändert […].“ [60] barkeit UML und Erweiterbarkeit verbessert werden, mit dem Ziel, den jeweiligen Aufwand für Fehleranalyse und funktionale Erweiterungen deutlich zu senken.“ [58] „Die Unified Modeling Language (UML) dient zur Modellierung, Dokumentation, Spezifizierung und Visualisierung komplexer Software- Release systeme, unabhängig von deren Fach- und Ein Release bezeichnet den produktiven Realisierungsgebiet.“ [61, p. 10] Einsatz einer Anwendung. Es kann sich hierbei Unit-Test entweder um eine neu entwickelte Anwendung handeln oder eine neue Version einer bestehenden Anwendung. „Unit-Tests (=Komponententests) überprüfen, ob die von den Entwicklern geschriebenen Komponenten so arbeiten, wie diese es Spiralmodell beabsichtigen. In agilen Methoden wird zur Das Spiralmodell ist ein „von Barry W. Boehm Qualitätssicherung eine sehr häufige Ausfüh- im generisches rung der Komponententests angestrebt. Das Vorgehensmodell der Softwareentwicklung, lässt sich nur erreichen, wenn die Tests das die vier Phasen: vollständig automatisiert vorliegen, sie also Jahr 1986 entwickeltes, selbst ein Programm sind, dessen Ausführung Festlegen der Ziele Risikoanalyse erfordert. Dabei ist es üblich (aber nicht Entwicklung und Test zwingend notwendig), dass der Test in der Planung des nächsten Zyklus zyklisch durchläuft und so über verschiedene Prototypen zum Endprodukt gelangt.“ [59] Statische Code Analyse nicht mehr Aufwand als einen Knopfdruck gleichen Sprache wie das Testobjekt geschrieben wird.“ [62] Use Case „Ein Anwendungsfall (engl. Use Case) bündelt alle möglichen Szenarien, die eintreten „Statische Code Analyse ist ein statisches können, wenn ein Akteur versucht, mit Hilfe Software-Testverfahren. Im Gegensatz zu des betrachteten Systems ein bestimmtes dynamischen Testverfahren muss die zu fachliches Ziel […] zu erreichen. Er beschreibt, testende Software nicht ausgeführt werden. was inhaltlich beim Versuch der Zielerreichung Es wird also nur der Quelltext benötigt. Daher passieren kann und abstrahiert von konkreten lässt sich die statische Code Analyse dem technischen Lösungen. Das Ergebnis des Patrick Rehder 98 >>> Glossar Master-Thesis Anwendungsfalls kann ein Erfolg oder Fehl- Systemtest schlag/Abbruch sein.“ [63] Einsatz/Wartung V-Modell „Das V-Modell gliedert den Softwareentwicklungsprozess in sechs Phasen: [65, p. 211] Wiki Bei einem Wiki handelt es sich um eine Anforderungsanalyse Systementwurf zern nicht nur gelesen, sondern auch geändert Entwurf und Implementierung der werden kann. Die Grundidee eines Wikis liegt Module darin Texte gemeinschaftlich zu bearbeiten. Modultest Systemintegration Systemabnahme Webanwendung, deren Inhalt von den Benut- [66] Wirtschaftlichkeit „Ein Unternehmen arbeitet wirtschaftlich, wenn es gemäß der Gewinn-und-Verlust- Letztere drei Phasen bilden die Tests für die Rechnung höhere Erträge als Aufwendungen Produkte der ersten drei Phasen.“ hat […] oder wenn es gemäß der Kosten- und [64, pp. 3, 4] Leistungsrechnung höhere Leistungen als V-Modell XT Kosten hat […].“ [67, pp. 442, 443] Verallge- „Das V-Modell XT (V: Vorgehensmodell) ist für alle IT-Projekte des Bundes einzusetzen […].“ meinert bedeutet dies, dass ein Vorhaben wirtschaftlich ist, wenn der Nutzen die Kosten übersteigt. [65, p. 213] Es handelt sich um eine Erweiterung vom V-Modell. W-Modell Wasserfallmodell „Das W-Modell ist ein Vorgehensmodell für Das Wasserfallmodell ist ein Vorgehensmodell zur Softwareentwicklung. Es beschreibt fünf Phasen die strikt voneinander getrennt sind und nacheinander durchlaufen werden: die Softwareentwicklung, es beruht auf dem weit verbreiteten V-Modell. Beim W-Modell werden die Testaktivitäten parallel zu den Entwicklungsaktivitäten […] durchgeführt. Testaktivitäten beginnen frühzeitig und die Problemanalyse/Produktdefinition Abhängigkeiten und Zyklen zwischen testen - Entwurf debugging - korrigieren - erneutes testen Implementierung werden im W-Modell deutlich.“ [68] Patrick Rehder 99 >>> Abbildungsverzeichnis B. Master-Thesis Abbildungsverzeichnis Abbildung 1 - Die Werte vom Agile Manifest ........................................................................................ 11 Abbildung 2 - Kommunikationsarten zur Diskussion und Dokumentation [17, p. 84] .......................... 13 Abbildung 3 - Scrum: „Die drei Säulen der empirischen Prozesssteuerung“ [19, p. 4]......................... 16 Abbildung 4 - Scrum: „Der Begriff als Zeichnung“ [www.scrum-kompakt.de] ..................................... 17 Abbildung 5 - FDD: „Prozessübersicht mit zeitlicher Verteilung“ [34, p. 198] ...................................... 36 Abbildung 6 - XP: „Den Regler auf 10 drehen.“ [38, p. xv] .................................................................... 42 Abbildung 7 - XP: „Unter der Lupe betrachtet.“ ................................................................................... 43 Abbildung 8 - XP: „Team Workspace“ [40, p. 'Figure 5. A team workspace'] ....................................... 50 Abbildung 9 - Allgemeines Vorgehensmodell ....................................................................................... 63 Abbildung 10 - Vorgehen bei der Weiterentwicklung von ASTAT......................................................... 64 Abbildung 11 - Vorgehen bei der Neuentwicklung von NIOB ............................................................... 65 Abbildung 12 - Vorgehen bei der Neuentwicklung von TANTAL ........................................................... 66 Abbildung 13 - Umfassender Kartensatz für Planning Poker ................................................................ 68 Abbildung 14 - Schema: Task Board [25, p. 12] ..................................................................................... 69 Abbildung 15 - Die Werte vom Agile Manifest in der Business-Unit „Externe Produkte“ .................... 80 Abbildung 16 - Vorgehensmodell mit Feature Driven Development .................................................... 83 Abbildung 17 - Skizze der Benutzeroberfläche: Methodenübersicht ................................................... 90 Abbildung 18 - Skizze der Benutzeroberfläche: Frage 1 und Frage 2.................................................... 91 Abbildung 19 - Skizze der Benutzeroberfläche: Frage 3 und Anmerkungen ......................................... 91 Abbildung 20 - Skizze der Benutzeroberfläche: Ranglisten ................................................................... 92 Abbildung 21 - Beispiel: „Burn Down Chart“ ......................................................................................... 96 Patrick Rehder 100 >>> Tabellenverzeichnis C. Master-Thesis Tabellenverzeichnis Tabelle 1 - Gegenüberstellung der Ziele und Kapitel .............................................................................. 8 Tabelle 2 - Ausschnitte aus Umfragen zur Anwendung agiler Prozesse ................................................. 9 Tabelle 3 - Scrum: „Register der Bestandteile“ ..................................................................................... 18 Tabelle 4 - Scrum: „Der Shewhart Cycle im Sprint“ [14, p. 49] ............................................................. 21 Tabelle 5 - Scrum: „Zeit zur Produktentwicklung in einem vierwöchigen Sprint“ [19] ......................... 22 Tabelle 6 - Scrum: „Übersicht möglicher Artefakte“ ............................................................................. 25 Tabelle 7 - FDD: „Register der Bestandteile“ ........................................................................................ 33 Tabelle 8 - FDD: „Die jeweiligen Vorteile von Class Ownership und Collective Ownership“ ................ 35 Tabelle 9 - XP: „Register der Bestandteile“ ........................................................................................... 44 Tabelle 10 - XP: „Strukturierung der Methoden“ .................................................................................. 49 Tabelle 11 - Prozesseignung hinsichtlich Voraussetzung (angepasst) [6, p. 22] ................................... 60 Tabelle 12 - Projektdauer je Release (Dauer gerundet) ........................................................................ 64 Tabelle 13 - Auflistung der fünf Abschnitte des Fragebogens .............................................................. 74 Tabelle 14 - Zuordnung: Punkte im Agile Manifest und Punkte im Fragebogen .................................. 76 Tabelle 15 - Einschätzung der Zufriedenheit ......................................................................................... 77 Tabelle 16 - Bekanntheitsgrad der Vorgehensmodelle ......................................................................... 78 Tabelle 17 - Bekanntheitsgrad von Techniken und Methoden ............................................................. 79 Tabelle 18 - Beispiel: Liste mit 35 Methoden (alphabetisch sortiert) ................................................... 87 Tabelle 19 - Frage 1: „Ist die Methode bekannt?“ ................................................................................ 88 Tabelle 20 - Frage 2: „Wird die Methode derzeit eingesetzt?“ ............................................................. 88 Tabelle 21 - Frage 3: „Ist es sinnvoll die Methode einzusetzen?“......................................................... 89 Patrick Rehder 101 >>> Quellenverzeichnis D. Master-Thesis Quellenverzeichnis [1] H. Wolf und A. Roock, „Agilität wird Mainstream: Ergebnisse der Online-Umfrage 2008,“ OBJEKTspectrum, pp. 10-13, März 2008. [2] D. West und T. Grant, „Agile Development: Mainstream Adoption Has Changed Agility,“ Forrester Research, Inc., Cambridge, 2010. [3] „State of Agile Survey,“ VersionONE Inc., 2010. [4] P. Haberl, A. Spillner, K. Vosseberg und M. Winter, Umfrage 2011: "Softwaretest in der Praxis", Heidelberg: dpunkt.verlag GmbH, 2012. [5] BQI Best Quality Institute GmbH, „Agile Softwareentwicklung am Standort Deutschland,“ 2010. [6] H. Wolf und A. Roock, Agile Softwareentwicklung - Ein Überblick, 3. Auflage Hrsg., Heidelberg: dpunkt.verlag, 2011. [7] B. Gloger, Scrum - Produkte zuverlässig und schnell entwicklen, München Wien: Carl Hanser Verlag, 2008. [8] S. R. Palmer und J. M. Felsing, A Practical Guide to Feature-Driven Development, New Jersey: Prentice Hall International, 2002. [9] K. Auer und R. Miller, Extreme Programming Applied: Playing to Win, Reading: Addison Wesley Publishing Company, Inc., 2001. [10] M. Andrezak, A. Bepple, J. Eckstein, S. Günther, H. Koschek, A. Leidig, A. Neubauer, C. Philipps, S. Reppin, S. Röpstorff, A. Roock, S. Roock, B. Schiffer und H. Wolf, Agile Projekte mit Scrum, XP und Kanban in Unternehmen durchführen, H. Wolf, Hrsg., Heidelberg: dpunkt.verlag, 2012. [11] K. Beck, M. Beedle, A. van Bennekum, A. Cockburn, W. Cunningham, M. Fowler, J. Grenning, J. Highsmith, A. Hunt, R. Jeffries, J. Kern, B. Marick, R. C. Martin, S. Mellor, K. Schwaber, J. Sutherland und D. Thomas, „Manifest für Agile Softwareentwicklung,“ [Online]. Available: http://agilemanifesto.org/iso/de/manifesto.html. [Zugriff am 23. Februar 2012]. [12] C. Hibbs, S. Jewett und M. Sullivan, The Art of Lean Software Development, Sebastopol: O'Reilly, 2009. [13] J. Highsmith, Agile Software Development Ecosystems, Amsterdam: Addison-Wesley Longman, 2002. [14] B. Gloger, Scrum - Produkte zuverlässig und schnell entwickeln, München Wien: Carl Hanser Verlag, 2008. [15] A. Kramer, „Vom "Faktor Mensch" und anderen Unwörtern,“ SQ Magazin, pp. 14, 15, Juni 2011. [16] A. Cockburn, Agile Software Development, Boston: Addison-Wesley Professional, 2001. [17] S. Ambler, Agile Modeling: Effective Practices for eXtreme Programming and the Unified Process, New York: John Wiley & Sons, Inc., 2002. [18] J. Dittmar, „Zusammenarbeit in IT Projekten und andere Wunder,“ 28. September 2011. [Online]. Available: http://www.scrumday.de/archiv/scrumdaysept11darmstadt/vortraege/Track4_SD2011_Dittmar_cocondi_Print_v1.0.pdf. [Zugriff am 1. August 2012]. [19] K. Schwaber und J. Sutherland, „The Scrum Guide,“ Oktober 2011. [Online]. Available: http://www.scrum.org/scrumguides/. [Zugriff am 23. Februar 2012]. [20] K. Schwaber, „Hintergrund: Die Wissenschaft von Scrum,“ in Agiles Projektmanagement mit Scrum, Microsoft Press, 2007, pp. 1-16. [21] J. Sutherland, „Agile Development: Lessons Learned form the First Scrum,“ Oktober 2004. [Online]. Patrick Rehder 102 >>> Quellenverzeichnis Master-Thesis Available: http://www.scrumalliance.org/resources/35. [Zugriff am 13. April 2012]. [22] H. Takeuchi und I. Nonaka, „The New New Product Development Game,“ Harvard Business Review, JanuarFebruar 1986. [23] H. Koschek, Geschichten vom Scrum, Heidelberg: dpunkt.verlag, 1. Auflage 2010. [24] K. Schwaber, Agile Project Management with Scrum, Redmond, Washington: Microsoft Press, 2004. [25] B. Gloger, „Scrum Checklist 2011,“ 23. Februar 2011. [Online]. Available: http://www.infoq.com/books/scrum-checklists. [Zugriff am 16. April 2012]. [26] wibas GmbH, „wibas Scrum Browser,“ wibas GmbH, [Online]. Available: http://www.scrumbrowser.com. [Zugriff am 12. April 2012]. [27] J. Spolsky, „Product Vision - Joel on Software,“ 09. Mai 2002. [Online]. Available: http://www.joelonsoftware.com/articles/JimHighsmithonProductVisi.html. [Zugriff am 03. April 2012]. [28] GPM Deutsche Gesellschaft für Projektmanagement e.V., Kompetenzbasiertes Projektmanagement (PM3), 4. Hrsg., Bd. 1, M. Gessler, Hrsg., Nürnberg: GPM Deutsche Gesellschaft für Projektmanagement e.V., 2011. [29] R. Wirdemann, Scrum mit User Stories, 2. erweiterte Auflage Hrsg., München: Carl Hanser Verlag, 2011. [30] K. Pohl und C. Rupp, Basiswissen Requirements Engineering, Heidelberg: dpunkt.verlag, 2009. [31] C. Stackpole, PMP Certification All-in-One For Dummies, Hoboken, New Jersey: John Wiley & Sons, Inc., 2011. [32] „Scrum: The Basics,“ Scrum Alliance Inc., [Online]. Available: http://www.scrumalliance.org/pages/what_is_scrum. [Zugriff am 16. März 2012]. [33] S. Roock, „Interview: Jeff De Luca on Feature Driven Development,“ it-agile, [Online]. Available: http://www.it-agile.de/fddinterview.html. [Zugriff am 11. April 2012]. [34] P. Coad, E. Lefebvre und J. De Luca, „Feature-Driven Development,“ in Java Modeling in Color with UML, New Jersey, Prentice Hall, 1999, pp. 182-203. [35] Nebulon Pty. Ltd., „The Latest FDD Processes,“ 21. November 2004. [Online]. Available: http://www.nebulon.com/articles/fdd/latestprocesses.html. [Zugriff am 11. April 2011]. [36] F. Brooks, The Mythical Man-Month, Boston: Addison-Wesley, 1995. [37] K. Meergans, „Feature-Driven Development - Bewertung und Voraussetzungen einer erfolgreichen Anwendung,“ 12. August 2011. [Online]. Available: http://www.frankdopatka.de/reutlingen-seminar.php. [Zugriff am 11. April 2012]. [38] K. Beck, Extreme Programming - Die revolutionäre Methode für Softwareentwicklung in kleinen Teams, München: Addison-Wesley Verlag, 2000. [39] S. Baird, Extreme Programming in 24 Hours, Indianapolis: Sams Publishing, 2003. [40] K. Beck und C. Andres, Extreme Programming Explained: Embrace Change, Second Edition, Boston: Addison-Wesley Professional, 2004. [41] H. Breitling, „Extreme Programming: XP Revisited,“ Software & Support Media GmbH, Februar 2012. [Online]. Available: http://www.it-republik.de/jaxenter/artikel/4392. [Zugriff am 15. Mai 2012]. [42] E. Hanser, Agile Prozesse: Von XP über Scrum bis MAP. [43] M. Lippert, S. Roock und H. Wolf, Software entwickeln mit eXtreme Programming, 1. Auflage Hrsg., Heidelberg: dpunkt.verlag GmbH, 2002. [44] J. Brodwall, „Pair programming research misses the most important point,“ 2. Feburar 2011. [Online]. Available: http://johannesbrodwall.com/2011/02/02/pair-programming-research-misses-the-most- Patrick Rehder 103 >>> Quellenverzeichnis Master-Thesis important-point/. [Zugriff am 1. Juni 2012]. [45] P. Rehder, „Bericht zum Praxissemester,“ Commerz Systems GmbH, Bremen, 2009. [46] J. Grenning, „Planning Poker or How to avoid analysis paralysis while release planning,“ April 2002. [Online]. Available: http://www.renaissancesoftware.net/papers/44-planing-poker.html. [Zugriff am 12. Juni 2012]. [47] M. Cohn, Agile Estimation and Planning, New Jersey: Prentice Hall International, 2005. [48] Microsoft Corporation, „Visual Studio Team Foundation Server,“ [Online]. Available: http://www.microsoft.com/germany/visualstudio/products/team/visual-studio-team-foundationserver.aspx. [Zugriff am 13. Juni 2012]. [49] A. Spillner und T. Linz, Basiswissen Softwaretest, 3. Auflage Hrsg., Heidelberg: dpunkt.verlag, 2005. [50] Preyer GmbH, „Online Befragungen mit echopoll.com,“ 9. August 2002. [Online]. Available: https://echopoll.com/page/download. [Zugriff am 4. Mai 2012]. [51] 2ask, „Leitfaden für die Erstellung eines Fragebogens,“ 3. März 2007. [Online]. Available: http://www.2ask.de/Leitfaden-zur-Fragebogenerstellung-allgemein--389d.html. [Zugriff am 5. Mai 2012]. [52] T. Görtz, „Agilität nachhaltig einführen und zwar sofort,“ SQ Magazin, p. 19, Juni 2012. [53] oose Inovative Informatik GmbH, Trainingsunterlagen - Der agile Software-Architekt, 2008. [54] „Clean Code Development Company,“ generic.de software technologies AG, [Online]. Available: http://www.generic.de/de/company/profile/ccd.aspx. [Zugriff am 20. Juli 2012]. [55] H. Wolf und A. Roock, Agile Softwareentwicklung - Ein Überblick, 1. Auflage Hrsg., Heidelberg: dpunkt.verlag, 2008. [56] D. Tamke und P. Rehder, „Methoden des Projektmanagements im Vergleich,“ 9. Januar 2012. [Online]. Available: http://www.lippo-design.de/dev/. [Zugriff am 25. Juni 2012]. [57] Informatik Forum Simon GmbH, „Rational Unified Process (RUP),“ [Online]. Available: http://www.infforum.de/themen/anwendungsentwicklung/thema_SE_rup.htm. [Zugriff am 20. Junli 2012]. [58] Wikipedia, „Refactoring,“ 7. September 2011. [Online]. Available: http://de.wikipedia.org/w/index.php?title=Refactoring&oldid=93360684. [Zugriff am 20. Juli 2012]. [59] Gabler Verlag, „Gabler Wirtschaftslexikon: Spiralmodell,“ Springer Fachmedien Wiesbaden GmbH, [Online]. Available: http://wirtschaftslexikon.gabler.de/Archiv/381707692/spiralmodell-v1.html. [Zugriff am 30. Juli 2012]. [60] P. Rixner, „Statische Code Analyse,“ FH Wedel, 6. Januar 2009. [Online]. Available: http://www.fhwedel.de/~si/seminare/ws08/Ausarbeitung/11.ca/codeanalyse.html. [Zugriff am 30. Juli 2012]. [61] M. Jeckle, C. Rupp, J. Hahn, B. Zengler und S. Queins, UML 2 glasklar, München: Carl Hanser Verlag, 2004. [62] it-agile GmbH, „Unit-Tests,“ [Online]. Available: http://www.it-agile.de/unittests.html. [Zugriff am 30. Juli 2012]. [63] Wikipedia, „Anwendungsfall,“ 12. Juni 2012. [Online]. Available: http://de.wikipedia.org/w/index.php?oldid=104299082. [Zugriff am 30. Juli 2012]. [64] A. De Stefani, G. Fischer, M. Rohner, T. Strnad und T. Winkler, „fit 2002,“ TU Wien, 8. April 2002. [Online]. Available: http://cartoon.iguw.tuwien.ac.at/fit/fit01/spiral/konzepte.html#vmodell. [Zugriff am 30. Juli 2012]. [65] westermann, IT-Handbuch, 7. Auflage Hrsg., Braunschweig: Westermann Schroedel Diesterweg Schöningh Winklers GmbH, 2011. Patrick Rehder 104 >>> Quellenverzeichnis Master-Thesis [66] Wikiepdia, „Wiki,“ 9. Juli 2012. [Online]. Available: http://de.wikipedia.org/w/index.php?title=Wiki&oldid=105370017. [Zugriff am 20. Juli 2012]. [67] Dudenverlag, Schülderduden Wirtschaft, Mannheim: Bibliographisches Institut & F. F. Brockhaus AG, 2002. [68] A. Spillner, „W-Modell Vorgehensmodell für die Softwareentwicklung,“ 01. November 2010. [Online]. Available: http://www.informatik.hs-bremen.de/spillner/ForschungSpillnerWmo.pdf. [Zugriff am 30. Juli 2012]. [69] S. W. Ambler, „Introduction to Test Driven Development (TDD),“ [Online]. Available: http://www.agiledata.org/essays/tdd.html. [Zugriff am 2. Juli 2012]. [70] T. DeMarco, Slack, Computer Bookshops, 2001. Foto Deckblatt: Andreas Levers, „Wasserglas“, CC-Lizenz (BY 2.0) http://creativecommons.org/licenses/by/2.0/de/deed.de Quelle: www.piqs.de Patrick Rehder 105 >>> Anhang E. Master-Thesis Anhang Anhang 1 - Fragebogen ................................................................................................................ 6 Seiten Anhang 2 - Zusammenfassung der Antworten............................................................................. 6 Seiten Patrick Rehder 106 Anhang 1 - Fragebogen FRAGEBOGEN Umfrage zur Master-Thesis "Möglichkeiten der agilen Softwareentwicklung in einer konservativen Umgebung" Seite 1 von 6 Anhang 1 - Fragebogen 1 Abschnitt: Projektbewertung Seite 2 von 6 Anhang 1 - Fragebogen 2 Abschnitt: Vorgehensmodelle […] […] Seite 3 von 6 Anhang 1 - Fragebogen 3 Abschnitt: Techniken und Methoden […] […] Seite 4 von 6 Anhang 1 - Fragebogen 4 Abschnitt: Agile Softwareentwicklung Seite 5 von 6 Anhang 1 - Fragebogen 5 Abschnitt: Feedback Seite 6 von 6 Anhang 2 - Zusammenfassung der Antworten Anhang 2 – Zusammenfassung der Antworten ZUSAMMENFASSUNG DER ANTWORTEN Umfrage zur Master-Thesis "Möglichkeiten der agilen Softwareentwicklung in einer konservativen Umgebung" Seite 1 von 6 Anhang 2 - Zusammenfassung der Antworten Frage 1.1 Wie zufrieden bist Du mit dem Vorgehen in Bezug auf die Softwareentwicklung in den Projekten? -+ ++ ? W ASTAT 0 3 4 1 3 3 NIOB 0 3 3 0 5 0 TANTAL 0 3 4 2 2 5 0 9 11 3 10 8 ∑ Legende -- = sehr unzufrieden ++ = sehr zufrieden ? = nicht im Projekt Wertung (W) Summer über: -- = -2 - = -1 +=1 ++ = 2 Frage 1.2 Wie schätzt Du die Zufriedenheit der Auftraggeber mit dem Ergebnis ein? (Auftraggeber = Fachabteilung/Rot AG) -+ ++ ? W ASTAT 2 4 2 0 3 -6 NIOB 1 0 2 3 5 6 TANTAL 0 1 2 7 1 15 3 5 6 10 9 15 ∑ Legende -- = sehr unzufrieden ++ = sehr zufrieden ? = nicht im Projekt Wertung (W) Summer über: -- = -2 - = -1 +=1 ++ = 2 Seite 2 von 6 Anhang 2 - Zusammenfassung der Antworten Frage 2.1 Wie gut kennst Du die folgenden Vorgehensmodelle zur Entwicklung von Software? ! !! !!! ? W 0 3 8 0 22 Wasserfallmodell 0 4 7 0 22 Scrum Extreme Programming 2 7 2 0 20 7 4 0 0 15 Feature Driven Development 1 3 4 3 12 V-Modell 6 1 2 2 10 Rapid Prototyping 2 3 1 5 5 Spiralmodell 3 1 2 5 4 W-Modell 5 0 1 5 2 V-Modell XT Crystal 4 0 1 6 0 4 1 0 6 0 Lean Development 4 1 0 6 0 Rational Unified Process 38 28 28 38 ∑ Legende ! = schon mal gehört !! = ich weiß was das ist !!! = bereits eingesetzt ? = nie gehört Wertung (W) Summe über: !=1 !! = 2 !!! = 2 ? = -1 Frage 2.2 Welches der genannten Vorgehensmodelle entspricht dem Vorgehen in den Projekten ASTAT, NIOB und TANTAL am ehesten? 3 Scrum 3 Wasserfallmodell 1 Feature Driven Development 1 Spiralmodell 1 V-Modell Crystal 0 Extreme Programming 0 0 Lean Development 0 Rational Unified Process 0 Rapid Prototyping 0 V-Modell XT 0 W-Modell keines annährend 1 kenne keines 0 nicht in Projekten tätig 1 Frage 2.3 Wenn Du Dir ein Vorgehensmodell zur Softwareentwicklung für die Business-Unit "Externe Produkte" aussuchen darfst, welches der Folgenden wählst Du? Crystal 0 Extreme Programming 0 0 Feature Driven Development 0 Lean Development 0 Rational Unified Process 8 Scrum 0 Rapid Prototyping 0 Spiralmodell 0 V-Modell 0 V-Modell XT 0 W-Modell 0 Wasserfallmodell keines der genannten 1 egal 1 gar kein Vorgehensmodell 1 Frage 2.4 Denkst Du, dass es realistisch ist, ein Vorgehensmodell in der Business-Unit "Externe Produkte" einzuführen? ja 10 nein 1 Seite 3 von 6 Anhang 2 - Zusammenfassung der Antworten Frage 3.1 Wie gut kennst Du die folgenden Techniken und Methoden? ! !! Automatisierter Buildprozess 0 0 0 0 Refactoring 0 0 Retrospektive 0 0 Taskboard 0 0 Unit-Testing 0 1 Daily Standup 0 2 Continuous Integration 0 2 Pair Programming 0 2 Planning Poker 0 3 User Stories 1 8 Clean Code Development 2 1 Definition of Done 4 3 Timeboxing Burn Down Chart 2 6 6 3 Kanban 2 3 Product Vision 1 0 Collective Code Ownership 0 0 On-site Customer 18 34 ∑ !!! 11 11 11 11 11 10 9 9 9 7 1 7 3 1 1 2 2 1 117 ? 0 0 0 0 0 0 0 0 0 1 1 1 1 2 1 4 8 10 29 W 22 22 22 22 22 22 22 22 22 19 18 17 15 14 13 8 -3 -8 Gruppierung sehr bekannt sehr bekannt sehr bekannt sehr bekannt sehr bekannt sehr bekannt sehr bekannt sehr bekannt sehr bekannt bekannt bekannt bekannt bekannt bekannt wenig bekannt wenig bekannt unbekannt unbekannt Legende ! = schon mal gehört !! = ich weiß was das ist !!! = bereits eingesetzt ? = nie gehört Wertung (W) Summe über: !=1 !! = 2 !!! = 2 ? = -1 Frage 3.2 Welche der genannten Techniken und Methoden wurden in den Projekten ASTAT, NIOB und TANTAL eingesetzt? (Achtung: Mehrfachauswahl.) Automatisierter Buildprozess 9 9 Unit-Testing 8 Planning Poker 8 Refactoring 8 Retrospektive 8 Taskboard 6 Continuous Integration 6 Daily Standup 5 Definition of Done 3 Pair Programming 2 Clean Code Development 1 Collective Code Ownership 1 Product Vision Burn Down Chart 0 0 Kanban 0 On-site Customer 0 Timeboxing 0 User Stories keine der genannten 1 kenne keine 0 nicht im Projekt tätig 1 Frage 3.3 Welche der genannten Techniken und Methoden sollen Deiner Meinung nach zukünftig eingesetzt werden? (Achtung: Mehrfachauswahl.) 11 Planning Poker 11 Refactoring 11 Taskboard 11 Unit-Testing Automatisierter Buildprozess 10 10 Retrospektive 9 Continuous Integration 9 Definition of Done 8 Daily Standup 7 Pair Programming 6 Clean Code Development 6 User Stories Burn Down Chart 4 4 Timeboxing 3 wenig bekannt (siehe Frage 3.1) Product Vision 2 unbekannt (siehe Frage 3.1) Collective Code Ownership 0 wenig bekannt (siehe Frage 3.1) Kanban 0 unbekannt (siehe Frage 3.1) On-site Customer keine der genannten 0 kenne keine 0 Seite 4 von 6 Anhang 2 - Zusammenfassung der Antworten Frage 4.1 Für wie wichtig hältst Du die folgenden Punkte in der Softwareentwicklung? -o + ++ 2 5 3 0 1 Festhalten an getroffenen Plänen 1 0 1 0 9 Funktionierende Software 0 0 4 6 1 Ideen des Einzelnen 0 1 1 1 8 Interaktion zwischen den Beteiligten 0 3 4 0 3 Verträge mit dem Kunden 1 0 4 5 1 Werkzeuge/Tools 1 0 0 5 5 Zusammenarbeit mit dem Kunden 0 2 2 4 3 Definierte Prozesse 0 4 0 7 0 Eine umfassende Dokumentation 0 1 1 2 7 Schnelle Reaktion auf Veränderungen 5 16 20 30 38 ∑ ? 0 0 0 0 1 0 0 0 0 0 1 W -7 16 8 16 3 5 13 8 3 15 80 Legende -- = sehr unwichtig o = neutral ++ = sehr wichtig ? = weiß nicht Wertung (W) Summe über: -- = -2 - = -1 o=0 +=1 ++ = 2 Frage 4.2 Glaubst Du, dass die folgenden Punkte bei einer agilen Vorgehensweise mehr oder weniger ausgeprägt sind als bei einem nicht agilen Vorgehen? -o + ++ ? W Legende 1 0 1 4 5 0 12 -- = viel weniger Flexibilität erhöhen 1 1 6 3 0 0 0 o = gleich Kosten einhalten/senken 0 1 4 4 2 0 7 ++ = viel mehr Kundenzufriedenheit erhöhen 1 1 4 3 2 0 4 ? = weiß nicht Mitarbeiterzufriedenheit erhöhen 0 1 2 6 2 0 9 Produktivität erhöhen 0 1 2 7 1 0 8 Wertung (W) Qualität erhöhen 0 3 1 6 1 0 5 Summer über: Risiken reduzieren 1 2 4 4 0 0 0 -- = -2 Termintreue erhöhen 0 1 0 6 4 0 13 - = -1 Transparenz erhöhen 4 11 24 43 17 0 58 o=0 ∑ +=1 Frage 4.3 ++ = 2 Welche dieser Aussagen trifft Deine Meinung zum Agilen Manifest am besten? ich weiß was drin steht, es ist gut 3 ich weiß was drin steht, es ist schlecht 0 schon mal gehört, soll gut sein 4 schon mal gehört, soll schlecht sein 0 kenne ich gar nicht 4 Seite 5 von 6 Anhang 2 - Zusammenfassung der Antworten Frage 5.1 Hier ist der Platz für Anregungen, Wünsche, Kommentare und Kritik; alles auf diesen Fragebogen bezogen: - Ich denke, dass eine strikte Befolgung einer der beschriebenen Vorgehensweise in der Praxis nicht sinnvoll ist. Einzelne Teilbereiche sind sicherlich gut und sollten für das jeweilige Projekt auf "Praxistauglichkeit" überprüft werden. - IMHO: Die Mischung aus klassischem und agilen Projekt-Management ist die Kunst. Seite 6 von 6