Agilität und Qualitätskriterien in der Softwareentwicklung

Preview:

DESCRIPTION

 

Citation preview

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

• KorrektheitErfü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ässigkeitFehler sollten nur selten auftreten und nur geringe Auswirkungen haben.

Qualitätskriterien

• RobustheitSinnvolle 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

• WartbarkeitStandardisierte Entwicklung

(Design Patterns, Richtlinien)

Beherrschung der Komplexität

Verständlicher Code, Entkoppelung

Qualitätskriterien

• Effizienz (Performance)Angemessenes Laufzeitverhalten und Speicherplatzbedarf

Qualitätskriterien

• DokumentationSowohl 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ätz.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.

Recommended