Hauptsache,                  Entwicklung           Test
     es läuft?
                                               Wartung

                           iks Thementag

„Mehr Softwarequalität – Best practices für alle Entwicklungsphasen“

                            19.06.2012



                               Autor:
                          Dr. Reik Oberrath
Agenda

      Begriffserklärung: Entwicklung, Wartung, Test

      Sieben Einflussgrößen der Softwarequalität in
      Entwicklung und Wartung

      Best practices im Einsatz

      Zusammenfassung




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 3 / 42
Agenda

      Begriffserklärung: Entwicklung, Wartung, Test

      Sieben Einflussgrößen der Softwarequalität in
      Entwicklung und Wartung

      Best practices im Einsatz

      Zusammenfassung




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 4 / 42
Was ist Entwicklung, was Wartung und was Test?

                                           Software-           Release                      Software-Erweiterung,
Entwicklung                               Erweiterung           Build                         Fehlerbehebung,
                                                                                              Entwicklungstests




                                                                                                 Release
                                         Enwicklungs-           Freigabe-                       Build & Test
      Test                                  tests                 tests



                                                                                                 Freigabe


                                           Fehler-         Produktions-
  Wartung                                 behebung         unterstützung
                                                                                               Produktions-
                                                                                               unterstützung
iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test                      Seite 5 / 42
Agenda

      Begriffserklärung: Entwicklung, Wartung, Test

      Sieben Einflussgrößen der Softwarequalität in
      Entwicklung und Wartung

      Best practices im Einsatz

      Zusammenfassung




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 6 / 42
7. Produktions-                                                   1. Entwicklungs-          Entwicklung
      unterstützung                                                          tools               im engeren Sinn




6. Freigabe
                                    Software-                                 2. Clean Code
                                                                                                4. Kommunikation
                                     qualität                                                        im Team




        5. Release
        Build & Test                                                    3. Entwicklungs-
                                                                              tests


    iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test          Seite 7 / 42
7. Produktions-                                                  1. Entwicklungs-
                                                                      1. Entwicklungs-
      unterstützung                                                         tools
                                                                            tools




6. Freigabe
                                    Software-                                 2. Clean Code
                                                                                                4. Kommunikation
                                     qualität                                                        im Team




        5. Release
        Build & Test                                                    3. Entwicklungs-
                                                                              tests


    iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test          Seite 8 / 42
1. Entwicklungstools: Best practices

      Entwicklungsumgebung (IDE):
                 Java: Eclipse, NetBeans, IntelliJ
                .NET: Visual Studio
                AS/400: RDP

      Versionsverwaltung:
                Java:           CVS, SVN,           Mercurial, GIT
                .NET: Team Foundation Server
                AS/400: TD/OMS

      Issue Tracker:
                Jira, Mantis, Bugzilla, Trac


iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 9 / 42
7. Produktions-                                                   1. Entwicklungs-
      unterstützung                                                          tools




6. Freigabe
                                    Software-                                 2. Clean Code
                                                                                                4. Kommunikation
                                     qualität                                                        im Team




        5. Release
        Build & Test                                                    3. Entwicklungs-
                                                                              tests


    iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test         Seite 10 / 42
2. Clean Code: Was ist das?

      Codequalität
      Interne / Strukturelle Qualität des Produkts
      Effiziente Software-Entwicklung




  Merkmale:
       Leicht verständlich
                                                        flexibel
       Einfach änderbar                                                                     wartbar
       Gut testbar



iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test             Seite 11 / 42
2. Clean Code: Best practices

                              Allgemeine                                          Sprachen-spezifische
                              Prinzipien                                          Prinzipien
Patterns                      Clean-Code-Developer [1]:                            Buch-Tipp:
„so ist‘s gut“                DRY-Prinzip, KISS-Prinzip, …                         „Effektive Java“ [2]
                              SOLID-Prinzipien, …
                              Softwaremetriken, …


Antipatterns                   Vortrag:                                            Buch-Tipp:
„so nicht!“                    „Clean Code: Von der                                „Bug Patterns in Java“ [3]
                               Lehre in den Alltag“
                               von Jörg Vollmer &                                  Code-Inspection-Tools:
                               Reik Oberrath                                       Findbugs, Checkstyle,
                                                                                   PMD, Eclipse

   iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test              Seite 12 / 42
2. Clean Code: Softwaremetriken

      Messbar sind Umfang, Komplexität, Koppelung,
      Lesbarkeit, Abstraktion, …

      Bsp. 1: Lines of Code (LOC) pro Quelltextdatei

      Bsp. 2: Cyclomatische Komplexität (CCN)
              bzw. McCabe-Metrik

      Tools: Checkstyle, Sonar




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 13 / 42
2. Clean Code: Softwaremetriken im Einsatz I

                             60
     Anz. Quelltextdateien




                             50
                             40
                             30
                             20
                             10
                              0
                                  1    2     3         4        5         6        7
                                      Zyklomatische Komplexität



iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 14 / 42
2. Clean Code: Softwaremetriken im Einsatz II
   Zyklomatischen Komplexität > 4


                                     6
   Anz. Quelltextdateien mit einer




                                     5
                                                                                            Akzeptanzgrenze
                                     4
                                     3
                                                                                                Sollwert
                                     2
                                     1
                                     0
                                         1 2 3 4 5 6 7 8 9 10 11
                                               Release Candidate



iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test                  Seite 15 / 42
7. Produktions-                                                   1. Entwicklungs-
      unterstützung                                                          tools




6. Freigabe
                                    Software-                                 2. Clean Code
                                                                                                4. Kommunikation
                                     qualität                                                        im Team




        5. Release
        Build & Test                                                   3. Entwicklungs-
                                                                             tests


    iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test         Seite 16 / 42
3. Entwicklungstest: Testtypen

                                                                 aufwändige
                                                                Testumgebung
End-To-End-Tests                                                     nötig
                                                                                                System-
                                                                                                 tests
Integrationstests,
Komponententests,
„Servicetests“                                   schnell in der
                                                                                               Modultests
                                                  Ausführung


„Programmzeilen-
                                                                                               Unittests
 test“


   iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test                Seite 17 / 42
3. Entwicklungstest: Aussagekraft


                                                       Externe Qualität
                                                       Interne Qualität
                   Informationsmenge




                                                                                                Nach [4]




                                       Unittests         Modultests               Systemtests



iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test          Seite 18 / 42
3. Entwicklungstest: Teststrategie

Testabdeckung               Testausführung

   ca. 10 %                        täglich bis                                                   System-
                                  wöchentlich                                                     tests


   ca. 50 %                        möglichst                                                    Modultests
                                     oft


möglichst hoch                     nach jeder
   (>90%)                          Änderung                                                     Unittests



    iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test                Seite 19 / 42
3. Entwicklungstest: Best practices

       Automatisierung aller Testtypen (Unit-, Modul- und Systemtests)

       Regelmäßige Ausführung durch CI-Tools




  Tools für CI (Continuous Integration):
       Hudson
       Jenkins
       Teamcity
       Team Foundation Server (.NET)



iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 20 / 42
3. Entwicklungstest: CI - Funktionsweise


       Versionskontroll-                                                                      Continuous Integration
           system                                                                                    Server
                                                       Prüft Aktualität

                                                         Neuer Stand

                                                                                                           Führt
                                                                                                           Build & Test
                                                                                                           aus


                                                                benachrichtigt
                                                                                    Prüft
                                                                                 Testergebnisse
                                Neuer Stand




                                                     Entwickler



iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test                            Seite 21 / 42
7. Produktions-                                                   1. Entwicklungs-
      unterstützung                                                          tools




6. Freigabe
                                    Software-                                 2. Clean Code
                                                                                                4. Kommunikation
                                     qualität                                                        im Team




        5. Release
        Build & Test                                                    3. Entwicklungs-
                                                                              tests


    iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test         Seite 22 / 42
4. Kommunikation im Entwicklerteam:
   Wichtigkeit

      Wissensaustausch
      (Tools, Technologien, Clean Code, Teststrategie …)

      Einigung auf gemeinsame Ziele
      (Teststrategie, Clean Code, Definition of Done, …)

      Arbeitsteilung („aufeinander zu arbeiten“)




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 23 / 42
4. Kommunikation im Entwicklerteam:
   Vorrausetzungen

      Kluge Teamzusammenstellung:
      Gute Stimmung im Team, hohe Motivation zur Kommunikation

      Soft-Skill „Kommunikationsfähigkeit“:
      Buch-Tipp: Soft-Skills für Softwareentwickler [5]




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 24 / 42
4. Kommunikation im Entwicklerteam:
   Best practices

      Pairprogramming

      Regelmäßige Code-Review-Meetings

      Einsatz von Tools
           - Dokumentation: Wiki, Confluence
           - Issue-Tracking: Jira, Bugzilla
           - Sonstige: RE-Tools, EMail




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 25 / 42
7. Produktions-                                                   1. Entwicklungs-
      unterstützung                                                          tools




6. Freigabe
                                    Software-                                 2. Clean Code
                                                                                                4. Kommunikation
                                     qualität                                                        im Team




        5. Release
       Build & Test                                                     3. Entwicklungs-
                                                                              tests


    iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test         Seite 26 / 42
5. Release Build & Test: Best practices

      Automatischer Build („Auf-Knopfdruck“)

      Regelmäßige Durchführung (Continuous Delivery)

      Java-Tools: Ant, Maven, Gradle

      Automatische (System-)Tests & Manueller Anlauftest




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 27 / 42
7. Produktions-                                                   1. Entwicklungs-
      unterstützung                                                          tools




6. Freigabe
                                    Software-                                 2. Clean Code
                                                                                                4. Kommunikation
                                     qualität                                                        im Team




        5. Release
        Build & Test                                                    3. Entwicklungs-
                                                                              tests


    iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test         Seite 28 / 42
6. Freigabe: Hochstufungsprozess



                          Produktionsumgebung


                             Abnahmeumgebung


                          Integrationsumgebung

iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 29 / 42
6. Freigabe: Best practices

      Dreistufiger Hochstufungsprozess

      Automatische Freigabetests (Akzeptanztests)

      Manuelles freies Testen




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 30 / 42
7. Produktions-                                                   1. Entwicklungs-
      unterstützung                                                          tools




6. Freigabe
                                    Software-                                 2. Clean Code
                                                                                                4. Kommunikation
                                     qualität                                                        im Team




        5. Release
        Build & Test                                                    3. Entwicklungs-
                                                                              tests


    iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test         Seite 31 / 42
7. Produktionsunterstützung: Best practices

      Gute Produkteinführung für die Benutzer

      Guter Informationsaustausch zwischen Entwicklern
      und Betrieb (technische Administration): DevOps

      Guter Informationsaustausch zwischen Entwicklern
      und Fachseite (fachliche Administration): „DevBus“

      Guter Informationsaustausch zwischen Entwicklern
      und Benutzern: „DevUse“




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 32 / 42
7. Produktions-                                                   1. Entwicklungs-
      unterstützung                                                          tools




6. Freigabe
                                    Software-                                 2. Clean Code
                                                                                                4. Kommunikation
                                     qualität                                                        im Team




        5. Release
        Build & Test                                                    3. Entwicklungs-
                                                                              tests


    iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test         Seite 33 / 42
Agenda

      Begriffserklärung: Entwicklung, Wartung, Test

      Sieben Einflussgrößen der Softwarequalität in
      Entwicklung und Wartung

      Best practices im Einsatz

      Zusammenfassung




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 34 / 42
Die best practices im laufenden Projekt
Symptom                                             betrifft                                Abhilfe

Entwickler findet seinen Code nicht                 1. Entwicklungstools                    Bessere Tools
Fehlerbehebung dauert zu lange                      2. Clean Code                           Strukturelle Codequalität
                                                                                            verbessern
Zu viele Fehler im Release                          3. Entwicklungstests                    Teststrategie verbessern
Entwickler: „Das ist nicht von mir,                 4. Kommunikation im Team                Mehr Wissensaustausch unter
ich kenne mich da nicht aus.“                                                               den Entwicklern
Release Build dauert zu lange                       5. Release Build & Tests                Höhere Automatisierung,
                                                                                            häufigere Builds
Zu viele Fehler in der Produktion                   6. Freigabe                             Hochstufungsprozess einführen,
                                                                                            intensivere Freigabetests
System ist technisch zu instabil                    7. Produktionsunterstützung             Bessere Kommunikation mit
                                                                                            dem Betrieb (tech. Admin.)
Zu viele Fehler in der Abnahme-                     3. Entwicklungstests                    Intensivere Entwicklertests
umgebung                                            5. Release Build & Tests                Intensivere Releasetests

Entwickler: „It‘s a feature, not a bug“             7. Produktionsunterstützung             Bessere Produkteinführung

iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test                        Seite 35 / 42
Die best practices für ein neues Projekt
1. Entwicklungs-             Eclipse, GIT
   tools
2. Clean Code                DRY, KISS, …                     SOLID, …                          Automatische
                                                                                                Softwaremetriken, …
3. Entwicklungs-             Automatische Unit-               Automatische                      Automatische System-
   tests                     Tests, CI                        Integrationstests                 tests
4. Kommunikation             Issue Tracker                    Reviews, Pairprogramming,         Vieraugenprinzip im
   im Team                                                    Doku-Tools                        Definition of Done
5. Release Build             Automatischer Build              Automatische Systemtests
   & Tests
6. Freigabe                  -                                Abnahmeumgebung                   Dreistufiger
                                                                                                Hochstufungsprozess
7. Produktions-              Produkteinführung                DevOps, „DevUse“,
   unterstützung                                              „DevBus“


                                 Billig                                                                          Teuer
                                 Einfach                   Mausklick
                                                              Kritikalität                                    Komplex
                                 Kurzweilig                                                                 Langfristig
                                 Ungefährlich
    iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test          Lebensgefährlich 42
                                                                                                               Seite 36 /
Wie wirkt sich die Anwendung
   der best practices aus?




                                                                                               1 0 011 01 00 1 1 100      1001101   0011100
                                                                                                                          0110011   1010110
                                                                                               01 1 01 10 1 10 0 001      0110110   1100001
                                                                                                             11 11 0 00   1010010   1111000
                                                                                              10 10 01 0
                                                                                               01 00 011 0 1 111 01       0100011   0111101
                                                                                                                          1000011   1001010
                                                                                               01 010 10 1 00 11 01       0101010   1001101




                                                       ERROR




                iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test                                     Seite 37 / 42
Agenda

      Begriffserklärung: Entwicklung, Wartung, Test

      Sieben Einflussgrößen der Softwarequalität in
      Entwicklung und Wartung

      Best practices im Einsatz

      Zusammenfassung




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 38 / 42
Nicht-funktionale
 Hauptsache, es läuft?                                                        Qualitätsmerkmale von Software




 Das Produkt                                                                  korrekt, skalierbar, performant,
  (finales Ziel mit                                                           stabil, effizient, sicher (Security),
    Selbstzweck)                                                              zuverlässig, gesetzeskonform,
                                                                              gut bedienbar




Der Entwicklungs-                                                             wirtschaftlich, testbar, erweiterbar,
     prozess                                                                  veränderbar, analysierbar, wartbar
  (Zwischenziel, nur
  Mittel zum Zweck)




     iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test                        Seite 39 / 42
Zusammenfassung

      In Entwicklung und Wartung hat die SQ 7 Einflussgrößen

      Für jede Einflussgröße gibt es eine Reihe von best practices

      SQ kostet und zahlt sich u.U. erst langfristig aus

      Ein guter Entwicklungsprozess ist der Schlüssel zu einem
      guten Produkt

      Produkt und Herstellungsprozess sind gleich wichtig




iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 40 / 42
Referenzen

[1] Die Clean Code Developer
    www.clean-code-developer.de/

[2] Effective Java: A Programming Language Guide
    Joshua Bloch, 2. Auflage, 2008

[3] Bug Patterns in Java
    Eric Allen, 2002

[4] Growing Object-Oriented Software, Guided By Tests
    Steve Freeman & Nat Pryce, 2010

[5] Soft Skills für Softwareentwickler
    Uwe Vigenshow, Björn Schneider & Ines Meyrose, 2. Auflage, 2011



iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 41 / 42
Weiterführende Literatur

      Growing Object-Oriented Software, Guided By Tests
      Steve Freeman & Nat Pryce, 2010

      Clean Code - Refactoring, Patterns, Testen und Techniken
      für sauberen Code
      Robert C. Martin, 2009

      Der Pragmatische Programmierer
      David Thomas, Andrew Hunt, Steffen Gemkow und Andreas
      Braig, 2003

      Clean Coder: Verhaltensregeln für professionelle Programmierer
      Robert C. Martin, 2011


iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test   Seite 42 / 42
Fragen?
www.iks-gmbh.com

Softwarequalität Entwicklung - Test - Wartung

  • 1.
    Hauptsache, Entwicklung Test es läuft? Wartung iks Thementag „Mehr Softwarequalität – Best practices für alle Entwicklungsphasen“ 19.06.2012 Autor: Dr. Reik Oberrath
  • 2.
    Agenda Begriffserklärung: Entwicklung, Wartung, Test Sieben Einflussgrößen der Softwarequalität in Entwicklung und Wartung Best practices im Einsatz Zusammenfassung iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 3 / 42
  • 3.
    Agenda Begriffserklärung: Entwicklung, Wartung, Test Sieben Einflussgrößen der Softwarequalität in Entwicklung und Wartung Best practices im Einsatz Zusammenfassung iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 4 / 42
  • 4.
    Was ist Entwicklung,was Wartung und was Test? Software- Release Software-Erweiterung, Entwicklung Erweiterung Build Fehlerbehebung, Entwicklungstests Release Enwicklungs- Freigabe- Build & Test Test tests tests Freigabe Fehler- Produktions- Wartung behebung unterstützung Produktions- unterstützung iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 5 / 42
  • 5.
    Agenda Begriffserklärung: Entwicklung, Wartung, Test Sieben Einflussgrößen der Softwarequalität in Entwicklung und Wartung Best practices im Einsatz Zusammenfassung iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 6 / 42
  • 6.
    7. Produktions- 1. Entwicklungs- Entwicklung unterstützung tools im engeren Sinn 6. Freigabe Software- 2. Clean Code 4. Kommunikation qualität im Team 5. Release Build & Test 3. Entwicklungs- tests iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 7 / 42
  • 7.
    7. Produktions- 1. Entwicklungs- 1. Entwicklungs- unterstützung tools tools 6. Freigabe Software- 2. Clean Code 4. Kommunikation qualität im Team 5. Release Build & Test 3. Entwicklungs- tests iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 8 / 42
  • 8.
    1. Entwicklungstools: Bestpractices Entwicklungsumgebung (IDE): Java: Eclipse, NetBeans, IntelliJ .NET: Visual Studio AS/400: RDP Versionsverwaltung: Java: CVS, SVN, Mercurial, GIT .NET: Team Foundation Server AS/400: TD/OMS Issue Tracker: Jira, Mantis, Bugzilla, Trac iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 9 / 42
  • 9.
    7. Produktions- 1. Entwicklungs- unterstützung tools 6. Freigabe Software- 2. Clean Code 4. Kommunikation qualität im Team 5. Release Build & Test 3. Entwicklungs- tests iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 10 / 42
  • 10.
    2. Clean Code:Was ist das? Codequalität Interne / Strukturelle Qualität des Produkts Effiziente Software-Entwicklung Merkmale: Leicht verständlich flexibel Einfach änderbar wartbar Gut testbar iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 11 / 42
  • 11.
    2. Clean Code:Best practices Allgemeine Sprachen-spezifische Prinzipien Prinzipien Patterns Clean-Code-Developer [1]: Buch-Tipp: „so ist‘s gut“ DRY-Prinzip, KISS-Prinzip, … „Effektive Java“ [2] SOLID-Prinzipien, … Softwaremetriken, … Antipatterns Vortrag: Buch-Tipp: „so nicht!“ „Clean Code: Von der „Bug Patterns in Java“ [3] Lehre in den Alltag“ von Jörg Vollmer & Code-Inspection-Tools: Reik Oberrath Findbugs, Checkstyle, PMD, Eclipse iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 12 / 42
  • 12.
    2. Clean Code:Softwaremetriken Messbar sind Umfang, Komplexität, Koppelung, Lesbarkeit, Abstraktion, … Bsp. 1: Lines of Code (LOC) pro Quelltextdatei Bsp. 2: Cyclomatische Komplexität (CCN) bzw. McCabe-Metrik Tools: Checkstyle, Sonar iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 13 / 42
  • 13.
    2. Clean Code:Softwaremetriken im Einsatz I 60 Anz. Quelltextdateien 50 40 30 20 10 0 1 2 3 4 5 6 7 Zyklomatische Komplexität iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 14 / 42
  • 14.
    2. Clean Code:Softwaremetriken im Einsatz II Zyklomatischen Komplexität > 4 6 Anz. Quelltextdateien mit einer 5 Akzeptanzgrenze 4 3 Sollwert 2 1 0 1 2 3 4 5 6 7 8 9 10 11 Release Candidate iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 15 / 42
  • 15.
    7. Produktions- 1. Entwicklungs- unterstützung tools 6. Freigabe Software- 2. Clean Code 4. Kommunikation qualität im Team 5. Release Build & Test 3. Entwicklungs- tests iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 16 / 42
  • 16.
    3. Entwicklungstest: Testtypen aufwändige Testumgebung End-To-End-Tests nötig System- tests Integrationstests, Komponententests, „Servicetests“ schnell in der Modultests Ausführung „Programmzeilen- Unittests test“ iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 17 / 42
  • 17.
    3. Entwicklungstest: Aussagekraft Externe Qualität Interne Qualität Informationsmenge Nach [4] Unittests Modultests Systemtests iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 18 / 42
  • 18.
    3. Entwicklungstest: Teststrategie Testabdeckung Testausführung ca. 10 % täglich bis System- wöchentlich tests ca. 50 % möglichst Modultests oft möglichst hoch nach jeder (>90%) Änderung Unittests iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 19 / 42
  • 19.
    3. Entwicklungstest: Bestpractices Automatisierung aller Testtypen (Unit-, Modul- und Systemtests) Regelmäßige Ausführung durch CI-Tools Tools für CI (Continuous Integration): Hudson Jenkins Teamcity Team Foundation Server (.NET) iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 20 / 42
  • 20.
    3. Entwicklungstest: CI- Funktionsweise Versionskontroll- Continuous Integration system Server Prüft Aktualität Neuer Stand Führt Build & Test aus benachrichtigt Prüft Testergebnisse Neuer Stand Entwickler iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 21 / 42
  • 21.
    7. Produktions- 1. Entwicklungs- unterstützung tools 6. Freigabe Software- 2. Clean Code 4. Kommunikation qualität im Team 5. Release Build & Test 3. Entwicklungs- tests iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 22 / 42
  • 22.
    4. Kommunikation imEntwicklerteam: Wichtigkeit Wissensaustausch (Tools, Technologien, Clean Code, Teststrategie …) Einigung auf gemeinsame Ziele (Teststrategie, Clean Code, Definition of Done, …) Arbeitsteilung („aufeinander zu arbeiten“) iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 23 / 42
  • 23.
    4. Kommunikation imEntwicklerteam: Vorrausetzungen Kluge Teamzusammenstellung: Gute Stimmung im Team, hohe Motivation zur Kommunikation Soft-Skill „Kommunikationsfähigkeit“: Buch-Tipp: Soft-Skills für Softwareentwickler [5] iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 24 / 42
  • 24.
    4. Kommunikation imEntwicklerteam: Best practices Pairprogramming Regelmäßige Code-Review-Meetings Einsatz von Tools - Dokumentation: Wiki, Confluence - Issue-Tracking: Jira, Bugzilla - Sonstige: RE-Tools, EMail iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 25 / 42
  • 25.
    7. Produktions- 1. Entwicklungs- unterstützung tools 6. Freigabe Software- 2. Clean Code 4. Kommunikation qualität im Team 5. Release Build & Test 3. Entwicklungs- tests iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 26 / 42
  • 26.
    5. Release Build& Test: Best practices Automatischer Build („Auf-Knopfdruck“) Regelmäßige Durchführung (Continuous Delivery) Java-Tools: Ant, Maven, Gradle Automatische (System-)Tests & Manueller Anlauftest iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 27 / 42
  • 27.
    7. Produktions- 1. Entwicklungs- unterstützung tools 6. Freigabe Software- 2. Clean Code 4. Kommunikation qualität im Team 5. Release Build & Test 3. Entwicklungs- tests iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 28 / 42
  • 28.
    6. Freigabe: Hochstufungsprozess Produktionsumgebung Abnahmeumgebung Integrationsumgebung iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 29 / 42
  • 29.
    6. Freigabe: Bestpractices Dreistufiger Hochstufungsprozess Automatische Freigabetests (Akzeptanztests) Manuelles freies Testen iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 30 / 42
  • 30.
    7. Produktions- 1. Entwicklungs- unterstützung tools 6. Freigabe Software- 2. Clean Code 4. Kommunikation qualität im Team 5. Release Build & Test 3. Entwicklungs- tests iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 31 / 42
  • 31.
    7. Produktionsunterstützung: Bestpractices Gute Produkteinführung für die Benutzer Guter Informationsaustausch zwischen Entwicklern und Betrieb (technische Administration): DevOps Guter Informationsaustausch zwischen Entwicklern und Fachseite (fachliche Administration): „DevBus“ Guter Informationsaustausch zwischen Entwicklern und Benutzern: „DevUse“ iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 32 / 42
  • 32.
    7. Produktions- 1. Entwicklungs- unterstützung tools 6. Freigabe Software- 2. Clean Code 4. Kommunikation qualität im Team 5. Release Build & Test 3. Entwicklungs- tests iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 33 / 42
  • 33.
    Agenda Begriffserklärung: Entwicklung, Wartung, Test Sieben Einflussgrößen der Softwarequalität in Entwicklung und Wartung Best practices im Einsatz Zusammenfassung iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 34 / 42
  • 34.
    Die best practicesim laufenden Projekt Symptom betrifft Abhilfe Entwickler findet seinen Code nicht 1. Entwicklungstools Bessere Tools Fehlerbehebung dauert zu lange 2. Clean Code Strukturelle Codequalität verbessern Zu viele Fehler im Release 3. Entwicklungstests Teststrategie verbessern Entwickler: „Das ist nicht von mir, 4. Kommunikation im Team Mehr Wissensaustausch unter ich kenne mich da nicht aus.“ den Entwicklern Release Build dauert zu lange 5. Release Build & Tests Höhere Automatisierung, häufigere Builds Zu viele Fehler in der Produktion 6. Freigabe Hochstufungsprozess einführen, intensivere Freigabetests System ist technisch zu instabil 7. Produktionsunterstützung Bessere Kommunikation mit dem Betrieb (tech. Admin.) Zu viele Fehler in der Abnahme- 3. Entwicklungstests Intensivere Entwicklertests umgebung 5. Release Build & Tests Intensivere Releasetests Entwickler: „It‘s a feature, not a bug“ 7. Produktionsunterstützung Bessere Produkteinführung iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 35 / 42
  • 35.
    Die best practicesfür ein neues Projekt 1. Entwicklungs- Eclipse, GIT tools 2. Clean Code DRY, KISS, … SOLID, … Automatische Softwaremetriken, … 3. Entwicklungs- Automatische Unit- Automatische Automatische System- tests Tests, CI Integrationstests tests 4. Kommunikation Issue Tracker Reviews, Pairprogramming, Vieraugenprinzip im im Team Doku-Tools Definition of Done 5. Release Build Automatischer Build Automatische Systemtests & Tests 6. Freigabe - Abnahmeumgebung Dreistufiger Hochstufungsprozess 7. Produktions- Produkteinführung DevOps, „DevUse“, unterstützung „DevBus“ Billig Teuer Einfach Mausklick Kritikalität Komplex Kurzweilig Langfristig Ungefährlich iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Lebensgefährlich 42 Seite 36 /
  • 36.
    Wie wirkt sichdie Anwendung der best practices aus? 1 0 011 01 00 1 1 100 1001101 0011100 0110011 1010110 01 1 01 10 1 10 0 001 0110110 1100001 11 11 0 00 1010010 1111000 10 10 01 0 01 00 011 0 1 111 01 0100011 0111101 1000011 1001010 01 010 10 1 00 11 01 0101010 1001101 ERROR iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 37 / 42
  • 37.
    Agenda Begriffserklärung: Entwicklung, Wartung, Test Sieben Einflussgrößen der Softwarequalität in Entwicklung und Wartung Best practices im Einsatz Zusammenfassung iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 38 / 42
  • 38.
    Nicht-funktionale Hauptsache, esläuft? Qualitätsmerkmale von Software Das Produkt korrekt, skalierbar, performant, (finales Ziel mit stabil, effizient, sicher (Security), Selbstzweck) zuverlässig, gesetzeskonform, gut bedienbar Der Entwicklungs- wirtschaftlich, testbar, erweiterbar, prozess veränderbar, analysierbar, wartbar (Zwischenziel, nur Mittel zum Zweck) iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 39 / 42
  • 39.
    Zusammenfassung In Entwicklung und Wartung hat die SQ 7 Einflussgrößen Für jede Einflussgröße gibt es eine Reihe von best practices SQ kostet und zahlt sich u.U. erst langfristig aus Ein guter Entwicklungsprozess ist der Schlüssel zu einem guten Produkt Produkt und Herstellungsprozess sind gleich wichtig iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 40 / 42
  • 40.
    Referenzen [1] Die CleanCode Developer www.clean-code-developer.de/ [2] Effective Java: A Programming Language Guide Joshua Bloch, 2. Auflage, 2008 [3] Bug Patterns in Java Eric Allen, 2002 [4] Growing Object-Oriented Software, Guided By Tests Steve Freeman & Nat Pryce, 2010 [5] Soft Skills für Softwareentwickler Uwe Vigenshow, Björn Schneider & Ines Meyrose, 2. Auflage, 2011 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 41 / 42
  • 41.
    Weiterführende Literatur Growing Object-Oriented Software, Guided By Tests Steve Freeman & Nat Pryce, 2010 Clean Code - Refactoring, Patterns, Testen und Techniken für sauberen Code Robert C. Martin, 2009 Der Pragmatische Programmierer David Thomas, Andrew Hunt, Steffen Gemkow und Andreas Braig, 2003 Clean Coder: Verhaltensregeln für professionelle Programmierer Robert C. Martin, 2011 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test Seite 42 / 42
  • 42.
  • 43.