Fachkonzept - Phasen der Softwareentwicklung
Wasserfall-Modell
Softwareentwicklung ist ein kreativer, oftmals schwieriger Prozess. Bei kleineren Projekten wird man sich an den Computer setzen, kurz nachdenken, und ein Programm schreiben. Bei größeren Projekten, bei denen üblicherweise viele Entwickler beteiligt sind, geht das nicht mehr so einfach. Und selbst wenn Du kleine Programme schreibst, wirst Du unbewusst mehrere Phasen der Softwareentwicklung durchlaufen.
Zuerst wirst Du Dir Gedanken machen, was Dein Programm leisten soll. Dann wirst Du Dir eine Struktur überlegen, welche Klassen es geben soll und welche Attribute und Methoden diese besitzen sollen. Bei kleineren Aufgaben wirst Du diese Schritte möglicherweise nicht schriftlich durchführen. Anschließend implementierst Du Dein Programm und testest es.
Die Folge dieser Schritte bezeichnet man in der Softwaretechnik auch als Wasserfall-Modell, da die einzelnen Entwicklungsschritte wie in einem Wasserfall aufeinanderfolgen.
Je komplexer die zu entwickelnden Projekte sind, desto wichtiger ist es, diese Phasen explizit zu durchlaufen und zu dokumentieren.
Anforderungsanalyse
Die Anforderungen an die Software werden ermittelt und festgehalten. Dabei kann z.B. ein Pflichtenheft entstehen, das genau angibt welche Anforderungen auf welche Art umgesetzt werden. Es ist z.B. auch denkbar, dass hier Prioritäten der verschiedenen Anforderungen definiert werden. Auch eine beispielhafte Skizze der Software kann Teil des Pflichtenheftes sein.
Jedenfalls muss aus dem Pflichtenheft möglichst klar hervorgehen, welchen Anforderungen die Software später genügen wird.
Modellierung
Anschließend wird das System mit Hilfe von Modellen entworfen. Hier werden z.B. Objekt- und Klassendiagramme entwickelt. Die Unified Modeling Language bietet daneben noch weitere Diagrammarten, die hier aber nicht behandelt werden sollen. Für die nächste Phase sind besonders Klassendiagramme wertvoll, da aus ihnen direkt eine Grundstruktur des Quellcodes abgeleitet werden kann.
Implementierung
Hat man die Software modelliert, wird man an die Implementierung in einer Programmiersprache gehen. Wichtig ist hier z.B. sich an übliche Konventionen zu halten. Klassen werden in Java z.B. immer groß geschrieben. Variablennamen werden immer klein geschrieben. Zusätzlich wird man sich innerhalb eines Projektes auf weitere Regeln zur Formatierung des Quelltextes einigen, die man in sogenannten Style-Guides definiert.
Bei größeren Systemen sind mehrere Programmierer beteiligt, so dass hier noch Probleme der Zusammenarbeit an gemeinsamem Quellcode auftreten und gelöst werden müssen.
Testen
Bei kleineren, nicht sicherheitsrelevanten Systemen wird man eventuell intuitiv Tests durchführen bis man dem System in gewissem Maße vertraut. Je größer und sicherheitsrelevanter die Systeme werden, desto mehr Zeit und Systematik wird man in diese wichtige Phase der Softwareentwicklung investieren. Dazu gibt es verschiedene, systematische Teststrategien. Ein wichtiges Prinzip ist dabei z.B., dass einzelne Bestandteile möglichst unabhängig voneinander testbar sein sollen. Dies setzt wiederum eine gute Modellierung voraus. Die Tests der unabhängigen Module, wie z.B. Klassen, nennt man Modultests. Anschließend wird das Gesamtsystem bei Systemtests getestet, bevor man bei Akzeptanztests die Benutzbarkeit durch den Endanwender und die Erfüllung der in der Anforderungsanalyse definierten Ziele überprüft.
Softwaretechnik als Teilgebiet der Informatik
Die oben dargestellten Phasen geben nur eine erste Idee davon, wie Software systematisch entwickelt werden kann. Zu jeder der Phasen gibt es viele Techniken, um diese mit möglichst großem Erfolg zu bestreiten. Da Softwaresysteme heutzutage sehr komplex und oft auch sicherheitsrelevant sind, spielt die ingenieurmäßige Entwicklung von großen Softwaresystemen eine große Rolle in der Wirtschaft. Softwaretechnik ist deshalb zu einem bedeutenden Teilgebiet der Informatik geworden.
Kritik am Wasserfallmodell
Das Wasserfall wird in reinster Form bei komplexen Systemen keine Anwendung finden. Schwächen des Modells sind z.B., dass Fehler bei der Anforderungsanalyse erst spät erkannt werden, nämlich dann wenn der Kunde das fertige Produkt bekommt und bemerkt, dass es nicht seinen Anforderungen genügt. Außerdem setzt das Wasserfallmodell voraus, dass die genannten Phasen vollständig voneinander trennbar sind, was oft unrealistisch ist.
Dennoch ist das Wasserfallmodell ein wichtiges Modell der Softwareentwicklung, da es die Grundlage für sehr viele (wenn nicht sogar alle) anderen Vorgehensmodelle zur Softwareentwicklung darstellt. Schließlich wird in keinem Modell auf eine Anforderungsanalyse verzichtet oder diese an das Ende der Softwareentwicklung verlagert werden. Ebenso können Tests erst durchgeführt werden, wenn eine Implementierung vorliegt. Allerdings variieren andere Modelle den Softwareentwicklungsprozess dahingehend, dass z.B. die Phasen des Prozesses spiralförmig in kürzeren Intervallen wiederholt werden, oder dass die durchzuführenden Tests vor der eigentlichen Implementierung definiert werden sollen.
Quellen
- [1]: Wasserfall-Modell - Urheber: TK - Lizenz: inf-schule.de