Softwareevolution Flashcards
Definition: Softeareevolution
Alle Aktivitäten in der Erstentwicklung (Primärentwicklung) und
Weiterentwicklung eines Softwaresystems im Rahmen der Wartung und Pflege über lange Zeiträume.
Transition in die Einsatzumgebung
Auf die Integration (Fertigstellung) eines Softwaresystems folgt seine
Auslieferung (Übergabe aller relevanten Teile)
- Beginn der Abnahmephase
- Anschließend: Wartungs-,Plege und Weiterentwicklungsphasen
Projektabnahme (Acceptance)
formale Akzeptanz der Projektergebnisse durch den
Auftraggeber (Kunden).
Projektabschluss (Closure)
Durchführung eventuell notwendiger Nach- bzw.
Aufräumarbeiten, ggf. Nachkalkulation/Abrechnung des Projekts, formale Erklärung des Projektendes.
Abnahmeverfahren
- In der Regel Vereinbarung eines Abnahmeverfahrens bei Vertragsabschluss
- Beinhaltet Festlegungen zu:
Bereitstellung der Ergebnisse zur Abnahme durch den Auftragnehmer
Abnahmeprozedur des Auftraggebers
Kernaufgaben bei der Abnahme
- Prüfung auf Vollständigkeit (gemäß Vereinbarung)
- Verifikation der Projektergebnisse
(Software richtig entwickelt, gemäß Spezifikation?) - Prüfung auf Erfüllung der Anforderungen
(die richtige Software entwickelt?)
Übergang in die Wartung
- Erstentwicklung
Neu entwickeltes System
Abgeschlossen mit Auslieferung, Abnahme, Inbetriebnahme - Anschließend: Weiterentwicklung
Softwarewartung und -pflege
Erfordert alle relevanten Entwicklungsunterlagen
Softwarealterung
- David L. Parnas (1994): „Programs, like people, get old“
Sinkende Performanz
Geringere Zuverlässigkeit - Externe Gründe:
Geänderte Plattform
Geänderte Rechensysteme
Geänderte Rahmenbedingungen
Geänderte Anforderungen - Präventive Maßnahmen (Verzögerung des Alterungsprozesses):
Hohe Qualität
Flexibles und erweiterteres Design
Umfassende Dokumentation
Stetige Überarbeitung
Softwaresysteme unterliegen stetiger Überarbeitung!
Gründe:
* Fehler (funktional, qualitativ)
* Sich ändernde Anforderungen
Fachliche Ursachen
(z.B. Änderungen in Gesetzen, Vorschriften oder Prozessen, neue Erkenntnisse, gesteigerte Erwartungen)
Technische Ursachen
(z.B. neue oder geänderte technische Umgebungen)
Methodische Ursachen
(z.B. Einführung von Coding Standards, Refactorings)
Softwarewartung
alle Arbeiten an Programmen inklusive deren Dokumentation, die
deren Pflege und Weiterentwicklung nach der ersten Auslieferung dienen.
Die Softwarewartung dient somit vorrangig der Wahrung eines konstanten
betriebsfähigen Zustandes eines Softwaresystems.
Herausforderungen in der Wartung
Herausforderungen:
- Verstehen (“Program Comprehension”)
- Startbedingungen (oft suboptimal, z.B. fehlende Dokumentation, veraltete
Technologien, …)
- Betrieb (Systeme müssen im produktiven Einsatz bleiben)
- Zeit (oft hoher Zeitdruck, z.B. bei sicherheitskritischen Situationen)
Hauptprobleme in der Softwarewartung
- Bedarf an Erweiterungen und
Verbesserungen - Einhaltung geplanter Termine
- Verfügbarkeit und Fähigkeiten der
Wartungs-Programmierer - Personalfluktuation
- Qualität der Dokumentation
Kosten der Wartung
- Beobachtung: Hoher Wartungsaufwand in frühen Phasen reduziert
Wartungsaufwand in späteren Phasen - Über gesamten Lebenszyklus einer (langlebigen) Software können 70% und mehr des Aufwands auf Wartung entfallen.
Kategorisierung der Wartungsaufgaben
Perfektionierende Wartung:
Anpassungen an geänderte Anforderungen, Implementierung neuer Anforderungen
Adaptive Wartung:
Anpassungen aufgrund von Änderungen in der Technologie/Umgebung
Korrektive Wartung:
Fehlerbehebung
Präventive Wartung:
Vorsorgliche Maßnahmen, insbesondere zur Qualitätsverbesserung
Änderungsanträge (Change Requests)
Wesentliche Punkte dabei:
- Begründung für die (Notwendigkeit der) Änderung
- Analyse der potenziellen Folgen der Änderung
- Aufwandsschätzung und -zuordnung
- Entscheidung und Dokumentation