Life Cycle (Phasen)
Software Life-Cycle / Phasen / Lebenszyklus
Ablauf eines Software-Entwicklungs-Projektes kann gesamten Lebenszyklus umfassen.
Vier grobe Phasen
- Software Spezifikation Projektdefinition, Planung
- Design und Implementierung Detailplanung
- Software Validierung Überprüfung in Bezug auf Kundenwünsche
- Software Evoluion Weiterentwicklung
Überblick über phasen
-
Requirements (Anforderungen) - (user/customer view)
Ewartungen von Kunde an Softwareprodukt
Anforderungen müssen testbar sein und getestet werden!
-
Specification - (engineering view)
Beschreibung für Implementierung
-
Planning (project management)
Projektplan, berücksichtigt Zeit, Dauer, Kosten
-
Entwurf / Design
Komponentenarchitektur (Komponenten, Packages, Datenbankdesign)
- Implementierung (Erzeugung des Softwareprodukts) und Testen
-
Integration und Testen
Zusammenfügen und testen (integration test) Test der einzelnen Komponenten (unit tests) auf Architektur- und Systemebene.
-
Operation and Maintenance (Einsatzphase)
Unterstützung, Erweiterungen während laufenden Betriebes.
-
Retirement (Ende des Produktlebenszyklus)
Softwareprodukt wird aus Betrieb genommen
Begleitet von:
Projektmanagement PM
Planung, Kontrolle, Steuerung, Organisation
Technische, finanzielle, planerische Aspekte
Qualitätsmanagement QM
Überprüfung der Qualität (Qualitätssicherung QS) mit Verifikation / Validierung
Test-Techniken
-
Unit Test
Komponenten - Umsetzung technischer Spezifikation
-
Integrationstest
Interfaces und Verbindungen zwischen Komponenten innerhalb des (Sub)Systems
-
Systemtest
Gesamtsystem
-
Regressionstest
Testen von geänderten Komponenten → Fehler, die durch Änderungen / Fehlerkorrektur, entstanden sind
-
Akzeptanztest
ob Kunde akzeptiert
-
Installationstest
während Installation
-
Unit Test
Anforderung & Spezifikation
Stakeholder
Erstellen die Anforderungen
-
Kunden (bezahlen software-produkt)
Anforderung: z.B. schnelle und kostengünstige Lieferung
-
Anwender (benutzen)
Anforderung: z.B.: Usability, Einfachheit, Stabilität, usw.
- Entwickler (erstellen)
Warum sind Anforderungen wichtig?
Gemeinsames Verständnis zwischen Stakeholders (Kunde/Anwender, Entwickler, usw.) und Entwickler.
Entweder beschrieben oder grafisch dargestellt (UML Diagramm).
Müssen testbar sein (tools: requirements management mit z.B. Doors, Rational Requisite Pro)
Anforderungen (Requirements)
Anforderungs-Phase (Requirements-Definition)
Text, Story-board, Feature-lists, UML Use cases (Anwendungsfalldiagramme)
Anforderungs-Analyse und Spezifikation
Berücksichtigung möglichst aller beteiligten Personen (Stakeholder)
– Hauptanforderungen (must-be Kritieren). – Gewünschte Anforderungen (expected, nicht entscheidend aber wichtig). – Optionale Anforderungen (nice-to-have Kriterien).
Müssen konsistent und testbar sein
In der Praxis ändern sich Anforderungen häufig → Agiler Ansatz
Anforderungs-Arten
Funktional Systemverhalten, Datenformate
Nicht-Funktional Qualitätsmerkmale, zB Leistungsfähigkeit, UI, Sicherheit
Design-Bedingung techn. Rahmenbed., Software Architektur, IDE, verteilte Entwicklung
Prozess-Bedingung Rahmenbedingungen für Vorgehen (Vorgehensmodelle)
Anforderungsprozess
Vorgehensmodell für Erhebung von Anforderungen.
Vollständige Erhebung von allen Rollen / Stakeholdern, Prioritisierung, Überprüfung
Phasen:
- Anforderungserhebung Sammeln, klassifizieren, prioritisieren
- Analysephase Analyse mit UML
- Spezifikation Planung für technische Entwicklung
- Validierung Verifikation, Validierung
Projektplanung & Steuerung
Aufgabe des Projektmanagements
Es sind in dieser Phase Anforderung und Spezifikation gegeben
-
Projektplanung (Planungsphase)
Weitere Schritte des Projektes planen, Abhängigkeiten finden:
Prozessabhängigkeitdefiniert durch Vorgehensmodell
Produktabhängigkeitdefiniert durch Reihenfolge
-
Projekt-Monitoring und Controlling
Steuerung nach jeder Iteration
Artefakte (Dokumente) dieser Phase
Netzpläne / Pert-Diagramme → stellt Abhängigkeiten dar
Work-Breakdown-Structure WBS / Projektstrukturplan → Aufteilung in Organisationseinheiten
GANTT → Zeitliche Abfolge und Daue
Milestone-Trend-Analysis MTA → setzt Meilensteine und Termine
Entwurf und Design
Erstellung aller Artefakte die für die konkrete Implementierung nötig sind.
Entwurf grobe Planung, grobe Architektur, zB Datenbankmodell skizzieren
Design Grobentwürfe werden im Detail ausgearbeitet
"Designspezifikationen" enthalten
Definition von Architektur, Komponenten, Interfaces, usw → Architecture Tradeoff Analysis Method ATAM um zwischen den Architekturen zu wählen.
Test und Dokumentations-Anforderungen
4+1 Model View
Sicht (view) beschreibt Teil der Architektur mit UML diagramm
Design Prinzipien
- Abstraktion
- Kapselung
- Trennung von Schnittstelle und Implementierung
- Dekomposition, Modularisierung
-
Balance zwischen Kopplung (äußere Abhängigkeit) und Kohäsion (innerer Zusammenhalt)
Coupling (Kopplung) vs Cohesion (Bindung)
Coupling = Abhängigkeit zwischen Komponenten
Coheison = innerer Zusammenhalt in einer Komponente. Unabhängigkeit.
Ziel: Balance
UML: Sequence- und Collaboration Diagramms
-
Zentrale vs. verteilte Kontrolle
fork = zentral
Anpassung nur an wenigen Objekten nötig - leichtere Wartbarkeit
Hohe Abhängigkeit Systems von diesem Objekt
Wiederverwendung von Datenobjekten leichter
stair = verteilt / dezentral
Schrittweise Ausführung von Funktionen, dadurch wechselt die Kontrolle - schwierigere Wartung
Bessere Wiederverwendbarkeit der Methoden z.B. durch Vererbung
Ausfall eines Teiles nicht so schlimm
Hohe Fehleranfälligkeit
Artefakte (Dokumente) dieser Phase
-
Komponenten Diagramm
Komponente = logischer Teil / Implementierung der Schnittstelle
- Klassen Diagramm
- Zustands Diagramm / Aktivitätsdiagramm
- Datenbankmodell → Extended Entity Relationship Diagramm EER
- GUI Design
- Tests auf System und Integrations Ebene
Implementierung und Integration
Es stehen Entwurfs und Designdokumente zur verfügung.
Entwickler programmiert alles was in den Dokumenten.
Standardisierung
Gemeinsame Normen, Regelungen
- Nationale & Internationale Standards
- Unternehmensweite Standards
- Projektspezifische Standards
Vorgaben für
- Dokumentationen
- Namenskonventionen
- Formatierungsrichtlinien
-
Versionierungen
Überblick aller (Teil-)Produkte innerhalb eines Projektes und die Verwendung der letztgültigen Versionen
- Headerblocks in Komponenten (code headers)
- Kommunikationsprotokolle (Nachricht Format und Inhalt)
- Programmiersprachen (Syntax, Semantik)
- Werkzeuge (Notation wie UML)
Dokumentation
Namenskonventionen
Formatierung
Dokumentations / Formatierungsrichtlinien
Kommentare und Headerblocks
Sinnvolle commit-Nachrichten
Traceability
Rückverfolgbarkeit durch gesamten Entwicklungszyklus - Änderungsverfolgung
Informationen aus dem Headerblock → automatisiertes Requirements Tracing z.B. in IDEs
-
Zeitlich
Unterschiedliche releases, versionen
-
Vertikal
Beziehungen eines Artefakttyps: z.B. System – Subsystem – Komponente.
-
Horizontal
Beziehungen von Entwicklungsartefakten: z.B. Anforderungen – Implementierung – Testfälle
Integration
Zusammenbauen der Komponenten zu einem größeren Teilsystem / System
Integrationstest auf Architekturebene
Integrationsstrategien
Bei manchen Strategien „Hilfsmittel“ notwendig, um nicht vorhandene Funktionalität zu simulieren.
-
Big Bang
Alles auf einmal, viele Seiteneffekte, ungeeignet
Kein Zusatzaufwand
Fehler sind schwer zu finden, viele Seiteneffekte gleichzeitig, riskant → eher bei kleinen Projekten
-
Continuous Integration
Best-practice, täglich integrieren (daily build mit build management tools)
-
Schrittweise Integration
Wenn Simulation der Komponenten nicht möglich ist
-
Top down
Ausführbares Gesamtsystem ist früher verfügbar
Geschäftsfälle / Business Cases → Hardwarenahe Komponenten
Auftraggeber bekommt schnell Prototypen
Hoher Aufwand für Test stubs (um die fehlende Funktion zu simulieren) - man kann manche Fehler zu spät finden
-
Bottom up
Umgekehrt
Stabiles System (durch Hardware Interfaces)
Zusätzlicher Aufwand für Prototypen und Test Drivers .
Stabiles Fundament, sehr spät Prototyp vefügbar
-
Build Inegration (Phasen orientiert)
Mischung aus Top down und Bottom up.
Prioritisierte Business Cases durch alle Ebenen des Systems.
Nur bestimmte, eingeschränkte Funktionalität
Benötigt Regressions-Tests
-
Top down
Artefakte (Dokumente) dieser Phase
Testberichte (auch Regressionstests = Tests nach Korrekturen)
Betrieb und Wartung (Evolution)
Integration ist abgeschlossen.
Produkt wird in den operativen Betrieb übergeführt.
- Standard Software breiter Markt, viele Beta-Tests
- Individual Software formeller Abnahmetest durch Auftraggeber
Abnahme und Einführungsphase
Akzeptanztest durch Auftraggeber
Komplette Übergabe aller Dokumentationen
Betrieb (Operation)
Wartung (Maintainance)
Process-View
Änderung des Software-Produkts nach Auslieferung (Delivery) und Inbetriebnahme (Deployment bzw. Product Launch).
Activity-View
Wartungs-Aufgabe
Phase-Oriented-View
Wartungsphase endet mit “Stilllegung” des Softwareproduktes.
Wartungskategorien
korrektive Wartung (Correction) → Fehlerbeseitigung
Erweiterungen (Enhancement)
Reaktiv → durch Anwender / Kunde angestoßen, Änderungswunsch
Proaktiv → bevor angestoßen wurde
Detailierter
-
Reaktive Wartung
- Korrektiv (Corrective): Bug- und Fehlerkorrektur (patches, workarounds, updates).
- Adaptiv (Adaptive): Anpassung an neuen Anforderungen (Hardware, Softwareänderungen).
-
Pro-Aktive Wartung
- Verbesserung (Perfective): Erweiterungen, Verbesserung der Effizienz.
- Vorbeugend (Preventive): Verbesserung für zukünftige Wartung (z.B. Ergänzung der Dokumentation).
-
Reaktive Wartung
Wartungsaufwand
Mehr als 80 % der Wartungsarbeiten für nichtkorrektive Tätigkeiten benutzt.
Techniken zur Wartung
- Herstellen des Produktverständnisses – Gute Dokumentation
- Reengineering – Überarbeitung (teuer)
- Reverse Engineering – Komponente und Zusammenhänge analysieren, modellieren (UML-Modelle aus C# Code)
Artefakte (Dokumente) dieser Phase
Change requests vom Kunden
Daten aus Issue tracking System
Retirement
Außerbetriebnahme, Stilllegung (Retirement phase)
Ende der Betriebsphase (Betrieb + Wartung): Stilllegung des Softwareproduktes.
Kontrolliertes Außer-Betrieb-Setzen - Übergang zu Nachfolgeprodukt
Gründe:
Nachfolgeprodukt
Komplettes Redesign
Nicht mehr benötigt, Hardware Änderungen
Life-Cycle → Vorgehensmodell
Vorgehensmodelle decken eher technische Entwicklung aus den Lebenszyklus-Phasen ab.
Definition der Anforderungen → Inbetriebnahme bei Kunden
Software-Prozesse / Vorgehensverfahren
Wann sollte welche Software bis zu welchem Freistellungsgrad verfügbar sein?
Ablaufplan, Notwendig bei größeren Projekten
-
Konstruktive Methoden
Software Produkte machen für: z.B. Spezifikation, Code, Testfälle, Protokolle
-
Analytische Methoden
Qualitätsüberprüfung: z.B. Reviews, Inspektionen, Tests