+49 234 / 92 78 21-0 info@staffxperts.de

PHASENMODELLE DER SOFTWARE-ENTWICKLUNG

Phasenmodelle der Software-Entwicklung Teil 1

5. Nov 2019

Einführung

Bill Gates, Mark Zuckerberg und Jeff Bezos empfehlen das Programmieren als Grundschulfach. Tim Cook ist sogar der Meinung, dass Kinder Programmiersprachen anstatt Fremdsprachen lernen sollen (der „universal translator“ ist sowieso bald Realität!).

Die Welt von Morgen wird also von noch mehr Software-Systemen dominiert sein und deswegen ist die Forschung und Entwicklung in Sachen Projektmanagement für die IT Welt stärker denn je.

Aber auch für diese abstrakte Technologiewelt gilt die Projektdefinition:
„Ein einmaliges Vorhaben, das ein Anfangs- und ein Endtermin hat und unter Berücksichtigung von Zeit-, Ressourcen- und Qualitätsvorgaben erledigt wird.“

Natürlich hat jede Projektart ihre eigene Vorgehensweise: Investitionsprojekte werden anders als Produktentstehungsprojekte angegangen und die Methode wie Organisationsprojekte erfolgreich realisiert werden ist nicht gleich mit der Realisierungsmethode von Softwareprojekte zu setzen.

Interessant ist es, dass heute sehr viel über agile Methoden und agile Techniken in der Projektrealisierung gesprochen wird. Und das nicht nur in der IT-Welt. Hintergrund dieser Philosophie ist die Erkenntnis, dass das Bedürfnis der Projekt-Stakeholder nach Flexibilität und Konzentration auf das Wesentliche enorm gestiegen ist.

In der IT-Welt, und nicht nur, findet der Vergleich zwischen agile und sequentielle Vorgehensmodelle statt, wobei beide Philosophien Ihre Daseinsberechtigung haben.

Das Grundmodell der Softwareentwicklung 

Grundmodell Softwareentwicklung, Staffxperts GmbH

Grundmodell Softwareentwicklung, Staffxperts GmbH

Ausgehend von der Definition des Projektes, ist das hier vorgestellte Modell eine sequentielle Darstellung der einzelnen Phasen, also von der ersten Idee bis zum produktiven Einsatz der Software.

Phase 1: VORUNTERSUCHUNG (Think)

Sie dient zur Auftragsklärung und hat das Ziel die Anforderungen (Requirements) für die Realisierung des Projektes zu definieren und eine erste Zeit- & Aufwandsschätzung zu machen.

Für die Voruntersuchung wird der Ist-Zustand aufgenommen:
Die zu analysierenden Aufgaben werden definiert, und die Ziele dieser Analyse werden festgelegt. Mit Hilfe eines aufgestellten Fragenkatalogs wird die Analyse durchgeführt, die Ergebnisse ausgewertet und die Anforderungen definiert, die der Auftraggeber prüft und freigibt.

Danach folgt die Machbarkeitsstudie:
Die grundsätzliche Lösungsalternativen werden beschrieben und bewertet, eine Zeit- und Aufwandsschätzung wird erstellt und ein Durchführungsplan generiert.

Phase 2: KONZEPTION / GROBKONZEPT (Think) 

Klärung was das IT-System leisten soll: Funktionalität, Datenhaushalt usw. Der Kunde ist gefordert ein detailliertes Lastenheft zu liefern.
Zum Schluss dieser Phase soll der Vertrag zwischen Aufraggeber und Auftragnehmer stehen: nach Vorlage und Abnahme des Pflichtenheftes (beinhaltet u. a. das Sollkonzept, den Durchführungsplan und eine formalisierte Systemspezifikation) und Akzeptanz des Angebotes.

Während der Phase wird ein Modellierungskonzept/Beschreibungsmethode festgelegt (z. B. SA oder OO- Methoden) und anschließend  die Daten und Funktionszusammenhänge analysiert. Die systemrelevanten Daten werden strukturiert und typisiert, bevor die Gliederung und Hierarchisierung der Systemfunktionen stattfindet. Erst dann kann das Sollkonzept dargestellt und die benötigte Hardware- und Software geklärt und fixiert werden.

Phase 3: DESIGN/System und Komponentenentwurf (Think)

In dieser Phase wird geklärt wie das IT-System aufgebaut wird. Das heißt dass die IT Fachleute die Hardware-und Softwarearchitektur klären müssen, die Komponenten (einzelne Baugruppen innerhalb der Softwarearchitektur) spezifizieren und die Integration der Komponenten in die geplante IT-Landschaft planen. Am Ende stehen die Architektur und der Projektplan für die Implementierung (Systemrealisierung) fest.

Um diese Ziele zu erreichen wird zuerst das System entworfen:
Das Gesamtsystem wird anhand der Anforderungsspezifikation in Teilsysteme zerlegt. Die relevanten Ausschnitte der Anforderungsspezifikation werden zu jedem Teilsystem zugeordnet und ein Software-Entwurf der zu realisierenden Teilsysteme findet statt.

Dieser Entwurf ist die Darstellung der Funktionen und Datenstrukturen in einer geeigneten Form, um danach diese Darstellung in einer Programmiersprache abzubilden. Erst jetzt wird die Programmiersprache festgelegt.

Bei dem Modulentwurf wird ein physisches Datenbankmodell definiert und die Speicherverwaltung konzeptioniert. Die Modulfunktionen werden als Algorithmen beschrieben (Verwendung der festgelegten Beschreibungsmittel) und anschließend werden die Entwurfsentscheidungen dokumentiert.

Die Antwort auf die Frage mit welchen bestehenden IT-Systeme das neue IT-System kommunizieren muss bzw. wie findet die Kommunikation statt wird durch die Schnittstellendefinition beantwortet. So werden neben der Benutzerschnittstellen auch die Schnittstellen zur Basismaschine, zum Datenbankmanagementsystem (DBMS) und anderen Systemen.

Die Vorbereitungen für den Beginn der nächsten Phase (Implementierungsphase) beinhalten die Festlegung der Realisierungsreihenfolge und natürlich die Termin- & Kostenplanung sowie die Benennung der Mitarbeiter, die die einzelnen Aufgaben übernehmen.

Phase 4: SYSTEMREALISIERUNG/Implementierung (Build)

In dieser Phase werden die Ergebnisse der Konzeption- und der Designphase umgesetzt.
Oder einfacher gesagt: jetzt beginnt das Programmieren. Am Ende dieser Phase werden codierte und getestete Module vorliegen (jeder Programmierfachkraft wird eine Komponente zugeordnet).

Die dazugehörige Dokumentation (Moduldokumentation, Programmdokumentation und Testdokumentation) dient u. a. auch als Nachweis, dass alle Anforderungen die in den vorherigen Phasen definiert wurden, erfüllt sind. Die Realisierung des Systems findet getrennt vom produktiven System, in einer Rechnerlandschaft, die das produktive System simuliert (Entwicklungsumgebung).

Phase 5: SYSTEMTEST/SYSTEMEINFÜHRUNG (Build/Operate)

Während der gesamten Realisierungsphase (oder sogar noch früher) wird getestet. Die Module werden getestet, Komponenten- & Integrationstests werden durchgeführt. Dadurch wird die Funktionalität und die Lauffähigkeit der Module innerhalb einer Komponente überprüft und die Zusammenarbeit der Komponenten getestet.
Jetzt wo aber das System fertig sein soll, wird es gegen die gesamte Anforderungen (die funktionalen und nicht funktionalen Anforderungen) getestet. Der Systemtest dient der Abnahme der Software durch den Kunden.
Diese Abnahme hat erstmal einen vorläufigen Charakter, solange sich die Software noch in der Entwicklungsumgebung befindet.
Erst nach der Überführung in den produktiven Betrieb kann die Schlussabnahme stattfinden. Die Überführung in den produktiven Betrieb kann entweder auf einen Schlag oder schrittweise stattfinden.

Im ersten Fall sprechen wir von der „Big Bang“ Strategie: die Software wird zu einem definierten Zeitpunkt mit allen Komponenten in Betrieb genommen und ist vollständig verfügbar. Sollten schwerwiegende Fehlersituationen entstehen, die sogar nicht behoben werden, findet ein sogenannter Rollback statt. Ob diese Einführungsstrategie die Richtige ist wird i. d. R. nach der vorläufigen Abnahme entschieden.

Im zweiten Fall sprechen wir von der „Step-by-Step“ Strategie, eine iterative Einführungsmethode die das Ziel hat, das Risiko eines kompletten Systemausfalles zu minimieren. Die Kehrseite dieser risikoärmeren Strategie ist, das es länger dauert und ggf. die System-User mit 2 Systeme arbeiten müssen bis das neue das alte komplett ersetzt.

Vor der „Go-Live“ Phase müssen die Anwender geschult werden. Die Key User sogar beteiligen sich in den früheren Phasen der Systementwicklung und so haben einen früheren Einblick in das System und können die „normale“ Anwender später effektiver unterstützen.

Phase 6: SYSTEMTEST NUTZUNG & WARTUNG (Operate)

Nach der erfolgreichen Softwareeinführung wird das System bewertet und optimiert. Obwohl es vor der Einführung getestet wurde, können neue Fehler auftauchen. Neue Releases werden eingespielt. Wichtig ist dabei die Software-Dokumentation aktuell zu halten.

Diese besteht aus:

  • Programmierdokumentation (Quellcode)
  • Methodendokumentation (allgemeine Beschreibung der Grundlagen, auf denen die Software beruht)
  • Installationsdokumentation (für die Administratoren)
  • Benutzerdokumentation (für die User)
  • Datendokumentation (Datenstruktur, Schnittstellen usw.)
  • Testdokumentation (Testbeschreibung)
  • Entwicklungsdokumentation (Versionsmanagement)

 

Weitere sequentielle / klassische Vorgehensmodelle

Das Wasserfallmodell 

Wasserfallmodell, Staffxperts GmbH

Wasserfallmodell, Staffxperts GmbH

Es handelt sich um ein relativ einfaches iteriertes Phasenmodell bzw. um eine Erweiterung des klassischen Phasenmodells.
Man kann diesen Ansatz erweitern und die Rückkopplung zwischen den einzelnen Entwicklungsphasen erlauben, nämlich das Zurückspringen in eine frühere Phase, sollte bei der Überprüfung der Phasenergebnisse festgestellt werden, dass die Qualitätsvorgaben nicht eingehalten sind. Da es trotzdem um ein sequentielles Modell handelt ist das parallele Arbeiten in unterschiedliche Phasen nicht vorgesehen (was aber eher realitätsfremd ist).

Das V-Modell

V-Modell, Staffxperts GmbH

V-Modell, Staffxperts GmbH

Das Wasserfallmodell mit Rückkopplung wird um die vorausschauende Planung der Testphasen ergänzt mit dem Ziel die abschließende Testphasedauer zu reduzieren Der Namen entsteht weil die Anordnung der einzelnen Entwicklungsphasen aus dem Wasserfallmodell zu den dazugehörigen Testfällen V-förmig dargestellt wird.

Das Spiralmodell

Spiralmodel nach Boehm, Wikipedia

Spiralmodel nach Boehm, Quelle: Wikipedia

Dieser iterative Prozess hat seinen Schwerpunkt in der Erkennung von Risiken während der Entwicklungsphase die das Projektziel gefährden können. Der Verlauf ist spiralförmig weil das Modell sich auf der Idee stützt dass während des Projektverlaufs ständig die gleiche Zyklen zu durchlaufen sind.

Diese Zyklen sind:

  1. Planung:
    – Bestimmung der Ziele
     – Alternativen festlegen: z. B. „make or buy“
     – Rahmenbedingungen: z. B. Zeit, Personal, Kosten, HW, SW usw.
  2. Risikoanalyse:
    – Evaluierung der Alternativen
    – Erkennen und Reduzierung der Risiken (Kosten, Termine usw.)
    – Prototypenentwicklung
  3. Engineering: Fertigstellung und Abnahme
    – Realisierung der besten Alternativen (umsetzen, testen, abnehmen)
  4. Kundenevaluierung:
    – Planung der Projektumsetzung in der nächsten Phase

 

Die Rollen in einem Softwareprojekt

In der klassischen Softwareentwicklung gibt es, wie in jedem Projekt, Akteure die eine übergreifende Rolle haben und den Projektverlauf (Erreichung der Projektziele) überwachen. Natürlich ohne die Fachkräfte läuft´s nicht, weil diese die konstruktiven Rollen (Entwicklung) übernehmen. Und natürlich gibt es Projektmitglieder die eine betreibende Rolle haben d. h. sie sorgen dafür dass das System beim Kunden den Mehrwert erbringt den der Kunde erwartet.

Übergreifende Rollen (1)

  • Projektmanager: er leitet das Projekt, und trägt die Verantwortung gegenüber dem Lenkungsausschuss (Vertreter des Kunden und der eigenen Firma)
  • Risikomanager: seine Hauptaufgabe ist Risiken zu erkennen (z. B. Risiken finanzieller Natur), diese zu bewerten und mit den anderen zuständigen Projektstakeholder Vorsorge zu betreiben um die Eintrittswahrscheinlichkeit zu verringern.
  • Qualitätsmanager: Er überwacht die Qualität des Projektverlaufes und der erreichten Zwischenergebnissen. Er agiert unabhängig vom Projektmanager weil er einen neutralen Blick auf das Projekt haben muss und wie eine Revisionsinstanz die Schwachstellen anspricht. Er berät die Projektleitung.

Konstruktive Rollen (2)

  • Requirements Engineer: erstellt bereichsübergreifend die Software- bzw. Hardware-Anforderungen (Requirements), und generiert die Spezifikationen für das zu erstellende System. Er überwacht auch die Umsetzung der Anforderungen.
  • Architekt: erstellt die Software- bzw. Hardwarearchitektur anhand der Spezifikationen und definiert die Schnittstellen zu anderen Systemen innerhalb der IT-Infrastruktur
  • Entwickler: Anhand der Anforderungs- bzw. Spezifikationsliste und der Software- und Hardwarearchitekturvorgaben, entwickelt er den Quellcode, testet, simuliert und dokumentiert seine Programmierergebnisse.
  • Tester: Er testet die Zwischen- bzw. Endergebnisse der Systementwicklung. Er definiert die Teststufen (von Komponententests bis hin zum Abnahmetest) und entlang der Testphasen (Testplanung, Testvorbereitung usw. bis hin zu der Testauswertung) führt die vorgegebenen Testarten durch z. B. Funktionstests, Schnittstellentests, Stresstests, Sicherheitstests, Performancetests usw.
  • Dokumentationsmanager: verwaltet und hält die notwendige Projektdokumenten aktuell. Sorgt dafür dass die notwendigen Systemdokumentationen erstellt sind und die Gesetze/Normen eingehalten sind.

Betreibende Rollen (3)

  • Rollout Manager: verantwortet die Einführung des neuen Systems in der produktiven Umgebung beim Kunden
  • IT-Trainer: plant und führt die User-Schulungen durch
  • Infrastruktur-Administrator: verantwortet die Verfügbarkeit und die Funktionsfähigkeit der IT-Infrastruktur die für das Projekt notwendig ist(Server, Entwicklungsumgebungen usw.)

Pawlos Charamis

Pawlos Charamis

Sales HR & Engineering Services

Autor dieses Artikels!

Wir sind Top-Arbeitgeber

Arbeitgeberbewertungen auf Kununu für staffxperts.
Quellen:

Softwareentwicklung kompakt und verständlich: Wie Softwaresysteme entstehen
von Hans Brandt-Pook (Autor), Rainer Kollmeier (Mitwirkende)
Verlag: Springer Vieweg; Auflage: 2., überarb. Aufl. 2015 (25. Januar 2016)
ISBN-13: 978-3658108755

Basiswissen für Softwareprojektmanager: Aus- und Weiterbildung zum Certified Professional for Project Management (CPPM)
von Andreas Johannsen (Autor), Anne Kramer (Autor), Horst Kostal (Autor), Ewa Sadowicz (Autor)
Verlag: dpunkt.verlag GmbH; Auflage: 1 (02. März 2017)
ISBN-13: 978-3864904295

Vorlesungsskript Software Engineering- Phasenmodelle
Univ.-Prof. Dr. M.-R. Wolff 

Wikipedia:
https://de.wikipedia.org/wiki/Softwaretest

Sie haben noch Fragen?

Rufen Sie uns an oder schreiben Sie uns.