Michael C. Feathers. Legacy Code. Effektives Arbeiten mit. Refactoring und Testen bestehender Software

Größe: px
Ab Seite anzeigen:

Download "Michael C. Feathers. Legacy Code. Effektives Arbeiten mit. Refactoring und Testen bestehender Software"

Transkript

1 Michael C. Feathers Effektives Arbeiten mit Legacy Code Refactoring und Testen bestehender Software

2 Vorwort Geleitwort Danksagungen Einführung Wie man dieses Buch lesen sollte Teil I Wie Wandel funktioniert Software ändern Vier Gründe, Software zu ändern Riskante Änderungen Mit Feedback arbeiten Was sind Unit-Tests? Higher-Level-Tests Testabdeckung Der Algorithmus zur Änderung von Legacy Code Überwachung und Trennung Kollaborateure simulieren Das Seam-Modell Ein riesiges Blatt mit Text Seams Seam-Arten Tools Automatisierte Refactoring-Tools Mock-Objekte Unit-Test-Harnische Allgemeine Test-Harnische

3 Teil II Software ändern Ich habe nicht viel Zeit und ich muss den Code ändern Sprout Method Sprout Class Wrap Method Wrap Class Zusammenfassung Änderungen brauchen eine Ewigkeit Verständlichkeit Verzögerungszeit Dependencies aufheben Zusammenfassung Wie füge ich eine Funktion hinzu? Test-Driven Development (TDD) Programming by Difference Zusammenfassung Ich kann diese Klasse nicht in einen Test-Harnisch einfügen Der Fall des irritierenden Parameters Der Fall der verborgenen Dependency Der Fall der verketteten Konstruktionen Der Fall der irritierenden globalen Dependency Der Fall der schrecklichen Include-Dependencies Der Fall der Zwiebel-Parameter Der Fall des Alias-Parameters Ich kann diese Methode nicht in einem Test-Harnisch ausführen Der Fall der verborgenen Methode Der Fall der»hilfreichen«sprachfunktion Der Fall des nicht erkennbaren Nebeneffekts Ich muss eine Änderung vornehmen. Welche Methoden sollte ich testen? Effekte analysieren Vorwärtsanalyse (Reasoning Forward) Effektfortpflanzung (Effect Propagation) Tools für Effektanalysen Von der Effektanalyse lernen Effektskizzen vereinfachen

4 12 Ich muss in einem Bereich vieles ändern. Muss ich die Dependencies für alle beteiligten Klassen aufheben? Abfangpunkte Ein Design mit Einschnürpunkten beurteilen Fallen bei Einschnürpunkten Ich muss etwas ändern, weiß aber nicht, welche Tests ich schreiben soll Charakterisierungs-Tests Klassen charakterisieren Gezielt testen Eine Heuristik für das Schreiben von Charakterisierungs-Tests Dependencies von Bibliotheken bringen mich um Meine Anwendung besteht nur aus API-Aufrufen Ich verstehe den Code nicht gut genug, um ihn zu ändern Notizen/Skizzen Listing Markup Scratch Refactoring Ungenutzten Code löschen Meine Anwendung hat keine Struktur Die Geschichte des Systems erzählen Naked CRC Conversation Scrutiny Der Test-Code ist im Weg Konventionen für Klassennamen Der Speicherort für Tests Mein Projekt ist nicht objektorientiert. Wie kann ich es sicher ändern? Ein einfacher Fall Ein schwieriger Fall Neues Verhalten hinzufügen Die Objektorientierung nutzen Es ist alles objektorientiert Diese Klasse ist zu groß und soll nicht noch größer werden Aufgaben erkennen Andere Techniken

5 20.3 Die nächsten Schritte Nach dem Extrahieren von Klassen Ich ändere im ganzen System denselben Code Erste Schritte Ich muss eine Monster-Methode ändern und kann keine Tests dafür schreiben Spielarten von Monstern Monster mit automatischer Refactoring-Unterstützung zähmen Die Herausforderung des manuellen Refactorings Strategie Wie erkenne ich, dass ich nichts kaputtmache? Hyperaware Editing Single-Goal Editing Preserve Signatures Lean on the Compiler Wir fühlen uns überwältigt. Es wird nicht besser Teil III Techniken zur Aufhebung von Dependencies Techniken zur Aufhebung von Dependencies Adapt Parameter Break Out Method Object Definition Completion Encapsulate Global References Expose Static Method Extract and Override Call Extract and Override Factory Method Extract and Override Getter Extract Implementer Extract Interface Introduce Instance Delegator Introduce Static Setter Link Substitution Parameterize Constructor Parameterize Method

6 25.16 Primitivize Parameter Pull Up Feature Push Down Dependency Replace Function with Function Pointer Replace Global Reference with Getter Subclass and Override Method Supersede Instance Variable Template Redefinition Text Redefinition A Refactoring A.1 Extract Method B Glossar Stichwortverzeichnis

Refactoring von Legacy Systemen. Jochen Winzen jochen.winzen@andrena.de andrena objects ag

Refactoring von Legacy Systemen. Jochen Winzen jochen.winzen@andrena.de andrena objects ag Refactoring von Legacy Systemen Jochen Winzen jochen.winzen@andrena.de andrena objects ag Was ist ein Legacy System Ein Legacy System hat folgenden Eigenschaften: + Besitzt die geforderte Funktionalität

Mehr

Design for Testability in der Praxis David Völkel, codecentric AG

Design for Testability in der Praxis David Völkel, codecentric AG Design for Testability in der Praxis David Völkel, codecentric AG http://commons.wikimedia.org/wiki/file:pit_crew_hudson_valley.jpg http://commons.wikimedia.org/wiki/file:carservice.jpg David Völkel *

Mehr

Inhaltsverzeichnis. Geleitwort Einleitung... 13

Inhaltsverzeichnis. Geleitwort Einleitung... 13 5 Geleitwort..................................................... 11 Einleitung..................................................... 13 1 Einführung.......................................................

Mehr

TDD für iphone OS. xpdays 2009. Tammo Freese

TDD für iphone OS. xpdays 2009. Tammo Freese TDD für iphone OS xpdays 2009 Tammo Freese Inhalt Unit Testing für iphone OS Mockobjekte für iphone OS TDD für iphone OS? Unit Testing auf dem iphone Vor iphone OS 3.0: kaum dokumentiert nur auf dem Entwicklungsrechner

Mehr

Software-Sanierung. Weiterentwicklung, Testen und Refactoring bestehender Software. von Sebastian Kübeck. 1. Auflage

Software-Sanierung. Weiterentwicklung, Testen und Refactoring bestehender Software. von Sebastian Kübeck. 1. Auflage Software-Sanierung Weiterentwicklung, Testen und Refactoring bestehender Software von Sebastian Kübeck 1. Auflage Software-Sanierung Kübeck schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

Wie wird mein Code testbar? Referent: David Völkel

Wie wird mein Code testbar? Referent: David Völkel Wie wird mein Code testbar? Referent:DavidVölkel http://commons.wikimedia.org/wiki/file:pit_crew_hudson_valley.jpg http://commons.wikimedia.org/wiki/file:carservice.jpg DavidVölkel anti pattern hardtotestcode

Mehr

Michael C. Feathers. Legacy Code. Effektives Arbeiten mit. Refactoring und Testen bestehender Software

Michael C. Feathers. Legacy Code. Effektives Arbeiten mit. Refactoring und Testen bestehender Software Michael C. Feathers Effektives Arbeiten mit Legacy Code Refactoring und Testen bestehender Software Teil I Wie Wandel funktioniert In diesem Teil: Kapitel 1 Was ist Seam?..............................

Mehr

Design for Testability in der Praxis Referent: David Völkel

Design for Testability in der Praxis Referent: David Völkel Design for Testability in der Praxis Referent:DavidVölkel http://commons.wikimedia.org/wiki/file:pit_crew_hudson_valley.jpg http://commons.wikimedia.org/wiki/file:carservice.jpg DavidVölkel anti pattern

Mehr

Neue Wege mit Contao 4

Neue Wege mit Contao 4 Neue Wege mit Contao 4 Schöne neue PHP-Welt Contao Konferenz 2016 Über mich Andreas Schempp / terminal42 gmbh Schweiz Contao Core Entwickler Vorstand (Schatzmeister) Contao Association Hauptentwickler

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team Modulare Anwendungen und die Lookup API Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team Die Notwendigkeit modularer Anwendungen Die Notwendigkeit modularer

Mehr

Inhalt. 3.1 Der inkrementelle Entwurf im Überblick... 13 3.2 Flache Aufwandskurve... 14 3.3 Qualitätskriterien für den inkrementellen Entwurf...

Inhalt. 3.1 Der inkrementelle Entwurf im Überblick... 13 3.2 Flache Aufwandskurve... 14 3.3 Qualitätskriterien für den inkrementellen Entwurf... ix 1 Einleitung 1 Roman Pichler Stefan Roock 1.1 Agile Softwarewicklung und Scrum............................ 1 1.2 Zielgruppe und Zielsetzung.................................. 2 1.3 Überblick über das

Mehr

Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo. Statische Codeanalyse wirklich effektiv nutzen

Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo. Statische Codeanalyse wirklich effektiv nutzen Jan Schumann, G+J Manuel Pichler, Trainer & Consultant - Qafoo Statische Codeanalyse wirklich effektiv nutzen Über uns Jan Schumann Jahrgang 1976 System- / Softwarearchitekt Entwickler von: PHP_Depend,

Mehr

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ IBBB 2010 Workshop 6 Einführung in die objektorientierte Programmierung Dozenten: J. Penon, J. Frank, A. Schindler Teil: Java mit BlueJ Dozent: A. Schindler Einf. i. d. OOP - Java u. BlueJ / A. Schindler

Mehr

Klassen in Java. Klassen

Klassen in Java. Klassen Klassen in Java Klassen Klassen beschreiben Objekte, die abstakte oder konkrete Sachverhalte modellieren. Objekte sind durch einen Status gekennzeichnet (State). Der Status eines Objektes ergibt sich aus

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java Einführung in die Programmierung mit Java Martin Wirsing 2 Ziele Geschichte der OO-Programmiersprachen Warum Java als Programmiersprache verwenden? Ein einfaches Java-Programm erstellen, übersetzen und

Mehr

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4 Inhaltsverzeichnis TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA... 1 1 GRUNDLAGEN DER PROGRAMMIERUNG... 4 1.1 Das erste Java-Programm... 4 1.2 Programme und ihre Abläufe... 6 1.3 Entwurf mit Nassi-Shneiderman-Diagrammen...

Mehr

Software-Architektur Design Patterns

Software-Architektur Design Patterns Design Patterns Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides: Design Patterns:

Mehr

Henrik Kniberg. Lean from the Trenches Managing Large-Scale Projects with Kanban

Henrik Kniberg. Lean from the Trenches Managing Large-Scale Projects with Kanban Henrik Kniberg Lean from the Trenches Managing Large-Scale Projects with Kanban Preface: The Project PUST (Polisens mobila Utrednings STöd) 2 Jahre 10 60+ Mitarbeiter 3 Feature Teams 1 Requirements Analyst

Mehr

Code Quality. Steigerung der Codequalität mit Visual Studio & TFS

Code Quality. Steigerung der Codequalität mit Visual Studio & TFS Code Quality Steigerung der Codequalität mit Visual Studio & TFS Tobias Richling 30 Jahre Wohnhaft im Münsterland Softwareentwickler seit Amiga Basic Microsoftie Logisitksoftware Silverlight TFS Trainer,

Mehr

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Fortgeschrittenes Programmieren mit Java. Test Driven Development Fortgeschrittenes Programmieren mit Java Test Driven Development Test getriebene Programmierung Benedikt Boeck Hochschule für Angewandte Wissenschaften Hamburg 6. November 2009 B. Boeck (HAW Hamburg) Test

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Squeak verwenden. Neues Projekt starten. Werkzeuge. Einführung in die objektorientierte Programmierung

Squeak verwenden. Neues Projekt starten. Werkzeuge. Einführung in die objektorientierte Programmierung Einführung in die objektorientierte Programmierung mit Squeak Teil 2 Squeak verwenden Image unter neuem Namen speichern und verwenden - immer ein intaktes Image zur Sicherheit verfügbar alle Änderungen

Mehr

Lego MindStorms Implementierung für Etoys

Lego MindStorms Implementierung für Etoys NXTeToys Lego MindStorms Implementierung für Etoys NXTeToys Gruppe 5 Tobias Schubotz, Björn Groneberg, Florian Westphal, Felix Leupold, Richard Meißner, Gerardo Navarro Suarez Motivation 2 Kinder lernen

Mehr

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

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Programmierung für Mathematik (HS13)

Programmierung für Mathematik (HS13) software evolution & architecture lab Programmierung für Mathematik (HS13) Übung 5 1 Aufgabe: Eclipse IDE 1.1 Lernziele 1. Die Entwicklungsumgebung Eclipse einrichten. 2. Eclipse kennen lernen und mit

Mehr

Kapitel 3 Software Quality III

Kapitel 3 Software Quality III Kapitel 3 Software Quality III Software Architecture, Quality, and Testing FS 2015 Prof. Dr. Jana Köhler jana.koehler@hslu.ch Agenda Heute Von Bad Smells zu Refactorings Wie wird Refactoring durchgeführt?

Mehr

COPE COuPled Evolution of metamodels and models

COPE COuPled Evolution of metamodels and models COPE COuPled Evolution of metamodels and models Diplomarbeit in Zusammenarbeit mit der BMW Car IT (Betreuer: Elmar Jürgens, Sebastian Benz) Markus Herrmannsdörfer 7. November 2007 Perlen der Informatik

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Enterprise PHP Tools

Enterprise PHP Tools Stefan Priebsch Enterprise PHP Tools Werkzeuge und Methoden für einen effizienten Entwicklungsprozess intwrckier.press Vorwort 9 1 Einführung 11 1.1 Unternehmensanwendungen und PHP 11 1.2 Der Entwicklungsprozess

Mehr

CARL HANSER VERLAG. Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis 3-446-22562-5. www.hanser.de

CARL HANSER VERLAG. Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis 3-446-22562-5. www.hanser.de CARL HANSER VERLAG Dirk Ammelburger XML Grundlagen der Sprache und Anwendungen in der Praxis 3-446-22562-5 www.hanser.de 1 1.1 Einleitung... 2 Über dieses Buch... 3 1.2 Für wen ist das Buch gedacht?...

Mehr

CONTINUOUS DELIVERY. Entmystifiziert. codecentric AG

CONTINUOUS DELIVERY. Entmystifiziert. codecentric AG CONTINUOUS DELIVERY Entmystifiziert WIE SOFTWARE LIEFERN? 01.07.2014 2 WAS IST CONTINUOUS DELIVERY? Robust Wiederholbar Effektiv 01.07.2014 3 LANDSCHAFTEN Continuous Integration Public / Private Hybrid

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber Konsequent agile Entwicklung mit funk4onaler Programmierung Michael Sperber Individualso4ware branchenunabhängig Scala, Clojure, Erlang, Haskell, F# Schulungen, Coaching www.acave- group.de funkaonale-

Mehr

NEUES AUS DER ENTWICKLUNG. April 2015

NEUES AUS DER ENTWICKLUNG. April 2015 NEUES AUS DER ENTWICKLUNG April 2015 Agenda R&D Redwood Produkt-Upgrade und -Releasestrategie Namensänderungen / -Konventionen Produkt Updates Schlusswort INTRODUCTION R&D April 2015 Unser Team 20+ Mitarbeiter

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests. Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden

Mehr

Ohne Build geht's besser: Makeloses Java mit dem z 2 -Environment. Henning Blohm 5.7.2012

Ohne Build geht's besser: Makeloses Java mit dem z 2 -Environment. Henning Blohm 5.7.2012 Ohne Build geht's besser: Makeloses Java mit dem z 2 -Environment Henning Blohm 5.7.2012 1 Z2 ist ein radikal neuer* Ansatz für System Life-Cycle Management in Java * jedenfalls für Java Ein Builtool?

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Eclipse mit PyDev. Objektorientierung. Beispielaufgaben

Eclipse mit PyDev. Objektorientierung. Beispielaufgaben Übersicht Eclipse mit PyDev Objektorientierung Beispielaufgaben TU Dresden, 02.05.2011 Sommerkurs Python - 04. Objektorientierung Folie 1 von 30 ECLIPSE MIT PYDEV TU Dresden, 02.05.2011 Sommerkurs Python

Mehr

CONTINUOUS DELIVERY. codecentric AG

CONTINUOUS DELIVERY. codecentric AG CONTINUOUS DELIVERY AGENDA Einstieg Was ist Continuous Delivery Welche Ziele werden verfolgt? Voraussetzungen Technisch Organisatorisch Kulturell Umsetzung und Einführung 6 Disziplinen der Continuous Delivery

Mehr

DOAG Regionaltreffen. Regionalgruppe Nürnberg. Migration von Forms Client/Server ins Web. Andreas Ströbel OPITZ CONSULTING München

DOAG Regionaltreffen. Regionalgruppe Nürnberg. Migration von Forms Client/Server ins Web. Andreas Ströbel OPITZ CONSULTING München DOAG Regionaltreffen Regionalgruppe Nürnberg Migration von Forms Client/Server ins Web Andreas Ströbel OPITZ CONSULTING München Migration von Forms Client/Server ins Web Seite 1 Agenda Oracle Forms wie

Mehr

am Beispiel von JUnit

am Beispiel von JUnit Aufbau eines Testwerkzeugs am Beispiel von JUnit Üblicher Ansatz für Tests und Fehlersuche: Print-Befehle, Debugger-Ausdrücke, Test-Skripte möglichst über globale Variable debug steuerbar Command Pattern

Mehr

Übung 1: Object Inspector

Übung 1: Object Inspector Übung 1: Object Inspector Es ist ein System zu entwickeln, mit dem man Objektstrukturen bezüglich ihrer Properties analysieren und dann in einem Tree Viewer (JTree) anzeigen und bearbeiten kann. Properties

Mehr

Testgetriebene Web-Entwicklung mit Ruby on Rails

Testgetriebene Web-Entwicklung mit Ruby on Rails Testgetriebene Web-Entwicklung mit Ruby on Rails Thomas Baustert www.b-simple.de www.b-simple.de 1 Agenda Rails Einführung Test-Unterstützung in Rails Testgetriebene Web-Entwicklung mit Rails Live Demo

Mehr

Test Driven Development

Test Driven Development Test Driven Development Definition & Motivation [~15min] Demo [~10min] Stubs & Mocks [~15min] Übliche Fehler [~5min] Folie 1 TDD [Kent Beck] Schreibe keine Zeile Code ohne einen fehlschlagenden (roten)

Mehr

Generische Datenstrukturen

Generische Datenstrukturen Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Softwaretechnologie, Prof. Uwe Aßmann 1 2 Trends in der Softwareentwicklung

Mehr

Modulare Programmierung und Bibliotheken

Modulare Programmierung und Bibliotheken Modulare Programmierung und Bibliotheken Proseminar-Vortrag am 24.06.2011 von Ludwig Eisenblätter Ludwig Eisenblätter 1 von 25 Modulare Programmierung und Bibliotheken Inhaltsübersicht Motivation / Einleitung

Mehr

Neue Features in C# 2.0

Neue Features in C# 2.0 Neue Features in C# 2.0 (gekürzt) Generische Typen Iteratoren Vereinfachte Delegate-Erzeugung Anonyme Methoden Partielle Klassen Sonstiges University of Linz, Institute for System Software, 2004 published

Mehr

Übungen Softwaretechnik I

Übungen Softwaretechnik I Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Übungen Softwaretechnik I Übung 5: Objektorientierte Analyse Einführung Objektorientierung in der

Mehr

Softwareschnittstellen

Softwareschnittstellen P4.1. Gliederung Rechnerpraktikum zu Kapitel 4 Softwareschnittstellen Einleitung, Component Object Model (COM) Zugriff auf Microsoft Excel Zugriff auf MATLAB Zugriff auf CATIA Folie 1 P4.2. Einleitung

Mehr

Höhere Programmierkonzepte Testklausur

Höhere Programmierkonzepte Testklausur Höhere Programmierkonzepte Testklausur Prof. Dr. Nikolaus Wulff Zum 15. Januar 2016 1 Ein Google-Map Algorithmus (5 Punkte) 1 2 typedef void X; 3 typedef void Y; 4 5 void map(unsigned int n / tuple length

Mehr

Michael Kolberg. einfach klipp & klar. Microsofft* Press

Michael Kolberg. einfach klipp & klar. Microsofft* Press Michael Kolberg einfach klipp & klar Microsofft* Press III Vorwort 11 Die CD-ROM zum Buch 21 Die AutoPlay-Funktion der CD-ROM 22 Installation der Testfragen und des Ebooks 23 Installation des Computer-Lexikons

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Anforderungsgetriebene Webentwicklung mit Grails:

Anforderungsgetriebene Webentwicklung mit Grails: ne mit Grails: und dem 26.01.2012 und dem Gliederung und dem Projektumfeld Agentur mit weniger als 5 Mitarbeitern Schwerpunkte: mit Typo 3 / PHP ios App-Entwicklung für ipad und iphone und dem Folie 1

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Model-View-Controller

Model-View-Controller Software Design Pattern Model-View-Controller Michael Lühr Gliederung Einführung und Problemstellung Ansatz durch MVC Detaillierte Darstellung der Komponenten Model View Controller Vor- und Nachteile Zusammenfassung

Mehr

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X SwissMacMeeting #1 26. Juni 2004 Messeturm Basel http://mac.naepflin.com Was ist das Ziel dieses Kurses? Starthilfe Einblick in die Möglichkeiten,

Mehr

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

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Widmung... 5. Einleitung... 15. Vorwort 15 Übersicht zu diesem Buch 17. 1 Einführung in die Welt der Objektorientierung... 21

Widmung... 5. Einleitung... 15. Vorwort 15 Übersicht zu diesem Buch 17. 1 Einführung in die Welt der Objektorientierung... 21 Inhaltsverzeichnis Widmung........................................ 5 Einleitung...................................... 15 Vorwort 15 Übersicht zu diesem Buch 17 1 Einführung in die Welt der Objektorientierung.........

Mehr

Präsentation Interfaces

Präsentation Interfaces Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.

Mehr

Frontend Migration from JSP to Eclipse Scout

Frontend Migration from JSP to Eclipse Scout Frontend Migration from JSP to Eclipse Scout Peter Nüdling Raiffeisen Schweiz Jérémie Bresson, Peter Barthazy BSI Business Systems Integration AG Eclipse Finance Day, Zürich, 31. Oktober 2014 Seite 1 WebKat:

Mehr

Ruby on Rails. Thomas Baustert Ralf Wirdemann www.b-simple.de. Alternative zur Web-Entwicklung mit Java? 27.06.2005 www.b-simple.

Ruby on Rails. Thomas Baustert Ralf Wirdemann www.b-simple.de. Alternative zur Web-Entwicklung mit Java? 27.06.2005 www.b-simple. Ruby on Rails Alternative zur Web-Entwicklung mit Java? Thomas Baustert Ralf Wirdemann www.b-simple.de 27.06.2005 www.b-simple.de 1 Überblick Was ist Ruby on Rails? Weblog Demo Rails Komponenten Controller,

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Software Engineering in

Software Engineering in Software Engineering in der Werkzeuge für optimierte LabVIEW-Entwicklung Folie 1 Best Practices Requirements Engineering Softwaretest Versionsmanagement Build- Automatisierung Folie 2 Arbeiten Sie im Team?

Mehr

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Entwurfsprinzip. Entwurfsprinzip

Entwurfsprinzip. Entwurfsprinzip Die Komposition (hat ein Beziehung) ist der Vererbung (ist ein Beziehung) vorzuziehen. Es können Familien von Algorithmen in eigenen Klassensätzen gekapselt werden. Das Verhalten lässt sich zu Laufzeit

Mehr

4.7.1 Intellisense... 42 4.7.2 Code Expansion... 43 4.7.3 Code Snippets... 43 4.7.4 Schriftgröße... 44 4.7.5 Event Handler... 44 4.7.

4.7.1 Intellisense... 42 4.7.2 Code Expansion... 43 4.7.3 Code Snippets... 43 4.7.4 Schriftgröße... 44 4.7.5 Event Handler... 44 4.7. Inhalt 1 Einleitung... 11 1.1 An wen richtet sich das Buch?... 11 1.2 Ziel... 11 1.3 1 = 2... 11 1.4 Voraussetzungen... 11 1.5 Was decken die einzelnen Kapitel ab?... 12 1.6 Was nicht enthalten ist...

Mehr

Effizientes und effektives Testen von Embedded SW mit Google Test. Michael Bernhard

Effizientes und effektives Testen von Embedded SW mit Google Test. Michael Bernhard Effizientes und effektives Testen von Embedded SW mit Google Test Michael Bernhard 1 Agenda Warum testen? Wie testen? Google Test und Google Mock Toolintegration Schlussfolgerung 2 Die Norm fordert es

Mehr

SAP Software Engineering live Agile! Agiles Projektmanagement und Clean Code im SAP-Umfeld

SAP Software Engineering live Agile! Agiles Projektmanagement und Clean Code im SAP-Umfeld SAP Software Engineering live Agile! Agiles Projektmanagement und Clean Code im SAP-Umfeld SAP Software Engineering live Agile! SAP Ali Kaveh Software Engineering live Agile! Certified Scrum Master Solution

Mehr

DIGICOMP OPEN TUESDAY AKTUELLE STANDARDS UND TRENDS IN DER AGILEN SOFTWARE ENTWICKLUNG. Michael Palotas 7. April 2015 1 GRIDFUSION

DIGICOMP OPEN TUESDAY AKTUELLE STANDARDS UND TRENDS IN DER AGILEN SOFTWARE ENTWICKLUNG. Michael Palotas 7. April 2015 1 GRIDFUSION DIGICOMP OPEN TUESDAY AKTUELLE STANDARDS UND TRENDS IN DER AGILEN SOFTWARE ENTWICKLUNG Michael Palotas 7. April 2015 1 GRIDFUSION IHR REFERENT Gridfusion Software Solutions Kontakt: Michael Palotas Gerbiweg

Mehr

Continuous Database Integration mit Flyway

Continuous Database Integration mit Flyway XP Days Germany 2015 Continuous Database Integration mit Flyway Sandra Parsick info@sandra-parsick.de @SandraParsick Zur meiner Person Freiberufliche Softwareentwickler und Consultant im Java- Umfeld Schwerpunkte:

Mehr

11. Refactoring Advanced Programming Techniques. Wintersemester 2009/2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

11. Refactoring Advanced Programming Techniques. Wintersemester 2009/2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 11. Refactoring Advanced Programming Techniques Wintersemester 2009/2010 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Advanced

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden

Mehr

Einführung in die Programmierung mit Java. Hörsaalübung

Einführung in die Programmierung mit Java. Hörsaalübung Einführung in die Programmierung mit Java Hörsaalübung Folie 1 Grundlagen der Objektorientierung Seit Anfang der Neunzigerjahre Standardmethode der Softwareentwicklung. Die OOP Objektorientierte Programmierung

Mehr

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private

Mehr

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords 4.0 Proinformatik III Objektorientierte Programmierung Michael Kölling University of Kent Canterbury, UK Selbstbestimmtes Lernen Vorlesung Tutorium Übungen Buch Web-Seite Üben, üben, üben! Format Vorlesung:

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 14: Generics Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Generische Klassen (Generics) Motivation Java Typ-Prüfung Warum also Generics? Generische

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

12) Generische Datenstrukturen

12) Generische Datenstrukturen 12) Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Version 09-0.2, 24.11.08 Softwaretechnologie, Prof. Uwe Aßmann 1 mpfohlene

Mehr

Whitepaper: Agile Methoden im Unternehmenseinsatz

Whitepaper: Agile Methoden im Unternehmenseinsatz Whitepaper: Agile Methoden im Unternehmenseinsatz Agilität ist die Fähigkeit eines Unternehmens, auf Änderungen in seinem Umfeld zu reagieren und diese zum eigenen Vorteil zu nutzen. Inhaltsverzeichnis

Mehr

Radikaler Umbruch in der Fahrzeug- und Systemabsicherung. Steffen Kuhn

Radikaler Umbruch in der Fahrzeug- und Systemabsicherung. Steffen Kuhn Radikaler Umbruch in der Fahrzeug- und Systemabsicherung Steffen Kuhn 21.04.2016 Autonomes Fahren ist das erklärte Ziel von Automobilherstellern, Zulieferern und Dienstleistern In Zukunft muss nicht nur

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Modellbasierte Softwareentwicklung

Modellbasierte Softwareentwicklung CD OCL OD Statechart SD Modellbasierte Softwareentwicklung 7. Evolutionäre Methodik 7.1. Vorgehensmodell Vorlesungsnavigator: Prof. Dr. Bernhard Rumpe Sprache Codegen. http://www.se-rwth.de/ Testen Evolution

Mehr

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

Mehr

Kurzanleitung zu XML2DB

Kurzanleitung zu XML2DB Kurzanleitung zu XML2DB Inhaltsverzeichnis 1. Einleitung...3 2. Entwicklungsumgebung...3 3. Betriebsanleitung...3 3.1 Einrichten der Java Umgebung...3 3.2 Allgemeines zu java und javac...4 3.2.1 Allgemeines

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr