SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
Seite 2 / 59Team Clean Coding: Gemeinsam besser programmieren
Team Clean Coding:
Gemeinsam besser programmieren
iks Thementag
„Mehr Softwarequalität – Ausgewählte Themen“
22.05.2014
Autor:
Dr. Reik Oberrath
Was ist das Ziel der Softwareentwicklung?
Ein Produkt, das
den Auftraggeber
zufrieden stellt!
Und einen zuverlässigen, effektiven Herstellungsprozess!
Seite 6 / 59Team Clean Coding: Gemeinsam besser programmieren
Das Produkt
(Finales Ziel mit
Selbstzweck)
Der Entwicklungs-
prozess
(Zwischenziel, nur
Mittel zum Zweck)
Was ist wichtiger?
Seite 7 / 59Team Clean Coding: Gemeinsam besser programmieren
Architektur
Design
Technologie
Code
Architektur
Design
Technologie
Code
Funktionalität
Testbarkeit
Wartbarkeit
Usability Zuverlässigkeit
Prüfbarkeit Installierbarkeit
Änderbarkeit
Performanz
Sicherheit
extern
intern
Quelle : http://www.dadalos-d.org/frieden/images/eisberg-modell.jpg
Qualität
Seite 8 / 59Team Clean Coding: Gemeinsam besser programmieren
Das Produkt
(Finales Ziel mit
Selbstzweck)
Der Entwicklungs-
prozess
(Zwischenziel, nur
Mittel zum Zweck)
Was ist wichtiger?
extern
intern
Produkt und Prozess
sind gleich wichtig
Qualität
Der Faktor
„Mensch“
Architektur und
ImplementationTools
&
Technologien
Was beeinflusst den Entwicklungsprozess?
Seite 10 / 59Team Clean Coding: Gemeinsam besser programmieren
Agenda
Einleitung
Die Clean-Code-Developer-Bewegung
Meinungen zu Clean Code
Das Team Clean Coding (TCC)
TCC-Rahmenbedingungen
Take-Home-Message
Seite 11 / 59Team Clean Coding: Gemeinsam besser programmieren
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.
Was heißt clean?
Def. 3: Clean ist alles, was effizient ist, also alles, was
die Softwareentwicklung beschleunigt.
Mehr Softwarequalität: Team Clean Coding
Seite 13 / 59Team Clean Coding: Gemeinsam besser programmieren
Kernaussagen der
Clean-Code-Developer-Bewegung
Disziplin Ständige Selbstkontrolle („Bewusstsein“)
durch konsequente Anwendung („gegen
widrige Umstände“) des inneren Werte-
systems („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
(„Professionalität“)
www.iks-gmbh.com
PrinzipienPraktiken
 Continuous
Integration I
 Statische
Codeanalyse
(Metriken)
 Inversion of
Control Container
 Erfahrung
weitergeben
 Messen von
Fehlern
 Open Closed
Principle
 Tell, don´t ask
 Law of Demeter
Grün
 Continuous
Integration II
 Iterative
Entwicklung
 Komponenten-
orientierung
 Test first
 Entwurf und
Implementation
überlappen nicht
 Implementa-
tion spiegelt
Entwurf
 You Ain´t
Gonna Need It
(YAGNI)
Blau
 Automatisierte
Unit Tests
 Mockups
(Testattrappen)
 Code Coverage
Analyse
 Teilnahme an
Fachveranstal-
tungen
 Komplexe Re-
faktorisierungen
 Issue Tracking
 Automatisierte
Integrationstests
 Lesen, Lesen,
Lesen (LLL)
 Reviews
 Die Pfadfinderregel
beachten
 Root Cause
Analysis
 Ein Versionskon-
trollsystem einsetzen
 Einfache Refakto-
risierungsmuster an-
wenden (ER)
 Täglich reflektieren
 Interface
Segregation
Principle
 Dependency
Inversion Principle
 Liskov
Substitution
Principle
 Principle of
Least
Astonishment
 Information
Hiding Principle
 Single Level of
Abstraction
(SLA)
 Single
Responsibility
Principle (SRP)
 Separation of
Concerns (SoC)
 Source Code
Konventionen
 Don´t Repeat
Yourself (DRY),
 Keep it simple,
stupid (KISS)
 Vorsicht vor
Optimierungen
(VvO)
 Favour
Composition over
Inheritance (FCoI)
WeissGelbOrangeRotSchwarz
PrinzipienPraktiken
Das - Grade-System:
Seite 15 / 59Team Clean Coding: Gemeinsam besser programmieren
Agenda
Einleitung
Die Clean-Code-Developer-Bewegung
Meinungen zu Clean Code
Das Team Clean Coding (TCC)
TCC-Rahmenbedingungen
Take-Home-Message
www.iks-gmbh.com
Clean Code ist gut, man kann es aber leicht übertreiben!
Clean Code ist gut, aber praxisfern – eher etwas für Ästheten!
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
Wichtig sind Funktionsfähigkeit, Stabilität, Wartbarkeit und Erweiterbarkeit.
Dazu braucht man keinen Clean Code!
Clean Code ist was für Spießer – wichtig ist nur, dass es läuft!
Seite 19 / 59Team Clean Coding: Gemeinsam besser programmieren
Sauberer Code – Hohe Testabdeckung
Produktionscode
Testabdeckung
Testcode
Schmutz akkumuliert von alleine.
Schmutz stellt eine reale Gefahr für die Entwicklung dar.
Seite 20 / 59Team Clean Coding: Gemeinsam besser programmieren
Unter Zeitdruck wird dann sowieso wieder „Quick & Dirty“ gearbeitet!
Seite 21 / 59Team Clean Coding: Gemeinsam besser programmieren
CCD-Professionalität
leben und seinen Prinzipien
treu bleiben.
Technische Schulden
bewusst eingehen und
bewusst wieder begleichen.
Termine
Termine
Qualität
Qualität
Kosten
Kosten
Clean Code kostet zusätzliche Zeit
in der Entwicklung!
Clean Code spart Zeit
in der Wartung!
Seite 23 / 59Team Clean Coding: Gemeinsam besser programmieren
Langlebigkeit
Kritikalität
Seite 24 / 59Team Clean Coding: Gemeinsam besser programmieren
Agenda
Einleitung
Die Clean-Code-Developer-Bewegung
Meinungen zu Clean Code
Das Team Clean Coding (TCC)
TCC-Rahmenbedingungen
Take-Home-Message
Seite 25 / 59Team Clean Coding: Gemeinsam besser programmieren
Zusammenhang zwischen CCD und TCC
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
Prinzipien,
Praktiken,
Selbstkontrolle
Teamarbeit,
Kommunikation,
Teamkontrolle
Seite 26 / 59Team Clean Coding: Gemeinsam besser programmieren
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
Seite 27 / 59Team Clean Coding: Gemeinsam besser programmieren
Das Team Clean Coding: Übersicht
Initialisierung
Anwendung
Optimierung
Kontrolle
Def. der
Legislative
Grund-
gesetz
Konsti-
tution
Executive
Parla-
ment
Legislative
Judikative
Verfass.-
schutz
Seite 28 / 59Team Clean Coding: Gemeinsam besser programmieren
TCC-Übersicht
Initialisierung
Def. der
Legislative
Grund-
gesetz
Executive
Parla-
ment
Legislative
Judikative
Verfass.-
schutz
Konsti-
tution
Seite 29 / 59Team Clean Coding: Gemeinsam besser programmieren
TCC: „Verfassung/Konstitution“
Notwendiger Basis-Konsens
§1.1 ALLE Teammitglieder (inkl. Projektleitung) verpflichten sich,
Regeln und Prozesse anzuerkennen, die für ALLE gleicher-
maß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“).
Seite 30 / 59Team Clean Coding: Gemeinsam besser programmieren
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
Seite 31 / 59Team Clean Coding: Gemeinsam besser programmieren
TCC: „Verfassung/Grundgesetz“
Basisregeln (Projekt-unspezifische Regeln)
§3.1 Wie wollen wir Information festhalten? → Dokumentation
§3.2 Was bedeutet für uns „fertig“? → Definition Of Done
Seite 32 / 59Team Clean Coding: Gemeinsam besser programmieren
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)
Seite 33 / 59Team Clean Coding: Gemeinsam besser programmieren
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“?
Seite 34 / 59Team Clean Coding: Gemeinsam besser programmieren
TCC-Übersicht
Initialisierung
Def. der
Legislative
Grund-
gesetz
Executive
Parla-
ment
Legislative
Judikative
Verfass.-
schutz
Konsti-
tution
Optimierung Anwendung
Basiskonsens
Methode der
Entscheidungsfindung
Projekt-
unspezifische
Regeln
Seite 35 / 59Team Clean Coding: Gemeinsam besser programmieren
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
Seite 36 / 59Team Clean Coding: Gemeinsam besser programmieren
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)
Seite 37 / 59Team Clean Coding: Gemeinsam besser programmieren
TCC-Übersicht
Initialisierung
Def. der
Legislative
Grund-
gesetz
Executive
Parla-
ment
Legislative
Judikative
Verfass.-
schutz
Konsti-
tution
Optimierung Anwendung
Basiskonsens
Methode der
Entscheidungsfindung
Projekt-
unspezifische
Regeln
Kontrolle
Diskussions-
forum
ProjektalltagProjekt-
spezifische
Regeln
Seite 38 / 59Team Clean Coding: Gemeinsam besser programmieren
TCC: „Verfassungsschutz“
4 - Review
Am Ende der Entwicklung eines Software-Tasks 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.
Seite 39 / 59Team Clean Coding: Gemeinsam besser programmieren
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.
Seite 40 / 59Team Clean Coding: Gemeinsam besser programmieren
TCC-Übersicht
1€-Regeln
Initialisierung
Def. der
Legislative
Grund-
gesetz
Executive
Parla-
ment
Legislative
Judikative
Verfass.-
schutz
Konsti-
tution
Optimierung Anwendung
Basiskonsens
Methode der
Entscheidungsfindung
Projekt-
unspezifische
Regeln
Kontrolle
Diskussions-
forum
ProjektalltagProjekt-
spezifische
Regeln
4 -
Review
Seite 41 / 59Team Clean Coding: Gemeinsam besser programmieren
Agenda
Einleitung
Die Clean-Code-Developer-Bewegung
Meinungen zu Clean Code
Das Team Clean Coding (TCC)
TCC-Rahmenbedingungen
Take-Home-Message
Seite 42 / 59Team Clean Coding: Gemeinsam besser programmieren
TCC-Rahmenbedingungen
Teamstimmung beachten und fördern
Haufen Gruppe Team
Seite 43 / 59Team Clean Coding: Gemeinsam besser programmieren
TCC-Rahmenbedingungen
Teamstimmung beachten und fördern
 Bewusste Teamzusammenstellung
 Retrospektive-Meetings / gemeinsames Essengehen
 Bei Bedarf Teamzusammenstellung ändern
 Organisationsstruktur des Teams ändern
• Hierarchisch
• Parlamentarisch
• Selbstorganisiert
Seite 44 / 59Team Clean Coding: Gemeinsam besser programmieren
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
Seite 45 / 59Team Clean Coding: Gemeinsam besser programmieren
TCC-Rahmenbedingungen
Teamstimmung beachten und fördern
Zeit für Kommunikation im Team einplanen
Fortbildung der Teammitglieder unterstützen
Akzeptanz signalisieren und Infrastruktur bereitstellen
Seite 46 / 59Team Clean Coding: Gemeinsam besser programmieren
Agenda
Einleitung
Die Clean-Code-Developer-Bewegung
Meinungen zu Clean Code
Das Team Clean Coding (TCC)
TCC-Rahmenbedingungen
Take-Home-Message
Seite 47 / 59Team Clean Coding: Gemeinsam besser programmieren
Das Produkt
(Finales Ziel mit
Selbstzweck)
Der Entwicklungs-
prozess
(Zwischenziel, nur
Mittel zum Zweck)
Was ist wichtiger?
extern
intern
Produkt und Prozess
sind gleich wichtig
Rückblick
Rückblick
Rückblick
Rückblick
Qualität
Seite 48 / 59Team Clean Coding: Gemeinsam besser programmieren
CCD-Professionalität
leben und seinen Prinzipien
treu bleiben.
Technische Schulden
bewusst eingehen und
bewusst wieder begleichen.
Termine
Termine
Qualität
Qualität
Kosten
Kosten
Rückblick
Rückblick
Rückblick
Rückblick
Seite 49 / 59Team Clean Coding: Gemeinsam besser programmierenGegen Schmutz muss regelmäßig gearbeitet werden!
Sauberer Code – Hohe Testabdeckung
Produktionscode
Testabdeckung
Testcode
Rückblick
Rückblick
Rückblick
Rückblick
Seite 50 / 59Team Clean Coding: Gemeinsam besser programmieren
Take-Home-Message
Herstellungsprozess und Produkt sind gleich wichtig –
technische Schulden müssen zurückgezahlt werden!
Seite 51 / 59Team Clean Coding: Gemeinsam besser programmieren
www.iks-gmbh.com
PrinzipienPraktiken
 Continuous
Integration I
 Statische
Codeanalyse
(Metriken)
 Inversion of
Control Container
 Erfahrung
weitergeben
 Messen von
Fehlern
 Open Closed
Principle
 Tell, don´t ask
 Law of Demeter
Grün
 Continuous
Integration II
 Iterative
Entwicklung
 Komponenten-
orientierung
 Test first
 Entwurf und
Implementation
überlappen nicht
 Implementa-
tion spiegelt
Entwurf
 You Ain´t
Gonna Need It
(YAGNI)
Blau
 Automatisierte
Unit Tests
 Mockups
(Testattrappen)
 Code Coverage
Analyse
 Teilnahme an
Fachveranstal-
tungen
 Komplexe Re-
faktorisierungen
 Issue Tracking
 Automatisierte
Integrationstests
 Lesen, Lesen,
Lesen (LLL)
 Reviews
 Die Pfadfinderregel
beachten
 Root Cause
Analysis
 Ein Versionskon-
trollsystem einsetzen
 Einfache Refakto-
risierungsmuster an-
wenden (ER)
 Täglich reflektieren
 Interface
Segregation
Principle
 Dependency
Inversion Principle
 Liskov
Substitution
Principle
 Principle of
Least
Astonishment
 Information
Hiding Principle
 Single Level of
Abstraction
(SLA)
 Single
Responsibility
Principle (SRP)
 Separation of
Concerns (SoC)
 Source Code
Konventionen
 Don´t Repeat
Yourself (DRY),
 Keep it simple,
stupid (KISS)
 Vorsicht vor
Optimierungen
(VvO)
 Favour
Composition over
Inheritance (FCoI)
WeissGelbOrangeRotSchwarz
PrinzipienPraktiken
Das - Grade-System:
Rückblick
Rückblick
Rückblick
Rückblick
Seite 52 / 59Team Clean Coding: Gemeinsam besser programmieren
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
Seite 53 / 59Team Clean Coding: Gemeinsam besser programmieren
TCC-Übersicht
1€-Regeln
Initialisierung
Def. der
Legislative
Grund-
gesetz
Executive
Parla-
ment
Legislative
Judikative
Verfass.-
schutz
Konsti-
tution
Optimierung Anwendung
Basiskonsens
Methode der
Entscheidungsfindung
Projekt-
unspezifische
Regeln
Kontrolle
Diskussions-
forum
ProjektalltagProjekt-
spezifische
Regeln
4 -
Review
Rückblick Rückblick
Rückblick Rückblick
Seite 54 / 59Team Clean Coding: Gemeinsam besser programmieren
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
Rückblick
Rückblick
Rückblick
Seite 55 / 59Team Clean Coding: Gemeinsam besser programmieren
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
Seite 56 / 59Team Clean Coding: Gemeinsam besser programmieren
Take-Home-Message
CCD und TCC führen zu Qualität und Effizienz,
benötigen aber Unterstützung aus dem Umfeld!
Seite 57 / 59Team Clean Coding: Gemeinsam besser programmieren
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
Seite 58 / 59Team Clean Coding: Gemeinsam besser programmieren
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/
Seite 59 / 59Team Clean Coding: Gemeinsam besser programmieren
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/
Fragen?
www.iks-gmbh.com

Más contenido relacionado

Ähnlich wie Mehr Softwarequalität: Team Clean Coding

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ülltKEGON AG
 
Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Teambrandts
 
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ätssicherungChristian Baranowski
 
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.pptxkaftanenko
 
Den PEP (Produktentwicklungsprozess) neu denken!
Den PEP (Produktentwicklungsprozess) neu denken!Den PEP (Produktentwicklungsprozess) neu denken!
Den PEP (Produktentwicklungsprozess) neu denken!Christoph Schmiedinger
 
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-UmgebungOPITZ CONSULTING Deutschland
 
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 ...AKJoom
 
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.Stephan Schmidt
 
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
 
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 Architekturdokumentationoose
 

Ähnlich wie Mehr Softwarequalität: Team Clean Coding (20)

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
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 
Mehr Softwarequalität: Requirements Engineering
Mehr Softwarequalität: Requirements EngineeringMehr Softwarequalität: Requirements Engineering
Mehr Softwarequalität: Requirements Engineering
 
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
 
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltagiks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag
 
Softwareauswahlverfahren
SoftwareauswahlverfahrenSoftwareauswahlverfahren
Softwareauswahlverfahren
 
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
 
Mehr Softwarequalität: Requirements Engineering
Mehr Softwarequalität: Requirements EngineeringMehr Softwarequalität: Requirements Engineering
Mehr Softwarequalität: Requirements Engineering
 
Den PEP (Produktentwicklungsprozess) neu denken!
Den PEP (Produktentwicklungsprozess) neu denken!Den PEP (Produktentwicklungsprozess) neu denken!
Den PEP (Produktentwicklungsprozess) neu denken!
 
Advanced Continuous Integration
Advanced Continuous IntegrationAdvanced Continuous Integration
Advanced Continuous Integration
 
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
 
Xidra 2016 DevOps
Xidra 2016 DevOpsXidra 2016 DevOps
Xidra 2016 DevOps
 
Agiles Testen - Überblick
Agiles Testen - ÜberblickAgiles Testen - Überblick
Agiles Testen - Überblick
 
Test-Alternativen
Test-AlternativenTest-Alternativen
Test-Alternativen
 
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 ...
 
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
 
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...
 
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 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 Clean Coding

  • 1. Seite 2 / 59Team Clean Coding: Gemeinsam besser programmieren Team Clean Coding: Gemeinsam besser programmieren iks Thementag „Mehr Softwarequalität – Ausgewählte Themen“ 22.05.2014 Autor: Dr. Reik Oberrath
  • 2. Was ist das Ziel der Softwareentwicklung?
  • 3. Ein Produkt, das den Auftraggeber zufrieden stellt!
  • 4. Und einen zuverlässigen, effektiven Herstellungsprozess!
  • 5. Seite 6 / 59Team Clean Coding: Gemeinsam besser programmieren Das Produkt (Finales Ziel mit Selbstzweck) Der Entwicklungs- prozess (Zwischenziel, nur Mittel zum Zweck) Was ist wichtiger?
  • 6. Seite 7 / 59Team Clean Coding: Gemeinsam besser programmieren Architektur Design Technologie Code Architektur Design Technologie Code Funktionalität Testbarkeit Wartbarkeit Usability Zuverlässigkeit Prüfbarkeit Installierbarkeit Änderbarkeit Performanz Sicherheit extern intern Quelle : http://www.dadalos-d.org/frieden/images/eisberg-modell.jpg Qualität
  • 7. Seite 8 / 59Team Clean Coding: Gemeinsam besser programmieren Das Produkt (Finales Ziel mit Selbstzweck) Der Entwicklungs- prozess (Zwischenziel, nur Mittel zum Zweck) Was ist wichtiger? extern intern Produkt und Prozess sind gleich wichtig Qualität
  • 9. Seite 10 / 59Team Clean Coding: Gemeinsam besser programmieren Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message
  • 10. Seite 11 / 59Team Clean Coding: Gemeinsam besser programmieren 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. Was heißt clean? Def. 3: Clean ist alles, was effizient ist, also alles, was die Softwareentwicklung beschleunigt.
  • 12. Seite 13 / 59Team Clean Coding: Gemeinsam besser programmieren Kernaussagen der Clean-Code-Developer-Bewegung Disziplin Ständige Selbstkontrolle („Bewusstsein“) durch konsequente Anwendung („gegen widrige Umstände“) des inneren Werte- systems („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 („Professionalität“)
  • 13. www.iks-gmbh.com PrinzipienPraktiken  Continuous Integration I  Statische Codeanalyse (Metriken)  Inversion of Control Container  Erfahrung weitergeben  Messen von Fehlern  Open Closed Principle  Tell, don´t ask  Law of Demeter Grün  Continuous Integration II  Iterative Entwicklung  Komponenten- orientierung  Test first  Entwurf und Implementation überlappen nicht  Implementa- tion spiegelt Entwurf  You Ain´t Gonna Need It (YAGNI) Blau  Automatisierte Unit Tests  Mockups (Testattrappen)  Code Coverage Analyse  Teilnahme an Fachveranstal- tungen  Komplexe Re- faktorisierungen  Issue Tracking  Automatisierte Integrationstests  Lesen, Lesen, Lesen (LLL)  Reviews  Die Pfadfinderregel beachten  Root Cause Analysis  Ein Versionskon- trollsystem einsetzen  Einfache Refakto- risierungsmuster an- wenden (ER)  Täglich reflektieren  Interface Segregation Principle  Dependency Inversion Principle  Liskov Substitution Principle  Principle of Least Astonishment  Information Hiding Principle  Single Level of Abstraction (SLA)  Single Responsibility Principle (SRP)  Separation of Concerns (SoC)  Source Code Konventionen  Don´t Repeat Yourself (DRY),  Keep it simple, stupid (KISS)  Vorsicht vor Optimierungen (VvO)  Favour Composition over Inheritance (FCoI) WeissGelbOrangeRotSchwarz PrinzipienPraktiken Das - Grade-System:
  • 14. Seite 15 / 59Team Clean Coding: Gemeinsam besser programmieren Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message
  • 15. www.iks-gmbh.com Clean Code ist gut, man kann es aber leicht übertreiben! Clean Code ist gut, aber praxisfern – eher etwas für Ästheten!
  • 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 Wichtig sind Funktionsfähigkeit, Stabilität, Wartbarkeit und Erweiterbarkeit. Dazu braucht man keinen Clean Code! Clean Code ist was für Spießer – wichtig ist nur, dass es läuft!
  • 18. Seite 19 / 59Team Clean Coding: Gemeinsam besser programmieren Sauberer Code – Hohe Testabdeckung Produktionscode Testabdeckung Testcode Schmutz akkumuliert von alleine. Schmutz stellt eine reale Gefahr für die Entwicklung dar.
  • 19. Seite 20 / 59Team Clean Coding: Gemeinsam besser programmieren Unter Zeitdruck wird dann sowieso wieder „Quick & Dirty“ gearbeitet!
  • 20. Seite 21 / 59Team Clean Coding: Gemeinsam besser programmieren CCD-Professionalität leben und seinen Prinzipien treu bleiben. Technische Schulden bewusst eingehen und bewusst wieder begleichen. Termine Termine Qualität Qualität Kosten Kosten
  • 21. Clean Code kostet zusätzliche Zeit in der Entwicklung! Clean Code spart Zeit in der Wartung!
  • 22. Seite 23 / 59Team Clean Coding: Gemeinsam besser programmieren Langlebigkeit Kritikalität
  • 23. Seite 24 / 59Team Clean Coding: Gemeinsam besser programmieren Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message
  • 24. Seite 25 / 59Team Clean Coding: Gemeinsam besser programmieren Zusammenhang zwischen CCD und TCC 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 Prinzipien, Praktiken, Selbstkontrolle Teamarbeit, Kommunikation, Teamkontrolle
  • 25. Seite 26 / 59Team Clean Coding: Gemeinsam besser programmieren 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
  • 26. Seite 27 / 59Team Clean Coding: Gemeinsam besser programmieren Das Team Clean Coding: Übersicht Initialisierung Anwendung Optimierung Kontrolle Def. der Legislative Grund- gesetz Konsti- tution Executive Parla- ment Legislative Judikative Verfass.- schutz
  • 27. Seite 28 / 59Team Clean Coding: Gemeinsam besser programmieren TCC-Übersicht Initialisierung Def. der Legislative Grund- gesetz Executive Parla- ment Legislative Judikative Verfass.- schutz Konsti- tution
  • 28. Seite 29 / 59Team Clean Coding: Gemeinsam besser programmieren TCC: „Verfassung/Konstitution“ Notwendiger Basis-Konsens §1.1 ALLE Teammitglieder (inkl. Projektleitung) verpflichten sich, Regeln und Prozesse anzuerkennen, die für ALLE gleicher- maß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“).
  • 29. Seite 30 / 59Team Clean Coding: Gemeinsam besser programmieren 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
  • 30. Seite 31 / 59Team Clean Coding: Gemeinsam besser programmieren TCC: „Verfassung/Grundgesetz“ Basisregeln (Projekt-unspezifische Regeln) §3.1 Wie wollen wir Information festhalten? → Dokumentation §3.2 Was bedeutet für uns „fertig“? → Definition Of Done
  • 31. Seite 32 / 59Team Clean Coding: Gemeinsam besser programmieren 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)
  • 32. Seite 33 / 59Team Clean Coding: Gemeinsam besser programmieren 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“?
  • 33. Seite 34 / 59Team Clean Coding: Gemeinsam besser programmieren TCC-Übersicht Initialisierung Def. der Legislative Grund- gesetz Executive Parla- ment Legislative Judikative Verfass.- schutz Konsti- tution Optimierung Anwendung Basiskonsens Methode der Entscheidungsfindung Projekt- unspezifische Regeln
  • 34. Seite 35 / 59Team Clean Coding: Gemeinsam besser programmieren 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
  • 35. Seite 36 / 59Team Clean Coding: Gemeinsam besser programmieren 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)
  • 36. Seite 37 / 59Team Clean Coding: Gemeinsam besser programmieren TCC-Übersicht Initialisierung Def. der Legislative Grund- gesetz Executive Parla- ment Legislative Judikative Verfass.- schutz Konsti- tution Optimierung Anwendung Basiskonsens Methode der Entscheidungsfindung Projekt- unspezifische Regeln Kontrolle Diskussions- forum ProjektalltagProjekt- spezifische Regeln
  • 37. Seite 38 / 59Team Clean Coding: Gemeinsam besser programmieren TCC: „Verfassungsschutz“ 4 - Review Am Ende der Entwicklung eines Software-Tasks 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.
  • 38. Seite 39 / 59Team Clean Coding: Gemeinsam besser programmieren 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.
  • 39. Seite 40 / 59Team Clean Coding: Gemeinsam besser programmieren TCC-Übersicht 1€-Regeln Initialisierung Def. der Legislative Grund- gesetz Executive Parla- ment Legislative Judikative Verfass.- schutz Konsti- tution Optimierung Anwendung Basiskonsens Methode der Entscheidungsfindung Projekt- unspezifische Regeln Kontrolle Diskussions- forum ProjektalltagProjekt- spezifische Regeln 4 - Review
  • 40. Seite 41 / 59Team Clean Coding: Gemeinsam besser programmieren Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message
  • 41. Seite 42 / 59Team Clean Coding: Gemeinsam besser programmieren TCC-Rahmenbedingungen Teamstimmung beachten und fördern Haufen Gruppe Team
  • 42. Seite 43 / 59Team Clean Coding: Gemeinsam besser programmieren TCC-Rahmenbedingungen Teamstimmung beachten und fördern  Bewusste Teamzusammenstellung  Retrospektive-Meetings / gemeinsames Essengehen  Bei Bedarf Teamzusammenstellung ändern  Organisationsstruktur des Teams ändern • Hierarchisch • Parlamentarisch • Selbstorganisiert
  • 43. Seite 44 / 59Team Clean Coding: Gemeinsam besser programmieren 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
  • 44. Seite 45 / 59Team Clean Coding: Gemeinsam besser programmieren TCC-Rahmenbedingungen Teamstimmung beachten und fördern Zeit für Kommunikation im Team einplanen Fortbildung der Teammitglieder unterstützen Akzeptanz signalisieren und Infrastruktur bereitstellen
  • 45. Seite 46 / 59Team Clean Coding: Gemeinsam besser programmieren Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message
  • 46. Seite 47 / 59Team Clean Coding: Gemeinsam besser programmieren Das Produkt (Finales Ziel mit Selbstzweck) Der Entwicklungs- prozess (Zwischenziel, nur Mittel zum Zweck) Was ist wichtiger? extern intern Produkt und Prozess sind gleich wichtig Rückblick Rückblick Rückblick Rückblick Qualität
  • 47. Seite 48 / 59Team Clean Coding: Gemeinsam besser programmieren CCD-Professionalität leben und seinen Prinzipien treu bleiben. Technische Schulden bewusst eingehen und bewusst wieder begleichen. Termine Termine Qualität Qualität Kosten Kosten Rückblick Rückblick Rückblick Rückblick
  • 48. Seite 49 / 59Team Clean Coding: Gemeinsam besser programmierenGegen Schmutz muss regelmäßig gearbeitet werden! Sauberer Code – Hohe Testabdeckung Produktionscode Testabdeckung Testcode Rückblick Rückblick Rückblick Rückblick
  • 49. Seite 50 / 59Team Clean Coding: Gemeinsam besser programmieren Take-Home-Message Herstellungsprozess und Produkt sind gleich wichtig – technische Schulden müssen zurückgezahlt werden!
  • 50. Seite 51 / 59Team Clean Coding: Gemeinsam besser programmieren www.iks-gmbh.com PrinzipienPraktiken  Continuous Integration I  Statische Codeanalyse (Metriken)  Inversion of Control Container  Erfahrung weitergeben  Messen von Fehlern  Open Closed Principle  Tell, don´t ask  Law of Demeter Grün  Continuous Integration II  Iterative Entwicklung  Komponenten- orientierung  Test first  Entwurf und Implementation überlappen nicht  Implementa- tion spiegelt Entwurf  You Ain´t Gonna Need It (YAGNI) Blau  Automatisierte Unit Tests  Mockups (Testattrappen)  Code Coverage Analyse  Teilnahme an Fachveranstal- tungen  Komplexe Re- faktorisierungen  Issue Tracking  Automatisierte Integrationstests  Lesen, Lesen, Lesen (LLL)  Reviews  Die Pfadfinderregel beachten  Root Cause Analysis  Ein Versionskon- trollsystem einsetzen  Einfache Refakto- risierungsmuster an- wenden (ER)  Täglich reflektieren  Interface Segregation Principle  Dependency Inversion Principle  Liskov Substitution Principle  Principle of Least Astonishment  Information Hiding Principle  Single Level of Abstraction (SLA)  Single Responsibility Principle (SRP)  Separation of Concerns (SoC)  Source Code Konventionen  Don´t Repeat Yourself (DRY),  Keep it simple, stupid (KISS)  Vorsicht vor Optimierungen (VvO)  Favour Composition over Inheritance (FCoI) WeissGelbOrangeRotSchwarz PrinzipienPraktiken Das - Grade-System: Rückblick Rückblick Rückblick Rückblick
  • 51. Seite 52 / 59Team Clean Coding: Gemeinsam besser programmieren 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
  • 52. Seite 53 / 59Team Clean Coding: Gemeinsam besser programmieren TCC-Übersicht 1€-Regeln Initialisierung Def. der Legislative Grund- gesetz Executive Parla- ment Legislative Judikative Verfass.- schutz Konsti- tution Optimierung Anwendung Basiskonsens Methode der Entscheidungsfindung Projekt- unspezifische Regeln Kontrolle Diskussions- forum ProjektalltagProjekt- spezifische Regeln 4 - Review Rückblick Rückblick Rückblick Rückblick
  • 53. Seite 54 / 59Team Clean Coding: Gemeinsam besser programmieren 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 Rückblick Rückblick Rückblick
  • 54. Seite 55 / 59Team Clean Coding: Gemeinsam besser programmieren 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
  • 55. Seite 56 / 59Team Clean Coding: Gemeinsam besser programmieren Take-Home-Message CCD und TCC führen zu Qualität und Effizienz, benötigen aber Unterstützung aus dem Umfeld!
  • 56. Seite 57 / 59Team Clean Coding: Gemeinsam besser programmieren 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
  • 57. Seite 58 / 59Team Clean Coding: Gemeinsam besser programmieren 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/
  • 58. Seite 59 / 59Team Clean Coding: Gemeinsam besser programmieren 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/