Zum Inhalt springen

Vorgehensmodell zur Softwareentwicklung

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Softwareprozess)
Datei:Three software development patterns mashed together.svg
In der Softwaretechnik existiert eine Vielzahl von Verfahren und Methoden, die der Softwareentwicklung dienen. Auf dem Bild sind das Prototyping, das Spiralmodell und der klassische Wasserfall zu erkennen.

Ein Vorgehensmodell zur Softwareentwicklung ist ein für die Softwareentwicklung angepasstes Vorgehensmodell.<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> Es handelt sich um einen standardisierten organisatorischen Rahmen für den idealisierten Ablauf eines Entwicklungsprojekts. Er dient dazu, die Entwicklung von Software oder verwandter Technologien, wie der Informationstechnik (IT)<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref>, übersichtlicher zu gestalten und ihre Komplexität, die benötigte Zeit, Risiken, Kosten und letztlich die Qualität beherrschbar zu machen.

Ein Vorgehensmodell ist eine abstrakte Darstellung eines Softwareprozesses. Der Prozess wird hierbei immer nur aus einer bestimmten Perspektive dargestellt. Daher beinhaltet ein Vorgehensmodell immer nur einen Teil der Informationen über den Prozess. Dies hat allerdings den Vorteil, dass die den einzelnen Softwareprozessen zugrunde liegenden Prinzipien übersichtlich und verständlich dargestellt werden können.

Vorgehensmodell zur Softwareentwicklung werden in Kapitel 10 des Software Engineering Body of Knowledge (SWEBOK) beschreiben und im Zusammenhang mit dem Software-Lebenszyklus behandelt. In diesem Kontext sind außerdem die Normen ISO/IEC 12207 und ISO/IEC 15288 relevant.

Die Fachgruppe Vorgehensmodelle für die betriebliche Anwendungsentwicklung (WI/VM) der Gesellschaft für Informatik (GI) befasst sich mit dem Thema.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/fg-wi-vm.gi.de (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Grundlagen[Bearbeiten]

Da die Entwicklung von Software eine technische (manchmal ingenieurwissenschaftliche) Herausforderung darstellt, bedienen sich Softwareentwickler eines Plans zur Softwareentwicklung. Dieser Plan oder das Vorgehensmodell unterteilt den Entwicklungsprozess in überschaubare, zeitlich und inhaltlich begrenzte Phasen. Die Software wird somit Schritt für Schritt programmiert oder hergestellt. Der eigentliche Entwicklungsprozess wird dabei vom Projektmanagement und Qualitätsmanagement begleitet.

Vorgehensmodelle spalten einzelne Aktivitäten auf verschiedene Phasen im Entwicklungsprozess auf und diese werden dann – u. U. mit geringen Modifikationen – einmal (z. B. Wasserfallmodell) oder mehrmals durchlaufen (z. B. Spiralmodell).<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> Bei mehrmaligen Durchläufen erfolgt eine iterative (d. h. wiederholte) Verfeinerung der einzelnen Softwarekomponenten.

Es herrscht jedoch Uneinigkeit über die optimale Vorgehensweise, was zur Entwicklung verschiedener Konzepte und Modelle geführt hat. In der Regel werden im Entwicklungsprozess mindestens zwei große Tätigkeitsgruppen unterschieden,

  1. die (von der programmiertechnischen Realisierung unabhängige) Analyse von Geschäftsprozessen (Geschäftsprozessmodell und Datenmodell) einerseits und
  2. die EDV-technische Realisierung (Design und Programmierung) andererseits.

Vorgehensmodelle unterscheiden sich außerdem wesentlich in ihrem Detaillierungsgrad. Beispielsweise sind der Rational Unified Process (RUP) oder Rapid Application Development (RAD) detailliert ausgearbeitete Vorgehensweisen, die den an der Entwicklung Beteiligten konkrete Arbeitsanweisungen an die Hand geben. Das V-Modell nimmt diesbezüglich übrigens eine Zwitterstellung ein: Es ist sowohl ein Prinzip (jeder Stufe der Entwicklung entspricht eine Testphase) als auch (wie zumeist gebräuchlich) ein detailliertes Modell, siehe auch V-Modell (Entwicklungsstandard).

Die agile Softwareentwicklung hingegen beschäftigt sich mit Methoden, die den Entwickler kreativ arbeiten und Verwaltungsaspekte zurücktreten lassen.

Je nach Bedarf können oder müssen Prozesse wie die Vorgehensmodelle durch verschiedene Bewertungsverfahren zur Qualitätssicherung im Einsatz überprüft werden, beispielsweise durch das Capability Maturity Model (CMM) oder ISO/IEC 15504 (SPICE). Die im Rahmen der Entwicklung entlang eines Vorgehensmodells entstehenden Ergebnisse und Arbeitsprodukte dienen somit zu rechtlichen und regulativen Zwecken, wie beispielsweise einer Zertifizierung, Auditierung oder Akkreditierung.

Vorgehensmodelle für Software[Bearbeiten]

Datei:Vorgehensmodell.png
Schematische Darstellung eines Vorgehensmodell (2022)<ref name=":0" />

Es gibt verschiedene Typen von Vorgehensmodellen, die mit unterschiedlichen Prinzipien für die Entwicklung von Software kombiniert werden können. Diese bestehen aus mehreren Elementen, die im nebenstehenden Bild dargestellt und hier erläutert sind:<ref name=":0">Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref>

Softwareentwicklungsprozesse[Bearbeiten]

Softwareentwicklungsprozesse dienen zur Planung und Steuerung einer Softwareentwicklung von der Konzeption bis zum Einsatz des Softwaresystems im Echtbetrieb.

Eines der ältesten Modelle, das eine starre Abfolge der einzelnen Phasen annimmt, ist das Wasserfallmodell. Weiterentwicklungen wie das Spiralmodell sehen hingegen Iterationen vor, d. h. derselbe Arbeitsschritt (z. B. die Analyse) wird mehrmals durchlaufen und die Ergebnisse des Arbeitsschrittes pro Durchlauf verfeinert und verbessert.

Seit den 1980er Jahren haben sich dutzende Modelle entwickelt, noch einmal verstärkt in den frühen 2000er Jahren. Ab den 2010er Jahren kamen agile Softwareentwicklungsmethoden hinzu.

Softwarelebenszyklusmanagement[Bearbeiten]

Softwarelebenszyklusmanagement erweitert die Phasen über den gesamten Lebenszyklus einer Software, d. h. berücksichtigt den Produktlebenszyklus der Software oder des Softwaresystems. Das Vorgehensmodell definiert die Anforderungen an betriebliche Prozesse („Was“) und beschreibt die konkreten, EDV-technisch realisierten Prozesse („Wie“). Dieser Typ ist eine Mischung aus einer Ist-Beschreibung und normativer Vorgabe. Je nach Standardisierungsgrad werden verschiedene Entwicklungsstufen vergeben. Unternehmen können sich diese Entwicklungsstufen von externen Stellen zertifizieren lassen.

Softwareentwicklungsphilosophien[Bearbeiten]

Zu den modellhaften Verfahren existieren Prinzipien und Leitgedanken, die auf Erfahrungen basieren und aufzeigen, wie Software möglichst gut entwickelt werden kann. Diese Konzepte beinhalten in der Regel auch Prozesselemente und werden daher ebenfalls als Prozess- oder Vorgehensmodell bezeichnet. Beispiele:

Nutzen und Grenzen[Bearbeiten]

Vorgehensmodelle zur Softwareentwicklung basieren auf einer Vielzahl historischer Hintergründe und wurden im Zuge der Entwicklung von Computern, dem Internet sowie technischen Produkten entwickelt. Grundsätzlich geben die Modelle einen Rahmen vor, wie Software systematisch, rational und strukturiert entwickelt werden kann. Dies bedeutet in der Regel auch einen geordneten Ablauf auf Projektebene. Wenn die Entwicklung zugleich ein Projekt ist, kann das Modell mit dem Projektmanagement wechselwirken oder dieses sogar ergänzen. Wenn die zu entwickelnde Software ein konkretes Produkt ist, beispielsweise eine Anwendungssoftware, ähnelt der Prozess einem Produktentstehungsprozess.

Ein Vorgehensmodell soll als ein Mittel zum Zweck und nicht als Selbstzweck dienen. Ein Modell kann die Realität jedoch nie exakt abbilden. Die konzeptuellen Vorüberlegungen zu den Modellen sind notwendig, um diese auf einer Metaebene zu begründen und für verschiedene Einsatzzwecke zu entwickeln. Ein solches „Metamodell“ wäre laut einer Definition als „ein Modell von einem Modell“ zu verstehen.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/sebokwiki.org (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Die Erwartungen an die Arbeit mit einem Vorgehensmodell umfassen eine qualitative und quantitative Steigerung der Produktivität, der Produktqualität und der Zusammenarbeit der beteiligten Personen. Die Modelle und daraus instanziierten Prozesse bieten den teilhabenden Personen (Softwareentwickler, Softwaretester, Softwarearchitekten usw.) eine überschaubare Ablaufstruktur und den leitenden Personen die Möglichkeit zum Eingreifen und Entscheiden.

Bei der komplexen Herstellung (Programmierung) oder Wartung von Software, die teilweise entlang einer zu entwickelnden Computerhardware abläuft, versucht man, Funktionen zu erfüllen und Fehler zu vermeiden. Dies soll so früh und so gut wie möglich geschehen. Ein Vorgehensmodell soll dabei helfen, einen strukturellen Rahmen für die Entwicklung und den Softwaretest sowie im Hinblick auf die Hinterlassenschaft (Legacy) oder die Wartung von Software zu schaffen.

Des Weiteren weicht die Software teilweise von der konventionellen Ingenieurs-Praxis ab. Zwar kann man Software als „ausführbares Wissen“ bezeichnen, das sich nicht ingenieurmäßig herstellen ließe (wie etwa eine Brücke oder ein Hochhaus), jedoch basiert die Softwaretechnik auf dem Grundwissen der Rechnertechnik (Rechnerarchitektur) und der Informatik – beides sind Ingenieurswissenschaften mit unterschiedlichen Ausprägungen. In diesem Zusammenhang sei erwähnt, dass Software in Deutschland nicht patentierbar ist, sondern nur als Teil eines übergeordneten Systems bzw. einer technischen Erfindung. Je nach Art der Software kann der Entstehungsprozess daher kreativer oder technischer erfolgen (Embedded Software).

Durch die Nutzung eines Vorgehensmodells bzw. den konkreten Entwicklungsprozessen besteht außerdem die Möglichkeit der Einbindung in übergeordnete Geschäftsprozesse, die beispielsweise die Ressourcenplanung oder die Kosten berücksichtigen, da die Projekte selbst häufig einen technischen und keinen wirtschaftlichen Fokus haben.

Heute existieren verschiedene, teils historisch gewachsene Vorgehensmodelle zur Entwicklung von Software oder anderen technischen Produkten. Die Modelle werden häufig von Fachexperten oder Unternehmen entworfen und vermarktet, die meist in der Rolle des Beraters tätig sind (vgl. auch technische Unternehmensberatung). Werden die Vorgehensmodelle in Organisationen oder Unternehmen ohne entsprechende Schulungen und Weiterbildungen eingesetzt, können Missverständnisse und Probleme auftreten.

Je nach Modell können auch Umfänge entstehen, die einem Projekt nicht angemessen sind, sei es zeitlich oder ressourcentechnisch. Sodann wird ein Minimum oder Maximum an zunächst projektfremden Aktivitäten wie der Dokumentation gefordert, was mit einer Wahrnehmung von Bürokratie einhergeht oder diese tatsächlich darstellt (siehe auch Parkinsonsches Gesetz). Je nach Anwendungsfall fordern jedoch Normen oder Standards diese Aktivitäten und daraus resultierenden Artefakte als Evidenzen im Hinblick auf Zertifizierung und Akkreditierung ein.

Im Zusammenhang mit Bürokratie seien einige Softwareprojekte der öffentlichen Hand (Ämter, Behörden und Anstalten des öffentlichen Rechts) erwähnt, die sich verzögerten, als ungeeignet herausgestellt wurden und/oder erheblich verteuerten, wie beispielsweise: INPOL-Neu (Polizei), Nivadis (Polizei Niedersachsen), Fiscus (Finanzamt), Herkules (Bundeswehr), Toll Collect, A2LL (Arbeitsagentur, damals auch bekannt als „Hartz IV“-Software), POLIKS (Polizei Berlin) usw. Wie bereits erwähnt, kann ein Vorgehensmodell bzw. der darauf aufgestellte Prozess nur einen idealisierten Rahmen, jedoch keine hundertprozentige Garantie für Erfolg oder Freiheit von Problemen einräumen. Prinzipiell ist die Nutzung eines Modells jedoch empfehlenswert.

Zusammenfassend schaffen Vorgehensmodelle einen wichtigen Rahmen für die strukturierte und systematische Entwicklung, Prüfung und Wartung von Software oder technischen Produkten. Sie können die Produktivität, Qualität und Zusammenarbeit verbessern, garantieren jedoch keinen Projekterfolg. Entscheidend ist, dass das Modell an die jeweiligen Anforderungen situativ angepasst und nicht zum Selbstzweck eingesetzt wird. Ein zu umfangreiches oder unpassendes Vorgehen kann zusätzlichen Aufwand und Bürokratie verursachen. Die Schulung und Synchronisation aller Beteiligten wird empfohlen.

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]

Commons: Vorgehensmodell zur Softwareentwicklung – Sammlung von Bildern, Videos und Audiodateien

Vorlage:Wikidata-Registrierung

Einzelnachweise[Bearbeiten]

<references />

ar:عملية تطوير البرمجيات fa:فرآیند تولید نرم‌افزار ja:ソフトウェア開発工程 ko:소프트웨어 개발 프로세스 pt:Processo de desenvolvimento de software vi:Quy trình phát triển phần mềm zh:软件开发过程