Aktuelles Lexikon   Software-Engineering

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.


Autor: Debora Weber-Wulff
Erschienen: C & U, Heft XXX