+ All Categories
Home > Technology > Mehr Softwarequalität: TeamCleanCoding

Mehr Softwarequalität: TeamCleanCoding

Date post: 29-Nov-2014
Category:
Upload: iks-gesellschaft-fuer-informations-und-kommunikationssysteme-mbh
View: 832 times
Download: 0 times
Share this document with a friend
Description:
Die Qualitätsanforderungen an Individualsoftware sind hoch. Sie soll funktional, zuverlässig, benutzerfreundlich und wartbar sein. Nicht zuletzt muss die Kosten-Nutzen-Relation stimmen.
55
Seite 2 / 52 Team Clean Coding: Sauber programmieren Effizienz steigern Team Clean Coding: Sauber programmieren Effizienz steigern iks Thementag „Mehr Softwarequalität – Ausgewählte Themen“ 23.04.2013 Autor: Dr. Reik Oberrath
Transcript
Page 1: Mehr Softwarequalität: TeamCleanCoding

Seite 2 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Team Clean Coding:

Sauber programmieren – Effizienz steigern

iks Thementag

„Mehr Softwarequalität – Ausgewählte Themen“

23.04.2013

Autor:

Dr. Reik Oberrath

Page 2: Mehr Softwarequalität: TeamCleanCoding

Was ist das Ziel der Softwareentwicklung?

Page 3: Mehr Softwarequalität: TeamCleanCoding

Ein Produkt, das

den Auftraggeber

zufrieden stellt!

Page 4: Mehr Softwarequalität: TeamCleanCoding

Und einen zuverlässigen, effektiven Herstellungsprozess!

Page 5: Mehr Softwarequalität: TeamCleanCoding

Seite 6 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Das Produkt (finales Ziel mit

Selbstzweck)

Der Entwicklungs-

prozess (Zwischenziel, nur

Mittel zum Zweck)

Was ist wichtiger?

Page 6: Mehr Softwarequalität: TeamCleanCoding

Seite 7 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Architektur

Design Technologie

Code

Architektur

Design Technologie

Code

Funktionalität

Testbarkeit

Wartbarkeit

Usability Zuverlässigkeit

Prüfbarkeit Installierbarkeit

Änderbarkeit

Performanz Sicherheit

extern

intern

Quelle : http://www.dadalos-d.org/frieden/images/eisberg-modell.jpg

Qu

alitä

t

Page 7: Mehr Softwarequalität: TeamCleanCoding

Seite 8 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Das Produkt (finales Ziel mit

Selbstzweck)

Der Entwicklungs-

prozess (Zwischenziel, nur

Mittel zum Zweck)

Was ist wichtiger?

extern

intern

Produkt und Prozess

sind gleichwichtig

Qu

alitä

t

Page 8: Mehr Softwarequalität: TeamCleanCoding

Der Faktor

„Mensch“

Architektur und

Implementation Tools

&

Technologien

Was beeinflusst den Entwicklungsprozess?

Page 9: Mehr Softwarequalität: TeamCleanCoding

Seite 10 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Agenda

Einleitung

Die Clean-Code-Developer-Bewegung

Meinungen zu Clean-Code

Das Team Clean Coding (TCC)

TCC-Rahmenbedingungen

Take-Home-Message

Page 10: Mehr Softwarequalität: TeamCleanCoding

Seite 11 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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.

Was heißt clean?

Def. 3: Clean ist alles, was effizient ist, also alles, was

die Softwareentwicklung beschleunigt.

Page 11: Mehr Softwarequalität: TeamCleanCoding
Page 12: Mehr Softwarequalität: TeamCleanCoding

Seite 13 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Kernaussagen der

Clean-Code-Developer-Bewegung

Disziplin Ständige Selbstkontrolle („Bewusstsein“)

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

(„Professionalität“)

Page 13: Mehr Softwarequalität: TeamCleanCoding

www.iks-gmbh.com

Pri

nzip

ien

P

rakti

ken

Continuous

Integration I

Statische

Codeanalyse

(Metriken)

Inversion of

Control Container

Erfahrung

weitergeben

Messen von

Fehlern

Open Closed

Principle

Tell, don´t ask

Law of Demeter

Grün

Continuous

Integration II

Iterative

Entwicklung

Komponenten-

orientierung

Test first

Entwurf und

Implementation

überlappen nicht

Implementa-

tion spiegelt

Entwurf

You Ain´t

Gonna Need It

(YAGNI)

Blau

Automatisierte

Unit Tests

Mockups

(Testattrappen)

Code Coverage

Analyse

Teilnahme an

Fachveranstal-

tungen

Komplexe Re-

faktorisierungen

Issue Tracking

Automatisierte

Integrationstests

Lesen, Lesen,

Lesen (LLL)

Reviews

Die Pfadfinderregel

beachten

Root Cause

Analysis

Ein Versionskon-

trollsystem einsetzen

Einfache Refakto-

risierungsmuster an-

wenden (ER)

Täglich reflektieren

Interface

Segregation

Principle

Dependency

Inversion Principle

Liskov

Substitution

Principle

Principle of

Least

Astonishment

Information

Hiding Principle

Single Level of

Abstraction

(SLA)

Single

Responsibility

Principle (SRP)

Separation of

Concerns (SoC)

Source Code

Konventionen

Don´t Repeat

Yourself (DRY),

Keep it simple,

stupid (KISS)

Vorsicht vor

Optimierungen

(VvO)

Favour

Composition over

Inheritance (FCoI)

Weiss Gelb Orange Rot Schwarz

Pri

nzip

ien

P

rakti

ken

Das - Grade-System:

Page 14: Mehr Softwarequalität: TeamCleanCoding

Seite 15 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Agenda

Einleitung

Die Clean-Code-Developer-Bewegung

Meinungen zu Clean-Code

Das Team Clean Coding (TCC)

TCC-Rahmenbedingungen

Take-Home-Message

Page 15: Mehr Softwarequalität: TeamCleanCoding

www.iks-gmbh.com

Clean-Code ist gut, man kann es aber leicht übertreiben!

Clean-Code ist gut, aber praxisfern – eher etwas für Ästheten!

Page 16: Mehr Softwarequalität: TeamCleanCoding

www.iks-gmbh.com

Ein Organismus verträgt nur ein begrenztes Maß an Schadstoffen.

Page 17: Mehr Softwarequalität: TeamCleanCoding

www.iks-gmbh.com

Wichtig sind Funktionsfähigkeit, Stabilität, Wartbarkeit und Erweiterbarkeit.

Dazu braucht man keinen Clean-Code!

Clean-Code ist was für Spießer – wichtig ist nur, dass es läuft!

Page 18: Mehr Softwarequalität: TeamCleanCoding

Seite 19 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern Gegen Schmutz muss regelmäßig gearbeitet werden!

Sauberer Code - Hohe Testabdeckung

Produktionscode

Testabdeckung

Testcode

Page 19: Mehr Softwarequalität: TeamCleanCoding

Seite 20 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern Unter Zeitdruck wird dann sowieso wieder „Quick & Dirty“ gearbeitet!

Page 20: Mehr Softwarequalität: TeamCleanCoding

Seite 21 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

CCD-Professionalität

leben und seinen Prinzipien

treu bleiben.

Technische Schulden

bewußt eingehen und

bewußt wieder begleichen.

Termine

Termine

Qualität

Qualität

Kosten

Kosten

Page 21: Mehr Softwarequalität: TeamCleanCoding

Clean Code kostet zusätzliche Zeit

in der Entwicklung!

Clean Code spart Zeit

in der Wartung!

Page 22: Mehr Softwarequalität: TeamCleanCoding

Seite 23 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Langlebigkeit

Kritika

litä

t

Page 23: Mehr Softwarequalität: TeamCleanCoding

Seite 24 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Agenda

Einleitung

Die Clean-Code-Developer-Bewegung

Meinungen zu Clean-Code

Das Team Clean Coding (TCC)

TCC-Rahmenbedingungen

Take-Home-Message

Page 24: Mehr Softwarequalität: TeamCleanCoding

Seite 25 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Zusammenhang zwischen CCD und TCC

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

Prinzipien & Praktiken,

→ Selbstkontrolle & Werte-

system

Teamarbeit,

→ Kommunikation &

Teamkontrolle

Page 25: Mehr Softwarequalität: TeamCleanCoding

Seite 26 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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

Page 26: Mehr Softwarequalität: TeamCleanCoding

Seite 27 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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

Page 27: Mehr Softwarequalität: TeamCleanCoding

Seite 28 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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

Page 28: Mehr Softwarequalität: TeamCleanCoding

Seite 29 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

TCC: „Verfassung/Grundgesetz“

Projekt-unspezifische Grundregeln

Wie wollen wir Information festhalten? → Dokumentation

Was bedeutet für uns „fertig“? → Definition Of Done

Page 29: Mehr Softwarequalität: TeamCleanCoding

Seite 30 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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)

Page 30: Mehr Softwarequalität: TeamCleanCoding

Seite 31 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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

Page 31: Mehr Softwarequalität: TeamCleanCoding

Seite 32 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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

Page 32: Mehr Softwarequalität: TeamCleanCoding

Seite 33 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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!

Page 33: Mehr Softwarequalität: TeamCleanCoding

Seite 34 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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.

Page 34: Mehr Softwarequalität: TeamCleanCoding

Seite 35 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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“

Page 35: Mehr Softwarequalität: TeamCleanCoding

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

Agenda

Einleitung

Die Clean-Code-Developer-Bewegung

Meinungen zu Clean-Code

Das Team Clean Coding (TCC)

TCC-Rahmenbedingungen

Take-Home-Message

Page 36: Mehr Softwarequalität: TeamCleanCoding

Seite 37 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

TCC-Rahmenbedingungen

Teamstimmung beachten und fördern

Haufen Gruppe Team

Page 37: Mehr Softwarequalität: TeamCleanCoding

Seite 38 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

TCC-Rahmenbedingungen

Teamstimmung beachten und fördern

Bewusste Teamzusammenstellung

Retrospektive-Meetings / gemeinsames Essengehen

Bei Bedarf Teamzusammenstellung ändern

Organisationsstruktur des Teams ändern

Hierarchisch

Parlamentarisch

Selbstorganisiert

Page 38: Mehr Softwarequalität: TeamCleanCoding

Seite 39 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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

Page 39: Mehr Softwarequalität: TeamCleanCoding

Seite 40 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

TCC-Rahmenbedingungen

Teamstimmung beachten und fördern

Zeit für Kommunikation im Team einplanen

Fortbildung der Teammitglieder unterstützen

Akzeptanz signalisieren und Infrastruktur bereitstellen

Page 40: Mehr Softwarequalität: TeamCleanCoding

Seite 41 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Agenda

Einleitung

Die Clean-Code-Developer-Bewegung

Meinungen zu Clean-Code

Das Team Clean Coding (TCC)

TCC-Rahmenbedingungen

Take-Home-Message

Page 41: Mehr Softwarequalität: TeamCleanCoding

Seite 42 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Das Produkt (finales Ziel mit

Selbstzweck)

Der Entwicklungs-

prozess (Zwischenziel, nur

Mittel zum Zweck)

Was ist wichtiger?

extern

intern

Produkt und Prozess

sind gleichwichtig

Rückblick

Rückblick

Rückblick

Rückblick

Qu

alitä

t

Page 42: Mehr Softwarequalität: TeamCleanCoding

Seite 43 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

CCD-Professionalität

leben und seinen Prinzipien

treu bleiben.

Technische Schulden

bewußt eingehen und

bewußt wieder begleichen.

Termine

Termine

Qualität

Qualität

Kosten

Kosten

Rückblick

Rückblick

Rückblick

Rückblick

Page 43: Mehr Softwarequalität: TeamCleanCoding

Seite 44 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern Gegen Schmutz muss regelmäßig gearbeitet werden!

Sauberer Code - Hohe Testabdeckung

Produktionscode

Testabdeckung

Testcode

Rückblick

Rückblick

Rückblick

Rückblick

Page 44: Mehr Softwarequalität: TeamCleanCoding

Seite 45 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Take-Home-Message

Herstellungsprozess und Produkt sind gleich wichtig –

technische Schulden müssen zurückgezahlt werden!

Page 45: Mehr Softwarequalität: TeamCleanCoding

Seite 46 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

www.iks-gmbh.com

Pri

nzip

ien

P

rakti

ken

Continuous

Integration I

Statische

Codeanalyse

(Metriken)

Inversion of

Control Container

Erfahrung

weitergeben

Messen von

Fehlern

Open Closed

Principle

Tell, don´t ask

Law of Demeter

Grün

Continuous

Integration II

Iterative

Entwicklung

Komponenten-

orientierung

Test first

Entwurf und

Implementation

überlappen nicht

Implementa-

tion spiegelt

Entwurf

You Ain´t

Gonna Need It

(YAGNI)

Blau

Automatisierte

Unit Tests

Mockups

(Testattrappen)

Code Coverage

Analyse

Teilnahme an

Fachveranstal-

tungen

Komplexe Re-

faktorisierungen

Issue Tracking

Automatisierte

Integrationstests

Lesen, Lesen,

Lesen (LLL)

Reviews

Die Pfadfinderregel

beachten

Root Cause

Analysis

Ein Versionskon-

trollsystem einsetzen

Einfache Refakto-

risierungsmuster an-

wenden (ER)

Täglich reflektieren

Interface

Segregation

Principle

Dependency

Inversion Principle

Liskov

Substitution

Principle

Principle of

Least

Astonishment

Information

Hiding Principle

Single Level of

Abstraction

(SLA)

Single

Responsibility

Principle (SRP)

Separation of

Concerns (SoC)

Source Code

Konventionen

Don´t Repeat

Yourself (DRY),

Keep it simple,

stupid (KISS)

Vorsicht vor

Optimierungen

(VvO)

Favour

Composition over

Inheritance (FCoI)

Weiss Gelb Orange Rot Schwarz

Pri

nzip

ien

P

rakti

ken

Das - Grade-System:

Rückblick

Rückblick

Rückblick

Rückblick

Page 46: Mehr Softwarequalität: TeamCleanCoding

Seite 47 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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

Page 47: Mehr Softwarequalität: TeamCleanCoding

Seite 48 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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

Rückblick

Rückblick

Rückblick

Page 48: Mehr Softwarequalität: TeamCleanCoding

Seite 49 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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

Rückblick

Rückblick

Rückblick

Page 49: Mehr Softwarequalität: TeamCleanCoding

Seite 50 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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

Page 50: Mehr Softwarequalität: TeamCleanCoding

Seite 51 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

Take-Home-Message

Sauber programmieren führt zu Qualität und Effizienz,

benötigt aber Unterstützung aus dem Umfeld!

Page 51: Mehr Softwarequalität: TeamCleanCoding

Seite 52 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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

Page 52: Mehr Softwarequalität: TeamCleanCoding

Fragen?

Page 53: Mehr Softwarequalität: TeamCleanCoding

Seite 54 / 52 Team Clean Coding: Sauber programmieren – Effizienz steigern

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/

Page 55: Mehr Softwarequalität: TeamCleanCoding

www.iks-gmbh.com


Recommended