Suchen

Definition „Incremental Build Model“ Was ist inkrementelle Entwicklung?

| Autor / Redakteur: jelsag / Stephan Augsten

Die inkrementelle Entwicklung ist ein strategisches Vorgehensmodell innerhalb der agilen Software-Entwicklung. Dabei wird zunächst das Gesamtsystem geplant, das einem modularen Aufbau folgt. Die Realisierung des Projektes erfolgt anschließend in Einzelschritten.

Firmen zum Thema

Bei der inkrementellen Entwicklung wird eine Applikation zunächst mit Grundfunktionen ausgeliefert und sukzessive um zusätzliche Features erweitert.
Bei der inkrementellen Entwicklung wird eine Applikation zunächst mit Grundfunktionen ausgeliefert und sukzessive um zusätzliche Features erweitert.
(© DOC RABE Media - stock.adobe.com)

Die Grundidee der inkrementellen Entwicklung beruht auf einer übergreifenden Planung für das Gesamtprojekt und somit auf der Annahme, dass die Forderungen der Anwender bereits zum Anfang des Entwicklungsprozesses erfassbar sind. Anschließend wird das System in aufeinanderfolgenden Ausbaustufen realisiert.

Im Englischen werden diese Teilabschnitte als „increment“ oder „build“ bezeichnet. An den Anwender wird möglichst früh eine erste Systemversion geliefert, in der die Basisfunktionalitäten des Programms bereits enthalten ist. Durch später ausgelieferte Inkremente werden diese Funktionalitäten lediglich erweitert.

Auslieferung anwendungsfähiger Module

Inkrementelle Entwicklung bedeutet, dass die Software in Einzelteilen erstellt und diese Inkremente anwendungsfähig ausgeliefert werden. Ein System, das in einem inkrementellen Entwicklungsprozess entsteht, folgt somit einem modularen Ansatz.

Hierfür muss im ersten Schritt die Systemarchitektur inklusive aller relevanten Schnittstellen für die einzelnen Module entworfen werden. Anschließend wird sie in ihre Einzelteile zerlegt, um die einzelnen Ausbaustufen zu definieren. Jedes Inkrement repräsentiert eine bestimmte Funktionalität, die in sich geschlossen ist, über einen eigenen Code verfügt und vor der Auslieferung getestet werden kann.

Eine inkrementelle Entwicklung enthält somit auch immer iterative Komponenten. Im Gegensatz zu einem klassischen iterativen Vorgehensmodell geht ein inkrementeller Ansatz jedoch davon aus, dass jede an den Anwender ausgelieferte Komponente für einen abgeschlossenen Projektschritt steht. Spätere Überarbeitungen der einzelnen Inkremente sind zumindest theoretisch nicht erforderlich. Die Größe der einzelnen Inkremente spielt hierbei keine Rolle.

Unterschiede zwischen inkrementellen und iterativen Strategien

Inkrementelle Strategien beruhen darauf, dass die Architektur und damit die Strukturen des Gesamtsystems den Ausgangspunkt des Entwicklungsprozesses bilden. Ihr Ziel besteht darin, jeweils fertige Module auszuliefern, die ihre Anwender bereits in konkreten Arbeitszusammenhängen nutzen können. Alternativ ist in diesem Kontext auch die Entwicklung temporärer Prototypen möglich.

In jedem Fall handelt es sich bei den einzelnen Inkrementen jedoch um einsetzbare Teilprodukte. Eine inkrementelle Entwicklung ermöglicht beispielsweise, neue oder veränderte Anforderungen der Auftraggeber vom laufenden Entwicklungsprozess zu separieren und erst bei der Erstellung eines folgenden Moduls zu realisieren. Die Entwicklung der einzelnen Module kann durch Einzelverträge abgesichert werden.

Bei einer reinen iterativen Strategie wird das Gesamtprodukt oder einzelne Funktionalitäten dagegen fortlaufend verbessert. Die Grundlage dafür bilden Wiederholungen (Iterationen). Veränderungen der Vorgaben und Spezifikationen erfordern häufig, den gesamten Entwicklungsprozess von neuem zu durchlaufen, um eine einzelne Funktionalität zu programmieren. Häufig fehlt dabei der Gesamtüberblick über das zu entwickelnde Anwendungssystem, da dessen Systemarchitektur erst im Entwicklungsprozess selbst entsteht.

Angepasste inkrementelle Entwicklungsprozesse

In der Theorie erscheint die inkrementelle Entwicklung als ein linearer, modular strukturierter Prozess der Softwareentwicklung, der häufig mit dem sogenannten Wasserfallmodell beschrieben wird. Die einzelnen Projektschritte - für das Gesamtprojekt, aber auch für die Erstellung der Einzelinkremente - folgen kaskadenförmig und ohne Wiederholungen aufeinander. Im Einzelnen handelt es sich hierbei um:

  • Projektanforderungen, Spezifikationen
  • Entwicklung der Systemarchitektur
  • Entwicklung der funktionalen Inkremente
  • Implementierung
  • Test
  • Auslieferung des fertigen Produktes.

In der Praxis der agilen Softwareentwicklung ist ein solcher, rein linearer Ansatz allerdings nur selten realisierbar. Der Regelfall sind daher sogenannte angepasste inkrementelle Entwicklungsprozesse. Ein Beispiel hierfür ist das STEPS-Modell oder zyklisches Projektmodell, das einem inkrementellen Ansatz folgt, jedoch ergebnisorientierte Abhängigkeiten zwischen den einzelnen Projektschritten beschreibt.

Das Gesamtsystem und alle Inkremente werden in diesem Fall evolutionär entwickelt, so dass zur Projektrealisierung auch (iterative) Revisionsroutinen zählen. Anders als bei einem rein iterativen Projekt steht jedoch auch hier die Gestaltung der übergreifenden Systemarchitektur im Fokus.

Software-Entwickler und Endnutzer arbeiten im Bereich des praktischen Systemeinsatzes und im Hinblick auf eine eventuell erforderliche Revisionsetablierung eng zusammen. Folglich sind beide Seiten an der Prozessdefinition innerhalb des Gesamtprojekts beteiligt.

Bei einer angepassten inkrementellen Entwicklung werden das Produkt und seine Einzelkomponenten einem fortlaufenden Evaluationsprozess unterzogen. Die Erfahrungen aus der Optimierung eines Inkrementes werden durch ein entsprechend angepasstes Vorgehen für die Entwicklung des nächsten Moduls genutzt.

(ID:45256664)