SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
Team Clean Coding:
Gemeinsam besser programmieren
iks Thementag
„Mehr Softwarequalität – Ausgewählte Themen“
12.11.2013

Autor:
Dr. Reik Oberrath
Team Clean Coding: Gemeinsam besser programmieren

Seite 2 / 59
Was ist das Ziel der Softwareentwicklung?
Ein Produkt, das
den Auftraggeber
zufrieden stellt!
Und einen zuverlässigen, effektiven Herstellungsprozess!
Was ist wichtiger?

Das Produkt
(Finales Ziel mit
Selbstzweck)

Der Entwicklungsprozess
(Zwischenziel, nur
Mittel zum Zweck)

Team Clean Coding: Gemeinsam besser programmieren

Seite 6 / 59
Funktionalität
Zuverlässigkeit

Usability

Prüfbarkeit

extern

Sicherheit

Performanz
Installierbarkeit

Änderbarkeit

Architektur
Architektur
Design

Qualität

Wartbarkeit
Testbarkeit

Technologie
Code

Design

Code
Team Clean Coding: Gemeinsam besser programmieren
Quelle : http://www.dadalos-d.org/frieden/images/eisberg-modell.jpg

Technologie
intern
Seite 7 / 59
Was ist wichtiger?
Produkt und Prozess
sind gleich wichtig
extern

Das Produkt
(Finales Ziel mit
Selbstzweck)

Qualität

Der Entwicklungsprozess
(Zwischenziel, nur
Mittel zum Zweck)
intern
Team Clean Coding: Gemeinsam besser programmieren

Seite 8 / 59
Was beeinflusst den Entwicklungsprozess?

Der Faktor
„Mensch“

Tools
&
Technologien

Architektur und
Implementation
Agenda
Einleitung
Die Clean-Code-Developer-Bewegung
Meinungen zu Clean-Code
Das Team Clean Coding (TCC)
TCC-Rahmenbedingungen
Take-Home-Message

Team Clean Coding: Gemeinsam besser programmieren

Seite 10 / 59
Was heißt clean?
Def. 1:

Clean ist alles, was intuitiv verständlich ist, also
(Quellcode-) Dokumente, Datenstrukturen,
Konzepte, Regeln, Verfahren ....

Def. 2:

Intuitiv verständlich ist, was mit wenig Spezialwissen
in kurzer Zeit richtig verstanden wird.

Def. 3:

Clean ist alles, was effizient ist, also alles, was
die Softwareentwicklung beschleunigt.

Team Clean Coding: Gemeinsam besser programmieren

Seite 11 / 59
Kernaussagen der
Clean-Code-Developer-Bewegung
Disziplin
(„Professionalität“)

Ständige Selbstkontrolle („Bewusstsein“)
durch konsequente Anwendung („gegen
widrige Umstände“) des inneren Wertesystems („Prinzipien“).

Wertesystem

Das Buch „Clean Code“ ist wert, als
allgemeingültiges Wertesystem anerkannt
zu werden.

Programmieralltag

Das CCD-Grade-System hilft, das innere
Wertesystem aktiv einzusetzen und die
mentale CCD-Einstellung zu verinnerlichen.

www.clean-code-developer.de
Team Clean Coding: Gemeinsam besser programmieren

Seite 13 / 59
Das

Praktiken

Prinzipien
Prinzipien

Schwarz

- Grade-System:
Rot

Orange

Gelb

Grün

Blau

 Don´t Repeat
Yourself (DRY),
 Keep it simple,
stupid (KISS)
 Vorsicht vor
Optimierungen
(VvO)
 Favour
Composition over
Inheritance (FCoI)

 Single Level of
Abstraction
(SLA)
 Single
Responsibility
Principle (SRP)
 Separation of
Concerns (SoC)
 Source Code
Konventionen

 Interface
Segregation
Principle
 Dependency
Inversion Principle
 Liskov
Substitution
Principle
 Principle of
Least
Astonishment
 Information
Hiding Principle

 Open Closed
Principle
 Tell, don´t ask
 Law of Demeter

 Entwurf und
Implementation
überlappen nicht
 Implementation spiegelt
Entwurf
 You Ain´t
Gonna Need It
(YAGNI)

 Die Pfadfinderregel
beachten
 Root Cause
Analysis
 Ein Versionskontrollsystem einsetzen
 Einfache Refaktorisierungsmuster anwenden (ER)
 Täglich reflektieren

 Issue Tracking
 Automatisierte
Integrationstests
 Lesen, Lesen,
Lesen (LLL)
 Reviews

 Automatisierte
Unit Tests
 Mockups
(Testattrappen)
 Code Coverage
Analyse
 Teilnahme an
Fachveranstaltungen
 Komplexe Refaktorisierungen

 Continuous
Integration I
 Statische
Codeanalyse
(Metriken)
 Inversion of
Control Container
 Erfahrung
weitergeben
 Messen von
Fehlern

www.iks-gmbh.com

 Continuous
Integration II
 Iterative
Entwicklung
 Komponentenorientierung
 Test first

Weiss
Agenda
Einleitung
Die Clean-Code-Developer-Bewegung
Meinungen zu Clean-Code
Das Team Clean Coding (TCC)
TCC-Rahmenbedingungen
Take-Home-Message

Team Clean Coding: Gemeinsam besser programmieren

Seite 15 / 59
www.iks-gmbh.com

Clean-Code ist gut, aber praxisfern – eher etwas für Ästheten!
Clean-Code ist gut, man kann es aber leicht übertreiben!
www.iks-gmbh.com

Ein Organismus verträgt nur ein begrenztes Maß an Schadstoffen.
Durch kontinuierliche Arbeit wird dieses Maß klein gehalten.
www.iks-gmbh.com

Clean-Code ist was für Spießer – wichtig ist nur, dass es läuft!
Wichtig sind Funktionsfähigkeit, Stabilität, Wartbarkeit und Erweiterbarkeit.
Dazu braucht man keinen Clean-Code!
Sauberer Code – Hohe Testabdeckung

Produktionscode

Testabdeckung

Testcode

Schmutz akkumuliert von alleine.
Schmutz stellt eine reale Gefahr für die Entwicklung dar.

Team Clean Coding: Gemeinsam besser programmieren

Seite 19 / 59
Unter Zeitdruck wird dann sowieso wieder „Quick & Dirty“ gearbeitet! / 59
Team Clean Coding: Gemeinsam besser programmieren
Seite 20
Kosten

Qualität
Termine
Kosten

Termine
Qualität

CCD-Professionalität
leben und seinen Prinzipien
Team bleiben.
treu Clean Coding: Gemeinsam besser programmieren

Technische Schulden
bewusst eingehen und
Seite 21 /
bewusst wieder begleichen.59
Clean Code kostet zusätzliche Zeit
in der Entwicklung!

Clean Code spart Zeit
in der Wartung!
Kritikalität

Langlebigkeit
Team Clean Coding: Gemeinsam besser programmieren

Seite 23 / 59
Agenda
Einleitung
Die Clean-Code-Developer-Bewegung
Meinungen zu Clean-Code
Das Team Clean Coding (TCC)
TCC-Rahmenbedingungen
Take-Home-Message

Team Clean Coding: Gemeinsam besser programmieren

Seite 24 / 59
Zusammenhang zwischen CCD und TCC
Prinzipien,
Praktiken,
Selbstkontrolle

Teamarbeit,
Kommunikation,
Teamkontrolle

Unterschiede:

Es gibt zusätzliche Regeln, die das Teamplay betreffen
z.B. 1€-Regel oder Code-Tagging
Appell an die Vernunft der Entwickler zu schwach,
eine soziale Form von Kontrolle ist nötig

Team Clean Coding: Gemeinsam besser programmieren

Seite 25 / 59
Das Team Clean Coding
Warum TCC?
Gute Vorsätze schwinden schnell  Verrottung
Unterschiedliche Meinungen  Wildwuchs
Mittel gegen die „Durchsetzungsstarken“
(Die Stillen sind nicht automatisch schlechter)

Eine soziale, wechselseitige Kontrolle auf Augenhöhe
Motivation durch wortlose Anerkennung

Team Clean Coding: Gemeinsam besser programmieren

Seite 26 / 59
Das Team Clean Coding: Übersicht
Konstitution
Judikative

Kontrolle

Def. der
Legislative

Initialisierung

Grundgesetz

Ordnungsamt

Executive

Legislative

Anwendung

Parlament

Optimierung
Team Clean Coding: Gemeinsam besser programmieren

Seite 27 / 59
TCC-Übersicht

Initialisierung
Konstitution
Judikative

Def. der
Legislative

Grundgesetz

Ordnungsamt

Executive

Legislative
Parlament

Team Clean Coding: Gemeinsam besser programmieren

Seite 28 / 59
TCC: „Verfassung/Konstitution“
Notwendiger Basis-Konsens
§1.1

ALLE Teammitglieder (inkl. Projektleitung) verpflichten sich,
Regeln und Prozesse anzuerkennen, die für ALLE gleichermaßen bindend sind.

§1.2

Diese Regeln und Prozesse können bei Bedarf jederzeit
angepasst werden.

§2

Zuerst wird ein Verfahren zur Entscheidungsfindung festgelegt
(Definition der „Legislative“).

§3

Die „Legislative“ legt einen Satz von Basisregeln fest
(das „Grundgesetz“).

Team Clean Coding: Gemeinsam besser programmieren

Seite 29 / 59
TCC: „Verfassung/Legislative“
Methoden zur Entscheidungsfindung

Vorgabe durch Projektleiter / Chefentwickler / Architekt
Mehrheitsbeschluss
Minimierung des durchschn. Widerstands
– Vetoabfrage
– Konsensrunde
– Thumb-Voting
„Konsens bedeutet die Übereinstimmung von Menschen hinsichtlich einer

Thematik ohne verdeckten oder offenen Widerspruch.“ - Wikipedia
Team Clean Coding: Gemeinsam besser programmieren

Seite 30 / 59
TCC: „Verfassung/Grundgesetz“
Basisregeln (Projekt-unspezifische Regeln)
§3.1 Wie wollen wir Information festhalten? → Dokumentation
§3.2 Was bedeutet für uns „fertig“?

Team Clean Coding: Gemeinsam besser programmieren

→ Definition Of Done

Seite 31 / 59
Ein Anwendungsfall läuft
Die guten Anwendungsfälle laufen
Fehlerfälle wurden untersucht
Alle Anwendungsfälle laufen
Unit-Tests
Integrationstests
Systemtests
Automatische Code-Analysen (Metriken)
Menschliche Code-Analysen (Review)
Team Clean Coding: Gemeinsam besser programmieren

Seite 32 / 59
TCC: „Verfassung/Grundgesetz“
Projekt-unspezifische Grundregeln
§3.1 Wie wollen wir Information festhalten?

→ Dokumentation

§3.2 Was bedeutet für uns „fertig“?

→ Definition Of Done

§3.3 Was heißt für uns „clean“?

→ CCD-Regeln

§3.4 Wie gehen wir mit unfertigem Code um? → Code Tagging System
§3.5 Wie ist unser Umgang mit „fremdem Eigentum“?

Team Clean Coding: Gemeinsam besser programmieren

Seite 33 / 59
Initialisierung

TCC-Übersicht

Basiskonsens
Konstitution
Judikative

Grundgesetz

Ordnungsamt

Projektunspezifische
Regeln

Executive

Legislative

Team Clean Coding: Gemeinsam besser programmieren
Optimierung

Def. der
Legislative

Methode der
Entscheidungsfindung

Parlament

Anwendung
Seite 34 / 59
TCC: „Exekutive“
Programmieralltag (Anforderungen analysieren,
implementieren, Qualität sichern, …)
CCD- und TCC-Regeln im Bewusstsein halten

Seinem Berufsethos auch unter widrigen Umständen treu bleiben

Team Clean Coding: Gemeinsam besser programmieren

Seite 35 / 59
TCC: „Parlament/Legislative“
Forum für Informationsaustausch und Diskussionen sowie
Verabschiedung weiterer (Projekt-spezifischer) Regeln
Daily Standups (Scrum-ähnlich)

Regelmäßige Team-Reviews
Retrospektiven
Pair-Programming

Coding-Notes kommunizieren (z.B. E-Mail an Team-Verteiler)

Team Clean Coding: Gemeinsam besser programmieren

Seite 36 / 59
TCC-Übersicht

Kontrolle

Initialisierung

Basiskonsens
Konstitution
Judikative

Methode der
Entscheidungsfindung

Def. der
Legislative

Grundgesetz

Ordnungsamt

Projektunspezifische
Regeln

Executive

Legislative
Parlament

Projektspezifische
Regeln

Diskussionsforum

Team Clean Coding: Gemeinsam besser programmieren
Optimierung

Projektalltag

Anwendung
Seite 37 / 59
TCC: „Ordnungsamt“
4

- Review

Am Ende der Entwicklung eines Software-Teils sucht der Autor nach
einem Teammitglied, das als Reviewer dient. Dieser prüft:
Funktionelle Korrektheit
DoD erfüllt, z.B.
– Ausreichende Testabdeckung
– Einhaltung der abgestimmten Clean-Code-Maßnahmen
FIXME- / TODO-Einträge (Code Tagging System)

Erst nach dem OK des Reviewers gilt der Teil offiziell als FERTIG.

Team Clean Coding: Gemeinsam besser programmieren

Seite 38 / 59
TCC: „Judikative“
Die 1€-Regel
Ein Euro wird eingezogen bei Vergehen gegen zuvor abgestimmte
Regeln, deren Verstoß von der „Legislativen“ als „strafbar“ gewertet wurde.
Beispiele:






CI-Build brechen und nach Hause gehen,
Tests brechen und sich nicht um deren Behebung bemühen,
Backend-Änderungen ohne Client-Anpassung,
Domain-Änderungen ohne DB-Skript-Anpassung,
etc.

Team Clean Coding: Gemeinsam besser programmieren

Seite 39 / 59
TCC-Übersicht

Kontrolle

Konstitution

1€-Regeln
Judikative

4 Review

Initialisierung

Basiskonsens

Methode der
Entscheidungsfindung

Def. der
Legislative

Grundgesetz

Ordnungsamt

Projektunspezifische
Regeln

Executive

Legislative
Parlament

Projektspezifische
Regeln

Diskussionsforum

Team Clean Coding: Gemeinsam besser programmieren
Optimierung

Projektalltag

Anwendung
Seite 40 / 59
Agenda
Einleitung
Die Clean-Code-Developer-Bewegung
Meinungen zu Clean-Code
Das Team Clean Coding (TCC)
TCC-Rahmenbedingungen
Take-Home-Message

Team Clean Coding: Gemeinsam besser programmieren

Seite 41 / 59
TCC-Rahmenbedingungen
Teamstimmung beachten und fördern

Haufen

Gruppe

Team Clean Coding: Gemeinsam besser programmieren

Team

Seite 42 / 59
TCC-Rahmenbedingungen
Teamstimmung beachten und fördern


Bewusste Teamzusammenstellung



Retrospektive-Meetings / gemeinsames Essengehen



Bei Bedarf Teamzusammenstellung ändern



Organisationsstruktur des Teams ändern
•

Hierarchisch

•

Parlamentarisch

•

Selbstorganisiert

Team Clean Coding: Gemeinsam besser programmieren

Seite 43 / 59
TCC-Rahmenbedingungen
Teamstimmung beachten und fördern
Zeit für Kommunikation im Team einplanen
 Tägliche Standup-Meetings
 Wöchentliche Code-Review-Meetings
 Monatliche Retrospektive-Meetings

Team Clean Coding: Gemeinsam besser programmieren

Seite 44 / 59
TCC-Rahmenbedingungen
Teamstimmung beachten und fördern
Zeit für Kommunikation im Team einplanen
Fortbildung der Teammitglieder unterstützen

Akzeptanz signalisieren und Infrastruktur bereitstellen

Team Clean Coding: Gemeinsam besser programmieren

Seite 45 / 59
Agenda
Einleitung
Die Clean-Code-Developer-Bewegung
Meinungen zu Clean-Code
Das Team Clean Coding (TCC)
TCC-Rahmenbedingungen
Take-Home-Message

Team Clean Coding: Gemeinsam besser programmieren

Seite 46 / 59
Rückblick

Rückblick

Was ist wichtiger?
Produkt und Prozess
sind gleich wichtig
extern

Das Produkt
(Finales Ziel mit
Selbstzweck)

Qualität

Der Entwicklungsprozess
(Zwischenziel, nur
Mittel zum Zweck)

intern

Rückblick

Team Clean Coding: Gemeinsam besser programmieren

Rückblick
Seite 47 / 59
Rückblick

Rückblick
Kosten

Qualität
Termine
Kosten

Termine
Qualität

CCD-Professionalität
leben und seinen Prinzipien
Team bleiben.
treu Clean Coding: Gemeinsam besser programmieren

Rückblick

Technische Schulden
bewusst eingehen und
Seite 48 /
bewusst wieder begleichen.59

Rückblick
Rückblick

Sauberer Code – Hohe Testabdeckung

Rückblick

Produktionscode

Testabdeckung

Testcode

Gegen Schmutz muss regelmäßig gearbeitet werden!

Rückblick

Team Clean Coding: Gemeinsam besser programmieren

Rückblick
Seite 49 / 59
Take-Home-Message
Herstellungsprozess und Produkt sind gleich wichtig –
technische Schulden müssen zurückgezahlt werden!

Team Clean Coding: Gemeinsam besser programmieren

Seite 50 / 59
Rückblick
Das

Praktiken
Praktiken

Prinzipien
Prinzipien

Schwarz

Rückblick
- Grade-System:

Rot

Orange

Gelb

Grün

Blau

 Don´t Repeat
Yourself (DRY),
 Keep it simple,
stupid (KISS)
 Vorsicht vor
Optimierungen
(VvO)
 Favour
Composition over
Inheritance (FCoI)

 Single Level of
Abstraction
(SLA)
 Single
Responsibility
Principle (SRP)
 Separation of
Concerns (SoC)
 Source Code
Konventionen

 Interface
Segregation
Principle
 Dependency
Inversion Principle
 Liskov
Substitution
Principle
 Principle of
Least
Astonishment
 Information
Hiding Principle

 Open Closed
Principle
 Tell, don´t ask
 Law of Demeter

 Entwurf und
Implementation
überlappen nicht
 Implementation spiegelt
Entwurf
 You Ain´t
Gonna Need It
(YAGNI)

 Die Pfadfinderregel
beachten
 Root Cause
Analysis
 Ein Versionskontrollsystem einsetzen
 Einfache Refaktorisierungsmuster anwenden (ER)
 Täglich reflektieren

 Issue Tracking
 Automatisierte
Integrationstests
 Lesen, Lesen,
Lesen (LLL)
 Reviews

 Automatisierte
Unit Tests
 Mockups
(Testattrappen)
 Code Coverage
Analyse
 Teilnahme an
Fachveranstaltungen
 Komplexe Refaktorisierungen

 Continuous
Integration I
 Statische
Codeanalyse
(Metriken)
 Inversion of
Control Container
 Erfahrung
weitergeben
 Messen von
Fehlern

www.iks-gmbh.com

Rückblick

Team Clean Coding: Gemeinsam besser programmieren

Weiss

 Continuous
Integration II
 Iterative
Entwicklung
 Komponentenorientierung
 Test first

Rückblick
Seite 51 / 59
Take-Home-Message
Herstellungsprozess und Produkt sind gleich wichtig –
technische Schulden müssen zurückgezahlt werden!
Die CCD-Regeln sind bewährte Mittel zur Steigerung von
Qualität und Effizienz

Team Clean Coding: Gemeinsam besser programmieren

Seite 52 / 59
Rückblick

Rückblick

TCC-Übersicht

Kontrolle

Konstitution

1€-Regeln
Judikative

4 Review

Methode der
Entscheidungsfindung

Def. der
Legislative

Grundgesetz

Ordnungsamt

Projektunspezifische
Regeln

Executive

Legislative
Parlament

Projektspezifische
Regeln

Diskussionsforum

Team Clean Coding: Gemeinsam besser programmieren
Optimierung

Rückblick

Initialisierung

Basiskonsens

Projektalltag

Anwendung
Seite 53 / 59

Rückblick
Rückblick

Rückblick

Das Team Clean Coding
Warum TCC?
Gute Vorsätze schwinden schnell  Verrottung
Unterschiedliche Meinungen  Wildwuchs
Mittel gegen die „Durchsetzungsstarken“
(Die Stillen sind nicht automatisch schlechter)

Wechselseitige Kontrolle auf Augenhöhe
Motivation durch wortlose Anerkennung

Rückblick

Team Clean Coding: Gemeinsam besser programmieren

Rückblick
Seite 54 / 59
Take-Home-Message
Herstellungsprozess und Produkt sind gleich wichtig –
technische Schulden müssen zurückgezahlt werden!
Die CCD-Regeln sind bewährte Mittel zur Steigerung von
Qualität und Effizienz
TCC fördert die Kommunikation im Team und die konsequente
Anwendung der CCD-Regeln
Rahmenbedingungen für TCC müssen stimmen


Teamstimmung beachten und fördern



Zeit für Kommunikation im Team einplanen



Fortbildung der Teammitglieder unterstützen



Akzeptanz signalisieren und Infrastruktur bereitstellen

Team Clean Coding: Gemeinsam besser programmieren

Seite 55 / 59
Take-Home-Message
CCD und TCC führen zu Qualität und Effizienz,
benötigen aber Unterstützung aus dem Umfeld!

Team Clean Coding: Gemeinsam besser programmieren

Seite 56 / 59
Weiterführende Literatur
Clean Code, Robert C. Martin, Prentice Hall, 2008
The Clean Coder, Robert C. Martin, Prentice Hall, 2011
Clean Coder: Verhaltensregeln für professionelle Programmierer,
Robert C. Martin, Addison-Wesley, 2011
The Pragmatic Programmer, Addison-Wesley, 1999

Soft Skills für Softwareentwickler, dpunkt-Verlag, 2010
http://www.clean-code-developer.de
http://de.wikipedia.org/wiki/Clean_Code

http://www.clean-code.info

Team Clean Coding: Gemeinsam besser programmieren

Seite 57 / 59
Bildernachweise
Die in diesem Vortrag verwendeten Bilder stammen von folgenden Quellen:
Folie 3:

http://www.flickr.com

Folie 4:

http://www.flickr.com/photos/23313526@N07/4948442428/sizes/l/in/photostream/
http://www.flickr.com/photos/29747502@N03/2784238062/sizes/l/in/photostream/

Folie 5:

http://www.flickr.com/photos/buridansesel/6163446452/sizes/l/in/photostream/

Folie 7,8,9:

http://officeimg.vo.msecnd.net/en-us/images/MB900443111.jpg
http://officeimg.vo.msecnd.net/en-us/images/MB900443251.jpg
http://www.dadalos-d.org/frieden/images/eisberg-modell.jpg

Folie 11:

http://www.hborchert.de/medihumor.htm
http://hdfreewallpaper.info/fishy-ubuntu-1920-x-1080.html

Folie 12:

http://photos.signonsandiego.com/album55/mud02

Folie 16:

http://freepostermaker.com/uploads/saved_posters/free-poster-dnxeoi88fg-WILLIES-WASH.jpg

Folie 28:

http://www.flickr.com/photos/oskay/437341603/

Team Clean Coding: Gemeinsam besser programmieren

Seite 58 / 59
Weitere Bildernachweise
1.

Die meisten nicht separat aufgeführten Icons stammen von
http://office.microsoft.com/en-us/images und http://office.microsoft.com/de-de/images.

2.

Andere nicht aufgeführte Bilder (z.B. auf Folie 17) wurden von den Autoren selbst erstellt.

3.

CCD-Logo http://www.clean-code-developer.de

4.

Wasserrad http://www.wasserrad-drews.de/

Team Clean Coding: Gemeinsam besser programmieren

Seite 59 / 59
Fragen?
www.iks-gmbh.com

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (14)

Softwarequalität Entwicklung - Test - Wartung
Softwarequalität Entwicklung -  Test - WartungSoftwarequalität Entwicklung -  Test - Wartung
Softwarequalität Entwicklung - Test - Wartung
 
Agile Methoden in der Medizintechnik - Der konsequente Weg zur Marktführersc...
Agile Methoden in der Medizintechnik - Der konsequente Weg zur Marktführersc...Agile Methoden in der Medizintechnik - Der konsequente Weg zur Marktführersc...
Agile Methoden in der Medizintechnik - Der konsequente Weg zur Marktführersc...
 
OOP2017: Scrum statt Murcs - Agile Software-Entwicklung
OOP2017: Scrum statt Murcs - Agile Software-EntwicklungOOP2017: Scrum statt Murcs - Agile Software-Entwicklung
OOP2017: Scrum statt Murcs - Agile Software-Entwicklung
 
DWX2016: Der perfekte Mitarbeiter - vom T-Shape zum Team-Shape
DWX2016: Der perfekte Mitarbeiter - vom T-Shape zum Team-ShapeDWX2016: Der perfekte Mitarbeiter - vom T-Shape zum Team-Shape
DWX2016: Der perfekte Mitarbeiter - vom T-Shape zum Team-Shape
 
Datenanalysen in der Softwareentwicklung mit Software Analytics
Datenanalysen in der Softwareentwicklung mit Software AnalyticsDatenanalysen in der Softwareentwicklung mit Software Analytics
Datenanalysen in der Softwareentwicklung mit Software Analytics
 
Agile intro-90min (2007)
Agile intro-90min (2007)Agile intro-90min (2007)
Agile intro-90min (2007)
 
OOP 2011: Bitter Scrum Chris Rupp Thomas Mödl
OOP 2011: Bitter Scrum Chris Rupp Thomas MödlOOP 2011: Bitter Scrum Chris Rupp Thomas Mödl
OOP 2011: Bitter Scrum Chris Rupp Thomas Mödl
 
Testen mit, durch und in Scrum
Testen mit, durch und in ScrumTesten mit, durch und in Scrum
Testen mit, durch und in Scrum
 
Agilität mit Scrum - Überblick
Agilität mit Scrum - ÜberblickAgilität mit Scrum - Überblick
Agilität mit Scrum - Überblick
 
Der Technical Debt Manager
Der Technical Debt ManagerDer Technical Debt Manager
Der Technical Debt Manager
 
Mehr Softwarequalität: TeamCleanCoding
Mehr Softwarequalität: TeamCleanCodingMehr Softwarequalität: TeamCleanCoding
Mehr Softwarequalität: TeamCleanCoding
 
Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)
Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)
Agile Methoden in der Medizintechnik - Über die Software hinaus (CONSANIS)
 
Agiles Testen - Überblick
Agiles Testen - ÜberblickAgiles Testen - Überblick
Agiles Testen - Überblick
 
Die 7 Wege zum Clean Code
Die 7 Wege zum Clean CodeDie 7 Wege zum Clean Code
Die 7 Wege zum Clean Code
 

Andere mochten auch

Service goes green
Service goes greenService goes green
Service goes green
Dirk Zimmermann
 

Andere mochten auch (20)

Noticias Arbeitskopie 16 2 2
Noticias   Arbeitskopie   16 2    2Noticias   Arbeitskopie   16 2    2
Noticias Arbeitskopie 16 2 2
 
Softwarequalität - Metriken
Softwarequalität - MetrikenSoftwarequalität - Metriken
Softwarequalität - Metriken
 
Mehr Softwarequalität: Softwarequalität ist steuerbar
Mehr Softwarequalität: Softwarequalität ist steuerbarMehr Softwarequalität: Softwarequalität ist steuerbar
Mehr Softwarequalität: Softwarequalität ist steuerbar
 
Mehr Softwarequalität: Qualität als Treiber (IKS-Thementag: 05.05.2015)
Mehr Softwarequalität: Qualität als Treiber (IKS-Thementag: 05.05.2015)Mehr Softwarequalität: Qualität als Treiber (IKS-Thementag: 05.05.2015)
Mehr Softwarequalität: Qualität als Treiber (IKS-Thementag: 05.05.2015)
 
Einfuehrung in mongo_db_iks
Einfuehrung in mongo_db_iksEinfuehrung in mongo_db_iks
Einfuehrung in mongo_db_iks
 
"RCP-Hilfe-System" - Ein Artikel im Eclipse Magazin 6/2010
"RCP-Hilfe-System" - Ein Artikel im Eclipse Magazin 6/2010"RCP-Hilfe-System" - Ein Artikel im Eclipse Magazin 6/2010
"RCP-Hilfe-System" - Ein Artikel im Eclipse Magazin 6/2010
 
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
iks auf der Jax 2010: Provisioning unter OSGi für Test und Betrieb
 
Mehr Softwarequalität: Technische Schulden (IKS-Thementag: 05.05.2015)
Mehr Softwarequalität: Technische Schulden (IKS-Thementag: 05.05.2015)Mehr Softwarequalität: Technische Schulden (IKS-Thementag: 05.05.2015)
Mehr Softwarequalität: Technische Schulden (IKS-Thementag: 05.05.2015)
 
Apps als motor zur digitalen transformation
Apps als motor zur digitalen transformationApps als motor zur digitalen transformation
Apps als motor zur digitalen transformation
 
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetproTest-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
 
FAQs zur Technik
FAQs zur TechnikFAQs zur Technik
FAQs zur Technik
 
App-Projekte richtig steuern
App-Projekte richtig steuernApp-Projekte richtig steuern
App-Projekte richtig steuern
 
Mehr Softwarequalitä: Usability
Mehr Softwarequalitä: UsabilityMehr Softwarequalitä: Usability
Mehr Softwarequalitä: Usability
 
Softwarequalität: Definitionen, Grenzen, Wünsche - Vortrag IKS-Meeting im Jan...
Softwarequalität: Definitionen, Grenzen, Wünsche - Vortrag IKS-Meeting im Jan...Softwarequalität: Definitionen, Grenzen, Wünsche - Vortrag IKS-Meeting im Jan...
Softwarequalität: Definitionen, Grenzen, Wünsche - Vortrag IKS-Meeting im Jan...
 
Micro, Nano, Mono - Microservices verständlich erklärt.
Micro, Nano, Mono  - Microservices verständlich erklärt.Micro, Nano, Mono  - Microservices verständlich erklärt.
Micro, Nano, Mono - Microservices verständlich erklärt.
 
Mehr Softwarequalität: Technische Schulden
Mehr Softwarequalität: Technische SchuldenMehr Softwarequalität: Technische Schulden
Mehr Softwarequalität: Technische Schulden
 
Mehr Softwarequalität: Qualität als Treiber
Mehr Softwarequalität: Qualität als TreiberMehr Softwarequalität: Qualität als Treiber
Mehr Softwarequalität: Qualität als Treiber
 
Agiles Arbeiten - Mythen, Trends und Best Practices
Agiles Arbeiten  - Mythen, Trends und Best PracticesAgiles Arbeiten  - Mythen, Trends und Best Practices
Agiles Arbeiten - Mythen, Trends und Best Practices
 
Ist Ihr Unternehmen reif für Microservices?
Ist Ihr Unternehmen reif für Microservices?Ist Ihr Unternehmen reif für Microservices?
Ist Ihr Unternehmen reif für Microservices?
 
Service goes green
Service goes greenService goes green
Service goes green
 

Ähnlich wie Mehr Softwarequalität: Team-Cleancoding

Warum Scrum CMMI Level 5 erfüllt
Warum Scrum CMMI Level 5 erfülltWarum Scrum CMMI Level 5 erfüllt
Warum Scrum CMMI Level 5 erfüllt
KEGON AG
 
Einführung in die Software-Qualitätssicherung
Einführung in die Software-QualitätssicherungEinführung in die Software-Qualitätssicherung
Einführung in die Software-Qualitätssicherung
Christian Baranowski
 
Scrum Workshop
Scrum WorkshopScrum Workshop
Scrum Workshop
mrdoubleb
 
IT-Kosten sparen mittels Open Source Software: Leeres Versprechen oder realis...
IT-Kosten sparen mittels Open Source Software: Leeres Versprechen oder realis...IT-Kosten sparen mittels Open Source Software: Leeres Versprechen oder realis...
IT-Kosten sparen mittels Open Source Software: Leeres Versprechen oder realis...
Matthias Stürmer
 

Ähnlich wie Mehr Softwarequalität: Team-Cleancoding (20)

Xidra 2016 DevOps
Xidra 2016 DevOpsXidra 2016 DevOps
Xidra 2016 DevOps
 
Warum Scrum CMMI Level 5 erfüllt
Warum Scrum CMMI Level 5 erfülltWarum Scrum CMMI Level 5 erfüllt
Warum Scrum CMMI Level 5 erfüllt
 
Den PEP (Produktentwicklungsprozess) neu denken!
Den PEP (Produktentwicklungsprozess) neu denken!Den PEP (Produktentwicklungsprozess) neu denken!
Den PEP (Produktentwicklungsprozess) neu denken!
 
Mehr Softwarequalität: Requirements Engineering
Mehr Softwarequalität: Requirements EngineeringMehr Softwarequalität: Requirements Engineering
Mehr Softwarequalität: Requirements Engineering
 
system worx: Wie Open Source Software zur Optimierung von Geschäftsprozessen ...
system worx: Wie Open Source Software zur Optimierung von Geschäftsprozessen ...system worx: Wie Open Source Software zur Optimierung von Geschäftsprozessen ...
system worx: Wie Open Source Software zur Optimierung von Geschäftsprozessen ...
 
Softwareauswahlverfahren
SoftwareauswahlverfahrenSoftwareauswahlverfahren
Softwareauswahlverfahren
 
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software EntwicklungDevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
DevDay 2016 Keynote - Die Evolution agiler Software Entwicklung
 
Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Team
 
Einführung in die Software-Qualitätssicherung
Einführung in die Software-QualitätssicherungEinführung in die Software-Qualitätssicherung
Einführung in die Software-Qualitätssicherung
 
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsSoftware-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 
Das Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-Umgebung
Das Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-UmgebungDas Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-Umgebung
Das Ganze ist mehr als seine Teile: Die moderne Continuous-Delivery-Umgebung
 
Steht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
Steht alles im Wiki? Das kleine 1x1 der ArchitekturdokumentationSteht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
Steht alles im Wiki? Das kleine 1x1 der Architekturdokumentation
 
Mehr Softwarequalität: Requirements Engineering
Mehr Softwarequalität: Requirements EngineeringMehr Softwarequalität: Requirements Engineering
Mehr Softwarequalität: Requirements Engineering
 
Open Source Governance - Erfahrungen
Open Source Governance - ErfahrungenOpen Source Governance - Erfahrungen
Open Source Governance - Erfahrungen
 
Advanced Continuous Integration
Advanced Continuous IntegrationAdvanced Continuous Integration
Advanced Continuous Integration
 
Scrum Workshop
Scrum WorkshopScrum Workshop
Scrum Workshop
 
Clean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptxClean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptx
 
Plone im Kontext des WCMS Marktes
Plone im Kontext des WCMS MarktesPlone im Kontext des WCMS Marktes
Plone im Kontext des WCMS Marktes
 
IT-Kosten sparen mittels Open Source Software: Leeres Versprechen oder realis...
IT-Kosten sparen mittels Open Source Software: Leeres Versprechen oder realis...IT-Kosten sparen mittels Open Source Software: Leeres Versprechen oder realis...
IT-Kosten sparen mittels Open Source Software: Leeres Versprechen oder realis...
 

Mehr von IKS Gesellschaft für Informations- und Kommunikationssysteme mbH

Mehr von IKS Gesellschaft für Informations- und Kommunikationssysteme mbH (20)

Es wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingt
Es wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingtEs wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingt
Es wird Zeit KI zu nutzen - Wie es mit Azure KI Services und .NET MAUI gelingt
 
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
 
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdf
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdfThementag 2023 04 Lindern, heilen oder gar fit machen.pdf
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdf
 
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
 
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdfThementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
 
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdf
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdfThementag 2023 03 Einführung in die Softwaremodernisierung.pdf
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdf
 
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdfThementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
 
Thementag 2022 04 ML auf die Schiene gebracht.pdf
Thementag 2022 04 ML auf die Schiene gebracht.pdfThementag 2022 04 ML auf die Schiene gebracht.pdf
Thementag 2022 04 ML auf die Schiene gebracht.pdf
 
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdfThementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
 
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdfThementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
 
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
 
Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?
 
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
 
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
 

Mehr Softwarequalität: Team-Cleancoding

  • 1. Team Clean Coding: Gemeinsam besser programmieren iks Thementag „Mehr Softwarequalität – Ausgewählte Themen“ 12.11.2013 Autor: Dr. Reik Oberrath Team Clean Coding: Gemeinsam besser programmieren Seite 2 / 59
  • 2. Was ist das Ziel der Softwareentwicklung?
  • 3. Ein Produkt, das den Auftraggeber zufrieden stellt!
  • 4. Und einen zuverlässigen, effektiven Herstellungsprozess!
  • 5. Was ist wichtiger? Das Produkt (Finales Ziel mit Selbstzweck) Der Entwicklungsprozess (Zwischenziel, nur Mittel zum Zweck) Team Clean Coding: Gemeinsam besser programmieren Seite 6 / 59
  • 7. Was ist wichtiger? Produkt und Prozess sind gleich wichtig extern Das Produkt (Finales Ziel mit Selbstzweck) Qualität Der Entwicklungsprozess (Zwischenziel, nur Mittel zum Zweck) intern Team Clean Coding: Gemeinsam besser programmieren Seite 8 / 59
  • 8. Was beeinflusst den Entwicklungsprozess? Der Faktor „Mensch“ Tools & Technologien Architektur und Implementation
  • 9. Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message Team Clean Coding: Gemeinsam besser programmieren Seite 10 / 59
  • 10. Was heißt clean? Def. 1: Clean ist alles, was intuitiv verständlich ist, also (Quellcode-) Dokumente, Datenstrukturen, Konzepte, Regeln, Verfahren .... Def. 2: Intuitiv verständlich ist, was mit wenig Spezialwissen in kurzer Zeit richtig verstanden wird. Def. 3: Clean ist alles, was effizient ist, also alles, was die Softwareentwicklung beschleunigt. Team Clean Coding: Gemeinsam besser programmieren Seite 11 / 59
  • 11.
  • 12. Kernaussagen der Clean-Code-Developer-Bewegung Disziplin („Professionalität“) Ständige Selbstkontrolle („Bewusstsein“) durch konsequente Anwendung („gegen widrige Umstände“) des inneren Wertesystems („Prinzipien“). Wertesystem Das Buch „Clean Code“ ist wert, als allgemeingültiges Wertesystem anerkannt zu werden. Programmieralltag Das CCD-Grade-System hilft, das innere Wertesystem aktiv einzusetzen und die mentale CCD-Einstellung zu verinnerlichen. www.clean-code-developer.de Team Clean Coding: Gemeinsam besser programmieren Seite 13 / 59
  • 13. Das Praktiken Prinzipien Prinzipien Schwarz - Grade-System: Rot Orange Gelb Grün Blau  Don´t Repeat Yourself (DRY),  Keep it simple, stupid (KISS)  Vorsicht vor Optimierungen (VvO)  Favour Composition over Inheritance (FCoI)  Single Level of Abstraction (SLA)  Single Responsibility Principle (SRP)  Separation of Concerns (SoC)  Source Code Konventionen  Interface Segregation Principle  Dependency Inversion Principle  Liskov Substitution Principle  Principle of Least Astonishment  Information Hiding Principle  Open Closed Principle  Tell, don´t ask  Law of Demeter  Entwurf und Implementation überlappen nicht  Implementation spiegelt Entwurf  You Ain´t Gonna Need It (YAGNI)  Die Pfadfinderregel beachten  Root Cause Analysis  Ein Versionskontrollsystem einsetzen  Einfache Refaktorisierungsmuster anwenden (ER)  Täglich reflektieren  Issue Tracking  Automatisierte Integrationstests  Lesen, Lesen, Lesen (LLL)  Reviews  Automatisierte Unit Tests  Mockups (Testattrappen)  Code Coverage Analyse  Teilnahme an Fachveranstaltungen  Komplexe Refaktorisierungen  Continuous Integration I  Statische Codeanalyse (Metriken)  Inversion of Control Container  Erfahrung weitergeben  Messen von Fehlern www.iks-gmbh.com  Continuous Integration II  Iterative Entwicklung  Komponentenorientierung  Test first Weiss
  • 14. Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message Team Clean Coding: Gemeinsam besser programmieren Seite 15 / 59
  • 15. www.iks-gmbh.com Clean-Code ist gut, aber praxisfern – eher etwas für Ästheten! Clean-Code ist gut, man kann es aber leicht übertreiben!
  • 16. www.iks-gmbh.com Ein Organismus verträgt nur ein begrenztes Maß an Schadstoffen. Durch kontinuierliche Arbeit wird dieses Maß klein gehalten.
  • 17. www.iks-gmbh.com Clean-Code ist was für Spießer – wichtig ist nur, dass es läuft! Wichtig sind Funktionsfähigkeit, Stabilität, Wartbarkeit und Erweiterbarkeit. Dazu braucht man keinen Clean-Code!
  • 18. Sauberer Code – Hohe Testabdeckung Produktionscode Testabdeckung Testcode Schmutz akkumuliert von alleine. Schmutz stellt eine reale Gefahr für die Entwicklung dar. Team Clean Coding: Gemeinsam besser programmieren Seite 19 / 59
  • 19. Unter Zeitdruck wird dann sowieso wieder „Quick & Dirty“ gearbeitet! / 59 Team Clean Coding: Gemeinsam besser programmieren Seite 20
  • 20. Kosten Qualität Termine Kosten Termine Qualität CCD-Professionalität leben und seinen Prinzipien Team bleiben. treu Clean Coding: Gemeinsam besser programmieren Technische Schulden bewusst eingehen und Seite 21 / bewusst wieder begleichen.59
  • 21. Clean Code kostet zusätzliche Zeit in der Entwicklung! Clean Code spart Zeit in der Wartung!
  • 22. Kritikalität Langlebigkeit Team Clean Coding: Gemeinsam besser programmieren Seite 23 / 59
  • 23. Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message Team Clean Coding: Gemeinsam besser programmieren Seite 24 / 59
  • 24. Zusammenhang zwischen CCD und TCC Prinzipien, Praktiken, Selbstkontrolle Teamarbeit, Kommunikation, Teamkontrolle Unterschiede: Es gibt zusätzliche Regeln, die das Teamplay betreffen z.B. 1€-Regel oder Code-Tagging Appell an die Vernunft der Entwickler zu schwach, eine soziale Form von Kontrolle ist nötig Team Clean Coding: Gemeinsam besser programmieren Seite 25 / 59
  • 25. Das Team Clean Coding Warum TCC? Gute Vorsätze schwinden schnell  Verrottung Unterschiedliche Meinungen  Wildwuchs Mittel gegen die „Durchsetzungsstarken“ (Die Stillen sind nicht automatisch schlechter) Eine soziale, wechselseitige Kontrolle auf Augenhöhe Motivation durch wortlose Anerkennung Team Clean Coding: Gemeinsam besser programmieren Seite 26 / 59
  • 26. Das Team Clean Coding: Übersicht Konstitution Judikative Kontrolle Def. der Legislative Initialisierung Grundgesetz Ordnungsamt Executive Legislative Anwendung Parlament Optimierung Team Clean Coding: Gemeinsam besser programmieren Seite 27 / 59
  • 28. TCC: „Verfassung/Konstitution“ Notwendiger Basis-Konsens §1.1 ALLE Teammitglieder (inkl. Projektleitung) verpflichten sich, Regeln und Prozesse anzuerkennen, die für ALLE gleichermaßen bindend sind. §1.2 Diese Regeln und Prozesse können bei Bedarf jederzeit angepasst werden. §2 Zuerst wird ein Verfahren zur Entscheidungsfindung festgelegt (Definition der „Legislative“). §3 Die „Legislative“ legt einen Satz von Basisregeln fest (das „Grundgesetz“). Team Clean Coding: Gemeinsam besser programmieren Seite 29 / 59
  • 29. TCC: „Verfassung/Legislative“ Methoden zur Entscheidungsfindung Vorgabe durch Projektleiter / Chefentwickler / Architekt Mehrheitsbeschluss Minimierung des durchschn. Widerstands – Vetoabfrage – Konsensrunde – Thumb-Voting „Konsens bedeutet die Übereinstimmung von Menschen hinsichtlich einer Thematik ohne verdeckten oder offenen Widerspruch.“ - Wikipedia Team Clean Coding: Gemeinsam besser programmieren Seite 30 / 59
  • 30. TCC: „Verfassung/Grundgesetz“ Basisregeln (Projekt-unspezifische Regeln) §3.1 Wie wollen wir Information festhalten? → Dokumentation §3.2 Was bedeutet für uns „fertig“? Team Clean Coding: Gemeinsam besser programmieren → Definition Of Done Seite 31 / 59
  • 31. Ein Anwendungsfall läuft Die guten Anwendungsfälle laufen Fehlerfälle wurden untersucht Alle Anwendungsfälle laufen Unit-Tests Integrationstests Systemtests Automatische Code-Analysen (Metriken) Menschliche Code-Analysen (Review) Team Clean Coding: Gemeinsam besser programmieren Seite 32 / 59
  • 32. TCC: „Verfassung/Grundgesetz“ Projekt-unspezifische Grundregeln §3.1 Wie wollen wir Information festhalten? → Dokumentation §3.2 Was bedeutet für uns „fertig“? → Definition Of Done §3.3 Was heißt für uns „clean“? → CCD-Regeln §3.4 Wie gehen wir mit unfertigem Code um? → Code Tagging System §3.5 Wie ist unser Umgang mit „fremdem Eigentum“? Team Clean Coding: Gemeinsam besser programmieren Seite 33 / 59
  • 33. Initialisierung TCC-Übersicht Basiskonsens Konstitution Judikative Grundgesetz Ordnungsamt Projektunspezifische Regeln Executive Legislative Team Clean Coding: Gemeinsam besser programmieren Optimierung Def. der Legislative Methode der Entscheidungsfindung Parlament Anwendung Seite 34 / 59
  • 34. TCC: „Exekutive“ Programmieralltag (Anforderungen analysieren, implementieren, Qualität sichern, …) CCD- und TCC-Regeln im Bewusstsein halten Seinem Berufsethos auch unter widrigen Umständen treu bleiben Team Clean Coding: Gemeinsam besser programmieren Seite 35 / 59
  • 35. TCC: „Parlament/Legislative“ Forum für Informationsaustausch und Diskussionen sowie Verabschiedung weiterer (Projekt-spezifischer) Regeln Daily Standups (Scrum-ähnlich) Regelmäßige Team-Reviews Retrospektiven Pair-Programming Coding-Notes kommunizieren (z.B. E-Mail an Team-Verteiler) Team Clean Coding: Gemeinsam besser programmieren Seite 36 / 59
  • 37. TCC: „Ordnungsamt“ 4 - Review Am Ende der Entwicklung eines Software-Teils sucht der Autor nach einem Teammitglied, das als Reviewer dient. Dieser prüft: Funktionelle Korrektheit DoD erfüllt, z.B. – Ausreichende Testabdeckung – Einhaltung der abgestimmten Clean-Code-Maßnahmen FIXME- / TODO-Einträge (Code Tagging System) Erst nach dem OK des Reviewers gilt der Teil offiziell als FERTIG. Team Clean Coding: Gemeinsam besser programmieren Seite 38 / 59
  • 38. TCC: „Judikative“ Die 1€-Regel Ein Euro wird eingezogen bei Vergehen gegen zuvor abgestimmte Regeln, deren Verstoß von der „Legislativen“ als „strafbar“ gewertet wurde. Beispiele:      CI-Build brechen und nach Hause gehen, Tests brechen und sich nicht um deren Behebung bemühen, Backend-Änderungen ohne Client-Anpassung, Domain-Änderungen ohne DB-Skript-Anpassung, etc. Team Clean Coding: Gemeinsam besser programmieren Seite 39 / 59
  • 39. TCC-Übersicht Kontrolle Konstitution 1€-Regeln Judikative 4 Review Initialisierung Basiskonsens Methode der Entscheidungsfindung Def. der Legislative Grundgesetz Ordnungsamt Projektunspezifische Regeln Executive Legislative Parlament Projektspezifische Regeln Diskussionsforum Team Clean Coding: Gemeinsam besser programmieren Optimierung Projektalltag Anwendung Seite 40 / 59
  • 40. Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message Team Clean Coding: Gemeinsam besser programmieren Seite 41 / 59
  • 41. TCC-Rahmenbedingungen Teamstimmung beachten und fördern Haufen Gruppe Team Clean Coding: Gemeinsam besser programmieren Team Seite 42 / 59
  • 42. TCC-Rahmenbedingungen Teamstimmung beachten und fördern  Bewusste Teamzusammenstellung  Retrospektive-Meetings / gemeinsames Essengehen  Bei Bedarf Teamzusammenstellung ändern  Organisationsstruktur des Teams ändern • Hierarchisch • Parlamentarisch • Selbstorganisiert Team Clean Coding: Gemeinsam besser programmieren Seite 43 / 59
  • 43. TCC-Rahmenbedingungen Teamstimmung beachten und fördern Zeit für Kommunikation im Team einplanen  Tägliche Standup-Meetings  Wöchentliche Code-Review-Meetings  Monatliche Retrospektive-Meetings Team Clean Coding: Gemeinsam besser programmieren Seite 44 / 59
  • 44. TCC-Rahmenbedingungen Teamstimmung beachten und fördern Zeit für Kommunikation im Team einplanen Fortbildung der Teammitglieder unterstützen Akzeptanz signalisieren und Infrastruktur bereitstellen Team Clean Coding: Gemeinsam besser programmieren Seite 45 / 59
  • 45. Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message Team Clean Coding: Gemeinsam besser programmieren Seite 46 / 59
  • 46. Rückblick Rückblick Was ist wichtiger? Produkt und Prozess sind gleich wichtig extern Das Produkt (Finales Ziel mit Selbstzweck) Qualität Der Entwicklungsprozess (Zwischenziel, nur Mittel zum Zweck) intern Rückblick Team Clean Coding: Gemeinsam besser programmieren Rückblick Seite 47 / 59
  • 47. Rückblick Rückblick Kosten Qualität Termine Kosten Termine Qualität CCD-Professionalität leben und seinen Prinzipien Team bleiben. treu Clean Coding: Gemeinsam besser programmieren Rückblick Technische Schulden bewusst eingehen und Seite 48 / bewusst wieder begleichen.59 Rückblick
  • 48. Rückblick Sauberer Code – Hohe Testabdeckung Rückblick Produktionscode Testabdeckung Testcode Gegen Schmutz muss regelmäßig gearbeitet werden! Rückblick Team Clean Coding: Gemeinsam besser programmieren Rückblick Seite 49 / 59
  • 49. Take-Home-Message Herstellungsprozess und Produkt sind gleich wichtig – technische Schulden müssen zurückgezahlt werden! Team Clean Coding: Gemeinsam besser programmieren Seite 50 / 59
  • 50. Rückblick Das Praktiken Praktiken Prinzipien Prinzipien Schwarz Rückblick - Grade-System: Rot Orange Gelb Grün Blau  Don´t Repeat Yourself (DRY),  Keep it simple, stupid (KISS)  Vorsicht vor Optimierungen (VvO)  Favour Composition over Inheritance (FCoI)  Single Level of Abstraction (SLA)  Single Responsibility Principle (SRP)  Separation of Concerns (SoC)  Source Code Konventionen  Interface Segregation Principle  Dependency Inversion Principle  Liskov Substitution Principle  Principle of Least Astonishment  Information Hiding Principle  Open Closed Principle  Tell, don´t ask  Law of Demeter  Entwurf und Implementation überlappen nicht  Implementation spiegelt Entwurf  You Ain´t Gonna Need It (YAGNI)  Die Pfadfinderregel beachten  Root Cause Analysis  Ein Versionskontrollsystem einsetzen  Einfache Refaktorisierungsmuster anwenden (ER)  Täglich reflektieren  Issue Tracking  Automatisierte Integrationstests  Lesen, Lesen, Lesen (LLL)  Reviews  Automatisierte Unit Tests  Mockups (Testattrappen)  Code Coverage Analyse  Teilnahme an Fachveranstaltungen  Komplexe Refaktorisierungen  Continuous Integration I  Statische Codeanalyse (Metriken)  Inversion of Control Container  Erfahrung weitergeben  Messen von Fehlern www.iks-gmbh.com Rückblick Team Clean Coding: Gemeinsam besser programmieren Weiss  Continuous Integration II  Iterative Entwicklung  Komponentenorientierung  Test first Rückblick Seite 51 / 59
  • 51. Take-Home-Message Herstellungsprozess und Produkt sind gleich wichtig – technische Schulden müssen zurückgezahlt werden! Die CCD-Regeln sind bewährte Mittel zur Steigerung von Qualität und Effizienz Team Clean Coding: Gemeinsam besser programmieren Seite 52 / 59
  • 52. Rückblick Rückblick TCC-Übersicht Kontrolle Konstitution 1€-Regeln Judikative 4 Review Methode der Entscheidungsfindung Def. der Legislative Grundgesetz Ordnungsamt Projektunspezifische Regeln Executive Legislative Parlament Projektspezifische Regeln Diskussionsforum Team Clean Coding: Gemeinsam besser programmieren Optimierung Rückblick Initialisierung Basiskonsens Projektalltag Anwendung Seite 53 / 59 Rückblick
  • 53. Rückblick Rückblick Das Team Clean Coding Warum TCC? Gute Vorsätze schwinden schnell  Verrottung Unterschiedliche Meinungen  Wildwuchs Mittel gegen die „Durchsetzungsstarken“ (Die Stillen sind nicht automatisch schlechter) Wechselseitige Kontrolle auf Augenhöhe Motivation durch wortlose Anerkennung Rückblick Team Clean Coding: Gemeinsam besser programmieren Rückblick Seite 54 / 59
  • 54. Take-Home-Message Herstellungsprozess und Produkt sind gleich wichtig – technische Schulden müssen zurückgezahlt werden! Die CCD-Regeln sind bewährte Mittel zur Steigerung von Qualität und Effizienz TCC fördert die Kommunikation im Team und die konsequente Anwendung der CCD-Regeln Rahmenbedingungen für TCC müssen stimmen  Teamstimmung beachten und fördern  Zeit für Kommunikation im Team einplanen  Fortbildung der Teammitglieder unterstützen  Akzeptanz signalisieren und Infrastruktur bereitstellen Team Clean Coding: Gemeinsam besser programmieren Seite 55 / 59
  • 55. Take-Home-Message CCD und TCC führen zu Qualität und Effizienz, benötigen aber Unterstützung aus dem Umfeld! Team Clean Coding: Gemeinsam besser programmieren Seite 56 / 59
  • 56. Weiterführende Literatur Clean Code, Robert C. Martin, Prentice Hall, 2008 The Clean Coder, Robert C. Martin, Prentice Hall, 2011 Clean Coder: Verhaltensregeln für professionelle Programmierer, Robert C. Martin, Addison-Wesley, 2011 The Pragmatic Programmer, Addison-Wesley, 1999 Soft Skills für Softwareentwickler, dpunkt-Verlag, 2010 http://www.clean-code-developer.de http://de.wikipedia.org/wiki/Clean_Code http://www.clean-code.info Team Clean Coding: Gemeinsam besser programmieren Seite 57 / 59
  • 57. Bildernachweise Die in diesem Vortrag verwendeten Bilder stammen von folgenden Quellen: Folie 3: http://www.flickr.com Folie 4: http://www.flickr.com/photos/23313526@N07/4948442428/sizes/l/in/photostream/ http://www.flickr.com/photos/29747502@N03/2784238062/sizes/l/in/photostream/ Folie 5: http://www.flickr.com/photos/buridansesel/6163446452/sizes/l/in/photostream/ Folie 7,8,9: http://officeimg.vo.msecnd.net/en-us/images/MB900443111.jpg http://officeimg.vo.msecnd.net/en-us/images/MB900443251.jpg http://www.dadalos-d.org/frieden/images/eisberg-modell.jpg Folie 11: http://www.hborchert.de/medihumor.htm http://hdfreewallpaper.info/fishy-ubuntu-1920-x-1080.html Folie 12: http://photos.signonsandiego.com/album55/mud02 Folie 16: http://freepostermaker.com/uploads/saved_posters/free-poster-dnxeoi88fg-WILLIES-WASH.jpg Folie 28: http://www.flickr.com/photos/oskay/437341603/ Team Clean Coding: Gemeinsam besser programmieren Seite 58 / 59
  • 58. Weitere Bildernachweise 1. Die meisten nicht separat aufgeführten Icons stammen von http://office.microsoft.com/en-us/images und http://office.microsoft.com/de-de/images. 2. Andere nicht aufgeführte Bilder (z.B. auf Folie 17) wurden von den Autoren selbst erstellt. 3. CCD-Logo http://www.clean-code-developer.de 4. Wasserrad http://www.wasserrad-drews.de/ Team Clean Coding: Gemeinsam besser programmieren Seite 59 / 59