Ende der 60er Jahre wurde auf einer NATO-Tagung in Garmisch-Patenkirchen
festgestellt: Es gibt eine Software-Krise.
Bis dahin waren die Probleme in der Informatik auf der Hardwareseite zu finden,
Programme waren klein und nur dazu da,
um die Hardware anzusteuern und wurde zudem von wenigen Spezialisten erstellt.
Aber mit der zunehmende Größe
des Speichers könnten immer größere Programme geschrieben werden
und es befaßten sich immer mehr
Menschen mit die Erstellung von Programmen. Als die Komplexität der Aufgaben
wuchs, so wurde immer klarer, daß
ein Mittel notwendig sei, um die Probleme im Griff zu bekommen. Es wurde auf die
Tagung vorgeschlagen, die Erstellung von Software
als eine Ingenieursdisziplin (auf Englisch "Engineering") zu betrachten,
so wie Architektur oder Brückenbau.
F.L. Bauer,
einer der Begründer der Informatik in Deutschland stellte fest:
"Software Engineering ist eine Disziplin, die mit ingenieurmäßigen Mitteln und ökonomischen Vorgehen
dem Entwickler hilft, qualitativ hochwertige Software zu erstellen und zu prüfen."
Die Prozeß des Software-Erstellens wurde untersucht und
es ließe sich mehrere Phasen feststellen:
- Bei der Anforderungsdefinition geht es darum festzustellen,
was überhaupt das Problem ist, das mit der Einsatz von Software
gelöst werden soll.
Es wird meistens ein Pflichtenheft erstellt, der als Vertragsgrundlage
angesehen werden kann.
Dort wird beschrieben welche Anforderungen an der Software bezüglich
Funktionalität,
Antwortzeit oder andere Aspekte bestehen.
- In der Analyse wird versucht der Problembereich zu beschreiben, zu
gliedern und auf die
Machbarkeit hin zu untersuchen. Es werden verschiedene Mittel eingesetzt
um ein tieferes Verständnis
der Problembereich zu erlangen, ohne daß Implementierungsdetails
betrachtet werden müssen.
- Bei der Entwurf findet der Übergang zum Lösung des
Problems statt. Ein Grobentwurf zeichnet die
Bestandteile des Systems und ihre Interaktionen auf. Beim Feinentwurf werden immer mehr Entscheidungen betreffend
der Realisierung auf der Maschine vorgenommen und die einzelnen
Algorithmen werden festgehalten.
- Jetzt wird eine Programmiersprache ausgewählt und es geht an die
Implementierung
des Systems, die Umsetzung von die Ideen in ablauffähigem Code.
Hier muß mit Eigenarten der
Übersetzer und
Betriebssysteme
gekämpft werden, die Zusammensetzung des Systems muß
überwacht werden und es muß
ausgiebig getestet werden, ob das gewünschte System implementiert
wurde und auch ob es richtig umgesetzt worden ist. Gerade das
Testen
eines Systems wird als lästig empfunden, ist aber von großer
Bedeutung für die Qualität des Endprodukts.
- Ist ein System bei einer Kundin installiert, befindet sich das Projekt
in der Wartungsphase. Hier werden Änderungen an das System
vorgenommen, es wird angepaßt an Veränderungen aus der
Umgebung oder es werden Fehler korrigiert oder es werden neue Funktionen
oder andere Verbesserungen an das System vorgenommen. Die Kosten für
diese Phase beträgt oft 50-80% der Gesamtkosten des Projektes!
Die obige Reihenfolge gibt das sog. "Wasserfallmodell" der
Softwareentstehung wieder, es gibt unzählige andere Modelle, die diverse
Rückkoppelungen zwischen den Phasen vorsehen, die einzelne Phasen feiner
aufgliedern oder mehrere Durchläufe vorschreiben. Je nach Anwendungsgebiet
und Erfahrung der Entwicklerinnen und Entwickler ist die eine oder andere Modell
angebracht.
Für jede Phase gibt es eine Vielzahl von Beschreibungsmethoden und
Werkzeuge, die das Arbeiten unterstützt. Besonders Werkzeuge, die
überprüfen, ob gewissen Kriterien erfüllt sind oder nach
Fehlerquellen suchen, sind besonders wichtig. Es gibt sogar inzwischen Werkzeuge,
die automatisch Code generieren können, was zur Vermeidung von Fehlern
führt. Aber es gibt noch keine einheitliche Methode, und durch die extrem
angestiegenen Erwartungen an Software befinden wir uns eigentlich immer noch in
eine "Krise", es muß also nach weitere Methoden und Werkzeuge
gesucht werden, die uns helfen die Komplexität der heutigen Software zu
beherrschen.
|