Kapitel 7 - Evolution & Wartung Flashcards
Wartung, Hotline
Aspekte & Wartungsvertrag?
Aspekte:
- Gewährleistung = Fehlerbehebung auf Kosten des Herstellers
- Wartung/ Betrieb = technischer Betrieb durch Rechenzentrum und Administratoren
- Hotline (für Benutzer und/ oder technisch) durch spezielle Hotline-Mitarbeiter oder Projektmitarbeiter; letzeres v.a. in kleinen Firmen
Wartungs-Vertrag:
- regelt “Service-Level” = Ereichbarkeit, Median (Telefon, Email, Fax, Online-Formular), Zeit bis Reaktion, maximale System-Ausfallzeiten
Wartung, Hotline
Organisation?
-
Mitarbeiter
- spezialisiert auf Wartung/ Hotline
- mit entsprechendem Arbeitsvertrag (Schichtendienst!)
- zumeist billiger als Projektmitarbeiter
- Outsourcing / Offshoring liegt im Trend
- Anfragen, Kommunikation, Bearbeiter und Status müssen dokumentiert werden
- Anfragen als Quelle für Systemerweiterungen nutzen -> nächste Version
- Klare Prozesse/Workflows
- Qualitätskontrolle der Hotline
Was ist Reengineering?
- Software-Reengineering = Analyse von Anwendungssystemen + Überarbeitung eines Systems, um dessen Qualität zu verbessern
- U.a. Identifizierung und Dokumentation der Komponenten einer Software
- methodische Analyse der Software ausgehend vom Quellcode
Wozu Reengineering?
- aktuelle bzw. nicht mehr verfügbare Informationen gewinnen (z.B. veraltete/fehlende Dokumentation)
- Komplexität von Anwendungssystemen beherrschen
- zusätzliche Softwareartefakte (z.B. entsprechend neuer Unternehmenslinien) herleiten
- Auswirkungen, Seiteneffekte und Schnittstellen von Änderungen identifizieren
- Wiederverwendung (von Softwarekomponenten und/oder Wissen) vorbereiten
Reverse Engineering und Forward Engineering
Schaubild
Was ist Softwarevisualisierung?
Softwarevisualisierung kann die Mehrdimensionalität von Software darstellen
Was ist der Nutzen von Softwarevisualisierung?
- Softwarevisualisierung ist nützlich während der Softwareprogrammierung, Code-Inspektion, Test, Softwarewartung und Schulungen
- Sie spart bei diesen Tätigkeiten Zeit und vermeidet Fehler durch ein besseres Verständnis auch komplexer Software
- Allerdings: Visualisierung zeigt nur Auswahl aller Informationen und verwendet Konventionen
- immer umfangreichere Software -> Anforderungen an Entwicklung und Wartung steigen
- Immer größere Softwaresysteme benötigen Zusammenarbeit immer mehr Menschen
- Programmieren, Verstehen und Modifizieren wird dadurch immer schwieriger
- Techniken und Werkzeuge zur Unterstützung notwendig
- Softwarevisualisierung für Analyse, Entwurf, Test, Debugging und Wartung
Die Visualisierungs-Pipeline (Schaubild)
Probleme bei Visualisierung
-
Konventionen
- Grafiken sind nur verständlich wenn Konventionen bekannt sind
- Begrenzter Bildschirmplatz
- Kombination von mehreren Ansichten
- Visualisierungswerkzeuge sind spezifisch für eine bestimmte Programmiersprache
-
Timing von dynamischen Visualisierungen
- Wann soll eine dynamische V. aktualisiert werden
- Benutzer nicht überfordern
- Wichtige Ereignisse nicht verpassen
Grundlagen der Visualisierung
Für eine grafische Darstellung existieren Konventionen - Abhängig von Umfeld und Kultur
- Größere Flächen bedeuten größere Zahl
- Bedeutung von Farben
- Zeitachse von links nach rechts…
Arten von Visualisierung (3)
Statische Analyse
- Visualisierung unabhängig vom Ablauf des untersuchten Programms
Dynamische Analyse
- Visualisierung während der Laufzeit eines Programms
Entwicklungsgeschichte
- Versionen des Codes und Änderungen zwischen den Versionen bei Entwicklung und Wartung
Statische Programm-Visualisierung
- Visualisierung der Struktur / Architektur der Software
- Hängt von Sprache/Sprachparadigma ab
-
objektorientierte Sprachen:
- Klassen, Methoden, Attribute, Vererbung, …
-
prozedurale Sprachen:
- Prozeduren, Aufrufe, …
UML-Diagramme von herkömmlihcen CASE-Werkzeugen dargestellt…
Vorteile
- Stellen objektorientierte Konzepte dar
- Geeignet für kleine Ausschnitte
Nachteile
- Skalieren nicht
- Benötigen Filter für relevante Informationen
- Nur voreingestellte Sichten
Dynamische Programm-Visualisierung
Visualisierung dynamischen Verhaltens, z.B.
- Ausführungs-Trace
- Ressourcenverbrauch (Speicher/Laufzeit)
- Objekt-Interaktion
- …
Unterscheidung zwischen
- Codevisualisierung (ausgeführte Schritte)
- Datenvisualisierung (gelesene/geschriebene Speicherinhalte)
- Visualisierung der Architektur
Daten sammeln:
- ähnlich wie Fehlersuche im Quellcode
- zusätzliche Anweisungen im Quellcode (der “instrumentation code”) -> Ausgabe der gewünschten Daten, z.B. in eine Protokolldatei (Logdatei oder trace)
Probleme:
- Code-Instrumentierungsproblem
- Code-Änderung, z.B. Einfluss auf Performanz
- Skalierbarkeitsproblem
- Fülle der Details
- Traces werden sehr schnell enorm groß
- Vollständigkeitsproblem
- Information gilt nur für betrachtete Szenarien
dynamische Visualisierung dieser Daten und deren Änderungen erfolgen durch….? (4)
- Akkumulation
- räumliche Projektion
- Animation
- Jeweils unterschiedliche zu visualisierenden Daten
- Speicherinhalte, Programmzustände, Datenflüsse und ausgeführte Befehle, Auslastung und Architektur
Akkumulation
- Anzeige eines Mittelwerts, z.B. wie oft eine Anweisung ausgeführt wurde
- Durch Darstellung nur eines Wertes wird Information komprimiert, aber Detailinformationen gehen verloren
- Bspw. Zeitliche Abfolgen und Korrelation