43
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

Softwarequalität Entwicklung - Test - Wartung

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: 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

Page 2: Softwarequalität Entwicklung -  Test - 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

Page 3: Softwarequalität Entwicklung -  Test - Wartung

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

Page 4: Softwarequalität Entwicklung -  Test - Wartung

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

Page 5: Softwarequalität Entwicklung -  Test - Wartung

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

Page 6: Softwarequalität Entwicklung -  Test - Wartung

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

Page 7: Softwarequalität Entwicklung -  Test - Wartung

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

Page 8: Softwarequalität Entwicklung -  Test - Wartung

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

Page 9: Softwarequalität Entwicklung -  Test - Wartung

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

Page 10: Softwarequalität Entwicklung -  Test - Wartung

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

Page 11: Softwarequalität Entwicklung -  Test - Wartung

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]

Page 12: Softwarequalität Entwicklung -  Test - Wartung

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

Page 13: Softwarequalität Entwicklung -  Test - Wartung

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

Page 14: Softwarequalität Entwicklung -  Test - Wartung

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

Page 15: Softwarequalität Entwicklung -  Test - Wartung

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

Page 16: Softwarequalität Entwicklung -  Test - Wartung

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

Page 17: Softwarequalität Entwicklung -  Test - Wartung

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]

Page 18: Softwarequalität Entwicklung -  Test - Wartung

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

Page 19: Softwarequalität Entwicklung -  Test - Wartung

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):

Page 20: Softwarequalität Entwicklung -  Test - Wartung

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

Page 21: Softwarequalität Entwicklung -  Test - Wartung

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

Page 22: Softwarequalität Entwicklung -  Test - Wartung

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“)

Page 23: Softwarequalität Entwicklung -  Test - Wartung

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]

Page 24: Softwarequalität Entwicklung -  Test - Wartung

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

Page 25: Softwarequalität Entwicklung -  Test - Wartung

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

Page 26: Softwarequalität Entwicklung -  Test - Wartung

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

Page 27: Softwarequalität Entwicklung -  Test - Wartung

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

Page 28: Softwarequalität Entwicklung -  Test - Wartung

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

6. Freigabe: Hochstufungsprozess

Produktionsumgebung

Abnahmeumgebung

Integrationsumgebung

Page 29: Softwarequalität Entwicklung -  Test - Wartung

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

Page 30: Softwarequalität Entwicklung -  Test - Wartung

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

Page 31: Softwarequalität Entwicklung -  Test - Wartung

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“

Page 32: Softwarequalität Entwicklung -  Test - Wartung

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

Page 33: Softwarequalität Entwicklung -  Test - Wartung

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

Page 34: Softwarequalität Entwicklung -  Test - Wartung

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

Page 35: Softwarequalität Entwicklung -  Test - Wartung

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“

Page 36: Softwarequalität Entwicklung -  Test - Wartung

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?

Page 37: Softwarequalität Entwicklung -  Test - Wartung

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

Page 38: Softwarequalität Entwicklung -  Test - Wartung

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?

Page 39: Softwarequalität Entwicklung -  Test - Wartung

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

Page 40: Softwarequalität Entwicklung -  Test - Wartung

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

Page 41: Softwarequalität Entwicklung -  Test - Wartung

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

Page 42: Softwarequalität Entwicklung -  Test - Wartung

Fragen?

Page 43: Softwarequalität Entwicklung -  Test - Wartung

www.iks-gmbh.com