Reengineering und Refactoring von Softwarearchitekturen



Ähnliche Dokumente
Werkzeugunterstützte Betrachtungen von Software-Qualität und -Architekturen

Übung 6: Feinentwurf. Prof. Dr. Dr. h.c. Manfred Broy Dr. Herbert Ehler, Martin Feilkas 6. Juli 2006 Bernd Spanfelner, Sebastian Winter

SDD System Design Document

Inhalt. Fragestellungen. ...we make the invisible visible... Analysen und deren Anwendung Erfahrungen

Some Software Engineering Principles

Netzsicherheit I, WS 2008/2009 Übung 12. Prof. Dr. Jörg Schwenk

Refaktorisierung des Eclipse- Plugins Saros für die Portierung auf andere IDEs. Verteidigung der Bachelorarbeit von Arndt Tigges

Prüfung Software Engineering I (IB)

Langlebige Softwarearchitekturen

Fragebogen ISONORM 9241/110-S

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

Übung: Verwendung von Java-Threads

Hochschule Darmstadt Fachbereich Informatik. Softwaretechnik II. 4.1 Darstellung der Architektur

Vorlesung Betriebstechnik/Netzplantechnik Operations Research

1. Einführung Advanced Programming Techniques. Wintersemester 2009/10 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

Software modular bauen

eclips Handheld Remote Control Software Updater

Erklären Sie die Innenfinanzierung und die Formen derselben!

Übungen zur Softwaretechnik

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Modulare Programmierung

Agile Softwareentwicklung

IT-Unternehmensarchitektur Übung 01: IT-Strategie

Softwarequalität: Einführung. 15. April 2015

Übung - Arbeiten mit Android

Lösungsvorschlag für Übungsblatt 6 Software Engineering 1 (WS 2012/13)

Klausur Softwaretechnik Feb. 2008

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

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

Refactoring relationaler Datenbank. Shaoke Wu

Internet Explorer Version 6

Gründe für fehlende Vorsorgemaßnahmen gegen Krankheit

Marketing-Leitfaden zum. Evoko Room Manager. Touch. Schedule. Meet.

BIF/SWE - Übungsbeispiel

impact ordering Info Produktkonfigurator

IKP Uni Bonn Medienpraxis EDV II Internet Projekt

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

SWT II Projekt. Chat - Anwendung. Pflichtenheft 2000 SWT

Die Invaliden-Versicherung ändert sich

Software Engineering. Bibliographisches Institut & F. A. Brockhaus AG, Mannheim; Spektrum Akademischer Verlag GmbH, Heidelberg, 2003

Vorstellung. Wie entsteht Architektur in Scrum

Data Mining-Projekte

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

Klausur Software Engineering für WI (EuI)

Modul Klausur zu den Teilgebieten Software-Management und Software-Qualitätsmanagement

Grundlagen Software Engineering

Pädagogische Hochschule Thurgau. Lehre Weiterbildung Forschung

Softwareanforderungsanalyse

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich. Softwaretechnik I

SOMA Reverse Engineering

Klausur zu den Teilgebieten Software-Management und Software-Qualitätsmanagement

Datenbanken I - Übung 1

Testen im Software- Entwicklungsprozess

Informatik. 12.c. 1. Nachrichten, Informationen, Daten, Kommunikation

Neuerungen in ReviPS Version 12g

Programmierung für Mathematik (HS13)

teischl.com Software Design & Services e.u. office@teischl.com

Punkte: /40 Note: O Bauer (Di) O Bauer (Do) O Konwitschka O Schutte

Vorgehensweise bei der Installation Bob50SQL für einen unabhängigen PC.

Betriebliche Anwendungssysteme IM06


Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Arbeitsblätter, Wörterbücher (1 pro Gruppe) Materialien: Zeit: Mündlich (Interaktion, Schriftlich) Schriftlich (Rezeption, Schriftlich)

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

Eberhard Lehmann: Projekte im Informatik-Unterricht Software Engineering, Ferd. Dümmlers Verlag, Bonn Inhaltsverzeichnis.

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Lösungen zum Test objektorientierter Software

Klausur Software-Engineering SS 2005 Iwanowski

SHAREPOINT Unterschiede zwischen SharePoint 2010 & 2013

Das Pflichtenheft. Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth Ains A-Systemhaus GmbH Berlin

RFID Lösungen Fragebogen über Ihr RFID Projekt

Was bringt TDD wirklich?

Praktikum Grundlagen der Programmierung. Diverse Grundlagen. Dr. Karsten Tolle

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

ER alpha 1D5 Protokoll-Aktualisierungsprogramm Installationsanleitung

Ökonomik der Agrar und Ernährungswirtschaft in ILIAS

DIE SCHRITTE ZUR KORREKTEN LIZENZIERUNG

Übung - Konfigurieren der Browser-Einstellungen in Windows 7

Projektmanagement durch Scrum-Proxies

Prüfung Software Engineering I (IB)

Ihr Mandant möchte einen neuen Gesellschafter aufnehmen. In welcher Höhe wäre eine Vergütung inklusive Tantieme steuerrechtlich zulässig?

Typisierung des Replikationsplan Wirries, Denis Datenbankspezialist

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Managementbewertung Managementbewertung

Kapitel 2: Der Software-Entwicklungsprozess

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Anleitung für die Umstellung auf das plus Verfahren mit manueller und optischer Übertragung

Übungsklausur vom 7. Dez. 2007

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr.

Softwareentwicklungsprozess im Praktikum. 23. April 2015

SEP 114. Design by Contract

Makenai Solutions, Innovation & Creative Ideas. ERFOLGSGESICHT Narrika - Unified Communications Einsatz

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Social Media Guidelines. Miriam Nanzka, Hohenzollern SIEBEN

Transkript:

Methodische und Praktische Grundlagen der Informatik 3 Reengineering und Refactoring von Softwarearchitekturen Steffen Helke Technische Universität Berlin Fachgebiet Softwaretechnik WS 2008/2009

Lernziele? Wann sind Software-Architekturen veraltet? Wie wird ein Reengineering durchgeführt? Wobei kann Refactoring helfen?

Legacy-Systeme Reengineering Renovierung Neubau... umfaßt Aktivitäten zum Verstehen und Ändern eines Software-Systems, um es in neuer Form zu implementieren. Kosten vs. Nutzen Risikoabschätzung Aufwandsanalyse Kompromisse zwischen beiden Varianten Steffen Helke: MPGI-3 im WS0809 1 Reengineering Steffen Helke: MPGI-3 im WS0809 2 Reengineering-Prozess... umfaßt Aktivitäten zum Verstehen und Ändern eines Software-Systems, um es in neuer Form zu implementieren. Beispiel: Migration Anforderungen Modifizierte Anforderungen Windows-Umstellung Design Code Implementierung Code Steffen Helke: MPGI-3 im WS0809 2 Steffen Helke: MPGI-3 im WS0809 3

Reengineering-Prozess Architektur- Extraktion aus Quellcode Anforderungen Modifizierte Anforderungen Basis: Statische Mikro und Makro-Sicht Design Architektur Code Implementierung Code Steffen Helke: MPGI-3 im WS0809 3 Architektur- Steffen Helke: MPGI-3 im WS0809 4 Metriken und Visualisierung Extraktion aus Quellcode Basis: Statische Mikro und Makro-Sicht Modelle schnell unübersichtlich Interpretation über Metriken Veranschaulichung durch Visualisierung Beispiel: Bauhaus (Spin-Off Universität Stuttgart) Call-View (Methoden und deren Aufrufbeziehungen) Steffen Helke: MPGI-3 im WS0809 4 Steffen Helke: MPGI-3 im WS0809 5

Metriken und Visualisierung Refactoring Modelle schnell unübersichtlich Interpretation über Metriken Veranschaulichung durch Visualisierung... beschreibt die Veränderung der internen Struktur einer Software ohne das beobachtbare Verhalten zu ändern. Area Of Interest (AOIs) Vertrauenswürdige Komponenten Neue Komponenten (z.b. Version 2.3) Verbrauch > 1 MB Arbeitsspeicher Byelas et al. Proc. ACM SOFTVIS 06, ACM, 2006 Steffen Helke: MPGI-3 im WS0809 5 Refactoring Steffen Helke: MPGI-3 im WS0809 6 Einsatz von Refactoring... beschreibt die Veränderung der internen Struktur einer Software ohne das beobachtbare Verhalten zu ändern. Beispiel Restrukturierung Refactoring auf Architektur und Code-Ebene möglich Design Implementierung Restrukturierung Restrukturierung Ziel: Beseitigung von Bad Smells Zentrale Aktivität im extreme Programming Steffen Helke: MPGI-3 im WS0809 6 Steffen Helke: MPGI-3 im WS0809 7

Einsatz von Refactoring Bad Smells Beschreibung schlechter Strukturen in der Software Design Implementierung Restrukturierung Refactoring Refactoring Refactoring auf Architektur und Code-Ebene möglich Ziel: Beseitigung von Bad Smells Zentrale Aktivität im extreme Programming Gerüche existieren in Klassen, Packages, Subsystemen und Schichten Beispiele Zu große Module Unnötige Vererbung Zyklische Abhängigkeiten Zu starke Kopplung Zerbrochene Schichten Steffen Helke: MPGI-3 im WS0809 7 Bad Smell: Zu große Module Steffen Helke: MPGI-3 im WS0809 8 Bad Smell: Zu große Module Wann ist ein Modul zu groß? Sind Klassen mit 2000 Methoden sinnvoll? Student 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 Schreibt Klausur 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 Verleiht_Stipendium Benutzt Braucht Reserviert_für Konferenz 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 Benötigt Hörsaal 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 Qualität des Moduls Wann ist ein Modul zu groß? Sind Klassen mit 2000 Methoden sinnvoll? Verständlichkeit Wiederverwendbarkeit Größe des Moduls Student 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 Schreibt Klausur 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 Verleiht_Stipendium Benutzt Braucht Reserviert_für Konferenz 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 Benötigt Hörsaal 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 Steffen Helke: MPGI-3 im WS0809 9 Steffen Helke: MPGI-3 im WS0809 9

Modulgröße Modulgröße 30er Daumenregel (Obergrenze) Modul Elemente LOC Methode 30 30 Klasse 30 900 Package 30 27.700 Subsystem 30 810.000 System 30 24.3 Mio 30er Daumenregel (Obergrenze) Modul Elemente LOC Methode 30 30 Klasse 30 900 Package 30 27.700 Subsystem 30 810.000 System 30 24.3 Mio Beispiel Eclipse Modul Elemente LOC Methode 8 8 Klasse 7,2 60 Package 27 1641 Subsystem 9,6 15.552 System 48 746.496 Zahlen Durchschnittswerte von Eclipse 2.1 mit Default-Plug-ins Quelle: Rock et al. Refactoring in großen Softwareprojekten,dpunkt, 2004 Steffen Helke: MPGI-3 im WS0809 10 Bad Smell: Unnötige Vererbung Steffen Helke: MPGI-3 im WS0809 10 Bad Smell: Zyklische Abhängigkeiten Fehlende Redefinitionen reine Implementationsvererbung Refactoring: Ersetzen der Vererbung durch Delegation List +add +getsize +get OrderList Zyklen zwischen Submodulen Behindern Verständlichkeit, Testbarkeit und Entwurfsklarheit Refactoring: Verschieben von Klassen B A C +addorder +getorder Steffen Helke: MPGI-3 im WS0809 11 Steffen Helke: MPGI-3 im WS0809 12

Refactoring: Verschieben von Klassen Bad Smell: Zerbrochene Schichten Customer Order Defekte Aufgebrochene Hierarchie GUI Schicht Bestseller Product Zu starke Kopplung Zu viele Schichten Lösung: Einsatz großer Refactorings ( 1) Logische Schicht ( 3) ( 2) Customer Order Datenschicht Product Bestseller Steffen Helke: MPGI-3 im WS0809 13 Steffen Helke: MPGI-3 im WS0809 14 Durchführung großer Refactorings Durchführung großer Refactorings Herausforderungen Herausforderungen Auswirkung auf viele Systemteile Auswirkung auf viele Systemteile Dauer der Umsetzung oft mehrere Monate Qualität der Architektur Dauer der Umsetzung oft mehrere Monate Qualität der Architektur Qualitätsverlust temporär möglich Qualitätsverlust temporär möglich Refactoring Schritte Best Practices Dekomposition in feinere Refactorings Sorgfältige Planung im Projektteam Rücknahme von Refactorings einplanen Prüfen, ob Reenginierung für Teile sinnvoll ist Refactoring Schritte Steffen Helke: MPGI-3 im WS0809 15 Steffen Helke: MPGI-3 im WS0809 15

Können Sie diese Fragen beantworten? Was versteht man unter Reengineering? Nennen Sie Beispiele für Bad Smells in einer Software-Architektur? Wie können Bad Smells durch Refactoring behoben werden? Literatur M.Fowler: Refactoring: Improving the Design of Existing Code. Addison-Wesley, 2004. S.Rock, M.Lippert: Refactorings in großen Softwareprojekten. dpunkt-verlag, 2004. S.Demeyer, S.Ducasse, O.Nierstrasz: Object-Oriented Reengineering Patterns. Elsevier Science, 2003. Steffen Helke: MPGI-3 im WS0809 16