SlideShare una empresa de Scribd logo
1 de 55
Descargar para leer sin conexión
Team Clean Coding:
           Sauber programmieren – Effizienz steigern

                                               iks Thementag

                 „Mehr Softwarequalität – Ausgewählte Themen“

                                                    23.04.2013




                                                    Autor:
                                               Dr. Reik Oberrath


Team Clean Coding: Sauber programmieren – Effizienz steigern       Seite 2 / 52
Was ist das Ziel der Softwareentwicklung?
Ein Produkt, das
den Auftraggeber
zufrieden 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
                                   Sicherheit
Prü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 / 52
Quelle : 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ät
Der 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-Message



Team 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 der
Clean-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.de


Team 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-
Prinzipien
Prinzipien




                        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          Iterative
Praktiken




                       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-Message



Team Clean Coding: Sauber programmieren – Effizienz steigern   Seite 15 / 52
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!
www.iks-gmbh.com




Ein 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 Testabdeckung


Produktionscode




Testabdeckung




Testcode




                 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ät



CCD-Professionalität                                           Technische Schulden
leben und seinen Prinzipien                                    bewußt eingehen und
treu Clean Coding: Sauber programmieren – Effizienz steigern
 Team bleiben.                                                 bewußt wieder begleichen. / 52
                                                                                    Seite 21
Clean Code kostet zusätzliche Zeit   Clean Code spart Zeit
in 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-Message



Team Clean Coding: Sauber programmieren – Effizienz steigern   Seite 24 / 52
Zusammenhang zwischen CCD und TCC

               Prinzipien & Praktiken,                           Teamarbeit,
             → Selbstkontrolle & Werte-                        → Kommunikation &
               system                                            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: Sauber programmieren – Effizienz steigern              Seite 25 / 52
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




Team 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 einer
Thematik ohne verdeckten oder offenen Widerspruch.“ - Wikipedia

Team 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 Done




Team Clean Coding: Sauber programmieren – Effizienz steigern                          Seite 29 / 52
Ein Fall läuft

Die guten Fälle laufen

Fehlerfälle wurden untersucht

„Alle“ Fehler berücksichtigt

Unit-Tests

Integrationstests

Systemtests

Automatische 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 sowie
Verabschiedung 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      - Reviews




Team Clean Coding: Sauber programmieren – Effizienz steigern       Seite 32 / 52
TCC: „das Ordungsamt“

4        -Review

Am Ende der Entwicklung eines Software-Teils sucht der Autor nach
einem Teammitglied, das als Reviewer dient. Dieser prüft:

      Funktionelle Korrektheit

      Ausreichende Testabdeckung

      FIXME- / TODO-Einträge

      Einhaltung der im Team abgestimmten Clean-Code-Maßnahmen

Erst 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€-Regel
Ein 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-Message



Team Clean Coding: Sauber programmieren – Effizienz steigern   Seite 36 / 52
TCC-Rahmenbedingungen

      Teamstimmung beachten und fördern




       Haufen                                Gruppe            Team




Team 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
                   Selbstorganisiert




Team 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-Meetings




Team 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 bereitstellen




Team 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-Message



Team 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ät
Der Entwicklungs-
     prozess
  (Zwischenziel, nur
  Mittel zum Zweck)


                                                                                          intern

Rü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 und
Rü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 Testabdeckung


Produktionscode




Testabdeckung




Testcode




                 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 spiegelt
Prinzipien




                        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         Entwicklung
Praktiken




                         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

Rü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 Effizienz




Team 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 Anerkennung




Rü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 bereitstellen




Team Clean Coding: Sauber programmieren – Effizienz steigern          Seite 50 / 52
Take-Home-Message

Sauber 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.info


Team Clean Coding: Sauber programmieren – Effizienz steigern     Seite 52 / 52
Fragen?
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: Sauber programmieren – Effizienz steigern                                       Seite 54 / 52
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: Sauber programmieren – Effizienz steigern                                        Seite 55 / 52
www.iks-gmbh.com

Más contenido relacionado

Destacado

Presentación de shirley rivera para coursera
Presentación de shirley rivera para courseraPresentación de shirley rivera para coursera
Presentación de shirley rivera para courserashirleyjohanna12
 
Tarea#3 maría sevilla
Tarea#3 maría sevillaTarea#3 maría sevilla
Tarea#3 maría sevillagaby_tica
 
Tutorial de file zilla
Tutorial de file zillaTutorial de file zilla
Tutorial de file zillaRerogramadorx
 
A1 beatriz hernandez-mipresentación
A1 beatriz hernandez-mipresentaciónA1 beatriz hernandez-mipresentación
A1 beatriz hernandez-mipresentaciónBea Hernández
 
Producto 2 luzmariavictoriacortesoropeza
Producto 2 luzmariavictoriacortesoropezaProducto 2 luzmariavictoriacortesoropeza
Producto 2 luzmariavictoriacortesoropezaluzyse
 
Trabajo practico 5
Trabajo practico 5Trabajo practico 5
Trabajo practico 5Nico Calleri
 
El email marketing aún tiene vida. Conoce cómo!!!
El email marketing aún tiene vida. Conoce cómo!!!El email marketing aún tiene vida. Conoce cómo!!!
El email marketing aún tiene vida. Conoce cómo!!!Lucía Zamora
 
T104 reciclar
T104 reciclarT104 reciclar
T104 reciclarceliabrjb
 
Who are you präsentation tamara
Who are you präsentation tamaraWho are you präsentation tamara
Who are you präsentation tamaraTamara94
 
Feliz halloween-07-diapositivas
Feliz halloween-07-diapositivasFeliz halloween-07-diapositivas
Feliz halloween-07-diapositivasMiguel López
 
Enamel bangle's 29 01-2011
Enamel bangle's 29 01-2011Enamel bangle's 29 01-2011
Enamel bangle's 29 01-2011Surbhita Singh
 
Twitterin oesterreich
Twitterin oesterreichTwitterin oesterreich
Twitterin oesterreichguestc36e85
 
Color y Luz
Color y LuzColor y Luz
Color y LuzMEMI093
 
Graffiti pia bravo copia
Graffiti pia bravo   copiaGraffiti pia bravo   copia
Graffiti pia bravo copiamirasaa
 

Destacado (20)

Grsb xarxa tierra-pptminimize-
Grsb xarxa tierra-pptminimize-Grsb xarxa tierra-pptminimize-
Grsb xarxa tierra-pptminimize-
 
Twitter Basics
Twitter BasicsTwitter Basics
Twitter Basics
 
Presentación de shirley rivera para coursera
Presentación de shirley rivera para courseraPresentación de shirley rivera para coursera
Presentación de shirley rivera para coursera
 
Sanitär- und Heizungsbau
Sanitär- und HeizungsbauSanitär- und Heizungsbau
Sanitär- und Heizungsbau
 
Tarea#3 maría sevilla
Tarea#3 maría sevillaTarea#3 maría sevilla
Tarea#3 maría sevilla
 
Tutorial de file zilla
Tutorial de file zillaTutorial de file zilla
Tutorial de file zilla
 
MODELO DE PORTER, SOBRE CINCO FUERZAS BÁSICA
MODELO DE PORTER, SOBRE CINCO FUERZAS BÁSICAMODELO DE PORTER, SOBRE CINCO FUERZAS BÁSICA
MODELO DE PORTER, SOBRE CINCO FUERZAS BÁSICA
 
A1 beatriz hernandez-mipresentación
A1 beatriz hernandez-mipresentaciónA1 beatriz hernandez-mipresentación
A1 beatriz hernandez-mipresentación
 
Producto 2 luzmariavictoriacortesoropeza
Producto 2 luzmariavictoriacortesoropezaProducto 2 luzmariavictoriacortesoropeza
Producto 2 luzmariavictoriacortesoropeza
 
Trabajo practico 5
Trabajo practico 5Trabajo practico 5
Trabajo practico 5
 
El email marketing aún tiene vida. Conoce cómo!!!
El email marketing aún tiene vida. Conoce cómo!!!El email marketing aún tiene vida. Conoce cómo!!!
El email marketing aún tiene vida. Conoce cómo!!!
 
Tp1 (1)
Tp1 (1)Tp1 (1)
Tp1 (1)
 
T104 reciclar
T104 reciclarT104 reciclar
T104 reciclar
 
Who are you präsentation tamara
Who are you präsentation tamaraWho are you präsentation tamara
Who are you präsentation tamara
 
Feliz halloween-07-diapositivas
Feliz halloween-07-diapositivasFeliz halloween-07-diapositivas
Feliz halloween-07-diapositivas
 
Enamel bangle's 29 01-2011
Enamel bangle's 29 01-2011Enamel bangle's 29 01-2011
Enamel bangle's 29 01-2011
 
Twitterin oesterreich
Twitterin oesterreichTwitterin oesterreich
Twitterin oesterreich
 
Color y Luz
Color y LuzColor y Luz
Color y Luz
 
Graffiti pia bravo copia
Graffiti pia bravo   copiaGraffiti pia bravo   copia
Graffiti pia bravo copia
 
Open Transport Data
Open Transport DataOpen Transport Data
Open Transport Data
 

Similar a Mehr Softwarequalität: TeamCleanCoding

Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...
Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...
Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...Socialbar
 
Sichere Webanwendungen mit OpenSAMM
Sichere Webanwendungen mit OpenSAMMSichere Webanwendungen mit OpenSAMM
Sichere Webanwendungen mit OpenSAMMOPTIMAbit GmbH
 
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
 
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
 
Testautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeTestautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeNico Orschel
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsGFU Cyrus AG
 
Faktoren für die erfolgreiche CRM-Einführung - Thomas Gabriel
Faktoren für die erfolgreiche CRM-Einführung - Thomas GabrielFaktoren für die erfolgreiche CRM-Einführung - Thomas Gabriel
Faktoren für die erfolgreiche CRM-Einführung - Thomas GabrielCRM Partners AG
 
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)Effektive Produktentwicklung mit Lernenden Teams (#wmie12)
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)WMiE
 
Enterprise CI/CD: Continuous Integration & Delivery im Enterprise-Umfeld
Enterprise CI/CD: Continuous Integration & Delivery im Enterprise-UmfeldEnterprise CI/CD: Continuous Integration & Delivery im Enterprise-Umfeld
Enterprise CI/CD: Continuous Integration & Delivery im Enterprise-UmfeldQAware GmbH
 
DevOps - Programmierst Du noch oder betreibst Du schon?
DevOps - Programmierst Du noch oder betreibst Du schon?DevOps - Programmierst Du noch oder betreibst Du schon?
DevOps - Programmierst Du noch oder betreibst Du schon?Jean-Pierre König
 
Continuous Delivery - Nett oder nötig? Erfahrungsbericht der FriendScout24 - ...
Continuous Delivery - Nett oder nötig? Erfahrungsbericht der FriendScout24 - ...Continuous Delivery - Nett oder nötig? Erfahrungsbericht der FriendScout24 - ...
Continuous Delivery - Nett oder nötig? Erfahrungsbericht der FriendScout24 - ...Michael Maretzke
 
Enterprise Cloud Native ist das neue Schwarz
Enterprise Cloud Native ist das neue SchwarzEnterprise Cloud Native ist das neue Schwarz
Enterprise Cloud Native ist das neue SchwarzQAware GmbH
 
Eine Entdeckungsreise zum Land der Software-Qualität
Eine Entdeckungsreise zum Land der Software-QualitätEine Entdeckungsreise zum Land der Software-Qualität
Eine Entdeckungsreise zum Land der Software-QualitätMarco Ravicini
 

Similar a Mehr Softwarequalität: TeamCleanCoding (20)

Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...
Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...
Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...
 
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
 
Sichere Webanwendungen mit OpenSAMM
Sichere Webanwendungen mit OpenSAMMSichere Webanwendungen mit OpenSAMM
Sichere Webanwendungen mit OpenSAMM
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 
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.
 
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...
 
Softwarequalität Entwicklung - Test - Wartung
Softwarequalität Entwicklung -  Test - WartungSoftwarequalität Entwicklung -  Test - Wartung
Softwarequalität Entwicklung - Test - Wartung
 
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
 
Testautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für FortgeschrittendeTestautomatisierung mit CodedUI für Fortgeschrittende
Testautomatisierung mit CodedUI für Fortgeschrittende
 
Softwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration ToolsSoftwarequalitätssicherung mit Continuous Integration Tools
Softwarequalitätssicherung mit Continuous Integration Tools
 
Faktoren für die erfolgreiche CRM-Einführung - Thomas Gabriel
Faktoren für die erfolgreiche CRM-Einführung - Thomas GabrielFaktoren für die erfolgreiche CRM-Einführung - Thomas Gabriel
Faktoren für die erfolgreiche CRM-Einführung - Thomas Gabriel
 
Agiles Testen - Überblick
Agiles Testen - ÜberblickAgiles Testen - Überblick
Agiles Testen - Überblick
 
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)Effektive Produktentwicklung mit Lernenden Teams (#wmie12)
Effektive Produktentwicklung mit Lernenden Teams (#wmie12)
 
Enterprise CI/CD: Continuous Integration & Delivery im Enterprise-Umfeld
Enterprise CI/CD: Continuous Integration & Delivery im Enterprise-UmfeldEnterprise CI/CD: Continuous Integration & Delivery im Enterprise-Umfeld
Enterprise CI/CD: Continuous Integration & Delivery im Enterprise-Umfeld
 
DevOps - Programmierst Du noch oder betreibst Du schon?
DevOps - Programmierst Du noch oder betreibst Du schon?DevOps - Programmierst Du noch oder betreibst Du schon?
DevOps - Programmierst Du noch oder betreibst Du schon?
 
Codeception VisualCeption
Codeception VisualCeptionCodeception VisualCeption
Codeception VisualCeption
 
Continuous Delivery - Nett oder nötig? Erfahrungsbericht der FriendScout24 - ...
Continuous Delivery - Nett oder nötig? Erfahrungsbericht der FriendScout24 - ...Continuous Delivery - Nett oder nötig? Erfahrungsbericht der FriendScout24 - ...
Continuous Delivery - Nett oder nötig? Erfahrungsbericht der FriendScout24 - ...
 
Enterprise Cloud Native ist das neue Schwarz
Enterprise Cloud Native ist das neue SchwarzEnterprise Cloud Native ist das neue Schwarz
Enterprise Cloud Native ist das neue Schwarz
 
Eine Entdeckungsreise zum Land der Software-Qualität
Eine Entdeckungsreise zum Land der Software-QualitätEine Entdeckungsreise zum Land der Software-Qualität
Eine Entdeckungsreise zum Land der Software-Qualität
 
Agile intro-90min (2007)
Agile intro-90min (2007)Agile intro-90min (2007)
Agile intro-90min (2007)
 

Más de IKS Gesellschaft für Informations- und Kommunikationssysteme mbH

Más de 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 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ß...
 
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!
 

Mehr Softwarequalität: TeamCleanCoding

  • 1. Team Clean Coding: Sauber programmieren – Effizienz steigern iks Thementag „Mehr Softwarequalität – Ausgewählte Themen“ 23.04.2013 Autor: Dr. Reik Oberrath Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 2 / 52
  • 2. Was ist das Ziel der Softwareentwicklung?
  • 3. Ein Produkt, das den Auftraggeber zufrieden stellt!
  • 4. Und einen zuverlässigen, effektiven Herstellungsprozess!
  • 5. 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
  • 6. Funktionalität extern Usability Zuverlässigkeit Performanz Sicherheit Prü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 / 52 Quelle : http://www.dadalos-d.org/frieden/images/eisberg-modell.jpg
  • 7. Was ist wichtiger? Produkt und Prozess sind gleichwichtig extern Das Produkt (finales Ziel mit Selbstzweck) Qualität Der Entwicklungs- prozess (Zwischenziel, nur Mittel zum Zweck) intern Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 8 / 52
  • 8. Was beeinflusst den Entwicklungsprozess? Der Faktor Architektur und „Mensch“ Tools Implementation & Technologien
  • 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: Sauber programmieren – Effizienz steigern Seite 10 / 52
  • 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: Sauber programmieren – Effizienz steigern Seite 11 / 52
  • 11.
  • 12. Kernaussagen der Clean-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.de Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 13 / 52
  • 13. 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 Prinzipien  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  Iterative Praktiken 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
  • 14. Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 15 / 52
  • 15. 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!
  • 16. www.iks-gmbh.com Ein Organismus verträgt nur ein begrenztes Maß an Schadstoffen.
  • 17. 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!
  • 18. Sauberer Code - Hohe Testabdeckung Produktionscode Testabdeckung Testcode Gegen Schmutz muss regelmäßig gearbeitet werden! Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 19 / 52
  • 19. Unter Zeitdruck programmieren – Effizienz steigern wieder „Quick & Dirty“ gearbeitet! / 52 Team Clean Coding: Sauber wird dann sowieso Seite 20
  • 20. Kosten Qualität Termine Kosten Termine Qualität CCD-Professionalität Technische Schulden leben und seinen Prinzipien bewußt eingehen und treu Clean Coding: Sauber programmieren – Effizienz steigern Team bleiben. bewußt wieder begleichen. / 52 Seite 21
  • 21. Clean Code kostet zusätzliche Zeit Clean Code spart Zeit in der Entwicklung! in der Wartung!
  • 22. Kritikalität Langlebigkeit Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 23 / 52
  • 23. Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 24 / 52
  • 24. Zusammenhang zwischen CCD und TCC Prinzipien & Praktiken, Teamarbeit, → Selbstkontrolle & Werte- → Kommunikation & system 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: Sauber programmieren – Effizienz steigern Seite 25 / 52
  • 25. 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 Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 26 / 52
  • 26. 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
  • 27. 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: Sauber programmieren – Effizienz steigern Seite 28 / 52
  • 28. TCC: „Verfassung/Grundgesetz“ Projekt-unspezifische Grundregeln Wie wollen wir Information festhalten? → Dokumentation Was bedeutet für uns „fertig“? → Definition Of Done Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 29 / 52
  • 29. Ein Fall läuft Die guten Fälle laufen Fehlerfälle wurden untersucht „Alle“ Fehler berücksichtigt Unit-Tests Integrationstests Systemtests Automatische Code-Analysen (Metriken) Menschliche Code-Analysen (Review) Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 30 / 52
  • 30. 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
  • 31. TCC: „das Parlament“ Forum für Informationsaustausch und Diskussionen sowie Verabschiedung 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 - Reviews Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 32 / 52
  • 32. TCC: „das Ordungsamt“ 4 -Review Am Ende der Entwicklung eines Software-Teils sucht der Autor nach einem Teammitglied, das als Reviewer dient. Dieser prüft: Funktionelle Korrektheit Ausreichende Testabdeckung FIXME- / TODO-Einträge Einhaltung der im Team abgestimmten Clean-Code-Maßnahmen Erst nach dem OK des Reviewers gilt der Teil offiziell als FERTIG! Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 33 / 52
  • 33. TCC: „die Judikative“ Die 1€-Regel Ein 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
  • 34. 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
  • 35. Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 36 / 52
  • 36. TCC-Rahmenbedingungen Teamstimmung beachten und fördern Haufen Gruppe Team Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 37 / 52
  • 37. 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: Sauber programmieren – Effizienz steigern Seite 38 / 52
  • 38. 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: Sauber programmieren – Effizienz steigern Seite 39 / 52
  • 39. 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: Sauber programmieren – Effizienz steigern Seite 40 / 52
  • 40. Agenda Einleitung Die Clean-Code-Developer-Bewegung Meinungen zu Clean-Code Das Team Clean Coding (TCC) TCC-Rahmenbedingungen Take-Home-Message Team Clean Coding: Sauber programmieren – Effizienz steigern Seite 41 / 52
  • 41. Rückblick Rückblick Was ist wichtiger? Produkt und Prozess sind gleichwichtig extern Das Produkt (finales Ziel mit Selbstzweck) Qualität Der Entwicklungs- prozess (Zwischenziel, nur Mittel zum Zweck) intern Rückblick Team Clean Coding: Sauber programmieren – Effizienz steigern Rückblick Seite 42 / 52
  • 42. Rückblick Rückblick Kosten Qualität Termine Kosten Termine Qualität CCD-Professionalität Technische Schulden leben und seinen Prinzipien bewußt eingehen und Rückblick treu Clean Coding: Sauber programmieren – Effizienz steigern Team bleiben. Rückblick bewußt wieder begleichen. / 52 Seite 43
  • 43. Rückblick Rückblick Sauberer Code - Hohe Testabdeckung Produktionscode Testabdeckung Testcode Gegen Schmutz muss regelmäßig gearbeitet werden! Rückblick Team Clean Coding: Sauber programmieren – Effizienz steigern Rückblick Seite 44 / 52
  • 44. 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
  • 45. 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 spiegelt Prinzipien 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 Entwicklung Praktiken  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 Rückblick Team Clean Coding: Sauber programmieren – Effizienz steigern Rückblick Seite 46 / 52
  • 46. 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: Sauber programmieren – Effizienz steigern Seite 47 / 52
  • 47. 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
  • 48. 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: Sauber programmieren – Effizienz steigern Rückblick Seite 49 / 52
  • 49. 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: Sauber programmieren – Effizienz steigern Seite 50 / 52
  • 50. Take-Home-Message Sauber 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
  • 51. 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: Sauber programmieren – Effizienz steigern Seite 52 / 52
  • 53. 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: Sauber programmieren – Effizienz steigern Seite 54 / 52
  • 54. 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: Sauber programmieren – Effizienz steigern Seite 55 / 52