es gibt (fast) nichts, was nicht anders gemacht werden könnte

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

Prüfung objektorientierter Programme -1
Integrations- und Funktionstests im Rahmen des V-Modelles
mit Entwicklungsumgebungen (Eclipse) Software verbessern
Designing Software for Ease of Extension and Contraction
Das „Vorgehensmodell“
Freie Universität Berlin Institut für Informatik
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme LE P MuSofT Erkundungsumgebung Entwicklung eines komponentenbasierten Systems WS 03/04.
Java: Objektorientierte Programmierung
Colibi Bibliothekssystem der Computerlinguistik. Einführung Motivation Was braucht Colibi? Software Datenbankdesign.
Ein Beispiel in Java.
Die Türme von Hanoi Die Lösungsfindung nach dem Prinzip der Rekursion wird noch einmal textuell und grafisch erläutert
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
eXtreme Programming (XP)
Jürgen-Maria Mustermensch ... sonstiges ...
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik Übung 6 Methoden verstehen und entwerfen.
Vortrag III Hier in der Vorlesungszeit! Anwesenheitspflicht Jede Gruppe hat 6 Minuten! Stellt eure GUI vor –was ihr besonderes gemacht habt –Spektakuläre.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Software Design Patterns Extreme Programming (XP).
Dieter Bergmann, Lichtenfels
UML Begleitdokumentation des Projekts
FH-Hof Adapter & Facade Pattern Richard Göbel. FH-Hof Motivation Gegeben ist eine Klasse mit vorhandenen Methoden Gefordert ist eine Klasse, die ein bestimmtes.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Seminar Softwaretechnik SS2005 Radouane El Marjani ( ) Institut für Softwaretechnik und theoretische Informatik Fakultät IV -
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Software Engineering WS 2009
Spezifikation von Anforderungen
Tutorium PG Verbesserung Blatt 5 Beim instanziieren eines Fahrrades muss es möglich sein, alle benötigten Attribute dem Konstruktor zu übergeben.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 14: Schrittweise.
Das Pflichtenheft Dipl.- Ing. Dipl.-Informatiker Dieter Klapproth
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
„Preisverhandlung leicht gemacht“ „Preisverhandlung leicht gemacht“
E-learning [for humans]..weil der Mensch zählt!. © ESC Austria 2003 [lms] Die totale Kontrolle Wer hat wann was gedrückt? Wer hat wann was gedrückt? Wer.
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
Übung zur Vorlesung Stochastik und ihre Didaktik (BA)
Hartmut Klauck Universität Frankfurt SS
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Wasserfallmodell und Einzelbegriffe
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.
Ruby Refactoring Plug-In für Eclipse
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.
Gewaltprävention durch Förderung sozial-emotionaler Kompetenzen
Objektorientierung.
Rational Unified Process
Software Engineering Grundlagen
Referat „Extreme Programming“
Wizards & Builders GmbH Einführung in die W&B-Methode zur Softwareentwicklung Alf Borrmann.
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.
Programmieren mit Delphi Informatik. Inhalt Projekt Reaktion Objekte im Programm Reaktion Klassen Klassen im Programm Reaktion Objekte verfügen über Methoden,
Objektorientierte (OO) Programmierung
GAME PROGRAMMING PATTERNS – FLYWEIGHT & OBSERVER Robert Nystrom Softwaretechnologie II Teil 2 Anike Schulz.
Game Loop & Update Method Robert Nystrom – Game Programming Patterns Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung SS.
verkettete Strukturen
Die Struktur einer Java-Klasse
Layout "Titel mit Bildern"
 Präsentation transkript:

es gibt (fast) nichts, was nicht anders gemacht werden könnte Refactoring oder Nobody is perfect und es gibt (fast) nichts, was nicht anders gemacht werden könnte 800 = 8 * 100 = 100 * 8 = 25 * 32 = 52 * 25

Was ist 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.

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

Wann soll Refactoring eingesetzt werden? Vor Hinzufügen einer neuen Funktionalität Vor und Nach dem Codereview „Code Bed Smells“ als Wegweiser

Bed Smells: „If it stinks, change it“ - Kent Beck Bed Smell 1: Rule of three - 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 Lange Methode macht den Code unübersichtlich Bed Smell 3: Große Klasse besitzt viele Attribute und Methoden, erledigt die Arbeit von mehreren Klassen 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, selbstkommentierter Code ist besser u.v.a.

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 Grundlegende Modifikationen: Hinzufügen Umbenennen Löschen Bewegen Extrahieren Ersetzen von Strukturelementen (Attributen, Klassen, Methoden)

Refactoring Methoden Methode extrahieren Klasse extrahieren Zusammengehörigen Code in eine neue Methode extrahieren Gegen: Duplizierter Code, Lange Methode, Kommentare Klasse extrahieren Neue Klasse anlegen und Attribute und Methoden verschieben Gegen: Duplizierter Code, Große Klasse Klasse integrieren Attribute und Methoden in eine andere Klasse verschieben; Klasse löschen Gegen: Faule Klasse Ganzes Objekt übergeben Mehrere Parameter bilden eine natürliche Einheit Gegen: Lange Parameterliste Schnittstelle extrahieren Teilmenge der Methoden in eine Schnittstelle extrahieren Gegen: Große Klasse u.v.a.

Refactoring Methode: Schnittstelle extrahieren 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

Refactoring mit Eclipse

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

Was wir gesehen haben