4. Vorgehensmodelle 4.1 Phasen der Software
Transcrição
4. Vorgehensmodelle 4.1 Phasen der Software
4. Vorgehensmodelle Herausforderungen der SW-Entwicklung 4.1 4.1 Phasen der Software-Entwicklung 4.2 Wasserfallmodell 4.3 Prototypische Entwicklung 4.4 Iterative Entwicklung 4.5 Iterativ-inkrementelle Entwicklung 4.6 Allgemeines V-Modell 4.7 Das V-Modell der Bundesrepublik Deutschland 4.8 Rational Unified Process 4.9 Agile Vorgehensmodelle 4.10 Scrum 4.11 Extreme Programming Software-Engineering Projekt Prof. Dr. Stephan Kleuker 81 Die Phasen der SW- Entwicklung Software-Systeme sind heutzutage verteilte Anwendungen – Anschluss an existierende Software (z.B. SAP, MS Office, bestehende Unternehmenssoftware...) – Integration neuer Komponenten in existierende Systeme – Erweiterung existierender Systeme eigene Komponenten neues System ? ? ? Legacy Systeme Software-Engineering Projekt • Erhebung und Festlegung des Anforderungsanalyse WAS mit Rahmenbedingungen Anforderungsanalyse • Klärung der Funktionalität und Grobdesign der Systemarchitektur durch erste Modelle • Detaillierte Ausarbeitung der Feindesign Komponenten, der Schnittstellen, Datenstrukturen, des WIE • Ausprogrammierung der Implementierung Programmiervorgaben in der Zielsprache • Zusammenbau der Komponenten, Test und Integration Nachweis, dass Anforderungen erfüllt werden, Auslieferung Prof. Dr. Stephan Kleuker ? ? Systeme anderer Anbieter Prof. Dr. Stephan Kleuker 82 Wasserfallmodell 4.2 Software-Engineering Projekt Systeme an anderen Standorten 83 Grobdesign Feindesign Implementierung Test und Integration Software-Engineering Projekt Merkmale: Phasen werden von oben nach unten durchlaufen Vorteile: - Plan auch für Nichtexperten verständlich - einfache Meilensteinplanung - lange Zeit am häufigsten eingesetzt Nachteile: - Anforderungen müssen 100%-ig sein - späte Entwicklungsrisiken werden spät erkannt - Qualität des Design passt sich Zeitplan an Optimierung: es ist möglich, in die vorherige Phase zu springen Prof. Dr. Stephan Kleuker 84 Prototypische Entwicklung 4.3 Anforderungsanalyse Anforderungsanalyse Grobdesign Grobdesign Feindesign Feindesign Implementierung Implementierung Test und Integration Test und Integration Prototyp Software-Engineering Projekt Iterative Entwicklung Merkmale: - potenzielle Probleme frühzeitig identifiziert, - Lösungsmöglichkeiten im Prototypen gefunden, daraus Vorgaben abgeleitet Vorteile: - frühzeitige Risikominimierung - schnelles erstes Projektergebnis Nachteile: - Anforderungen müssen fast 100%-tig sein - Prototyp (illegal) in die Entwicklung übernommen - Kunde erwartet schnell Endergebnis Optimierung: es ist möglich, in die vorherige Phase zu springen Prof. Dr. Stephan Kleuker 85 Iterativ Inkrementelle Entwicklung (State of the Art) 4.5 Anforderungsanalyse Grobdesign Feindesign Implementierung 4.4 Anforderungsanalyse Grobdesign Feindesign Implementierung Test und Integration Merkmale: - Erweiterung der Prototypidee; SW wird in Iterationen entwickelt - In jeder Iteration wird System weiter verfeinert - In ersten Iterationen Schwerpunkt auf Analyse und Machbarkeit; später auf Realisierung große Vorteile: - dynamische Reaktion auf Risiken - Teilergebnisse mit Kunden diskutierbar Nachteile im Detail: - schwierige Projektplanung - schwierige Vertragssituation - Kunde erwartet zu schnell Endergebnis - Kunde sieht Anforderungen als beliebig änderbar Software-Engineering Projekt Prof. Dr. Stephan Kleuker 86 Fertigstellung mit Iterationen Merkmal: - Projekt in kleine Teilschritte zerlegt - pro Schritt neue Funktionalität (Inkrement) + Überarbeitung existierender Ergebnisse (Iteration) - n+1-ter Schritt kann Probleme des nten Schritts lösen Vorteile: - siehe „iterativ“ - flexible Reaktion auf neue funktionale Anforderungen Nachteile: - siehe „iterativ“ (etwas verstärkt) 1. Iterationen 2. 3. 4. Anforderungsanalyse Grobdesign Feindesign Implementierung Test und Integration Test und Integration Bsp.: vier Inkremente Software-Engineering Projekt Optimierung/Anpassung: Anforderungsanalyse am Anfang intensiver durchführen Prof. Dr. Stephan Kleuker 0% 87 Software-Engineering Projekt Fertigstellungsgrad Prof. Dr. Stephan Kleuker 100% 88 Bekanntheit von Vorgehensmodellen Struktur komplexer Vorgehensmodelle 71 63 19 S p ira lm o de ll 52 26 In kre m e ntelle E n tw icklun g 45 17 E vo lutio nä re s P rototyping R U P (R a tio n a l U n ified P rocess) ke in es die se r M o de lle • Aktuelle Vorgehensmodelle, wie V-Modell XT des Bundes (Rational) Unified Process OEP (Object Engineering Process) enthalten Aktivitäten (was soll gemacht werden), Rollen (wer ist wie an Aktivität beteiligt) und Produkte (was wird benötigt; bzw. ist Ergebnis) • es gibt Vorschläge für typische Anwendungsszenarien, wie Aktivitäten zu verknüpfen sind • Rahmenwerke, am Anfang eines Projekts muss (werkzeuggestützt) bestimmen, welche Aktivitäten, Rollen, Produkte und Reihenfolgen von Aktivitäten für das individuelle Projekt relevant sind (tailoring, d. h. „zurecht schneidern“, benötigt viel Erfahrung) 24 V -M o d ell E xtrem e P ro gram m in g 4.6 41 W asse rfallm o d e ll 41 4 39 15 32 g e n u tzte M o d e lle b e ka n n te M o d e lle 20 11 Quelle: Softwareentwicklung läuft nicht auf Zuruf, Computer Zeitung Nr. 46/05 Software-Engineering Projekt Prof. Dr. Stephan Kleuker 89 allgemeines V-Modell Software-Engineering Projekt Prof. Dr. Stephan Kleuker 90 V-Modell des Bundes 4.7 Validierung Anforderungsdefinition manuelle Prüfung Validierung Funktionaler Systementwurf manuelle Prüfung Validierung Technischer Systementwurf KomponentenSpezifikation manuelle Prüfung Konstruktion manuelle Prüfung • Regelung der Softwarebearbeitung (im Bereich der Bundeswehr, des Bundes und der Länder) Abnahmetest • einheitliche und (vertraglich) verbindliche Vorgabe von Systemtest – Aktivitäten und Integrationstest – Produkten (Ergebnissen), • Historie: V-Modell 92 (Wasserfall im Mittelpunkt), Überarbeitung V-Modell 97 (Anpassung an inkrementelle Ideen (W-Modell); Forderung nach zu früher Festlegung von Anforderungen) Validierung Komponenten- test • aktuell: V-Modell XT (eXtreme Tailoring), neuer Erstellung mit Fokus auf Verhältnis von Auftragnehmer und Auftraggeber (starker akademischer Einfluss bei Entwicklung) Programmierung Integration Anmerkung: wird iterativ / inkrementell zum W-Modell Software-Engineering Projekt Prof. Dr. Stephan Kleuker 91 Software-Engineering Projekt Prof. Dr. Stephan Kleuker 92 Struktur des V-Modell XT Produktorientierung im V-Modell XT http://www.v-modell-xt.de • Eine Projektdurchführungsstrategie definiert die Reihenfolge der im Projekt zu erreichenden Projektfortschrittsstufen; nutzt Entscheidungspunkte (go, no go) • Produkte stehen im Mittelpunkt, sie sind DIE Projektergebnisse • Projektdurchführungsstrategien und Entscheidungspunkte geben die Reihenfolge der Produktfertigstellung und somit die grundlegende Struktur des Projektverlaufs vor • Die detaillierte Projektplanung und -steuerung wird auf der Basis der Bearbeitung und Fertigstellung von Produkten durchgeführt • Für jedes Produkt ist eindeutig eine Rolle verantwortlich und im Projekt dann eine der Rolle zugeordnete Person • Die Produktqualität ist überprüfbar durch definierte Anforderungen an das Produkt und explizite Beschreibungen der Abhängigkeiten zu anderen Produkten für V-Modell XT-Informationen: Copyright Reserved © Bundesrepublik Deutschland 2004. Software-Engineering Projekt Prof. Dr. Stephan Kleuker 93 Entscheidungspunkte des V-Modells XT Schnittstelle Auftraggeber / Auftragnehmer Organisationsspezifisches V-Modell Systementwicklung Projekt definiert Vorgehensmodell analysiert Verbesserung Vorgehensmodell konzipiert Verbesserung Vorgehensmodell realisiert Anforderungen festgelegt Geamtprojekt aufgeteilt Projekt ausgeschrieben 94 Angebot abgegeben Gesamtfortschritt überprüft Projektfortschritt überprüft Projekt beauftragt Iteration geplant System spezifiziert System entworfen Feinentwurf abgeschlossen Software-Engineering Projekt Prof. Dr. Stephan Kleuker Beispiel: Projektdurchführungsplan relevant für alle V-Modell-Projekte Projekt genehmigt Software-Engineering Projekt Prof. Dr. Stephan Kleuker Abnahme erfolgt Projekt abgeschlossen Lieferung durchgeführt System integriert Systemelemente realisiert (Systementwicklungsprojekt eines Auftraggebers (AG)) 95 Software-Engineering Projekt Prof. Dr. Stephan Kleuker 96 Beispielaktivität: Anforderungen festlegen Rational Unified Process (RUP) 4.8 Phasen Disziplinen Konzeption Konstruktion Ausarbeitung Inbetriebnahme Geschäftsprozessmodell Anforderungsanalyse Design Implementierung Test Installation Konfigurations- und Änderungsmanagement Projektmanagement Projektumfeld Start aus IBM/Rational: Rational Unified Process Software-Engineering Projekt Prof. Dr. Stephan Kleuker 97 Phasen des RUP Konzeption Iteration 1 Konzeption Ausarbeitung Ausarbeitung Ausarbeitung Inbetrieb Iteration 2 Iteration 1 Iteration 2 Iteration n Iteration 1 Inbetrieb Iteration 2 Iterationen Software-Engineering Projekt Prof. Dr. Stephan Kleuker 98 Struktur des RUP • inception (Konzeption): Ermittlung zentraler Anforderungen, Projektumfang definieren, erste Entwurfs- und Implementierungsansätze, Identifikation der Projektrisiken und Aufwände • elaboration (Ausarbeitung): stabile, möglichst vollständige Anforderungen, Entwurfsspezifikation, detaillierter Projektplan mit aktivem Risikomanagement • construction (Konstruktion): Implementierung, Integration, auslieferbare Version • transition (Inbetriebnahme): Beta-Test, Endabnahme, Inbetriebnahme, Endlieferung Software Engineering Process bearbeitet Rolle strukturiert durch Disziplin beschrieben in Arbeitsablauf erstellt mit Hilfe von Ergebnis Eingabe verantwortlich für Hilfsmittel verfeinert durch Aktivität Checkliste Arbeitsablaufdetails Produkt (Artifact) Hilfsmittel Strukturbeschreibung (Template) Werkzeuganleitung Hilfsmittel Bericht beschrieben durch Software-Engineering Projekt Prof. Dr. Stephan Kleuker 99 Software-Engineering Projekt Prof. Dr. Stephan Kleuker 100 Kritik an klassischen Vorgehensmodellen Arten von agilen Prozessen (1/2) 4.9 • generell: Methoden lernen von einander; es gibt nicht die eine agile Methode • Es müssen viele Dokumente erzeugt und gepflegt werden • Eigene Wissenschaft Modelle wie V-Modelle und RUP zu verstehen und zurecht zu schneidern • Prozessbeschreibungen hemmen Kreativität • Anpassung an neue Randbedingungen, z. B. neue Technologien (Web-Services) in Prozessen und benutzten Werkzeugen ist extrem aufwändig • Variante 1: Beschreibung auf Metaprozessebene – Grundregeln zur Projektorganisation – Vorgehensweisen in Projekten werden vom Team festgelegt – Beispiele: • Scrum (u. a. Ken Schwaber, Jeff Sutherland) [s. Folien] • Crystal Methodenfamilie (Alistair Cockburn) • alternativer Ansatz: „Menschen machen Projekte erfolgreich, traue den Menschen“ => agile Prozesse (vorherige Name: leichtgewichtige Prozesse) Software-Engineering Projekt Prof. Dr. Stephan Kleuker 101 Arten von agilen Prozessen (2/2) Prof. Dr. Stephan Kleuker Prof. Dr. Stephan Kleuker 102 Agiles Manifest (Februar 2001) We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: • Variante 2: Konkrete Prozessbeschreibungen – Für verschiedene Phasen der SoftwareEntwicklung werden konkrete Verfahren vorgeschlagen – Abhängigkeiten der Verfahren werden dokumentiert („wer A macht muss auch B machen“); Möglichkeiten zur individuellen Optimierung – Beispiele: • eXtreme Programming (XP) (u. a. Kent Beck, Ward Cunningham) [s. Folien] • Dynamic Systems Development Method (Konsortium) Software-Engineering Projekt Software-Engineering Projekt Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas www.agileAlliance.org 103 Software-Engineering Projekt Prof. Dr. Stephan Kleuker 104 Scrum (1/2) Scrum (2/2) 4.10 • Projektplanung: Eng mit dem Kunden werden Hauptaufgaben identifiziert (Stack mit product backlog) • Hauptaufgaben können auch Test von Technologien und die Entwicklung von Prototypen sein • Scrum Team schätzt Aufwände; wählt mit Kunden aus product backlog wichtigste nächste Aufgaben für nächste Iteration (heißt sprint) aus • Jeder sprint dauert ca. 30 Tage; hat sprint backlog mit priorisierten Aufgaben; sorgt für nicht unterbrochene Arbeitsphase des Teams (Scrum Master kann abbrechen) • Nach jedem sprint Analyse mit dem Kunden, was wurde erreicht; wie kann Projekt verbessert werden [zurück Planung] • siehe auch: www.controlchaos.com • („Scrum“: Gedränge beim Rugby) • Scrum Teams mit maximal 7 Personen mit unterschiedlichen Fähigkeiten, einem Leiter (Scrum Master) • Bei größeren Teams: mehrere Teilteams durch Scrum Master koordiniert • Zentrales Steuerungselement: Scrum meetings; jeden Tag 15 Minuten: – was habe ich seit letztem Meeting gemacht? – was werde ich bis zum nächsten Meeting machen? – was hat meine Arbeit behindert? • Scrum Master ist Koordinator; beseitigt Behinderungen; kommuniziert im Unternehmen • Arbeitsablauf im Team wird vom Team selbst geregelt Software-Engineering Projekt Prof. Dr. Stephan Kleuker 105 Scrum - Überblick Software-Engineering Projekt • • Product backlog sprint backlog Aufgabe 1 Teilaufgabe 1 Arbeitstag Aufgabe 2 Teilaufgabe 2 ... ... • Scrum-Meeting • • StatusReview • sprint 30 Arbeitstage • • • Software-Engineering Projekt 106 Ideen des Extreme Programming (XP) (1/3) 4.11 Planung für sprint Prof. Dr. Stephan Kleuker Prof. Dr. Stephan Kleuker 107 Planning User stories are written Release planning creates the schedule Make frequent small releases The Project Velocity is measured The project is divided into iterations Iteration planning starts each iteration Move people around A stand-up meeting starts each day Fix XP when it breaks Software-Engineering Projekt Designing Simplicity Choose a system metaphor Use CRC cards for design sessions • Create spike solutions to reduce risk • No functionality is added early • Refactor whenever and wherever possible • • • Prof. Dr. Stephan Kleuker 108 Ideen des Extreme Programming (XP) (2/3) • • • • • • • • • Coding The customer is always available Code must be written to agreed standards Code the unit test first All production code is pair programmed Only one pair integrates code at a time Integrate often Use collective code ownership Leave optimization till last No overtime Software-Engineering Projekt • • • • Ideen des Extreme Programming (XP) (3/3) Testing All code must have unit tests All code must pass all unit tests before it can be released When a bug is found tests are created Acceptance tests are run often and the score is published Prof. Dr. Stephan Kleuker 109 • agile Methoden haben viele Innovationen in verstaubte SWEntwicklungsprozesse gebracht (etwas Neues; viel neu arrangiertes) • Einsetzbarkeit hängt stark von technischen und menschlichen Fähigkeiten des Teams ab • große Erfolge möglich, wenn Dream-Team gefunden • Aufpassen bei Beratungs-Hype („XP ist die Zukunft“) Hamburger Berater: Wir haben agile Methoden erfolgreich in Versicherung X eingeführt und manifestiert Projektleiter bei X: Haben neue Ideen zur Optimierung unseres existierenden Prozesses genutzt; konkret übrig geblieben sind Stand-Up-Meetings • Agiles Manifest interessant für alle SW-Entwicklungsprozesse • Ideen auf andere Ansätze übertragbar • Überblick mit Kommentaren in Artikeln von J. Coldewey http://www.coldewey.com/publikationen/Kolumne.html Generell: Vorgehensmodell muss zum Projekt und den Menschen passen Prof. Dr. Stephan Kleuker neue User-Story geänderte Randbedingung User Stories Anforderungen Systemidee Architekturansatz Release- ReleaseIteration plan Planung unklare Annahmen abgesicherte Annahmen Miniprototyp (Spike) Fehler aktuelle Version nächste Iteration Akzeptanz -tests Kundenzustimmung kleine Releases • Quelle der XP-Folien : www.extremeprogramming.org • Varianten: z. B. in der Nutzung von Dokumentation (keine – minimal) Versuch einer Beurteilung von agilen Methoden Software-Engineering Projekt Testfälle 111 Software-Engineering Projekt Prof. Dr. Stephan Kleuker 110