Definition „Incremental Build Model“

Was ist inkrementelle Entwicklung?

| Autor / Redakteur: jelsag / Stephan Augsten

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

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.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Angular und AngularJS

JavaScript-Fundamente für Single Page Apps, Teil 3

Angular und AngularJS

Angular ist von der Philosophie her ein vollständiges Framework und bietet Lösungen für nahezu sämtliche Aufgaben eines Frontent-Entwicklers. So kümmert sich die Open-Source-Software um Dinge wie die Validierung oder die Kommunikation mit dem Backend. lesen

Agile Transformation – eine märchenhafte Reise?

Agile Prozesse und bessere Software

Agile Transformation – eine märchenhafte Reise?

Bei der agilen Transformation dominieren bisher „Insellösungen“ für einzelne Teams oder Abteilungen. Berühren agile Prozesse jedoch benachbarte Teile des Unternehmens, die nach wie vor auf klassisches Projektmanagement setzen, steigt die Komplexität. Dies betrifft vor allem große Unternehmen. lesen

Teamorganisation nach dem Scrum-Prinzip

Lean Development

Teamorganisation nach dem Scrum-Prinzip

Nicht nur die Software-Entwicklung kann nach dem Scrum-Prinzip ablaufen, sondern auch die Teamorganisation. Das Resultat sind schlanke und effiziente Entwicklerteams, die schnell auf Änderungen bei den Anforderungen reagieren können. Doch wie werden solche Scrum-Teams organisiert? lesen

Was ist NetBeans?

Definition „NetBeans (IDE)“

Was ist NetBeans?

NetBeans erleichtert die Erstellung von Java-Swing-Applikationen und anderen Programmen. Die modular erweiterbare, auf der NetBeans-Plattform basierende IDE unterstützt beispielsweise C/C++, HTML und JavaScript. lesen

Maximale Flexibilität durch Microservices

Continuous Delivery bei der VW Group IT

Maximale Flexibilität durch Microservices

Agiles Arbeiten wird auch in Konzernen immer mehr zur Normalität. Agile Softwareentwicklung setzt hier auf Microservices-Architekturen und eine Continuous Delivery Pipeline, um neue Anforderungen schnell umzusetzen und den Anwendern rasch erste Ergebnisse zu liefern. Ein Best Practice am Beispiel der Lizenz-Monitoring-Software VWLIC des Volkswagen-Konzerns. lesen

Design Thinking in der Softwareentwicklung

Agilität weitergedacht

Design Thinking in der Softwareentwicklung

Design Thinking hat zum Ziel, Innovationen zu entwickeln, die sich am Nutzer orientieren und dessen Bedürfnisse erfüllen. Auch die agile Softwareentwicklung kann sich dieses Konzept zunutze machen, wie dieser Beitrag erörtert. lesen

Von DevOps zu DevSecOps – diese Technologien helfen

Security-Testing, Analysen und Selbstschutz

Von DevOps zu DevSecOps – diese Technologien helfen

DevOps vereint agile Entwicklungszyklen mit verlässlichem IT-Betrieb. Doch was ist mit der Anwendungssicherheit? Dieser Beitrag erörtert, wie sich Security in DevOps-Strategien integrieren lässt. lesen

User Experience Design in der agilen Entwicklung

Agile Methoden

User Experience Design in der agilen Entwicklung

In der Software User Experience kommen iterative Prozesse zum Einsatz: Dieser Artikel beleuchtet Möglichkeiten, Software User Experience mit dem agilen Vorgehensmodell Scrum zu kombinieren. lesen

DevOps, und alle ziehen an einem Strang

Cloud-basierte agile Entwicklung

DevOps, und alle ziehen an einem Strang

Hinter DevOps verbirgt sich der Leitgedanke, Softwareentwicklung und Operations gemeinsam Verantwortung übernehmen zu lassen für eine agile Entwicklung und einem gleichzeitig stabilen IT-Betrieb. Vier Grundelemente helfen bei der Umsetzung. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45256664 / Definitionen)