Software Engineering II (IB) Softwareevolution

Ähnliche Dokumente
Software Evolution: Einführung. Dr. Thorsten Arendt Marburg, 15. Oktober 2015

Software Engineering

Softwarequalität und Softwarealterung. Anne Moormann Benedikt Scholz Michael Herbener

Scrum in der Produktwartung. Martin Heilemann Lynx-Consulting GmbH

MURCS Wir machen jetzt Scrum, aber das Meeting passt leider nicht und einen PO haben wir irgendwie auch nicht...

Extreme Programming ACM/GI Regionalgruppe Bremen,

Agiles Schätzen. Quelle: Kap. 7 aus Wie schätzt man in agilen Projekten oder wieso Scrum-Projekte erfolgreicher sind [Boris Gloger 2014]

Software-Wartung Grundbegriffe und Einordnung Der Wartungsprozeß

IEC Die neue Perspektive in der Stationsführung

Fragebogen. Was halten Sie als Praktiker von Traceability? 1 - Warum wird Traceability eingesetzt? 2 - Wofür wird Traceability im Projekt eingesetzt

Software Engineering

Re-Engineering: Test-First-Ansatz. Dr. Thorsten Arendt Marburg, 17. Dezember 2015

GI Fachgruppentreffen RE 2015

Reengineering und Refactoring von Softwarearchitekturen

Software-Entwicklung

Christoph Behounek, eggs unimedia

Produktqualität in agilen Entwicklungsvorgehen. BITKOM Software Summit Frankfurt, 23. September 2014 Dominik Rost, Hartmut Schmitt

Software Engineering. 11. Einführung und Wartung

FAQ. Sage Informationen zur Umstellung und dem Vertrieb von Sage 50 Handwerk

Mission. Vortragender: Dipl. Inform. Reinhard IRSIGLER

Iterativ. Inkrementell

Wann lohnt sich GUI- Testautomatisierung?

MANAGEMENTSYSTEME - EIN GEWINN FÜR VERANTWORTLICHE?

Agilität trifft Funktionale Sicherheit

Software-Restrukturierung

READY-STEADY-DONE! Der Product Owner are you READY for agile?!

Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner. Softwaretechnik II. Sommersemester 2015

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Qualitätsmanagement mit Continuous Integration Untersuchung anhand einer Machbarkeitsstudie in der Praxis. Abschlußpräsentation zur Studienarbeit

4.Grundsätzliche Programmentwicklungsmethoden

Methoden der agilen Softwareentwicklung für eingebettete Systeme

Was versteht man unter Softwarequalität?

Industrie 4.0 Quick Scan Tool. HTZ-Praxiszirkelt Industrie 4.0, , Brugg

1 Einleitung zum Thema Softwaremigration 1

Grundlagen der Informatik II

Requirements Engineering für die agile Softwareentwicklung

Ein Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen

Projekt: Requirements Engineering Sommersemester Anforderungsspezifikation im X-Treme Programming

Softwareentwicklung bei eevolution

Testmanagement. Full-Service

CONTINUOUS DELIVERY. Entmystifiziert. codecentric AG

Testen von SOA-Anwendungen mit dem BPEL Testframework

DevOps. Alexander Pacnik, Head of DevOps Engineering

IT-Compliance im Krankenhaus Industrialisierung der IT oder Individualität bis zum bitteren Ende?

Vorlesung Software-Reengineering

Einführung in die Informatik

Whitepaper: Agile Methoden im Unternehmenseinsatz

Software Engineering II (IB) Wiederverwendung von Software

16.4 Wiederverwendung von COTS-Produkten

Die Phasen der Software-Entwicklung

Extremes Programmieren

Projektentwicklung mit dem. Logical Framework Approach

Dr. Simon Giesecke Falko Basner Dr. Jörg Friebe. Bad Honnef, 3. Mai 2010

Softwareentwicklungsprozesse. 18. Oktober 2012

30 Multiple Choice-Fragen - pro Frage gibt es immer 1-4 richtige Antworten

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Wir leben Social Business. Konsolidierung und Optimierung der Serviceprozesse mit JIRA Service Desk. Dirk Wippern Communardo Software GmbH

Unterstützung für die Durchführung epidemiologischer Studien - Modys - eine Datenbankapplikation. Achim Reineke, Sönke Knut Voß, Heidi Asendorf

Softwareanforderungsanalyse

Mögliche Wege Ihrer Legacy-Applikationen in die Moderne mit Bison Technology. Diego Künzi, Produktmanager Bison Technology, Bison Schweiz AG

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler /

swp12-6 Aufgabenblatt Qualita tssicherungskonzept

Ab Oktober 2016 gibt es keine persönlichen Umstellungsangebote mehr.

Migrationsstrategien. Dr. Thorsten Arendt Marburg, 22. Januar 2015

Compliance-Management-Systeme. Dr. Hady Fink, Greenlight Consulting Compliance Circle München,

Lösungen zum Test objektorientierter Software

The Rational Unified Process. Eine Einführung von T. Langer und A. Nitert

Mathematik für Biologen

15 Verwaltung von Anforderungen (Requirements Management)

PowerDesigner Frühstück

Thomas Schissler Uwe Baumann

Testautomatisierung. Lessons Learned. qme Software. Gustav-Meyer-Allee Berlin. Telefon 030/ Telefax 030/

Einfach generieren. Susanne Klar, Michael Klar. Generative Programmierung verständlich und praxisnah ISBN Inhaltsverzeichnis

- Agile Programmierung -

Einleitung. Was ist das Wesen von Scrum? Die Ursprünge dieses Buches

Qualitätsmanagement - Kundenzufriedenheit Leitfaden für die Behandlung von Reklamationen in Organisationen

Probeklausur. Lenz Belzner. January 26, Lenz Belzner Probeklausur January 26, / 16

Requirements Dokumentation

Software-Evolution im Staged Lifecycle Model

Kanban und Scrum mit JIRA und dem neuen Greenhopper Plugin

Softwarearchitektur als Mittel für Qualitätssicherung und SOA Governance

Leichtgewichtige Traceability im agilen Entwicklungsprozess am Beispiel von Scrum

Kommunikation in komplexen Software-Entwicklungsprozessen

Transformation der IT mit Geschäftsfähigkeiten

Beispiel Architekturentwurf

IH-500 THE PERFECT MOVE. Erste Erfahrungsberichte. Fabian Pohlmann Product Manager New Instruments & Software Immunohematology Division, Cressier (CH)

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Neue Herausforderungen durch die vierte industrielle Revolution

Requirements Engineering (Anforderungstechnik)

Softwareprozessmodelle

Microsoft Dynamics CRM 2016 What s New?

Effektive Testautomatisierung durch modulare Tests. Michael Oestereich profi.com AG Dr. Frank Spiegel Haufe-Lexware GmbH & Co. KG

Transkript:

Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 16.05.2017 21:17 Inhaltsverzeichnis Softwareveränderungen............................... 2 Spiralmodell von Entwicklung und Evolution................... 2 Evolution und Instandhaltung........................... 2 Evolutionsprozesse................................. 3 Identifizieren von Änderungen und Evolutionsprozesse............. 3 sprozess............................. 4 Agile Methoden und Evolution.......................... 4 Dynamik der Programmevolution......................... 4 Lehmans Gesetze.................................. 4 Lehmans Gesetze Fortsetzung......................... 5 Softwarewartung.................................. 5 Verteilung des Wartungsaufwands......................... 5 Kostenfaktoren Wartung.............................. 6 Software-Reengineering............................... 6 Der Reengineering-Prozess............................. 7 Aktivitäten im Reengineering-Prozess....................... 7 Präventive Wartung durch Refactoring...................... 7 Unterschied Reengineering und Refactoring................... 8 Refactoring und Agile Methoden......................... 8 Bad Smells..................................... 8 Primitive Refactoring-Transformationen..................... 9 Verwaltung von Altsystemen............................ 9 Strategien...................................... 9 Beispiele für die Beurteilung eines Altsystems.................. 10 1

Konsequenzen.................................... 10 Geschäftswert eines Systems beurteilen...................... 10 Technische Qualität................................. 11 Softwareveränderungen Veränderungen der Software sind unvermeidbar neue Anforderungen Geschäftsumgebung verändert sich Fehler müssen behoben werden neue Hardware wird in das System eingebracht die Performanz oder Zuverlässigkeit muss erhöht werden Veränderungen an bestehender Software sind ein großes Problem Spiralmodell von Entwicklung und Evolution Spiralmodell (Quelle: I. Sommerville: Software Engineering) Evolution und Instandhaltung Alternativer Ansatz der, sobald die Umsetzung neuer Anforderungen immer weniger kosteneffizient ist, von der Evolution zur Instandhaltung übergeht: Letzte Änderung: 16.05.2017 21:17 2

Evolution und Instandhaltung (Quelle: I. Sommerville: Software Engineering) Evolutionsprozesse abhängig von Art der Software Entwicklungsprozess Fähigkeiten der beteiligten Personen Vorschläge für Systemänderungen sind der Hauptantrieb für die Weiterentwicklung setzen sich über den gesamten Lebensdauer eines Systems fort Identifizieren von Änderungen und Evolutionsprozesse Identifizieren von Änderungen und Evolutionsprozesse (Quelle: I. Sommerville: Software Engineering) Letzte Änderung: 16.05.2017 21:17 3

sprozess Der Prozess der (Quelle: I. Sommerville: Software Engineering) Agile Methoden und Evolution Entwicklung kann direkt in Evolution übergehen automatisiertes Testen ist dabei sehr sinnvoll einsetzbar Änderungen werden einfach als zusätzliche User Stories bzw. als neue Anforderungen in das Product Backlog aufgenommen Dynamik der Programmevolution Untersuchung von Systemänderungen nach einigen empirischen Studien sind die eine Reihe von Regeln, Lehmans Gesetze, entstanden diese sind wahrscheinlich gültig für alle große betriebliche Softwaresysteme Lehmans Gesetze Kontinuierliche Veränderung In einer realen Umgebung muss sich ein System unvermeidlich verändern. Sonst verliert es nach und nach an Nutzen. Zunehmende Komplexität Struktur wird mit Veränderungen immer komplexer. Zusätzliche Ressourcen für Erhalt und Vereinfachung der Struktur. Evolution umfangreicher Programme Programmevolution ist selbstregelnder Prozess. Systemeigenschaften wie Größe, Anzahl gemeldeter Fehler, bleiben vergleichbar groß. Organisatorische Struktur Über die Lebensdauer bleibt Entwicklungsrate annähernd konstant. Letzte Änderung: 16.05.2017 21:17 4

Lehmans Gesetze Fortsetzung Bewahrung der Vertrautheit Umfang der vorgenommenen Änderungen für jede neue Version nahezu konstant. Kontinuierliches Wachstum Funktionsumfang muss kontinuierlich wachsen für Kundenzufriedenheit. Abnehmende Qualität Die Qualität wird abnehmen, bis sie modifiziert wird, um Veränderungen in der Betriebsumgebung widerzuspiegeln. Umgang mit Rückmeldungen Müssen systematisch behandelt werden um messbare Produktverbesserung zu erreichen. Softwarewartung Fehlerbehebung z.b. Programmierfehler, Fehler im Entwurf, Fehler in Anforderungen Anpassung an eine Umgebung z.b. neue Hardware, anderes Betriebssystem, Hinzufügen von Funktionalität wenn sich Systemanforderungen auf Grund von organisations- oder geschäftsbedingten Verädnerungen wandeln Verteilung des Wartungsaufwands Wartungskosten i.d.r. ein Vielfaches der Entwicklungskosten. Letzte Änderung: 16.05.2017 21:17 5

ungefähre Aufteilung der Wartungskosten (Quelle: I. Sommerville: Software Engineering) Kostenfaktoren Wartung Stabilität des Teams Schlechte Entwicklungspraxis Wartungsvertrag oft unabhängig von Entwicklungsvertrag Mitarbeiterfähigkeiten Alter und Struktur des Programms Software-Reengineering Restrukturieren oder neu schreiben von Teilen des Systems sinnvoll, wenn einige, aber nicht alle, Subsysteme regelmäßig gewartet werden müssen Vorteile verringertes Risiko gegenüber einer Neuentwicklung geringere Kosten gegenüber einer Neuentwicklung Letzte Änderung: 16.05.2017 21:17 6

Der Reengineering-Prozess Reengineering-Prozess (Quelle: I. Sommerville: Software Engineering) Aktivitäten im Reengineering-Prozess 1. Übersetzung des Quellcodes mit Tool in neuere Programmiersprache oder in andere übersetzen 2. Reverse Engineering Analyse des Programms 3. Verbesserung der Programmqualität um es besser lesen und verstehen zu können 4. Modularisierung kann Refactoring der Architektur erfordern 5. Daten-Reengineering kann Veränderung der Datenbankschemata u.ä. erforderlich machen Präventive Wartung durch Refactoring Verbesserungen am Programm vornehmen um der Degradierung durch Änderungen vorzubeugen Letzte Änderung: 16.05.2017 21:17 7

Struktur verbessern Komplexität reduzieren Verständlichkeit erhöhen Unterschied Reengineering und Refactoring Reengineering nachdem ein System eine Weile gewartet wurde und die Wartungskosten steigen Refactoring findet kontinuierlich während des gesamten Entwicklungs- und Evolutionsprozesses statt soll die Struktur- und Codedegradierung vermeiden helfen, die Wartung teuer macht Refactoring und Agile Methoden Refactoring ist fester Bestandteil Änderungen stehen im agilen Prozess im Mittelpunkt daher häufiges Refactoring Bad Smells Martin Fowler et al. haben Situationen (bad smells) identifiziert in denen der Code verbessert werden kann dazu gehören 1. Code-Duplizierung 2. Lange Methoden 3. Switch-Case-Anweisungen enthalten häufig doppelten Code 4. Datenklumpen gleiche Gruppe von Datenelementen (Felder, Parameter) wiederholt an mehreren Stellen 5. Spekulative Generalisierung Superklassen, die nur dafür da sind, falls es mal erweitert werden würde Letzte Änderung: 16.05.2017 21:17 8

Primitive Refactoring-Transformationen Vorschläge von M. Fowler Beispiele Extraktion von Methoden Konsolidierung bedingter Ausdrücke Hochziehen von Methoden in Superklasse Verwaltung von Altsystemen Verständnis, dass Entwicklung und Betrieb/Wartung nicht zu trennen ist, wächst aber es sind immer noch viele geschäftskritische Altsysteme im Einsatz diese müssen aber auch erweitert werden und z.b. an E-Business angepasst werden oft nur begrenztes Budget für die Wartung vorhanden Strategien 1. Das ganze System ausmustern. wenn das System keinen effektiven Beitrag zu den Geschäftprozessen leistet 2. Das System unverändert lassen und regelmäßig warten. wenn System recht stabil und wenig Änderungswünsche vorhanden sind 3. Das System per Reengineering sanieren, um seine Wartbarkeit zu erhöhen. wenn Systemqualität schlecht und weiterhin Änderungswünsche vorhanden 4. Das System ganz oder teilweise durch ein neues System ersetzen. wenn System, z.b. auf Grund neuer Hardware, nicht in Betrieb bleiben kann Letzte Änderung: 16.05.2017 21:17 9

Beispiele für die Beurteilung eines Altsystems Beurteilung Altsystem (Quelle: I. Sommerville: Software Engineering) Konsequenzen 1. Niedrige Qualität, niedriger Geschäftswert sollten ausrangiert werden 2. Niedrige Qualität, hoher Geschäftswert Reengineering 3. Hohe Qualität, niedriger Geschäftswert weiter betreiben, solange es wenig kostet 4. Hohe Qualität, hoher Geschäftswert normale Systemwartung weiterführen Geschäftswert eines Systems beurteilen mit den Systembeteiligten (z.b. Endbenutzer und Manager) über folgende Themen sprechen die Benutzung des Systems: wird es oft oder selten genutzt? Letzte Änderung: 16.05.2017 21:17 10

die unterstützen Geschäftsprozesse Festhalten an ineffizienten Geschäftsprozessen? die Stabilität des Systems nicht nur technisches, sondern auch Geschäftsproblem! die Systemausgaben hängt das Geschäft von den Ausgaben des Systems ab? Technische Qualität Folgende Daten können bei der Qualitätsbeurteilung nützlich sein: Verständlichkeit des Quellcodes Dokumentation vollständig? konsistent? aktuell? existiert ein explizites Datenmodell? Daten über mehrere Dateien verteilt? Daten aktuell? konsistent? Anwendungsleistung adäquat? gibt es für die Programmiersprache moderne Compiler? Wird die PL noch verwendet? werden alle Versionen/Bestandteile von einem Konfigurationsmanagmentsystems verwaltet? liegen Testdaten für das System vor? ist das Personal qualifiziert? Letzte Änderung: 16.05.2017 21:17 11