Wer wünscht sich nicht "Mehr Softwarequalität"? Insbesondere an Individualsoftware werden hohe Qualitätsanforderungen gestellt. Einen Königsweg gibt es zwar nicht, aber viele „Best practices“, mit denen Sie systematisch die Softwarequalität erhöhen können.
Weitere Vorträge, die wir auch gern in Ihrem Unternehmen halten, finden Sie unter: https://www.iks-gmbh.com/impulsvortraege
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
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: 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
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: 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
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 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
23. 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
24. 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
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: 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
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: 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
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 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
35. 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 /
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
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, 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
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 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
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