Softwareevolution Flashcards

1
Q

Definition: Softeareevolution

A

Alle Aktivitäten in der Erstentwicklung (Primärentwicklung) und
Weiterentwicklung eines Softwaresystems im Rahmen der Wartung und Pflege über lange Zeiträume.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Transition in die Einsatzumgebung

A

Auf die Integration (Fertigstellung) eines Softwaresystems folgt seine
Auslieferung (Übergabe aller relevanten Teile)

  • Beginn der Abnahmephase
  • Anschließend: Wartungs-,Plege und Weiterentwicklungsphasen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Projektabnahme (Acceptance)

A

formale Akzeptanz der Projektergebnisse durch den
Auftraggeber (Kunden).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Projektabschluss (Closure)

A

Durchführung eventuell notwendiger Nach- bzw.
Aufräumarbeiten, ggf. Nachkalkulation/Abrechnung des Projekts, formale Erklärung des Projektendes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Abnahmeverfahren

A
  • In der Regel Vereinbarung eines Abnahmeverfahrens bei Vertragsabschluss
  • Beinhaltet Festlegungen zu:
    Bereitstellung der Ergebnisse zur Abnahme durch den Auftragnehmer
    Abnahmeprozedur des Auftraggebers
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Kernaufgaben bei der Abnahme

A
  1. Prüfung auf Vollständigkeit (gemäß Vereinbarung)
  2. Verifikation der Projektergebnisse
    (Software richtig entwickelt, gemäß Spezifikation?)
  3. Prüfung auf Erfüllung der Anforderungen
    (die richtige Software entwickelt?)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Übergang in die Wartung

A
  • Erstentwicklung
    Neu entwickeltes System
    Abgeschlossen mit Auslieferung, Abnahme, Inbetriebnahme
  • Anschließend: Weiterentwicklung
    Softwarewartung und -pflege
    Erfordert alle relevanten Entwicklungsunterlagen
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Softwarealterung

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Stetige Überarbeitung

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Softwarewartung

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Herausforderungen in der Wartung

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Hauptprobleme in der Softwarewartung

A
  • Bedarf an Erweiterungen und
    Verbesserungen
  • Einhaltung geplanter Termine
  • Verfügbarkeit und Fähigkeiten der
    Wartungs-Programmierer
  • Personalfluktuation
  • Qualität der Dokumentation
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Kosten der Wartung

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Kategorisierung der Wartungsaufgaben

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Änderungsanträge (Change Requests)

A

Wesentliche Punkte dabei:
- Begründung für die (Notwendigkeit der) Änderung
- Analyse der potenziellen Folgen der Änderung
- Aufwandsschätzung und -zuordnung
- Entscheidung und Dokumentation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Architekturmanagement

A
  • Erstellung und Überwachung von Architekturelementen und zur Sicherstellung einer effizienten Implementierung und Evolution von Architekturen in einem Unternehmen.
  • Definition klarer Verantwortlichkeiten (Identifikation der relevanten internen und externen Stakeholder)
17
Q

Program Comprehension

A
  • Solides Verständnis der Software grundlegend für alle Wartungsaktivitäten
  • “Program Comprehension” trägt Informationen zusammen über Struktur
    (Architektur), Funktionalität, Verhalten und Intention des Systems
  • Typischerweise erfasst in statischen und dynamischen Modellen
  • Herausfordernde Aufgabe, macht ca. 30% der Wartungszeit aus
18
Q

Reengineering

A
  • Anpassung eines Softwaresystems mit dem primären Ziel der Qualitätsverbesserung
  • Insbesondere Beseitigung von Qualitätsmängeln, die einer Weiterentwicklung im Weg stehen

Zwei wesentliche Anwendungsfälle:
1. Sanierung (Fokus Qualitätssteigerung)
2. Ablösung (Fokus Neu-/Weiterentwicklung)

19
Q

Reverse Engineering

A
  • Analyse eines gegebenen Systems, um dessen Struktur und Verhalten zu
    ermitteln
  • Vorgehen ähnelt teilweise dem Black-Box-Testen
    Wenn kein Quellcode verfügbar, ggf. Einsatz von Disassemblern oder
    Decompilern -> Viele lizenzen verbieten das!
20
Q

Refactoring

A
  • Restrukturierung von Programmcode
  • Verbesserung der Lesbarkeit, Verständlichkeit, Wartbarkeit und Erweiterbarkeit, ohne jedoch das beobachtbare Verhalten zu ändern
  • Notwendigkeit des Refactorings oft durch sogenannte “Code Smells” motiviert
21
Q

Clone Detection

A
  • Kopierter Code (“Code Clones”): kritischer Aspekt in der Wartung und für
    die Korrektheit von Software
  • Entsteht schnell (und unsystematisch) durch Copy&Paste
  • (Oft durch einfache Refactorings vermeidbar…)