Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu...

49
Herzlich Willkommen! Gleich geht‘s los !

Transcript of Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu...

Page 1: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

…speaker‘s ego still ramping up…

Herzlich Willkommen!

Waiting for listener connection …Spannend, nich‘ ? …..…flipping default template layoutGleich geht‘s los !

Page 2: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Auf dem Weg zu Unwartbarkeit

Benjamin SchmidSoftware Architect

Oliver PehnkeSoftware Engineer

und

Die besten Strategien für den sicheren Erfolg!

Page 3: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Das große Stück

Anteil Wartungskosten in Softwareprojekten

• Projektlaufzeit überdauert oft Projekt-Mitarbeiter

• Wartbarkeit entscheidend für langfristigen Projekterfolg

Wart ung & VerbesserungEnt w icklung

~67% bis >90% der Gesamtkosten

Quellen:Zelkowitz et al. (1970)

”Principles of Software Engineering and Design”Moad, J. (1990)

“Maintaining the competitive edge”

Page 4: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Die Spielregeln für Projekte

1. Das Spiel kann anhand der Prozess-Anleitung nicht gewonnen werden – Improvisation erforderlich

2. Die fixen Termine und Budgetssind zu Beginn der Spielanleitung zu entnehmen

3. Nicht die Fachlichkeit, sondern der Spielleiter entscheidet

4. Wenn‘s kein Spass macht, machs‘d was falsch!

Page 5: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Strategie #1:Visionen einbringen

Analyse- und Entscheidung

Page 6: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Analyse: Fundament der Wartbarkeit

Die Herausforderung:

• vollständig und präzise

• sind nicht einfach(auch graphisch)

Die Probleme:

• Kommunikation– Kunde, Analyst, Entwickler

haben eigene Vorstellungen

• Konkretisierungen nötig

Gute Spezifikationen

Analyseergebnis ist die Basis von Allem

Klarheit & Eindeutigkeit reduzieren die Risiken

Page 7: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Graphische Spezfikationen

Graphische Spezifizikationen mal klar & eindeutig

Page 8: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

…und viel muß es sein

Page 9: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Die Wahl der richtigen WaffenStrategie #2:

Technologien und Frameworks

Page 10: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Tech.Lösungen für nicht-technische Probleme

Einbinden von Hoffnungen

SOA„Wieder verwendbarer Baustein“

JUnit„Applikation ist getestet“

Groovy„Wir sind agil & flexibel“

MochiKit„Es ist Web 2.0 und komfortabel“

CompanyFramework.jar„ManfestierterUnternehmensstyle & -qualität“

Page 11: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

XML ready!

Page 12: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Gute Wahl:

• effizienter

• fehlerfreier

• wartbarer

Frameworks: Den Rahmen finden

Strategien für den steinigen Weg

Ungünstige Wahl:

• Einschränkungen

• Komplexität

• Technik-Selbstzweck

– StringUtils neu erfinden– Blind „den Standard“– Wahllos Hinzu

Agilitäts-Verlust > Effizienz-Gewinn ?

Page 13: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Die RekrutierungStrategie #3:

Team und Zusammenarbeit

Page 14: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Gegeneinander

WOMM Certification…in 4 easy steps

1. Compile(CVS/SVN update purely optional!)

2. Launch!

3. Test you code path(Unless code change is less than 5 linesor you are a real professional)

4. Check-in!

Welcome as WOMM solutionist!

Page 15: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Die hohe Kunst der Verschleierung

Namen und Code-Formatierung

Strategie #4:

Page 16: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Marry‘s Metamorphose

Page 17: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Falsche Fährten legen

Page 18: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Nun aber zur Preisfrage

Wenn a und b false sind, dann ist x:

a) 42! c) yb) z d) xd) x

Page 19: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Name your babies

Compiler übersetzen – Entwickler lesen!

• Lesbare Methoden, Klassen und Attributnamen– die tun was sie sagen

– konstante Begrifflichkeiten

– griffige Namen

• Namen und Bedeutung synchron halten– Namen sind Orientierung im Code und Design

• Java Coding Conventions

Page 20: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Marry‘s Metamorphose

Page 21: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

The swiss-army knife of Java: Vererbung Strategie #5:

OO-Konzepte

Page 22: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Professionelle Polymorphie in Java

Was bewirkt setVisible() eigentlich?

Page 23: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Kräftig umrühren

Extensive Nutzung von extends bewirkt

– Hohe Komplexität durch verteilte Logik innerhalb der Hierarchie

– Starke, nicht-lösbare Abhängigkeiten

– Vermischung von Zuständigkeiten

– Versteckte Verhaltens- & Semantikänderungen

Page 24: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Niemals Verantwortung abgeben

Vererbung: Delegation bzw. Event/Listener:

A hat/nutzt/verwendet BEntkoppelt, einzeln wieder verwendbar

A ist ein spezielles BEnge, integrative Bindung

Verändern bzw. Hinzufügen von Verhalten in der OO

Page 25: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Gordische SeilkünsteStrategie #6:

Module und Komponenten

Page 26: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Rolle

Intelligent Design…

AdministratorRolle Benutzer

Page 27: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Rolle

Intelligent Design…

Textfield

AdministratorRolle Benutzer

Session

Manager

Page 28: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

…und Grenzen anerkennen

Modul

Modul

ModulModul

Modul

RolleTextfield

AdministratorRolle Benutzer

Session

Manager

Page 29: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

“A good modular, componentized design means minimizing the knowledge and dependency one part of the system has to have about another.”

Unberührte Natur

Was ist eine gute Komponentaufteilung?

Wie sehen passenden Schnittstellen aus?

Modul

Modul

Modul

Page 30: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Der Weg aus der Abhängigkeit

Wegweiser für gute Modul-Einteilungen / Dekomposition

• Fachliche Ordnung(„Fax-Service“, „Kontoverwaltung“)

• Technische Schichten (GUI-, Business-Layer)

• Wenige, unidirektionale Abhängigkeiten

• Klares Gedankenmodell bzgl. Frage:Was gehört rein, was nicht?

• Erfahrung

Page 31: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Gordische Seilkünste II – Das SchwertStrategie #6½:

Schnittstellen

Page 32: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Nach AOP: VOP

Page 33: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Trennungsschmerzen

Schnittstellen einfach halten!

• Komplexität gehört in die Implementierung

• “If you’re in doubt – leave it out !”

• Bei Klassen: private, etc. nutzen

• Neue Rollen erkennen und via Refactoring frühzeitig abbilden

Schnittstellen sind Rollen mit austauschbarer Besetzung!

Veröffentliche Schnittstellen sind Vertragsbestandteileiner Klasse und nachträglich schwer zu ändern

Page 34: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Strategie #7:

Fehlerbehandlung

Mute the fire-alarm

Page 35: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Nur nicht aufgeben

Nicht-deterministischer Rechenapparat

Lautlose Fehlerkorrektur

Page 36: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Error-Handling: War was?

• Fehler immer individuell, vollständig und korrekt behandeln oder …

• … einpacken und weitergeben– In geeignete, deklarierte Exceptions

– oder komfortable RuntimeException

Dass bedeutet

– Keine Details/Fehler verschlucken

– auch wenn throws nervt (lieber: RuntimeException)

– Fehlerhandling Alternativen, z.B. try {…} finally {…}

Page 37: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Forensische Medizin

Diagnostikmöglichkeiten einbauen

• Logs sind der Schlüssel zur Laufzeitdynamik

• Nicht nur Details - auch Eckpunkte dokumentieren„Versuche Fax ID:4711 an Empfänger Y zu senden“

• Kein Sonderzeichen-Krieg; Log-Levels/Kategorien

Page 38: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Originell programmierenStrategie #8:

Java Basics

Page 39: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Bloat your code

Indirektion: Schlüssel zur OO

Masse gewinnen

Page 40: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Initialisierung mal anders

…und sei kreativ

„richtig“ Null

Page 41: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Instanzen zählen…

Page 42: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

I‘m a 3l33t h@x0r

static Variablen/Mutables

– Pitfall! public static HashSet aktuelleZahlen = Session.getSprache().berechne();

– Good style: private final static String FOO = „buh“;

(Immutable und Konstante)

synchronized

– In der der Regel: Vermeiden!Besser: java.util.concurrent verwenden

– Wenn doch, erst mal Gegenprobe: volatile bekannt?

Page 43: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Qualität ‚fühlen‘ lernen – Testen vermeidenStrategie #9:

Testen und Messen

Page 44: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Testen? Wir sind WOMM-zertifiziert!

“I don't need to test my programs. I use error-correcting RAM (ECC)”

Page 45: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Entwickler und Tests

Gute Tests zu schreiben ist anspruchsvoll• Nicht nur Pfade ablaufen, Ergebnisse prüfen

• Nebenpfade und Randbereiche bedenken

• Automatisierbar und Regressionsfähig halten

• Unbedarft gegen den Vertrag der API testen

Fehlern vorbeugen• Konstruktive Mittel (‚Fehler durch Design verhindern‘)

• Code Robustheit (Fail gracefully)

• Diagnostik (‚schnelle Fehlerlokalisierung‘)

Page 46: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Strategie #10:Die richtige Autobiographie

Dokumentation

Page 47: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Was dokumentieren

• Code (API zu 100%)

• Design (nach Entwurf)

• Commits (Nachvollziehbarkeit)

Wie dokumentieren• Nicht was, sondern die

Hintergründe (Warum, Wie)

• Sagen was der Code nicht sagt

• JavaDoc ausnutzen

– Zusammenhänge mit @link, @see

– Parameter (Nullable, Defaults) und Rückgabewerte (Typ)

…ist selbsterklärend – denk ich

Page 48: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Oliver PehnkeSoftware Engineer

Benjamin SchmidSoftware Architect

… eine Frage hätte ich da aber jetzt noch …

Page 49: Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den … · 2015-02-10 · Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg! (Benjamin Schmid,

Besuchen Sie uns!… Zertifizierung bei uns am Stand!

Vielen Dank für Ihre Aufmerksamkeit!

http://www.exxcellent.de

Quellen und Links zum ThemaThe Daily WTF http://worsethanfailure.com/Tips for maintainable Java code http://www.squarebox.co.uk/download/javatips.htmlIt Works on My Machine http://jcooney.net/archive/2007/02/01/42999.aspx Unmaintainable code http://mindprod.com/jgloss/jgloss.html