Softwarequalität Entwicklung - Test - Wartung
-
Upload
iks-gesellschaft-fuer-informations-und-kommunikationssysteme-mbh -
Category
Technology
-
view
1.940 -
download
1
description
Transcript of Softwarequalität Entwicklung - Test - Wartung
iks Thementag
„Mehr Softwarequalität – Best practices für alle Entwicklungsphasen“
19.06.2012
Hauptsache,
es läuft?
Autor:
Dr. Reik Oberrath
Test Entwicklung
Wartung
Seite 3 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Agenda
Begriffserklärung: Entwicklung, Wartung, Test
Sieben Einflussgrößen der Softwarequalität in
Entwicklung und Wartung
Best practices im Einsatz
Zusammenfassung
Seite 4 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Agenda
Begriffserklärung: Entwicklung, Wartung, Test
Sieben Einflussgrößen der Softwarequalität in
Entwicklung und Wartung
Best practices im Einsatz
Zusammenfassung
Seite 5 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Was ist Entwicklung, was Wartung und was Test?
Entwicklung
Test
Wartung
Software-Erweiterung,
Fehlerbehebung,
Entwicklungstests
Release
Build & Test
Freigabe
Produktions-
unterstützung
Software-
Erweiterung
Release
Build
Enwicklungs-
tests
Freigabe-
tests
Fehler-
behebung
Produktions-
unterstützung
Seite 6 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Agenda
Begriffserklärung: Entwicklung, Wartung, Test
Sieben Einflussgrößen der Softwarequalität in
Entwicklung und Wartung
Best practices im Einsatz
Zusammenfassung
Seite 7 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Software-
qualität
5. Release
Build & Test
6. Freigabe
7. Produktions-
unterstützung
3. Entwicklungs-
tests
1. Entwicklungs-
tools
2. Clean Code 4. Kommunikation
im Team
Entwicklung
im engeren Sinn
Seite 8 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Software-
qualität
5. Release
Build & Test
6. Freigabe
7. Produktions-
unterstützung
3. Entwicklungs-
tests
1. Entwicklungs-
tools
2. Clean Code 4. Kommunikation
im Team
1. Entwicklungs-
tools
Seite 9 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
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
Seite 10 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Software-
qualität
5. Release
Build & Test 3. Entwicklungs-
tests
1. Entwicklungs-
tools
2. Clean Code 6. Freigabe
7. Produktions-
unterstützung
4. Kommunikation
im Team
Seite 11 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
2. Clean Code: Was ist das?
Codequalität
Interne / Strukturelle Qualität des Produkts
Effiziente Software-Entwicklung
wartbar
Leicht verständlich
Einfach änderbar
Merkmale:
flexibel
Gut testbar
Seite 12 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Allgemeine
Prinzipien
Sprachen-spezifische
Prinzipien
Patterns „so ist‘s gut“
Antipatterns „so nicht!“
2. Clean Code: Best practices
Clean-Code-Developer [1]: DRY-Prinzip, KISS-Prinzip, …
SOLID-Prinzipien, …
Softwaremetriken, …
Buch-Tipp:
„Effektive Java“ [2]
Code-Inspection-Tools:
Findbugs, Checkstyle,
PMD, Eclipse
Vortrag:
„Clean Code: Von der
Lehre in den Alltag“
von Jörg Vollmer &
Reik Oberrath
Buch-Tipp:
„Bug Patterns in Java“ [3]
Seite 13 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
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
Seite 14 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
2. Clean Code: Softwaremetriken im Einsatz I
0
10
20
30
40
50
60
1 2 3 4 5 6 7
Anz.
Quellt
extd
ate
ien
Zyklomatische Komplexität
Seite 15 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
2. Clean Code: Softwaremetriken im Einsatz II
0
1
2
3
4
5
6
1 2 3 4 5 6 7 8 9 10 11Anz.
Quellt
extd
ate
ien m
it e
iner
Zyklo
matischen K
om
ple
xität
> 4
Release Candidate
Akzeptanzgrenze
Sollwert
Seite 16 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Software-
qualität
5. Release
Build & Test 3. Entwicklungs-
tests
1. Entwicklungs-
tools
2. Clean Code 6. Freigabe
7. Produktions-
unterstützung
4. Kommunikation
im Team
Seite 17 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
3. Entwicklungstest: Testtypen
Unittests
Modultests
System-
tests
„Programmzeilen-
test“
Integrationstests,
Komponententests,
„Servicetests“
End-To-End-Tests
aufwändige
Testumgebung
nötig
schnell in der
Ausführung
Seite 18 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
3. Entwicklungstest: Aussagekraft
Unittests Modultests Systemtests
Info
rmationsm
enge Interne Qualität
Externe Qualität
Nach [4]
Seite 19 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
3. Entwicklungstest: Teststrategie
Unittests
Modultests
System-
tests
Testabdeckung
ca. 10 %
ca. 50 %
möglichst hoch
(>90%)
Testabdeckung Testausführung
ca. 10 %
täglich bis
wöchentlich
ca. 50 %
möglichst
oft
möglichst hoch
(>90%)
nach jeder
Änderung
Seite 20 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
3. Entwicklungstest: Best practices
Automatisierung aller Testtypen (Unit-, Modul- und Systemtests)
Regelmäßige Ausführung durch CI-Tools
Hudson
Jenkins
Teamcity
Team Foundation Server (.NET)
Tools für CI (Continuous Integration):
Seite 21 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
3. Entwicklungstest: CI - Funktionsweise
Versionskontroll-
system
Continuous Integration
Server
Entwickler
Neuer Stand
Neuer Stand
Prüft Aktualität
Führt
Build & Test
aus
Prüft
Testergebnisse
benachrichtigt
Seite 22 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Software-
qualität
5. Release
Build & Test 3. Entwicklungs-
tests
1. Entwicklungs-
tools
2. Clean Code 6. Freigabe
7. Produktions-
unterstützung
4. Kommunikation
im Team
Seite 23 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
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“)
Seite 24 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
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]
Seite 25 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
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
Seite 26 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Software-
qualität
5. Release
Build & Test 3. Entwicklungs-
tests
1. Entwicklungs-
tools
2. Clean Code 6. Freigabe
7. Produktions-
unterstützung
4. Kommunikation
im Team
Seite 27 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
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
Seite 28 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Software-
qualität
5. Release
Build & Test 3. Entwicklungs-
tests
1. Entwicklungs-
tools
2. Clean Code 6. Freigabe
7. Produktions-
unterstützung
4. Kommunikation
im Team
Seite 29 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
6. Freigabe: Hochstufungsprozess
Produktionsumgebung
Abnahmeumgebung
Integrationsumgebung
Seite 30 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
6. Freigabe: Best practices
Dreistufiger Hochstufungsprozess
Automatische Freigabetests (Akzeptanztests)
Manuelles freies Testen
Seite 31 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Software-
qualität
5. Release
Build & Test 3. Entwicklungs-
tests
1. Entwicklungs-
tools
2. Clean Code 6. Freigabe
7. Produktions-
unterstützung
4. Kommunikation
im Team
Seite 32 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
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“
Seite 33 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Software-
qualität
5. Release
Build & Test
6. Freigabe
7. Produktions-
unterstützung
3. Entwicklungs-
tests
1. Entwicklungs-
tools
2. Clean Code 4. Kommunikation
im Team
Seite 34 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Agenda
Begriffserklärung: Entwicklung, Wartung, Test
Sieben Einflussgrößen der Softwarequalität in
Entwicklung und Wartung
Best practices im Einsatz
Zusammenfassung
Seite 35 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
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,
ich kenne mich da nicht aus.“
4. Kommunikation im Team Mehr Wissensaustausch unter
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-
umgebung
3. Entwicklungstests
5. Release Build & Tests
Intensivere Entwicklertests
Intensivere Releasetests
Entwickler: „It‘s a feature, not a bug“ 7. Produktionsunterstützung Bessere Produkteinführung
Seite 36 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Mausklick Kritikalität Billig
Einfach
Kurzweilig
Ungefährlich
Teuer
Komplex
Langfristig
Lebensgefährlich
Die best practices für ein neues Projekt 1. Entwicklungs-
tools
Eclipse, GIT
2. Clean Code DRY, KISS, … SOLID, … Automatische
Softwaremetriken, …
3. Entwicklungs-
tests
Automatische Unit-
Tests, CI
Automatische
Integrationstests
Automatische System-
tests
4. Kommunikation
im Team
Issue Tracker Reviews, Pairprogramming,
Doku-Tools
Vieraugenprinzip im
Definition of Done
5. Release Build
& Tests
Automatischer Build Automatische Systemtests
6. Freigabe - Abnahmeumgebung Dreistufiger
Hochstufungsprozess
7. Produktions-
unterstützung
Produkteinführung DevOps, „DevUse“,
„DevBus“
Seite 37 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
11 11 0 00
1 0 011 01 00 1 1 100
01 1 01 10 1 10 0 001
01 00 011 0 1 111 01
01 010 10 1 00 11 01
10 10 01 0
1001101 0011100
0110011 1010110
0110110 1100001
1010010 1111000
0100011 0111101
1000011 1001010
0101010 1001101
ERROR
Wie
wir
kt
sic
h d
ie A
nw
en
du
ng
der
best
pra
cti
ces a
us?
Seite 38 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Agenda
Begriffserklärung: Entwicklung, Wartung, Test
Sieben Einflussgrößen der Softwarequalität in
Entwicklung und Wartung
Best practices im Einsatz
Zusammenfassung
Seite 39 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
Das Produkt (finales Ziel mit
Selbstzweck)
Der Entwicklungs-
prozess (Zwischenziel, nur
Mittel zum Zweck)
Nicht-funktionale
Qualitätsmerkmale von Software
korrekt, skalierbar, performant,
stabil, effizient, sicher (Security),
zuverlässig, gesetzeskonform,
gut bedienbar
wirtschaftlich, testbar, erweiterbar,
veränderbar, analysierbar, wartbar
Hauptsache, es läuft?
Seite 40 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
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
Seite 41 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
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
Seite 42 / 42 iks Thementag: „Mehr Softwarequalität“ - Hauptsache, es läuft? Entwicklung, Wartung, Test
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
Fragen?
www.iks-gmbh.com