Mehr Softwarequalität: Team-Cleancoding

Embed Size (px)

DESCRIPTION

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

Text of Mehr Softwarequalität: Team-Cleancoding

  • 1. Team Clean Coding: Gemeinsam besser programmieren iks Thementag Mehr Softwarequalitt Ausgewhlte Themen 12.11.2013 Autor: Dr. Reik Oberrath Team Clean Coding: Gemeinsam besser programmieren Seite 2 / 59
  • 2. Was ist das Ziel der Softwareentwicklung?
  • 3. Ein Produkt, das den Auftraggeber zufrieden stellt!
  • 4. Und einen zuverlssigen, effektiven Herstellungsprozess!
  • 5. Was ist wichtiger? Das Produkt (Finales Ziel mit Selbstzweck) Der Entwicklungsprozess (Zwischenziel, nur Mittel zum Zweck) Team Clean Coding: Gemeinsam besser programmieren Seite 6 / 59
  • 6. Funktionalitt Zuverlssigkeit Usability Prfbarkeit extern Sicherheit Performanz Installierbarkeit nderbarkeit Architektur Architektur Design Qualitt 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. Was ist wichtiger? Produkt und Prozess sind gleich wichtig extern Das Produkt (Finales Ziel mit Selbstzweck) Qualitt Der Entwicklungsprozess (Zwischenziel, nur Mittel zum Zweck) intern Team Clean Coding: Gemeinsam besser programmieren Seite 8 / 59
  • 8. Was beeinflusst den Entwicklungsprozess? Der Faktor Mensch Tools & Technologien Architektur und Implementation
  • 9. Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message Team Clean Coding: Gemeinsam besser programmieren Seite 10 / 59
  • 10. Was heit clean? Def. 1: Clean ist alles, was intuitiv verstndlich ist, also (Quellcode-) Dokumente, Datenstrukturen, Konzepte, Regeln, Verfahren .... Def. 2: Intuitiv verstndlich 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. Kernaussagen der Clean-Code-Developer-Bewegung Disziplin (Professionalitt) Stndige Selbstkontrolle (Bewusstsein) durch konsequente Anwendung (gegen widrige Umstnde) des inneren Wertesystems (Prinzipien). Wertesystem Das Buch Clean Code ist wert, als allgemeingltiges 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. Das Praktiken Prinzipien Prinzipien Schwarz - Grade-System: Rot Orange Gelb Grn Blau Dont 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, dont ask Law of Demeter Entwurf und Implementation berlappen nicht Implementation spiegelt Entwurf You Aint Gonna Need It (YAGNI) Die Pfadfinderregel beachten Root Cause Analysis Ein Versionskontrollsystem einsetzen Einfache Refaktorisierungsmuster anwenden (ER) Tglich 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. 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. www.iks-gmbh.com Clean-Code ist gut, aber praxisfern eher etwas fr stheten! Clean-Code ist gut, man kann es aber leicht bertreiben!
  • 15. www.iks-gmbh.com Ein Organismus vertrgt nur ein begrenztes Ma an Schadstoffen. Durch kontinuierliche Arbeit wird dieses Ma klein gehalten.
  • 16. www.iks-gmbh.com Clean-Code ist was fr Spieer wichtig ist nur, dass es luft! Wichtig sind Funktionsfhigkeit, Stabilitt, Wartbarkeit und Erweiterbarkeit. Dazu braucht man keinen Clean-Code!
  • 17. Sauberer Code Hohe Testabdeckung Produktionscode Testabdeckung Testcode Schmutz akkumuliert von alleine. Schmutz stellt eine reale Gefahr fr die Entwicklung dar. Team Clean Coding: Gemeinsam besser programmieren Seite 19 / 59
  • 18. Unter Zeitdruck wird dann sowieso wieder Quick & Dirty gearbeitet! / 59 Team Clean Coding: Gemeinsam besser programmieren Seite 20
  • 19. Kosten Qualitt Termine Kosten Termine Qualitt CCD-Professionalitt leben und seinen Prinzipien Team bleiben. treu Clean Coding: Gemeinsam besser programmieren Technische Schulden bewusst eingehen und Seite 21 / bewusst wieder begleichen.59
  • 20. Clean Code kostet zustzliche Zeit in der Entwicklung! Clean Code spart Zeit in der Wartung!
  • 21. Kritikalitt Langlebigkeit Team Clean Coding: Gemeinsam besser programmieren Seite 23 / 59
  • 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. Zusammenhang zwischen CCD und TCC Prinzipien, Praktiken, Selbstkontrolle Teamarbeit, Kommunikation, Teamkontrolle Unterschiede: Es gibt zustzliche 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 ntig Team Clean Coding: Gemeinsam besser programmieren Seite 25 / 59
  • 24. Das Team Clean Coding Warum TCC? Gute Vorstze schwinden schnell Verrottung Unterschiedliche Meinungen Wildwuchs Mittel gegen die Durchsetzungsstarken (Die Stillen sind nicht automatisch schlechter) Eine soziale, wechselseitige Kontrolle auf Augenhhe Motivation durch wortlose Anerkennung Team Clean Coding: Gemeinsam besser programmieren Seite 26 / 59
  • 25. Das Team Clean Coding: bersicht Konstitution Judi