Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.

Slides:



Advertisements
Ähnliche Präsentationen
Prüfung objektorientierter Programme -1
Advertisements

Integrations- und Funktionstests im Rahmen des V-Modelles
Submodell Softwareentwicklung (SE)
Das V - Modell - Überblick
V - Modell Anwendung auf große Projekte
Phasen und ihre Workflows
mit Entwicklungsumgebungen (Eclipse) Software verbessern
Das „Vorgehensmodell“
Freie Universität Berlin Institut für Informatik
Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell
Universität Stuttgart Institut für Kernenergetik und Energiesysteme I nstitut für K ernenergetik und E nergiesysteme Rational Unified Process (RUP) - Definitionen.
LE LM 10 - LO3 Verfahren zur Qualitätssicherung
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Prüfung von Simulationsprogrammen – Integrations- und Funktionstests Inhalt Vom Einzeltest.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Der Rational Unified Process - Einführung Inhalt Prozessmodelle Der Rational Unified.
Fehler und ihre Kosten Inhalt Software und ihre Fehler
Prozessqualität und Produktqualität
Erfahrungen aus Tests komplexer Systeme
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Einzeltests im Rahmen des V-Modelles Aufgaben Überprüfung des Programmcodes mit Hilfe.
Prüfung von SW-Komponenten – Überblick
Schulung der Mitarbeiter
Einsatzzeitpunkte einer Risikoanalyse
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Die SE Umgebung des Jahres 2003 am IKE Elemente der SE Umgebung –Omondo als Casetool.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Aufgaben des Testens Vergleich des Verhaltens einer Software mit den an sie gestellten.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Links Links sind im Text angegeben. Weitere Links werden kontinuierlich eingefügt.
Testgetriebene Entwicklung
Universität Stuttgart Institut für Kernenergetik und Energiesysteme System- und Abnahmetests Inhalt Testen des Systems unter Mitwirkung des Auftraggebers.
Es gibt viele Arten von Risiken
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Agile Software Entwicklung mit dem RUP Agile Softwareentwicklung Best Practice bei.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme LE P MuSofT Erkundungsumgebung Entwicklung eines komponentenbasierten Systems WS 03/04.
RUP-Elemente (Schlüsselkonzepte)
Prozessmodelle Inhalt Prozessmodell im Management Prozess
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Das V - Modell - Überblick
Java: Objektorientierte Programmierung
Die Türme von Hanoi Die Lösungsfindung nach dem Prinzip der Rekursion wird noch einmal textuell und grafisch erläutert
Modularisierungstechniken
Rational Unified Process (RUP) - Definitionen
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Universität Paderborn - Softwaretechnikpraktikum im SS Gruppe 11 1 Softwaretechnikpraktikum im SS2001 Projektleiter:Prof. Dr. Wilhelm Schäfer Gruppenleiter:Dr.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Software Design Patterns Extreme Programming (XP).
UML Begleitdokumentation des Projekts
Anpassung des RUP an ein konkretes Projekt - 1
Simulation komplexer technischer Anlagen
Tutorium PG Verbesserung Blatt 5 Beim instanziieren eines Fahrrades muss es möglich sein, alle benötigten Attribute dem Konstruktor zu übergeben.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme LE LM 10 - LO4 Das JUnit Test Framework.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
Hartmut Klauck Universität Frankfurt SS
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
NDK Enterprise Technologien Informationen Infrastruktur und Fallstudie Daniel Nydegger Studienleiter Enterprise System Entwicklung.
Paradigmenwechsel in der Unternehmensmodellierung Prof. Dr. Wolfgang Voigt Dipl.-Ing. Päd. Alexander Huwaldt UML Extrakt UML Seminar, Chemnitz
Tutorium PG Verbesserung Blatt 5 Beim instanziieren eines Fahrrades muss es möglich sein, alle benötigten Attribute dem Konstruktor zu übergeben.
Ausgezeichnete, auffällige und aussagekräftige Präsentationen selbst basteln NUR WIE!?
Clean Code Software-Entwicklung als Handwerkskunst Thomas Nagel, November 2011.
Infopoint Silver Scherrer
Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link.
Objektorientierung.
Rational Unified Process
Software Engineering Grundlagen
Die Präsentation des Lehrers der 21- allgemeinbildenden Schule des Bezirks Peschkö in Gebiet Buchara von Alijor Jahjojev.
OOSE nach Jacobson Sebastian Pohl/ST7 Betreuer: Prof. Dr. Kahlbrandt.
Test-Driven Development
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Software - Testung ETIS SS05.
verkettete Strukturen
Die Struktur einer Java-Klasse
Layout "Titel mit Bildern"
 Präsentation transkript:

Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den bisherigen Code leichter lesbar und verständlich zu machen. Dem dient das Refactoring. Refactoring ist ein systematischer Ansatz, durch eine Serie von kleinen Modifikationen das Design eines bestehenden objektorientierten Programms so zu verbessern, dass sich neue Funktionalitäten leichter implementieren lassen oder das Programm anschließend leichter wartbar ist. Bei Refactoring wird das externe Verhalten des Programmes nicht geändert, der Code erhält aber eine bessere interne Struktur. Der Name Refactoring leitet sich aus der Mathematik ab, Dort gilt 800 = 8 * 100 = 100 * 8 = 25 * 32 = 5 2 * 2 5

Universität Stuttgart Institut für Kernenergetik und Energiesysteme Warum Refactoring? Refactoring verbessert das Design der Software Refactoring macht die Software verständlicher Refactoring verbessert die Flexibilität Refactoring hilft Fehler zu finden Refactoring beschleunigt den Software-Entwicklungsprozess

Universität Stuttgart Institut für Kernenergetik und Energiesysteme Wann soll Refactoring eingesetzt werden? Vor Hinzufügen einer neuen Funktionalität Vor und Nach dem Code Review Code Bad Smells als Wegweiser

Universität Stuttgart Institut für Kernenergetik und Energiesysteme Bed Smells: If it stinks, change it - Kent Beck Bed Smell 1: Duplizierter Code –Beim ersten Mal wird der Code geschrieben. –Beim zweiten Mal kann der gleiche Code noch dupliziert werden. –Beim dritten Mal muss der Code umstrukturiert werden. Bed Smell 2: Lange Methode –Eine lange Methode macht den Code unübersichtlich Bed Smell 3: Große Klasse –Eine grosse Klasse besitzt viele Attribute und Methoden, sie erledigt die Arbeit von mehreren Klassen und wird daher unübersichtlich

Universität Stuttgart Institut für Kernenergetik und Energiesysteme Bed Smells: If it stinks, change it - Kent Beck Bed Smell 4: Lange Parameterliste –Schwer zu verstehen und zu benutzen Bed Smell 5: Faule Klasse –Tut fast nichts, bringt unnötige Kosten Bed Smell 6: Kommentare –Kommentierter Code ist gut, selbstkommentierender Code ist besser und andere mehr

Universität Stuttgart Institut für Kernenergetik und Energiesysteme Wie soll Refactoring eingesetzt werden? Test bei jedem Schritt –Unit-Test –white-box Test Ein Schritt auf einmal –Rückzugsmöglichkeit sichern (CVS, o.a.) –nicht debuggen, sonder zurückziehen Keine Funktionalität ändern

Universität Stuttgart Institut für Kernenergetik und Energiesysteme Wie soll Refactoring eingesetzt werden? Mögliche Modifikationen durch Refaktoring: –Hinzufügen –Umbenennen –Löschen –Bewegen –Extrahieren –Ersetzen von Strukturelementen (Attributen, Klassen, Methoden)

Universität Stuttgart Institut für Kernenergetik und Energiesysteme Refactoring Methoden Methode Methode extrahieren –Zusammengehörigen Code in eine neue Methode extrahieren –Gefahr: Duplizierter Code, Lange Methode, Kommentare fehlen Methode Klasse extrahieren –Neue Klasse anlegen und Attribute und Methoden verschieben –Gefahr: Duplizierter Code, Methode Klasse integrieren –Attribute und Methoden in eine andere Klasse verschieben; Klasse löschen –Gefahr: Faule Klasse

Universität Stuttgart Institut für Kernenergetik und Energiesysteme Refactoring Methoden Methode Ganzes Objekt übergeben –Mehrere Parameter bilden eine natürliche Einheit –Gefahr: Lange Parameterliste Methode Schnittstelle extrahieren –Teilmenge der Methoden in eine Schnittstelle extrahieren –Gefahr: Große Klasse u.v.a.

Universität Stuttgart Institut für Kernenergetik und Energiesysteme Refactoring Methode: Schnittstelle extrahieren Name Problem –Verschiedene Klienten verwenden die gleiche Teilmenge der Schnitt-stelle einer Klasse, oder zwei Klassen haben einen Teil ihrer Schnitt-stellen gemeinsam Lösung –Extrahieren Sie die Teilmenge in eine Schnittstelle Motivation –Schnittstellen sind immer dann nützlich, wenn eine Klasse in verschiedenen Situationen unterschiedliche Rolle spielt. Verwenden Sie die Schnittstelle extrahieren für jede Rolle. Eine andere nützliche Anwendung dieser Refactoring Methode besteht darin die Importschnittstelle zu beschreiben. Vorgehen –Erstellen Sie eine leere Schnittstelle –Deklarieren Sie die gemeinsame Methode in der Schnittstelle –Lassen Sie die relevanten Klassen die Schnittstelle implementieren –Lassen Sie die Klienten die Schnittstelle verwenden

Universität Stuttgart Institut für Kernenergetik und Energiesysteme Wann soll Refactoring nicht eingesetzt werden? Vom Refactoring ist abzuraten Kurz vor dem Abschlusstermin –Refactoring wird die Entwicklung über den Termin hinaus verlängern –Vorteile würden zu spät wirken wenn der Code zu schlecht ist –z.B. nicht übersetzbar oder nicht stabil lauffähig –Basis für stabiles Verhalten und Testbarkeit fehlt Also ist vor Beginn der Iterationsphase eine gute Gelegenheit eine Runde Refactoring einzulegen