Modellbasierte Softwareentwicklung
Transcription
Modellbasierte Softwareentwicklung
Betrieb und Wartung Software Engineering 1 WS 2010/2011 Dr. Ina Schaefer Software Systems Engineering Technische Universität Braunschweig (mit Folien von Dr. A. Herrmann und Dr. Chr. Kästner) Aufwandsverteilung Wasserfallmodell nach W. Royce (1970) Analyse Produktdefinition Entwurf 10 % 20 % EntwurfsSpezifikation 20 % Implementierung 50 % Code Test, Integration geprüfter Code Wartung Dr. Ina Schaefer Software Engineering 1 Seite 2 des Aufwands AufwandVerteilung für Betrieb und Wartung Relativer Anteil der Phasen am Gesamtaufwand über die gesamte Lebensdauer eines Softwaresystems nach [Boehm,1973] Entwicklung (40%) Spezifikation und QualitätsArchitektursicherung Detailentwurf Entwurf und Codierung 16% Dr. Ina Schaefer 8% 16% Betrieb & Wartung (60%) Erweiterung, Verbesserung Anpassung 12% Software Engineering 1 36% FehlerBehebung 12% Seite 3 Übersicht • Betrieb • Installation • Einführung und Schulungen • Wartung • Refactoring • Migration Dr. Ina Schaefer Software Engineering 1 Seite 4 Inbetriebnahme Definition: Die Inbetriebsetzung ist die Gesamtheit der Maßnahmen, die zur erstmaligen Funktionsübernahme von Komponenten und Systemen an deren endgültigen Aufstellungsorten notwendig sind. Die Inbetriebnahme ist unter Umständen sehr aufwendig, abhängig vom Umfeld oder benötigter Software- und Hardwarelandschaft. Daher ist die Installation im Vorfeld unbedingt genau zu planen. Dr. Ina Schaefer Software Engineering 1 Seite 5 Installation Wichtige Fragen bei der Planung der Installation: • Auf welcher Maschine(n) läuft die Applikation? • Ist (separate) Datenbank erforderlich? • Integration von Fremdsystemen oder Bibliotheken? • Wer führt Installation durch? (Entwicklungsteam, IT-Abteilung, Anwender, …) • Automatische Installationsroutinen? • Betriebsbeginn? • Dokumentation vorhanden? (Installationshandbuch, Entwicklerdokumentation, …) • Wer übernimmt die Abnahme (technisch, fachlich)? • Gibt es Betriebshandbücher? Wer erstellt diese? Dr. Ina Schaefer Software Engineering 1 Seite 6 Einführung der Software Wichtig ist es, die Akzeptanz der Anwender zu erreichen, z.B. durch: • Anwenderdokumentation • Zielgruppen-orientiert • Einführung in Leistungsumfang • Nachschlagewerk für einzelne Funktionen • Orientierung an Workflows der Anwendung, nicht an technischer Struktur • Hoher Beispielanteil (z.B. 30%) • Anpassung bei Änderungen der Software • Online-Hilfe • Support-Hotline • Probebetrieb • Schulungen Dr. Ina Schaefer Software Engineering 1 Seite 7 Schulungen • Ziel: Benutzerkreisen die benötigten Funktionen und ihre Bedienung möglichst praxisnah zu vermitteln • Abhängig von Umfang der Software • Zugeschnitten auf unterschiedliche Benutzerkreise (z.B. Anwender, Administratoren, ….) • ggf. Einsatz von professionellen Trainern • Schulungskonzept: • einzelne Schulungsmodule für unterschiedliche Funktionsmodule • Vorkenntnisse der Teilnehmer beachten • Interaktive Übungen fördern aktive Mitarbeit. • Vertiefung der Theorie anhand von praktischen Übungen • Kleine Gruppen • Angepasstes Schulungsmaterial Dr. Ina Schaefer Software Engineering 1 Seite 8 Betrieb Checkliste zur Überprüfung bei laufendem Betrieb: • Antwortzeiten akzeptabel? • Verfügbarkeit ausreichend? • Verhalten erwartungsgemäß? • Umgebungsparameter in zulässigem Bereich (Temperatur, …)? • Backup-Strategien und Wiederherstellungsmöglichkeiten? • Redundanz und/oder Load Balancing notwendig? • Auswirkungen von Ausfällen (Festplatten, Rechnerknoten, …) ? • Gibt es single points of failure? Dr. Ina Schaefer Software Engineering 1 Seite 9 Wartung (Maintenance) Definition nach IEEE-Standard 610: (1) The process of modifying a software system or a component after delivery to correct faults, improve performance or other attributes, or adapt to a changed environment. (2) The process of retaining a hardware system or a component in a hardware system, or restoring it to, a state in which it can perform its required functions. Wartung verändert die Funktion der Software nicht, sondern bringt die technische Realisierung auf einen neuen Stand. Dr. Ina Schaefer Software Engineering 1 Seite 10 Wartungsarten • Korrektive Wartung (corrective maintenance): Verbesserung von ein oder mehreren Fehlern • Präventive Wartung (preventive maintenance): Änderungen zur Verhinderung von Fehlern im Produktivbetrieb (z.B. Y2K bug) • Adaptive Wartung (adaptive maintenance): Änderungen für die Anpassung an eine veränderte Umgebung (Hardware, Software, …) • Perfektionierende Wartung (perfective maintenance): Verbesserung der Applikation, z.B. bessere Performance, Speicherverbrauch, Anpassung der GUI, …. Dr. Ina Schaefer Software Engineering 1 Seite 11 Wartungstätigkeiten Reengineering: Neuentwicklung eines bereits funktionierenden Teils der Software bei gleichbleibender Funktionalität, z.B. um Qualität zu verbessern. Reverse Engineering: Ableiten von Code oder Modellen aus existierenden Artefakten, z.B. Binärcode oder Sourcecode, wenn zu Alt-Systemen keine Dokumentation oder Source Code mehr vorhanden ist, aber zur Anpassung/Wartung benötigt werden. Refactoring: Veränderungen im Sourcecode ohne Veränderung der Funktion zur Verbesserung der Codequalität Dr. Ina Schaefer Software Engineering 1 Seite 12 Refactoring „Refactoring ist der Prozess, ein Softwaresystem so zu verändern, dass das externe Verhalten unverändert bleibt, der Code aber eine bessere Struktur erhält.“ (Martin Fowler) Beispiele: • Umbenennen einer Variablen (und aller Zugriffe) • Teilen einer Methode in zwei Methoden • Verschieben einer Klasse in ein anderes Package Dr. Ina Schaefer Software Engineering 1 Seite 13 Gründe für das Refactoring Lesbarkeit / Übersichtlichkeit / Verständlichkeit • Reduktion vom Komplexität, z.B. Aufteilen von Methoden • Bewusste Benennung von Variablen, Methoden, … Wiederverwendung / Entfernen von Redundanz • Methoden aufteilen, um Teile wiederzuverwenden • Kopierte Quelltextfragmente in eine Methode extrahieren Erweiterbarkeit Testbarkeit Dr. Ina Schaefer Software Engineering 1 Seite 14 Code Smells und Refactorings Code Smell Refactoring Schwächen im Quelltext Aus Erfahrung festgehalten Beispiele • sehr lange Methode • sehr tiefe Schachtelung • Kommentare wegen komplexem Code • viele mehr Rezepte zur Verbesserung Manuelles Vorgehen und Automatisierung möglich Besteht aus: • Name • Motivation • Vorgehen • Beispiele Zuordnung: welches Refactoring hilft bei welchem Code Smell. Dr. Ina Schaefer Software Engineering 1 Seite 15 Refactoring: Extract Method “Turn a fragment into a method whose name explains the purpose of the method.” void printOwning(double amount) { printBanner(); //print details System.out.println(“name: “ + _name); System.out.println(“amount: “ + amount); } void printOwning(double amount) { printBanner(); printDetails(amount); } void printDetails(double amount) { System.out.println(“name: “ + _name); System.out.println(“amount: “ + amount); } Dr. Ina Schaefer Software Engineering 1 Seite 16 Extract Method Motivation / Code Smells: Methode ist zu lang. Methode braucht Kommentare für Struktur/Verständniss. Kopiertes Codefragment in vielen Methoden benutzt. Dr. Ina Schaefer Software Engineering 1 Seite 17 Extract Method – Vorgehen 1. 2. 3. 4. 5. 6. Dr. Ina Schaefer Neue Methode anlegen – sinnvollen Namen vergeben Zu extrahierenden Code in die neue Methode kopieren Zugriffe auf lokale Variablen suchen -> als Parameter übergeben Temporäre Variablen nur in Fragment benutzt -> in neuer Methode anlegen Werden lokale Variablen verändert? -> Rückgabewert der neuen Methode Originalquelltext mit Methodenaufruf ersetzen Software Engineering 1 Seite 18 Extract Method Bedingungen (Auszug): • Extrahierter Code muss ein oder mehrere komplette Statements beinhalten. • Maximal auf eine lokale Variable (die später benutzt wird) wird schreibend zugegriffen. • Bedingtes return-Statement ist verboten. • Break und Continue verboten, wenn das Ziel außerhalb des zu extrahierenden Code liegt Dr. Ina Schaefer Software Engineering 1 Seite 19 Automatisierte Refactorings Viele Entwicklungsumgebungen (z.B. Eclipse, IntelliJ) automatisieren Refactorings: Dr. Ina Schaefer Software Engineering 1 Seite 20 Migration Migration: Transferieren einer Anwendung von ihrer bisherigen Umgebung in eine geänderte Umgebung mit allen notwendigen Änderungen Unterschiedliche Migrationsarten: • Softwaremigration: Austausch eines Teils der Software • Datenmigration: Transfer von Daten von einem System in ein anderes System • Hardwaremigration: Umstellung von veralteter Hardware Dr. Ina Schaefer Software Engineering 1 Seite 21 Charakteristika von Alt-Systemen Veraltete Programmiersprachen • Software Entropie durch vielfältige korrektive und adaptive Maintenance-Aktivitäten. Keine Code-Kommentierung oder ausreichende Dokumentation vorhanden Mangel an Expertenwissen • Ursprüngliche Entwickler im Ruhestand- Junge Entwickler können alte Sprachen nicht. Systemerhaltung und Weiterentwicklung verursachen hohe Kosten. Dr. Ina Schaefer Software Engineering 1 Seite 22 Gründe für Migration Erweiterung des Funktionsumfanges Betriebswirtschaftliche/technische Änderungen (z.B. Fusion/Expansion) Zu hohe Lizensierungskosten für verwendete Frameworks oder Bibliotheken Notwendigkeit höherer Servicelevels Notwendigkeit neuer Anwendungen Bisherige IT kann mit Anforderung nicht mithalten (LegacySysteme). Dr. Ina Schaefer Software Engineering 1 Seite 23 Migrationsarten Neuentwicklung/ Replacement Neuentwicklung des gesamten Altsystems Kapselung /Wrapping Bestehendes Altsystem wird mit einer Hülle umgeben, um es an neue Operationsformen oder Oberflächen anzupassen. Einsatz von Standardsoftware Altsystem wird teilweise oder ganz durch Standardsoftware ersetzt. Rehosting Vollständiges Altsystem bewegt sich von einer Umgebung in eine andere. Beibehalten des Status Quo Nichts wird verändert. Vorteil: Keine Kosten, allerdings indirekte Kosten durch fehlende/falsche Funktionalität. Dr. Ina Schaefer Software Engineering 1 Seite 24 Anforderungen an eine Migration Garantie eines ununterbrochenen sicheren und zuverlässigen Betriebes aktuelle und zukünftig erwartete Anforderungen abdecken so wenige Änderungen wie möglich, um Umfang und Risiko der Migration zu verringern alten Code soweit abändern, dass er die Migration unterstützt möglichst große Flexibilität einbauen, um zukünftige Änderungen zu erleichtern Dr. Ina Schaefer Software Engineering 1 Seite 25 Vorgehen bei der Migration Rollout-Plan ist die Grundlage für die Planung der Verfügbarkeit der Ressourcen bei der Migration: • Aktivitäten für Inbetriebnahme • Umstellung und Stilllegung von Systemkomponenten • Fallback-Strategie • Migrationsstrategien: • Chicken Little Strategy • Big Bang/Cold Turkey Strategy Dr. Ina Schaefer Software Engineering 1 Seite 26 Big Bang / Cold Turkey Vollständige Ablösung des Altsystems auf einen Schlag Dr. Ina Schaefer Software Engineering 1 Seite 27 Big Bang/Cold Turkey Bewertung Vorteile: • keine Parallelexistenz von Neu- und Altsystem • keine Entwicklung von Übergangslösungen Nachteile: • hohes Risiko bei der Umstellung auf potentiell unzuverlässiges System Dr. Ina Schaefer Software Engineering 1 Seite 28 Little Chicken Inkrementelle Migration: Umstellung in kleinen, überschaubaren Schritten Ein Gateway isoliert die zu ändernden Komponenten und übersetzt Anfragen und Daten an der Schnittstelle der isolierten Komponenten. Dr. Ina Schaefer Software Engineering 1 Seite 29 Little Chicken – Inkrementelle Migration • Forward Migration: Datenbank wird vor Applikation migriert. Altsystem greift über Gateway auf neue Datenbank zu. • Backward Migration: Applikation wird zuerst migriert. Gateway stellt Zugang zu alter Datenbank bereit. Bewertung • Vorteile: • geringeres und überschaubareres Risiko • Nachteile: • Parallelexistenz von Neu- und Altsystem • Zusatzaufwand für die Entwicklung von Übergangslösungen Dr. Ina Schaefer Software Engineering 1 Seite 30 Zusammenfassung • Betrieb und Wartung nehmen im Gesamtlebenszyklus eines Softwaresystems einen großen Anteil ein. • Inbetriebnahme erfordert sorgfältige Planung. • Während des laufendes Betriebs ist eine ständige Überwachung und Wartung des Softwaresystems notwendig. • Refactoring ist ein wichtiger Bestandteil der Wartungsaktivitäten. • Migrationen können nach unterschiedlichen Strategien durchgeführt werden. Literatur: T. Grechenig et al.:“Softwaretechnik“, Pearson Studium, 2010. (Kapitel 8) Dr. Ina Schaefer Software Engineering 1 Seite 31