Software Design Patterns Extreme Programming (XP).

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

Forschungszentrum Informatik
mit Entwicklungsumgebungen (Eclipse) Software verbessern
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Konzepte objektorientierter Systeme
Softwareentwicklung für Android
Einführung von Team System Ein Vorgehensvorschlag
Was ist neu in VS 2003 ? Ein Überblick. Bernd Marquardt Software & Consulting
Agiles Software- Projektmanagement mit XP Dipl.-Ing. F. Papenfuß Prof. Dr. H. Pfüller Universität Rostock.
Übung 5 Mehrstufige Client/Server-Systeme mit Enterprise Java Beans
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
eXtreme Programmierung
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
Schulung der Mitarbeiter
Testgetriebene Entwicklung
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Java: Objektorientierte Programmierung
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
XDoclet ETIS SS05.
Das Test-Framework JUnit
Datenbanksystementwicklung – Praktikum & Vorlesung – WS 2004/2005
Vererbung Spezialisierung von Klassen in JAVA möglich durch
eXtreme Programming (XP)
Projekt Web Engineering
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Concurrent Versions System
Software Design Patterns Creational Patterns Structural Patterns Behavioral Patterns –Behavioral Class Patterns Interpreter Template Method Pattern –Behavioral.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
USE2ANT Die Umstellung von Use Makefiles zu Ant & Junit Von Isaac, Maleen und Marc.
XP – eXtreme Programming
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
n Produktfamilie VisiWinNET
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
08. September 2010Entwicklungsstrategien in Liferay 1 Christian Krause, URZ FSU Jena, IDM-Arbeitsgruppe.
Cooperation unlimited © Zühlke Juni 2009 Hansjörg Scherer Folie 1 Cooperation unlimited TFS als BackEnd für Visual Studio und Eclipse.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
FH München FB 07 Informatik/Mathematik Projektstudium Chipkarten SS 2001 Authenticate & PIN Martin Leidel, Andreas Dreyer, Peter Knöferl, Christoph Mayer,
Projektmanagement Ziel und Umfang eines Softwareprojektes definieren
Testtechniken-Praktikum WS 2005/06 1 Testgetriebene Entwicklung Andreas Höfer Dr. Matthias Müller mit Beiträgen von Johannes Link.
Eclipse – PHP Tool Integration (PTI) Sven Kiera, TWT Interactive GmbH.
Referat „Extreme Programming“
Agile Softwareentwicklung
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
Max. HWR DECISION TREE Max Jakisch Tobias Lentz Michael Berth Sebastian Möller Christian Güthling.
JQuery: New Wave Javascript Seite 1 jQuery: New Wave Javascript Jörn Zaefferer TIMETOACT Software & Consulting GmbHT: Im Mediapark 2F:
Test-Driven Development
XML Seminar: XP und XML 1 XP and XML Gregor Zeitlinger.
Cloud Computing C# Windows 7.NET Micro Framework Silverlight WCF Patterns & Practices Surface XML Refactoring WPF Software Factories Windows Server ASP.NET.
Das Build-Tool ANT ETIS SS04. ant 2 Gliederung Motivation Build-Datei build.xml Bestandteile build.xml –Properties Zusammenfassung.
syst_11_codierung_3.ppt1 Systementwicklung Continuous Integration Prof. Dr.-Ing. Axel Benz, Berlin School of Economics and Law.
FLEET MANAGEMENT Wirtschaftsinformatik Projekt WS Benny Brand | Paul Fuchs | Gui Rong Ko | Boris Oechsle | Elizaveta Olar | Thomas Oppel | Matthias.
© 2013 TravelTainment Die Buildsysteme Ant und Maven im Vergleich Seminarvortrag von Janina Clever.
Seminararbeit Release Management von Web-Systemen Minh Tran Lehrstuhl für Software Engineering RWTH Aachen
Modul 223 © 2011 coloSign Modul 223 Multi-User-Applikation objektorientiert realisieren mit VB.NET Gino Colombo Gewerblich-Industrielle Berufsschule.
, Jens Rettig1 Einsatz von Versionsverwaltungstools im ORACLE – Umfeld Dipl.-Inform. Jens Rettig
Extreme Programming IEEE-Special von Michael Glögl Gehalten am
Schwarz, Lubkoll : Javakurs LE Organisatorisches ● Wer sind wir? ● Was machen wir hier? ● Was haben wir davon? ● Was habt ihr davon?
Die Struktur einer Java-Klasse
City Yandere Carcassonne
 Präsentation transkript:

Software Design Patterns Extreme Programming (XP)

Übersicht entstanden im Smalltalk-Umfeld erstmals 1997 im C3-Projekt bei Chrysler eingesetzt erste Publikation 1999 von Kent Beck NameExtreme Programming auch bekannt alsAgile Methodik zur Softwareentwicklung TypOrganisatorisches Pattern

Was verspricht XP? Jeden Tag an etwas zu arbeiten das wirklich wichtig (und interessant) ist In heiklen Situationen nicht alleine dazustehen Programmierzeit wird optimal genutzt Sichtbarkeit von Fortschritten Lauffähige Version nach kurzer Zeit Dem ProgrammiererDem Kunde

Probleme die XP löst Terminverzögerung Projektabbruch System wird unrentabel hohe Fehlerrate Geschäftsziel falsch verstanden Geschäftsziel ändert sich falsche Funktionsfülle Personalwechsel

Was ist XP? (1) –Überblick Die vier Grundwerte von XP: Einfachheit (simplicity) Kommunikation (communication) Feedback Mut (courage)

Was ist XP? (2) - Einfachheit Kern von XP ist Einfachheit einfaches Code-Design ständiges Refactoring ständige Tests einfache Kommunikationswege Kosten für Änderungen gering

Was ist XP? (3) - Einfachheit Kosten für Änderungen bei Projekten

Was ist XP? (4) - Kommunikation Programmieren in Paaren (pair programming) Kunde ist Vor-Ort Code ist Dokumentation für Programmierer Unit-Tests sind wichtige Dokumentation des Systems

Was ist XP? (5) - Feedback kurze Releasezyklen immer vorhandenes lauffähiges Release Echtzeit-Rückmeldungen durch Vorort- Kunde Kunde bestimmt Prioritäten Programmierer hat ständige Rückmeldung über Qualität des Codes durch Unit-Tests

Was ist XP? (6) - Mut Wieso Mut? Produktivitätsverlust um 50% durch Programmieren in Paaren? Schlichtheit des Codes ist schwer zu erlernende Disziplin gemeinsamer Code

Die XP-Praktiken (1) Zusammenfassung: Die 12 XP-Praktiken Planungsspiel (planning game) kurze Releasezyklen Metapher einfaches Design Testen Refactoring

Die XP-Praktiken (2) Programmieren in Paaren (pair programming) gemeinsame Verantwortlichkeit fortlaufende Integration 40-Stunden-Woche Kunde Vor-Ort Programmierstandards

Die XP-Praktiken (3) Folgerung: Alle Praktiken stützen sich gegenseitig Kunde Vor-Ort Metapher 40-Stunden-Woche gemeinsame Verantwortlichkeit Programmierstandards Planungsspiel fortlaufende Integration kurze Releasezyklen Refactoring einfaches Design Testen Programmieren in Paaren

Refactoring (1) Was ist Refactoring? Verbesserung des Code-Designs ohne die Funktionalität zu verändern Code einfach wie möglich halten selbstdokumentierend hohe Kosten für Änderungen vermieden

Refactoring (2) Beispiel – Vor Refactoring: class Person { private String firstName; public void setFirst(String s) { this.firstName = s; }

Refactoring (3) Beispiel – bessere Namen für Argumente: class Person { private String firstName; public void setFirst(String firstName) { this.firstName = firstName; }

Refactoring (4) Beispiel – Änderung des Methodennamens class Person { private String firstName; public void setFirstName(String firstName) { this.firstName = firstName; }

Refactoring (5) Wie wird Refactoring durchgeführt? 1.Sicherstellen, dass Unit-Test für die zu ändernde Funktion existert 2.Änderungen durchführen 3.Unit-Tests ausführen 4.Schritte 2-4 wiederholen, bis Refactoring beendet

Refactoring (6) Martin Fowlers Refactoring Katalog umfasst knapp 100 Refactorings (

Refactoring (7) alle modernen IDEs enthalten elementare Unterstützung des Refactorings: Abhängigkeiten von Feldern, Methoden und Klassen finden automatisches Umbenennen von Feldern, Methoden und Klassen automatisches Umwandeln von Blöcken in Methoden (extract method)

Ant (1) Wozu ein Build-System? konstantes Refactoring gemeinsame Verantwortung wechselnde Programmierpaare unterschiedliche Konfigurationen Bestandteil des Buildsystems Cruise Control (

Ant (2) Was ist Ant? Java-basierter Ersatz für plattformspezifisches make Konfiguration über XML-Dateien (build.xml) Definition von tasks: Quellcode kompilieren, JAR-Archive erstellen, Deployment, Einbinden von Unit-Tests, CVS bedienen,... mehr als 100 Standardtasks vorhanden einfach erweiterbar (custom tasks)

Ant (3) Beispiel build.xml: <project name="Beispiel Buildfile basedir="."> <target name="compile" description="alles kompilieren"> <javac srcdir="src" destdir="build"/>

Ant (4) Ausgabe: Buildfile: D:\prj\xp\build.xml compile: [javac] Compiling 32 source files to D:\prj\xp\build BUILD SUCCESSFUL Total time: 7 minutes

JUnit (1) Was ist JUnit? Java-basiertes Framework für automatisierte Tests JUnit API bildet Basis für speziellere Test-Tools Integration in moderene IDEs vorhanden Ant-Task für JUnit verfügbar nicht geeignet für Tests von GUIs XUnit-Frameworks für weitere Sprachen verfügbar (CSUnit, utPLSQL)

JUnit (2) Beispiel: class Person { private String firstName; private String lastName; public String getFullName() { return firstName + lastName; }

JUnit (3) Beispiel-Test: import junit.framework.TestCase; class TestPerson extends TextCase { public void testGetFullName() { Person p = new Person(Mia, Meyer); assertEquals(Mia Meyer, p.getFullName()); }

JUnit (4) Integration in Ant: <junit printsummary="on" showoutput="true" haltonerror="true">

JUnit (5) Ausgabe: Buildfile: D:\prj\xp\build.xml junit: [junit] Running TestPerson [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec BUILD FAILED: D:\prj\xp\build.xml:6: Test TestPerson failed Total time: 266 milliseconds

Tools für XP weitere Test-Tools: HttpUnit ( Mock Objects ( Cactus ( JUnitPerf (

Was macht XP schwierig? (1) Keine empirischen Untersuchungen zu Kent Becks Behauptungen über Kostenentwicklung Kollektive Code-Eigentümerschaft Vernachlässigung der Tests bei Zeitknappheit Tests nicht für jeden Fall vorhanden wiederverwendbare Software ist kein Zufall Soft Skills sind wesentliches Beitrag zum Erfolg

Was macht XP schwierig? (2) Idealvorstellung vom Team: flexibel, motiviert und kooperativ XP ist einfach in den Details, aber schwierig in der Ausführung Do the simplest thing that could possibly work große Teams Unternehmenskultur Überstunden als Beweis für Engagement für die Firma lange Build-Zeiten, lange Qualitätschecks

Quellen Extreme Programming explained, Kent Beck, Addison-Wesley, 2000 Refactoring: Improving the Design of Existing Code, Martin Fowler, Addison-Wesley, 1999 Ant – The Definitive Guide, Jesse Tilly & Eric M. Burke, OReilly, 2002 Java Extreme Programming Cookbook, Eric M. Burke & Brian M. Coyner, OReilly,