• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Mehr Softwarequalität: TeamCleanCoding
 

Mehr Softwarequalität: TeamCleanCoding

on

  • 728 views

Die Qualitätsanforderungen an Individualsoftware sind hoch. Sie soll funktional, zuverlässig, benutzerfreundlich und wartbar sein. Nicht zuletzt muss die Kosten-Nutzen-Relation stimmen.

Die Qualitätsanforderungen an Individualsoftware sind hoch. Sie soll funktional, zuverlässig, benutzerfreundlich und wartbar sein. Nicht zuletzt muss die Kosten-Nutzen-Relation stimmen.

Statistics

Views

Total Views
728
Views on SlideShare
602
Embed Views
126

Actions

Likes
1
Downloads
3
Comments
0

1 Embed 126

http://www.iks-gmbh.com 126

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Mehr Softwarequalität: TeamCleanCoding Mehr Softwarequalität: TeamCleanCoding Presentation Transcript

    • Team Clean Coding: Sauber programmieren – Effizienz steigern iks Thementag „Mehr Softwarequalität – Ausgewählte Themen“ 23.04.2013 Autor: Dr. Reik OberrathTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 2 / 52
    • Was ist das Ziel der Softwareentwicklung?
    • Ein Produkt, dasden Auftraggeberzufrieden stellt!
    • Und einen zuverlässigen, effektiven Herstellungsprozess!
    • Was ist wichtiger? Das Produkt (finales Ziel mit Selbstzweck)Der Entwicklungs- prozess (Zwischenziel, nur Mittel zum Zweck) Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 6 / 52
    • Funktionalität extern Usability Zuverlässigkeit Performanz SicherheitPrüfbarkeit Installierbarkeit Wartbarkeit Qualität Änderbarkeit Testbarkeit Architektur Architektur Technologie Design Code Technologie Design Code intern Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 7 / 52Quelle : http://www.dadalos-d.org/frieden/images/eisberg-modell.jpg
    • Was ist wichtiger? Produkt und Prozess sind gleichwichtig extern Das Produkt (finales Ziel mit Selbstzweck) QualitätDer Entwicklungs- prozess (Zwischenziel, nur Mittel zum Zweck) intern Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 8 / 52
    • Was beeinflusst den Entwicklungsprozess? Der Faktor Architektur und „Mensch“ Tools Implementation & Technologien
    • Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-MessageTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 10 / 52
    • 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: Sauber programmieren – Effizienz steigern Seite 11 / 52
    • Kernaussagen derClean-Code-Developer-Bewegung Disziplin Ständige Selbstkontrolle („Bewusstsein“) („Professionalität“) 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.deTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 13 / 52
    • Das - Grade-System: Schwarz Rot Orange Gelb Grün Blau Weiss  Don´t Repeat  Single Level of  Interface  Open Closed  Entwurf und Yourself (DRY), Abstraction Segregation Principle Implementation  Keep it simple, (SLA) Principle  Tell, don´t ask überlappen nicht stupid (KISS)  Single  Dependency  Law of Demeter  Implementa-PrinzipienPrinzipien  Vorsicht vor Responsibility Inversion Principle tion spiegelt Optimierungen Principle (SRP)  Liskov Entwurf  Separation of Substitution  You Ain´t (VvO) Principle Concerns (SoC) Gonna Need It  Favour www.iks-gmbh.com Composition over Inheritance (FCoI)  Source Code Konventionen  Principle of Least Astonishment (YAGNI)  Information Hiding Principle  Die Pfadfinderregel  Issue Tracking  Automatisierte  Continuous  Continuous beachten  Automatisierte Unit Tests Integration I Integration II  Root Cause Integrationstests  Mockups  Statische  IterativePraktiken Analysis  Lesen, Lesen, (Testattrappen) Codeanalyse Entwicklung  Ein Versionskon- Lesen (LLL)  Code Coverage (Metriken)  Komponenten- trollsystem einsetzen  Reviews Analyse  Inversion of orientierung  Einfache Refakto-  Teilnahme an Control Container  Test first risierungsmuster an- Fachveranstal-  Erfahrung wenden (ER) tungen weitergeben  Täglich reflektieren  Komplexe Re-  Messen von faktorisierungen Fehlern
    • Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-MessageTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 15 / 52
    • www.iks-gmbh.comClean-Code ist gut, aber praxisfern – eher etwas für Ästheten! Clean-Code ist gut, man kann es aber leicht übertreiben!
    • www.iks-gmbh.comEin Organismus verträgt nur ein begrenztes Maß an Schadstoffen.
    • 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 TestabdeckungProduktionscodeTestabdeckungTestcode Gegen Schmutz muss regelmäßig gearbeitet werden! Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 19 / 52
    • Unter Zeitdruck programmieren – Effizienz steigern wieder „Quick & Dirty“ gearbeitet! / 52 Team Clean Coding: Sauber wird dann sowieso Seite 20
    • Kosten Qualität Termine Kosten Termine QualitätCCD-Professionalität Technische Schuldenleben und seinen Prinzipien bewußt eingehen undtreu Clean Coding: Sauber programmieren – Effizienz steigern Team bleiben. bewußt wieder begleichen. / 52 Seite 21
    • Clean Code kostet zusätzliche Zeit Clean Code spart Zeitin der Entwicklung! in der Wartung!
    • Kritikalität Langlebigkeit Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 23 / 52
    • Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-MessageTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 24 / 52
    • Zusammenhang zwischen CCD und TCC Prinzipien & Praktiken, Teamarbeit, → Selbstkontrolle & Werte- → Kommunikation & system TeamkontrolleUnterschiede: 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ötigTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 25 / 52
    • Das Team Clean CodingWarum 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 AnerkennungTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 26 / 52
    • TCC: „Verfassung/Konstitution“Notwendiger Basis-Konsens§1 ALLE Teammitglieder (inkl. Projektleitung) verpflichten sich, Regeln und Prozesse anzuerkennen, die für ALLE gleicher- maßen bindend sind.§2 Diese Regeln und Prozesse können bei Bedarf jederzeit angepasst werden.§3 Zuerst wird ein Verfahren zur Entscheidungsfindung festgelegt (Definition der „Legislative“).§4 Die „Legislative“ legt einen Satz von Basisregeln fest (das „Grundgesetz“).Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 27 / 52
    • 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 einerThematik ohne verdeckten oder offenen Widerspruch.“ - WikipediaTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 28 / 52
    • TCC: „Verfassung/Grundgesetz“Projekt-unspezifische Grundregeln Wie wollen wir Information festhalten? → Dokumentation Was bedeutet für uns „fertig“? → Definition Of DoneTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 29 / 52
    • Ein Fall läuftDie guten Fälle laufenFehlerfälle wurden untersucht„Alle“ Fehler berücksichtigtUnit-TestsIntegrationstestsSystemtestsAutomatische Code-Analysen (Metriken)Menschliche Code-Analysen (Review) Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 30 / 52
    • TCC: „Verfassung/Grundgesetz“Projekt-unspezifische Grundregeln Wie wollen wir Information festhalten? → Dokumentation Was bedeutet für uns „fertig“? → Definition Of Done Was heißt für uns „clean“? → CCD-Regeln Wie gehen wir mit unfertigem Code um? → Code Tagging Wie ist unser Umgang mit „fremdem Eigentum“?Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 31 / 52
    • TCC: „das Parlament“Forum für Informationsaustausch und Diskussionen sowieVerabschiedung weiterer (Projekt-spezifischer) Regeln Daily Standups (Scrum-ähnlich) Regelmäßige Team-Reviews Retrospektiven Coding-Notes kommunizieren (z.B. E-Mail an Team-Verteiler) Pair-Programming 4 - ReviewsTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 32 / 52
    • TCC: „das Ordungsamt“4 -ReviewAm Ende der Entwicklung eines Software-Teils sucht der Autor nacheinem Teammitglied, das als Reviewer dient. Dieser prüft: Funktionelle Korrektheit Ausreichende Testabdeckung FIXME- / TODO-Einträge Einhaltung der im Team abgestimmten Clean-Code-MaßnahmenErst nach dem OK des Reviewers gilt der Teil offiziell als FERTIG!Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 33 / 52
    • TCC: „die Judikative“Die 1€-RegelEin Euro wird eingezogen bei Vergehen gegen zuvor abgestimmte Regeln,deren Verstoß von der „Legislative“ 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: Sauber programmieren – Effizienz steigern Seite 34 / 52
    • Das Team Clean Coding: Zusammenfassung Basis-Konsens „Verfassung/Konstitution“ Definition der Entscheidungsfindung „Verfassung/Legislative“ Festlegung Projekt-unspezifischer Regeln „Verfassung/Grundgesetz“ Diskussionsforum „das Parlament“ 4 - Review „das Ordnungsamt“ 1€-Regel „die Judikative“Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 35 / 52
    • Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-MessageTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 36 / 52
    • TCC-Rahmenbedingungen Teamstimmung beachten und fördern Haufen Gruppe TeamTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 37 / 52
    • TCC-Rahmenbedingungen Teamstimmung beachten und fördern Bewusste Teamzusammenstellung Retrospektive-Meetings / gemeinsames Essengehen Bei Bedarf Teamzusammenstellung ändern Organisationsstruktur des Teams ändern  Hierarchisch  Parlamentarisch  SelbstorganisiertTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 38 / 52
    • 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-MeetingsTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 39 / 52
    • TCC-Rahmenbedingungen Teamstimmung beachten und fördern Zeit für Kommunikation im Team einplanen Fortbildung der Teammitglieder unterstützen Akzeptanz signalisieren und Infrastruktur bereitstellenTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 40 / 52
    • Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-MessageTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 41 / 52
    • Rückblick Rückblick Was ist wichtiger? Produkt und Prozess sind gleichwichtig extern Das Produkt (finales Ziel mit Selbstzweck) QualitätDer Entwicklungs- prozess (Zwischenziel, nur Mittel zum Zweck) internRückblick Team Clean Coding: Sauber programmieren – Effizienz steigern Rückblick Seite 42 / 52
    • Rückblick Rückblick Kosten Qualität Termine Kosten Termine Qualität CCD-Professionalität Technische Schulden leben und seinen Prinzipien bewußt eingehen undRückblick treu Clean Coding: Sauber programmieren – Effizienz steigern Team bleiben. Rückblick bewußt wieder begleichen. / 52 Seite 43
    • Rückblick Rückblick Sauberer Code - Hohe TestabdeckungProduktionscodeTestabdeckungTestcode Gegen Schmutz muss regelmäßig gearbeitet werden!Rückblick Team Clean Coding: Sauber programmieren – Effizienz steigern Rückblick Seite 44 / 52
    • Take-Home-Message Herstellungsprozess und Produkt sind gleich wichtig – technische Schulden müssen zurückgezahlt werden!Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 45 / 52
    • Rückblick Rückblick Das - Grade-System: Schwarz Rot Orange Gelb Grün Blau Weiss  Don´t Repeat  Single Level of  Interface  Open Closed  Entwurf und Yourself (DRY), Abstraction Segregation Principle Implementation  Keep it simple, (SLA) Principle  Tell, don´t ask überlappen nicht stupid (KISS)  Single  Dependency  Law of Demeter  Implementa- Prinzipien  Vorsicht vor Responsibility Inversion Principle tion spiegeltPrinzipien Optimierungen Principle (SRP)  Liskov Entwurf  Separation of Substitution  You Ain´t (VvO) Principle Concerns (SoC) Gonna Need It  Favour www.iks-gmbh.com Composition over Inheritance (FCoI)  Source Code Konventionen  Principle of Least Astonishment (YAGNI)  Information Hiding Principle  Die Pfadfinderregel  Issue Tracking  Automatisierte  Continuous  Continuous beachten  Automatisierte Unit Tests Integration I Integration II  Root Cause Integrationstests  Mockups  Statische  Iterative Praktiken Analysis  Lesen, Lesen, (Testattrappen) Codeanalyse EntwicklungPraktiken  Ein Versionskon- Lesen (LLL)  Code Coverage (Metriken)  Komponenten- trollsystem einsetzen  Reviews Analyse  Inversion of orientierung  Einfache Refakto-  Teilnahme an Control Container  Test first risierungsmuster an- Fachveranstal-  Erfahrung wenden (ER) tungen weitergeben  Täglich reflektieren  Komplexe Re-  Messen von faktorisierungen FehlernRückblick Team Clean Coding: Sauber programmieren – Effizienz steigern Rückblick Seite 46 / 52
    • 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 EffizienzTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 47 / 52
    • Rückblick Rückblick Das Team Clean Coding: Zusammenfassung Basis-Konsens „Verfassung/Konstitution“ Definition der Entscheidungsfindung „Verfassung/Legislative“ Festlegung Projekt-unspezifischer Regeln „Verfassung/Grundgesetz“ Diskussionsforum „das Parlament“ 4 - Review „das Ordnungsamt“ 1€-Regel „die Judikative“Rückblick Team Clean Coding: Sauber programmieren – Effizienz steigern Rückblick Seite 48 / 52
    • 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 AnerkennungRückblick Team Clean Coding: Sauber programmieren – Effizienz steigern Rückblick Seite 49 / 52
    • 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 bereitstellenTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 50 / 52
    • Take-Home-MessageSauber programmieren führt zu Qualität und Effizienz,benötigt aber Unterstützung aus dem Umfeld!Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 51 / 52
    • 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.infoTeam Clean Coding: Sauber programmieren – Effizienz steigern Seite 52 / 52
    • Fragen?
    • BildernachweiseDie in diesem Vortrag verwendeten Bilder stammen von folgenden Quellen:Folie 3: http://www.flickr.comFolie 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.jpgFolie 11: http://www.hborchert.de/medihumor.htm http://hdfreewallpaper.info/fishy-ubuntu-1920-x-1080.htmlFolie 12: http://photos.signonsandiego.com/album55/mud02Folie 16: http://freepostermaker.com/uploads/saved_posters/free-poster-dnxeoi88fg-WILLIES-WASH.jpgFolie 28: http://www.flickr.com/photos/oskay/437341603/Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 54 / 52
    • Weitere Bildernachweise1. 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.de4. Wasserrad http://www.wasserrad-drews.de/Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 55 / 52
    • www.iks-gmbh.com