Softwareentwicklungsprozess
Methoden

Softwareentwicklungsprozess

Unser Softwareentwicklungsprozess ist in unserem Qualitätsmanagementhandbuch exakt spezifiziert. Jeder der hier abgebildeten Unterprozesse folgt ebenfalls einer exakten und detaillierten Spezifikation. 

Agil oder Traditionell - Wie hätten Sie's denn gern?

Grundsätzlich stehen sich zwei, scheinbar widersprüchliche, Ansätze gegenüber.

Bei dem agilen Ansatz wird davon ausgegangen, dass sich die Anforderungen während der Projektphase verändern oder zumindest verfeinern können. Und dass es sich positiv auf das Gesamtergebnis auswirkt, wenn die Erfahrungen, die man während der Umsetzung macht (inhaltlicher oder technischer Natur), in die weitere Entwicklung einfließen können.

Der traditionelle Ansatz geht davon aus, dass die vollständige Planung eines Projektes vor der Realisierung maßgeblich für den Projekterfolg ist. Das klingt zunächst nachvollziehbar, da dieser Ansatz sicher die beste Planbarkeit in Bezug auf Ressourcen (personell wie auch monetär) und Zeitplanung ermöglicht. Der traditionelle Ansatz stößt allerdings erfahrungsgemäß bei großen Projekten häufig an seine Grenzen. Denn in der Regel sind nicht alle Details und Facetten einer Softwarelösung im Vorfeld absehbar. Dazu kommt, dass bei großen Projekten, die nach dem traditionellen Ansatz realisiert werden, häufig an Anforderungen festgehalten wird, bloß weil diese im Vorfeld definiert und ggf. sogar vertraglich fixiert wurden, obwohl längst absehbar ist, dass diese Anforderungen nicht den tatsächlichen Anforderungen entsprechen werden.

Wir vereinen das Beste aus beiden Welten

Wir glauben nämlich grundsätzlich an die Vorzüge agiler Softwareentwicklung, allerdings sind wir ebenso davon überzeugt, dass der Erfolg eines Softwareprojektes (oder Teilprojektes) stark von dessen Planung abhängt. Daher sehen wir den idealen Prozess wie folgt:

Zunächst das Kernsystem, ganz traditionell...

Es wird nicht das gesamte System im Vorfeld detailliert durch konzipiert. Vielmehr wird als erster Schritt bei einer Neuimplementierung das Kernsystem definiert. Dieses sollte gut definiert sein, da sich der Kern einer Software im Nachhinein nur sehr schwer modifizieren lässt.

Zu den zu Beginn zu definieren Kernkonzepten gehört:

  • Grundsätzliche System- oder Technologieauswahl
  • Datenmodell der Kern-Entitäten
  • Grundsätzliches Bedienkonzept
  • Informationsarchitektur des Contents oder der zu verwaltenden Daten
  • Spezifikation der wichtigsten Kern-Use-Cases

Dieses erste Paket sollte überweise gut durch konzipiert sein und eher dem traditionellen Ansatz folgen. 

Nach Fertigstellung der ersten Phase (Core-Entwicklung) sollte gemeinsam mit dem Kunden eine Bewertung der Ergebnisse stattfinden.

...dann die Funktionen. Nach und nach und ganz agil

Im Anschluss werden die einzelnen Features entwickelt. Jedes für sich folgt dem traditionellen Ansatz, wird also exakt durch spezifiziert und umgesetzt. Im Kontext des Gesamtprojektes werden die einzelnen Funktionen jedoch immer wieder neu bewertet und priorisiert. So verfolgt das Gesamtprojekt tatsächlich den agilen Ansatz.

Stufen einer Iteration

Setup

Das Setup beinhaltet das organisatorische und technische Aufsetzen eines jeden Software- oder Webprojektes oder einer Komponente. Nach dem Setup steht der organisatorische Rahmen der Iteration und jeder, bei uns wie auch auf Kundenseite, weiß genau, was er zu tun hat.

Anforderungsanalyse

Zu Beginn eines jeden Projektes werden die Zieldomäne und die Anforderungen an die zu erstellende Softwarelösung oder Website detailliert analysiert und dokumentiert.

Realisierung

Der Prozess der Realisierung beinhaltet die eigentliche Implementierung inklusive des Modul-bezogenen Qualitätsmanagements.

Qualitätskontrolle

Im Rahmen der Qualitätskontrolle wird das Gesamtprodukt gegen die für diese Iteration definierten Anforderungen getestet. Im Anschluss wird das System dem Kunden zur Abnahme auf einem sog. Staging-System zur Verfügung gestellt.

Abnahme

In dieser Phase hat der Kunde das Produkt zu testen und im Rahmen einer definierten Abnahmefrist abzunehmen.

Rollout

In der Phase des Rollouts wird das System in den Produktivbetrieb überführt. Dies beinhaltet nicht nur die Installation auf dem Produktivsystem, sondern kann auch Schulungen, Datenmigrationen, Integration in die Geschäftsprozesse etc. beinhalten.

Projektmanagement

Das Projektmanagement folgt ebenfalls klar definierten Regeln und beinhaltet Jour fixes, tägliche Kontrolle der Fortschritte, Statusberichte, Projektcontrolling etc.

Technisches Projektmanagement

Parallel zur technischen Umsetzung bis hin zum tatsächlichen Rollout der Software oder der Website wird das Projekt permanent einer fachlichen Qualitätskontrolle unterzogen. Es wird darauf geachtet, dass der Code sauber und entsprechend der form4 Coding Guidelines entwickelt ist und dass technische Risiken möglichst minimiert werden.