Your SlideShare is downloading. ×
Mehr Softwarequalität: Team Clean Coding
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Mehr Softwarequalität: Team Clean Coding

421
views

Published on

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.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
421
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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
  • 8. Der Faktor „Mensch“ Architektur und ImplementationTools & Technologien Was beeinflusst den Entwicklungsprozess?
  • 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.
  • 11. 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“)
  • 12. 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:
  • 13. 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
  • 14. 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!
  • 15. www.iks-gmbh.com Ein Organismus verträgt nur ein begrenztes Maß an Schadstoffen. Durch kontinuierliche Arbeit wird dieses Maß klein gehalten.
  • 16. 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!
  • 17. 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.
  • 18. Seite 20 / 59Team Clean Coding: Gemeinsam besser programmieren Unter Zeitdruck wird dann sowieso wieder „Quick & Dirty“ gearbeitet!
  • 19. 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
  • 20. Clean Code kostet zusätzliche Zeit in der Entwicklung! Clean Code spart Zeit in der Wartung!
  • 21. Seite 23 / 59Team Clean Coding: Gemeinsam besser programmieren Langlebigkeit Kritikalität
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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“).
  • 28. 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
  • 29. 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
  • 30. 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)
  • 31. 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“?
  • 32. 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
  • 33. 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
  • 34. 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)
  • 35. 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
  • 36. 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.
  • 37. 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.
  • 38. 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
  • 39. 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
  • 40. Seite 42 / 59Team Clean Coding: Gemeinsam besser programmieren TCC-Rahmenbedingungen Teamstimmung beachten und fördern Haufen Gruppe Team
  • 41. 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
  • 42. 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
  • 43. 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
  • 44. 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
  • 45. 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
  • 46. 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
  • 47. 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
  • 48. Seite 50 / 59Team Clean Coding: Gemeinsam besser programmieren Take-Home-Message Herstellungsprozess und Produkt sind gleich wichtig – technische Schulden müssen zurückgezahlt werden!
  • 49. 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
  • 50. 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
  • 51. 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
  • 52. 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
  • 53. 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
  • 54. 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!
  • 55. 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
  • 56. 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/
  • 57. 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/
  • 58. Fragen?
  • 59. www.iks-gmbh.com