Mehr Softwarequalität: Team-Cleancoding

916 Aufrufe

Veröffentlicht am

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

Weitere Vorträge, die wir auch gern in Ihrem Unternehmen halten, finden Sie unter: https://www.iks-gmbh.com/impulsvortraege

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
916
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
59
Aktionen
Geteilt
0
Downloads
3
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Mehr Softwarequalität: Team-Cleancoding

  1. 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. 2. Was ist das Ziel der Softwareentwicklung?
  3. 3. Ein Produkt, das den Auftraggeber zufrieden stellt!
  4. 4. Und einen zuverlässigen, effektiven Herstellungsprozess!
  5. 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
  6. 6. 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
  7. 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. 8. Was beeinflusst den Entwicklungsprozess? Der Faktor „Mensch“ Tools & Technologien Architektur und Implementation
  9. 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. 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. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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!
  15. 15. www.iks-gmbh.com Ein Organismus verträgt nur ein begrenztes Maß an Schadstoffen. Durch kontinuierliche Arbeit wird dieses Maß klein gehalten.
  16. 16. 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!
  17. 17. 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
  18. 18. Unter Zeitdruck wird dann sowieso wieder „Quick & Dirty“ gearbeitet! / 59 Team Clean Coding: Gemeinsam besser programmieren Seite 20
  19. 19. 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
  20. 20. Clean Code kostet zusätzliche Zeit in der Entwicklung! Clean Code spart Zeit in der Wartung!
  21. 21. Kritikalität Langlebigkeit Team Clean Coding: Gemeinsam besser programmieren Seite 23 / 59
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. TCC-Übersicht Initialisierung Konstitution Judikative Def. der Legislative Grundgesetz Ordnungsamt Executive Legislative Parlament Team Clean Coding: Gemeinsam besser programmieren Seite 28 / 59
  27. 27. 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
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. 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
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. 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
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. 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
  40. 40. TCC-Rahmenbedingungen Teamstimmung beachten und fördern Haufen Gruppe Team Clean Coding: Gemeinsam besser programmieren Team Seite 42 / 59
  41. 41. 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
  42. 42. 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
  43. 43. 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
  44. 44. 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
  45. 45. 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
  46. 46. 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
  47. 47. 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
  48. 48. 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
  49. 49. 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
  50. 50. 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
  51. 51. 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
  52. 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 Anerkennung Rückblick Team Clean Coding: Gemeinsam besser programmieren Rückblick Seite 54 / 59
  53. 53. 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
  54. 54. 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
  55. 55. 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
  56. 56. 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
  57. 57. 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
  58. 58. Fragen?
  59. 59. www.iks-gmbh.com

×