Qualitätskriterien und Agilität
in der Softwareentwicklung
Rico Fritzsche
• Studium M.A. Philosophie und Germanistik
• Seit 1996 in IT Branche tätig (Freelancer)
• 2006 Gründung VISUAL WORLD
• Tätigkeitsfelder: Software Architektur und
  Development; Technologie Consulting
• Freier Autor und Publizist (z.B. dotnet Magazin,
  Visual Studio One)
Visual World
•   Individuelle, kundenspezifische Softwarelösungen
•   Konzeption und Umsetzung von Softwareprojekten
•   Technologie Consulting
•   Schwerpunkt: Entwicklung von verteilten,
    datengetriebene Anwendungen unter Verwendung
    von Microsofttechnologien (.NET Framework, WCF,
    etc.)
Visual World
• Z.B.: Webportale, HR-Systeme…
• Datengetriebene 2-Tier/ Multi-Tier Anwendungen
• Kunden: Public Sector, Internationale (agierende)
  Organisationen; z.B.: Zentrum für Internationale
  Friedenseinsätze Berlin, NRC Norwegen, … aber auch
  Energieversorger, z.B.: EON Thüringen, Thüringer
  Netkom GmbH
Agenda
•   Voraussetzungen für Projektrealisierung
•   Qualitätskriterien
•   Was bedeutet „Agil“?
•   Das Agile Manifest
Problemstellung
Was ist notwendig, um ein
Softwareentwicklungsprojekt
erfolgreich umzusetzen?
• Fachliche Analyse/ Auseinandersetzung mit
  Thematik/ Anforderungen des Kunden
• Problematik bzw. Prozesse fachlich verstehen
• Geeignete Technologien finden
• Implementierungsstrategie erstellen
• Softwarearchitektur/ Software-Design
• Team zusammenstellen/ Verantwortlichkeiten
  festlegen
• Qualitätssicherung
Die Motivation
Warum muss man sich über den
Entwicklungsprozess, Architektur
und die Softwarequalität im Vorfeld
Gedanken machen?
Die Motivation
• Beherrschung von Komplexität
• Änderungen der Normalfall und nicht die Ausnahme
• Fokus auf Wartbarkeit und Erweiterbarkeit
Qualitätskriterien
Qualitätskriterien
• Korrektheit
  Erfüllt die Software die in der Spezifikation
  beschriebenen Anforderungen?
  Zu beachten: Gibt die Spezifikation nicht die
  Anforderungen korrekt wieder, leistet auch die
  Software nicht das Gewünschte!
Qualitätskriterien
• Zuverlässigkeit
  Fehler sollten nur selten auftreten und nur geringe
  Auswirkungen haben.
Qualitätskriterien
• Robustheit
  Sinnvolle Fehlerbehandlungen;
  Reaktion auf Fehler aus der Umgebung
  (z.B. Bedienungsfehler, Fehler von verknüpften
  System etc.).
Qualitätskriterien
• Usability (Benutzerfreundlichkeit)
  Intuitive Bedienung und leichte Erlernbarkeit.
  Verständliche Hinweise und Fehlermeldungen.
Qualitätskriterien
• Wartbarkeit
  Standardisierte Entwicklung
  (Design Patterns, Richtlinien)
  Beherrschung der Komplexität
  Verständlicher Code, Entkoppelung
Qualitätskriterien
• Effizienz (Performance)
  Angemessenes Laufzeitverhalten und
  Speicherplatzbedarf
Qualitätskriterien
• Dokumentation
 Sowohl für den Benutzer (Handbücher) als auch für
 den (Weiter-)Entwickler
 (Dokumentation der einzelnen Entwicklungsschritte,
 der Implementierung, von Testplänen, ...).
Qualitätskriterien
• Portabilität
  z.B. Übertragbarkeit der Software auf andere
  Rechner.
Wichtigstes Ziel: Wartbarkeit
Zu erreichen durch OOP
(Objektorientierte Programmierung) und
DDD (Domain Driven Design)
Programmierstile
• Prozedurale Programmierung
  – Einfaches „runterprogrammieren“ der
    Anforderung am Stück
  – Dadurch: Vermischung Data Access, Business Logic
    und Presentation
  – Wiederverwendung ist nicht möglich
  – Wartbarkeit: schlecht (viel doppelter oder
    ähnlicher Quellcode an mehreren Stellen)
Programmierstile
• Objektorientierte Programmierung (OOP)
  – Entwicklung auf Basis von OO-Grundsätzen, -
    Praktiken und Design Patterns
  – Setzt Design voraus (OOD)
  – Wiederverwendung und Wartbarkeit
Programmierstile
Verhältnis Aufwand zu Komplexität nach Martin Fowler
Agilität in der Umsetzung
• Agil = lat. agilis “flink, beweglich“
• Ziel: Softwareentwicklung schlanker und flexibler zu
  machen
• Fundament für agile Softwareentwicklung:
  Manifesto for Agile Software Development (2001)
  (17 Autoren, u.a. Kent Beck, Martin Fowler, Robert C.
  Martin…)
Die Prinzipien des Agilen Manifests
Individuen und Interaktionen sind wichtiger als Prozesse und
Werkzeuge. - Zwar sind wohldefinierte Entwicklungsprozesse
und Entwicklungswerkzeuge wichtig, wesentlicher sind jedoch
die Qualifikation der Mitarbeitenden und eine effiziente
Kommunikation zwischen ihnen.
Die Prinzipien des Agilen Manifests
Funktionierende Programme sind wichtiger als ausführliche
Dokumentation. - Gut geschriebene und ausführliche
Dokumentation kann zwar hilfreich sein, das eigentliche Ziel der
Entwicklung ist jedoch die fertige Software.
Die Prinzipien des Agilen Manifests
Die stetige Abstimmung mit dem Kunden ist wichtiger als die
ursprüngliche Leistungsbeschreibung in Verträgen. - Statt sich an
ursprünglich formulierten und mittlerweile veralteten
Leistungsbeschreibungen in Verträgen festzuhalten, steht
vielmehr die fortwährende konstruktive und vertrauensvolle
Abstimmung mit dem Kunden im Mittelpunkt.
Die Prinzipien des Agilen Manifests
Der Mut und die Offenheit für Änderungen stehen über dem
Befolgen eines festgelegten Plans. - Im Verlauf eines
Entwicklungsprojektes ändern sich viele Anforderungen und
Randbedingungen ebenso wie das Verständnis des
Problemfeldes. Das Team muss darauf schnell reagieren können.

Agilität und Qualitätskriterien in der Softwareentwicklung

  • 1.
    Qualitätskriterien und Agilität inder Softwareentwicklung
  • 2.
    Rico Fritzsche • StudiumM.A. Philosophie und Germanistik • Seit 1996 in IT Branche tätig (Freelancer) • 2006 Gründung VISUAL WORLD • Tätigkeitsfelder: Software Architektur und Development; Technologie Consulting • Freier Autor und Publizist (z.B. dotnet Magazin, Visual Studio One)
  • 3.
    Visual World • Individuelle, kundenspezifische Softwarelösungen • Konzeption und Umsetzung von Softwareprojekten • Technologie Consulting • Schwerpunkt: Entwicklung von verteilten, datengetriebene Anwendungen unter Verwendung von Microsofttechnologien (.NET Framework, WCF, etc.)
  • 4.
    Visual World • Z.B.:Webportale, HR-Systeme… • Datengetriebene 2-Tier/ Multi-Tier Anwendungen • Kunden: Public Sector, Internationale (agierende) Organisationen; z.B.: Zentrum für Internationale Friedenseinsätze Berlin, NRC Norwegen, … aber auch Energieversorger, z.B.: EON Thüringen, Thüringer Netkom GmbH
  • 5.
    Agenda • Voraussetzungen für Projektrealisierung • Qualitätskriterien • Was bedeutet „Agil“? • Das Agile Manifest
  • 6.
    Problemstellung Was ist notwendig,um ein Softwareentwicklungsprojekt erfolgreich umzusetzen?
  • 7.
    • Fachliche Analyse/Auseinandersetzung mit Thematik/ Anforderungen des Kunden • Problematik bzw. Prozesse fachlich verstehen • Geeignete Technologien finden • Implementierungsstrategie erstellen • Softwarearchitektur/ Software-Design • Team zusammenstellen/ Verantwortlichkeiten festlegen • Qualitätssicherung
  • 8.
    Die Motivation Warum mussman sich über den Entwicklungsprozess, Architektur und die Softwarequalität im Vorfeld Gedanken machen?
  • 9.
    Die Motivation • Beherrschungvon Komplexität • Änderungen der Normalfall und nicht die Ausnahme • Fokus auf Wartbarkeit und Erweiterbarkeit
  • 10.
  • 11.
    Qualitätskriterien • Korrektheit Erfüllt die Software die in der Spezifikation beschriebenen Anforderungen? Zu beachten: Gibt die Spezifikation nicht die Anforderungen korrekt wieder, leistet auch die Software nicht das Gewünschte!
  • 12.
    Qualitätskriterien • Zuverlässigkeit Fehler sollten nur selten auftreten und nur geringe Auswirkungen haben.
  • 13.
    Qualitätskriterien • Robustheit Sinnvolle Fehlerbehandlungen; Reaktion auf Fehler aus der Umgebung (z.B. Bedienungsfehler, Fehler von verknüpften System etc.).
  • 14.
    Qualitätskriterien • Usability (Benutzerfreundlichkeit) Intuitive Bedienung und leichte Erlernbarkeit. Verständliche Hinweise und Fehlermeldungen.
  • 15.
    Qualitätskriterien • Wartbarkeit Standardisierte Entwicklung (Design Patterns, Richtlinien) Beherrschung der Komplexität Verständlicher Code, Entkoppelung
  • 16.
    Qualitätskriterien • Effizienz (Performance) Angemessenes Laufzeitverhalten und Speicherplatzbedarf
  • 17.
    Qualitätskriterien • Dokumentation Sowohlfür den Benutzer (Handbücher) als auch für den (Weiter-)Entwickler (Dokumentation der einzelnen Entwicklungsschritte, der Implementierung, von Testplänen, ...).
  • 18.
    Qualitätskriterien • Portabilität z.B. Übertragbarkeit der Software auf andere Rechner.
  • 19.
    Wichtigstes Ziel: Wartbarkeit Zuerreichen durch OOP (Objektorientierte Programmierung) und DDD (Domain Driven Design)
  • 20.
    Programmierstile • Prozedurale Programmierung – Einfaches „runterprogrammieren“ der Anforderung am Stück – Dadurch: Vermischung Data Access, Business Logic und Presentation – Wiederverwendung ist nicht möglich – Wartbarkeit: schlecht (viel doppelter oder ähnlicher Quellcode an mehreren Stellen)
  • 21.
    Programmierstile • Objektorientierte Programmierung(OOP) – Entwicklung auf Basis von OO-Grundsätzen, - Praktiken und Design Patterns – Setzt Design voraus (OOD) – Wiederverwendung und Wartbarkeit
  • 22.
    Programmierstile Verhältnis Aufwand zuKomplexität nach Martin Fowler
  • 23.
    Agilität in derUmsetzung • Agil = lat. agilis “flink, beweglich“ • Ziel: Softwareentwicklung schlanker und flexibler zu machen • Fundament für agile Softwareentwicklung: Manifesto for Agile Software Development (2001) (17 Autoren, u.a. Kent Beck, Martin Fowler, Robert C. Martin…)
  • 24.
    Die Prinzipien desAgilen Manifests Individuen und Interaktionen sind wichtiger als Prozesse und Werkzeuge. - Zwar sind wohldefinierte Entwicklungsprozesse und Entwicklungswerkzeuge wichtig, wesentlicher sind jedoch die Qualifikation der Mitarbeitenden und eine effiziente Kommunikation zwischen ihnen.
  • 25.
    Die Prinzipien desAgilen Manifests Funktionierende Programme sind wichtiger als ausführliche Dokumentation. - Gut geschriebene und ausführliche Dokumentation kann zwar hilfreich sein, das eigentliche Ziel der Entwicklung ist jedoch die fertige Software.
  • 26.
    Die Prinzipien desAgilen Manifests Die stetige Abstimmung mit dem Kunden ist wichtiger als die ursprüngliche Leistungsbeschreibung in Verträgen. - Statt sich an ursprünglich formulierten und mittlerweile veralteten Leistungsbeschreibungen in Verträgen festzuhalten, steht vielmehr die fortwährende konstruktive und vertrauensvolle Abstimmung mit dem Kunden im Mittelpunkt.
  • 27.
    Die Prinzipien desAgilen Manifests Der Mut und die Offenheit für Änderungen stehen über dem Befolgen eines festgelegten Plans. - Im Verlauf eines Entwicklungsprojektes ändern sich viele Anforderungen und Randbedingungen ebenso wie das Verständnis des Problemfeldes. Das Team muss darauf schnell reagieren können.