objectif extrem
TRANSCRIPT
18.04.23 © ohltec SOFTWERFT GMBH 3
objectiF eXtremobjectiF eXtrem
Vorstellung Einführung in XP TheSourceCodeIsTheDesign Code Generierung
18.04.23 © ohltec SOFTWERFT GMBH 4
VorstellungVorstellung
SOFTWERFT (http://www.softwerft.de): Lösungen für professionelle Dienstleister
SOFT:TIME ZEITLEISTUNGSMANAGEMENT automatisiert das kaufmännische Management von Dienstleistungen: vom Vertragsmanagement über die Zeiterfassung und das Genehmigungsverfahren bis hin zur Leistungsabrechnung, Rechnungsstellung und Auswertung der erzielten Ergebnisse.
Olaf Lewitz: Geschäftsführer, Head of IT & Development
18.04.23 © ohltec SOFTWERFT GMBH 5
eXtreme ProgrammingeXtreme Programming
Iterativer und adaptiver Softwareentwicklungsprozeß
Schöpfer: Kent Beck– „Listening, Testing, Coding, Designing. That's
all there is to software. Anyone who tells you different is selling something.“
Erstes Projekt: Chrysler-Lohnabrechnung (ChryslerComprehensiveCompensation)
Pragmatische positive Erfahrungen werden als extreme Praktiken zu einem Ganzen
18.04.23 © ohltec SOFTWERFT GMBH 6
eXtreme ProgrammingeXtreme Programming
Einfaches Design Coding Conventions Collective Code Ownership Pair Programming Planning Game Continuous Integration Frequent Releases Kunde im Team Gnadenloses Überarbeiten (Refactoring) Design durch Tests System Metapher 40 Stunden Woche
18.04.23 © ohltec SOFTWERFT GMBH 7
Einfaches DesignEinfaches Design
Do the simplest thing that could possibly work. Kurz gesagt: Entwickle niemals mehr, als für das
im Moment anstehende Feature notwendig ist. Daraus ergibt sich ein iterativ wachsendes
Design, das mit den implementierten Funktionen und deren Anforderungen wächst, nicht mit den Phantasien der Entwickler.
Ausnahme: Datenbank-Layout, Architektur. Bedingung: Refactoring. Mandatorisch.
18.04.23 © ohltec SOFTWERFT GMBH 8
Coding ConventionsCoding Conventions
Bedingung für Collective Code Ownership. Bedingung für Teamarbeit, Produktivität
und PragmaticProgramming. Mehr als mandatorisch. Durch Codegenerierung zu unterstützen. Beispiele:
– Präfixe und Postfixe– Sprache der Bezeichner, Groß- und
Kleinschreibung– Codelayout– Alles, auf was man sich einigt, sollte fixiert sein!
18.04.23 © ohltec SOFTWERFT GMBH 9
Collective Code OwnershipCollective Code Ownership
Jeder darf jede Codezeile in jedem Modul ändern. Ohne zu fragen. Das klingt viel revolutionärer, als es ist - vor allem für die Entwickler.
Natürlich hat jeder die volle Verantwortung für den von ihm geschriebenen Code - das Config-Management verrät ihn...
Bedingung für Refactoring. Absolut mandatorisch. Folge: Teamstolz statt Programmiererstolz.
Funktioniert erstaunlich schnell.
18.04.23 © ohltec SOFTWERFT GMBH 10
Pair ProgrammingPair Programming
Laut Buch wird jede Zeile Produktionscode von zwei Leuten gemeinsam programmiert.
Erstaunlich (?) produktiv, wenn‘s funktioniert. Die Charaktere müssen passen.
Vorteile: Gute Einarbeitung von neuen, wenig Know-How-Gefälle, wenige Bugs, gute Tests, gute Akzeptanz, deutlich gesteigerte Produktivität.
Nachteil: Domänen- und technisches Wissen müssen gleichmäßig verteilt sein.
Optional.
18.04.23 © ohltec SOFTWERFT GMBH 11
Planning GamePlanning Game
Planung der anstehenden Tasks zu Beginn der Iteration.
Festlegung der Prioritäten durch Kunden. Aufwandsschätzung durch Entwickler. Idealerweise mit Karteikarten. Macht XP aus.
18.04.23 © ohltec SOFTWERFT GMBH 12
Continuous IntegrationContinuous Integration
Der komplette Code des Projektes wird ständig (mindestens täglich) integriert und getestet.
Kaum zusätzlicher Overhead für die Integration von Komponenten.
Fehler treten sehr früh zutage, die Ursache ist leicht zu finden.
Vollständiger Test aller Teile des Systems.
Macht XP aus.
18.04.23 © ohltec SOFTWERFT GMBH 13
Frequent ReleasesFrequent Releases
Es werden häufig (in jeder Iteration, also alle ca. 2-4 Wochen) Releases an den Kunden gegeben.
Kurzfristiges Feedback. Leichte Adaptierbarkeit von
Änderungswünschen. Wenig Entwicklung „in die falsche
Richtung“. Macht XP aus.
18.04.23 © ohltec SOFTWERFT GMBH 14
Kunde im TeamKunde im Team
Ein Mitarbeiter des Kunden ist Mitglied des Teams.
Er arbeitet im selben Raum, steht jederzeit für Fragen der Entwickler zur Verfügung.
Spezifikation erfolgt en detail während der Entwicklung mit dem Anwender.
Idealvorstellung, optional.
18.04.23 © ohltec SOFTWERFT GMBH 15
Gnadenloses Überarbeiten Gnadenloses Überarbeiten (Refactoring)(Refactoring)
Nach der Implementierung jedes neuen Features muß das Design insgesamt soweit wie möglich vereinfacht werden.
Danach!! Hervorragend behandelt durch Fowler.
Stichwort: Eingeschlagenes Fenster... Absolut mandatorisch.
18.04.23 © ohltec SOFTWERFT GMBH 16
Design durch TestsDesign durch Tests
Code a little, test a little... Der Unit Test definiert die Schnittstelle einer Klasse.
Anwendungsfälle werden mit Grenz- und Problemfällen formuliert und dann "erfüllt".
Idealer Weise gibt es keine Zeile ungetesteten Code.
Problem: Datenbanken (Testdaten) Mandatorisch.
18.04.23 © ohltec SOFTWERFT GMBH 17
System MetapherSystem Metapher
Eine Metapher, die das System als ganzes treffend beschreibt.
Meist schwer zu finden. Optional.
18.04.23 © ohltec SOFTWERFT GMBH 19
XP Integration IXP Integration I
Einfaches Design– Hart.– Architektur und Datenbanklayout müssen stehen.– Frameworkentwicklung geht erstaunlich gut.
Coding Conventions– Bedingung: Kooperation und Pragmatismus.– Laufend erweitern!– Erbsenzähler im Team hilft!
Collective Code Ownership– Einfacher als es scheint, Teamerfolg zahlt sich schnell
aus.– Unit Tests beachten!
Pair Programming– Charaktere müssen zueinander passen.
18.04.23 © ohltec SOFTWERFT GMBH 20
XP Integration IIXP Integration II
Planning Game– Workflow und Modus müssen eingewöhnt
werden.– Zeitschätzungen üben und dokumentieren!
Continuous Integration– Automatisierung notwendig
Frequent Releases– Automatisierung notwendig
Kunde im Team– Nicht bei jedem Kunden möglich– Bei Standardsoftware durch
Produktmanagement zu ersetzen.
18.04.23 © ohltec SOFTWERFT GMBH 21
XP Integration IIIXP Integration III
Gnadenloses Überarbeiten (Refactoring)– Hoher Spaßfaktor– Man muß sich immer wieder die Zeit nehmen
Design durch Tests– Selbstdisziplin– Bugs gleich in den Test!
System Metapher– Ich habe noch keine gute gesehen.
40 Stunden Woche– Stellt sich wohl von selbst ein, wenn alles
andere stimmt...
18.04.23 © ohltec SOFTWERFT GMBH 22
Integration DetailsIntegration Details
12 Entwickler Beginn der Einführungsphase im
November Reihenfolge:
– Coding Conventions– Unit Test Framework– Iterationsplan und –workflow– Integrationsumgebung (Build Management)
18.04.23 © ohltec SOFTWERFT GMBH 23
LiteraturLiteratur
http://www.c2.com/cgi/wiki?ExtremeProgrammingRoadmap http://www.extremeprogramming.org/ http://www.xprogramming.com/
Kent Beck, Extreme Programming Explained: Embrace Change. ISBN: 0201616416 (dt. 3827317096 )
MartinFowler, Refactoring: Improving the Design of Existing Code. ISBN: 0201485672 (dt. 3827316308)
Andrew Hunt, David Thomas, The Pragmatic Programmer: From Journeyman to Master. ISBN: 020161622X
18.04.23 © ohltec SOFTWERFT GMBH 24
TheSourceCodeIsTheDesignTheSourceCodeIsTheDesign
Grobdesign in UML– Wichtige, zentrale Klassen
Schnittstellendesign im UnitTest Klassendiagramme sind die Ausnahme objectiF wird genutzt für
– Codegenerierung– Aktivitätsdiagramme (Workflowdefinition)– Sequenzdiagramme für komplexe
Zusammenhänge
18.04.23 © ohltec SOFTWERFT GMBH 25
Design durch Test oder UML?Design durch Test oder UML?
objectiF vs. xUnit Vorteil objectiF
– Gut kommunizierbar an Nicht-Entwickler– Übersicht über Zusammenhänge– Dokumentation für Einsteiger
Vorteil UnitTest– Schnittstellen werden vom Benutzer aus
entworfen– Erfolgserlebnis, wenn Tests erfüllt sind– Für jede Komponente existiert sofort eine
Beispielanwendung– Qualitätssicherung passiert quasi vor der
Entwicklung
KONTAKT
ohltec SOFTWERFT GMBHNotkestraße 7D- 22607 HamburgFon: +49 (0)40 - 31 99 1 -0Fax: +49 (0)40 - 31 99 1 –100