• Was versteht man unter Software Evolution? (auswendig lernen)

    • Software Evolution ist ein iteratives Prozess,
    • der die inititiale Entwicklung, Wartung, und Weiterentwicklung umfasst.
    • Ziel: die Software nuetzlich zu halten ohne Qualitaetverlust
    • oder im Ideallfall mit Verbesserung der Qualitaet
  • Welche Phasen gibt es in Software Evolution Prozess? (auswendig lernen)

    • Requirements and Change Management: Beziehungen zwischen Anforderungen und Software Artefakten werden oft verloren. Requirements and Change Management dient fuer Sicherstellung dieser Beziehungen. Das kann mit Traceability erreichen.
    • Change Impact Analyse: man muss identifizieren, welche Teile des Systems potenziell von Aenderung betroffen sind. Auf Artefakt-Ebene hat man Traceability Analyse, und auf Code-Ebene hat man statische und dynamische Programm-Analyse
    • Reengineering von Legacy Systems: Legacy Systemen sind oft schlecht Doukumentiert, die originalen Entwicklern sind schon lange weg, und oft niemand kann die Systeme verstehen. Solche Systeme werden als Black-Box betrachtet, und irgendwann kann es sehr teuer werden. Wenn man Legacy-Sytemen reengineeren soll, muss man es zuerst mit Reverse Engineering verstehen, und dann mit Forward Engineering verbessern oder neue Anforderungen umsetzen.
    • Software-Modernisierung: Software an neue Umgebung anpassen, Libraries und Frameworks aktualisieren.
    • Quality Assurance: Probleme im Bezug auf Wartbarkeit erkennen und beheben. Design Probleme identifizieren und preventing teuere Wartung.
    • Untersuchung der Evolutions-Alternativen: Identifizierung der Tradeoffs, Vergleich von Tradeoffs und Auswahl von bester Alternative. Zum Beispiel, wenn man entscheidet, ob man Cloud-Loesung fuer Datenhaltung verwendet oder lokale Datenbank-Infrastruktur erstellt.

    Untitled