mit Entwicklungsumgebungen (Eclipse) Software verbessern

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Refactoring Java Code
Was ist neu in VS 2003 ? Ein Überblick. Bernd Marquardt Software & Consulting
Web Matrix Project Kurzüberblick Dirk Primbs Technologieberater Developer Platform Strategy Group Microsoft Deutschland GmbH.
Dr. Andreas Winter Sommersemester 2007 Einführung in die Software-Entwicklung © Institut für Informatik Programmier-Richtlinien vgl. auch
Freie Universität Berlin Institut für Informatik
Design Patterns- Entwurfsmuster
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.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
DOM (Document Object Model)
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Vortrag 11: Reengineering - Refactoring
Entwicklungsrichtlinien für Java-Software PG-AQUASIUM Michael Weking
Explizite und editierbare Metainformationen für Software Muster.
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).
Entwurfsmuster EDV Entwurfsmuster.
DVG Klassen und Objekte
Einführung in die Programmierung Vererbung
Grundschutztools
CRM Editor auf der Basis von Qt (Beispiel von Ubi erat Lupa)
Seminar Softwaretechnik Dipl.-Inform. Susanne Jucknath-John
Plattformunabhängige Programmiersprache
Erste Schritte mit PHP 5 von Max Brandt, 22. September 2006.
Neue Module und weitere Entwicklung in uniLIME Gerald Schuster, Advanced Technical Software, Wien.
Nutzungsszenarien introspektiver Modelle
- Organisatorisches: Termine
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Style Guidelines für Java und .NET
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Ruby Refactoring Plug-In für Eclipse
Unterprogramme in JAVA
Clean Code Software-Entwicklung als Handwerkskunst Thomas Nagel, November 2011.
Infopoint Silver Scherrer
Eclipse-Entwicklungsumgebung
Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link.
EPROG Tutorium #6 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Avenue - Kleine Scripte, große Wirkung
22. Oktober 2007Martin Feldmann, 1 Bachelor-Thesis Entwicklung einer automatisierten Dokumentation von LabVIEW Quellcode für das Rahmenwerk.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Horw Präsentation Themenarbeit SWE Wyder Aaron Studiengang Informatik SS Semester Juni 2008 Ist Design tot? Evolutionäre.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Sammlungsklassen Array.
Test-Driven Development
Einführung in die Programmierung mit Java
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Design Pattern1 Motivation Entwurfsmuster Entwurf wiederverwendbarer objektorientierter Software schwer gute Entwürfe entstehen durch Wiederverwen- dung.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Objektorientierte (OO) Programmierung
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
C++ FÜR cOMPUTERSPIELENTWICKLER
XML-basierte Beschreibungssprachen für grafische Benutzerschnittstellen Seminarvortrag im Studiengang „Scientific Programming“ von Steffen Richter.
Refactoring Andreas Martens Der Weg zum lesbaren Code.
Ruby Refactoring Plug-In für Eclipse
Implementieren von Klassen
 Präsentation transkript:

mit Entwicklungsumgebungen (Eclipse) Software verbessern Refaktorisierung mit Entwicklungsumgebungen (Eclipse) Software verbessern Stefan Buchholz

Übersicht Kleiner Einstieg in die Refaktorisierung Tools die Refaktorisierungen unterstützen Ausgesuchte Refektoresierungen am Beispiel Eclipse

Das Motivation Das Problem: Die Lösung Programmierproblem: „allmähliche Verfertigung des Gedankens beim Schreiben“ [2005:Cuber] Sinken der Codequalität bei Wartung des Softwaresystems Die Lösung Refaktorisierung Vom Chaos zur Struktur - Beinträchtigung der Struktur

Ziel der Refaktorisierung Überschaubarkeit und Verständlichkeit des Codes sollen erhöht werden Vereinfachung der Wartbarkeit

Definition Refaktorisierung (Substantiv): Eine Änderung an der internen Struktur einer Software, um sie leichter verständlich zu machen und einfacher zu verändern, ohne ihr beobachtbares Verhalten zu ändern. [2000:Fowler] Refaktorisieren (Verb): Eine Software umstrukturieren, ohne ihr beobachtbares Verhalten zu ändern, indem man eine Reihe von Refaktorisierungen anwendet. [2000:Fowler]

Refaktorisierungen Es gibt eine große Anzahl von Refaktorisierungen www.refactoring.com/catalog Umbenennung von Feldern und Methoden mit selbsterklärenden Namen Entfernung von Codeduplikaten (Copy & Paste) Weitere Beispiele später …

Zeitpunkt der Refaktorisierung Wenn der Code sowieso angefasst werden muss: Beseitigung von Bugs, Erweiterungen bzw. funktionale Änderungen sollen vorgenommen werden Applikationsteile sollen wieder verwendet werden

Sprachen mit Refaktoringtools Smalltalk Smalltalk Refactoring Browser Java IntelliJ Idea Eclipse JFactor XRefactory Together-J JBuilder RefactorIt JRefactory Transmogrify JafaRefactor CodeGuide Visual Basic Aivosto Project Analyzer .NET ReSharper C# Refactory C# Refactoring Tool C/C++ SlickEdit Ref++ Xrefactory Phyton Bicycle Repair Man Self Guru Delphi Model Maker [Quelle: www.refactoring.com] Smalltalk Quelle der Refaktorisierung Namen der Tools werden genannt auf www.refactoring.com

Refaktorisierung in Eclipse Umbenennen Versetzen Methodensignatur ändern Anonyme Klasse in verschachtelte konvertieren Verschachtelten Typ in höchste Ebene konvertieren Herabsetzen Hochsetzen Schnittstelle extrahieren Nach Möglichkeit Supertyp verwenden Integrieren Methode extrahieren Lokale Variable extrahieren Konstante extrahieren Lokale Variable in Feld konvertieren Feld kapseln Fabrikmethode extrahieren

Variablen / Methoden / Klassen umbenennen Motivation: Schlecht lesbare Variablen-, Klassen- und Methodennamen Probleme: Klassen / Methoden / Variablen werden an unterschiedlichen Stellen aufgerufen In rename_methode.java, Client.java Problem: Methodenname ist nicht eindeutig gibt Büronummer zurück Methodennamen getTelefonNumber markieren Rechtsklick auf Methodennamen und dann Refactoring -> Umbenennen in getOfficeTelefonNumber Auswirkung in Client.java zeigen

Methoden extrahieren Motivation: Probleme: Zu lange Methoden Doppelter Code Probleme: Lokale / temporäre Variablen sind zu beachten Extract_Methode.java Siehe S 108 Ohne lokale Variable (//print banner) Siehe S 109 Einsatz lokaler Variablen (//print details) Siehe S 110 Neue Zuweisung einer lokalen Variablen (//calculate outstanding)

Methode nach oben / unten verschieben Motivation: Eliminierung redundantem Verhaltens Employee Employee getName Salesman.java, Employee.java, Client.java, Engineer.java Methode getName markieren in Engineer.java oder Salesman.java Rechtsklick Refaktoring -> Hochsetzen… Auswirkungen zeigen in Salesman.java, Employee.java, Client.java, Engineer.java Salesman Engineer Salesman Engineer getName getName

Parameter ergänzen / entfernen Motivation: Änderung einer Methode die Parameter mehr / weniger benötigt Probleme: Auf polymorphe Methoden muss geachtet werden Manuelle Codeänderung nach refaktorisieren notwendig Aktion() markieren Rechte Maustaste -> Refaktorisierung -> Methodensignatur ändern Besser Konstante markieren zum Beispiel die drei Rechte Maustaste -> Refactoring -> Parameter einführen

Konstruktor durch Fabrikmethode ersetzen / Typschlüssel durch Unterklassen ersetzen Motivation Typschlüssel durch Unterklassen ersetzen (hierfür Entwurfsmuster Fabrikmethode zu empfehlen) Problem: Unterschiedliche Aufrufe des bestehenden Konstruktors Manuelles Programmieren des Inhaltes der Fabrikmethode (Refaktorisierung: Typschlüssel durch Unterklassen ersetzen) Konstruktor markieren Rechte Maustaste -> Refactoring -> Factory einführen Hinweis darauf, dass trotzdem Methode programmiert werden muss

Interface extrahieren Motivation: Es werden von den verantwortlichen Klassen nur Teile genutzt <<interface>> Billable Employee getRate hasSpecialSkill getRate hasSpecialSkill getName getDepartment Employee.java, TimeSheet.java In Employee auf rechte Maustaste und Refactoring -> Schnittstelle extrahieren getRate, hasSpecialSkill anhacken Billable eingeben noch und Hacken setzen bei „Verweise auf die Klasse …“ Employee getRate hasSpecialSkill getName getDepartment

Quellen Ulrich Cuber; Einstieg in Eclipse 3; Galileo Computing 2005 Oliver Fischer (ck); Aus alt mach neu Refactoring verbessert Software; praxis, iX 4/02, Seite 151 Martin Fowler; Refactoring, Wie Sie das Design vorhandener Software verbessern; Addison-Wesley 2000 Thomas Schoen; Runderneuerung, Ein Überblick über Refactoring und dessen Einsatz bei der Java-Entwicklung; Javamagazin 08/2004 http://www.refactoring.com Eclipse Hilfe