Unter„Software-Engineering”(SE)versteht man die Anwendung von Prinzipien, Methoden und Techniken auf den Entwurfund die Implementierung von Programmen und Programmsystemen.Der BegriffSoftware-Engineeringsteht für die Auffassung, dass die Erstellung, Anpassung und Wartung von Programmsystemenkein künstlerischer,sondern vorwiegendein ingenieurmäßig ablaufender Prozeß ist,vergleiche[INFODUDEN S. 655].
In einer Projektarbeit werden die individuellenAnforderungendes Auftraggebers(Kunde)vom Auftragnehmer realisiert/entwickelt.Als Resultat erhält der Kunde ein softwareintensives System gemäß seinen Anforderungen.
MotivationMotivation für strukturierte Software-Entwicklung
Warum eigentlich Software-Engineering?
Der Kunde möchte in erster Linie eine zuverlässige Software, vielleicht toleriert er noch ein paar Fehlerchen, aber
zuverlässigundrobustmuss sie sein!
Dann muss sie meist schnell fertig sein— zumindest möchte der Kunde den Tag der Fertigstellung wissen.
Dann muss sie, die Software, so benutzungsfreundlich wie möglich sein.
Und der Preis muss stimmen!
Bis dann die Software endlich fertig ist, ist der Kunde vielleicht auf eine andere Betriebssoftware umgestiegen, undSieals Entwickler müssen das ganzeSoftware-Paket,sofern man es als Paket betrachten kann,auf die andere Betriebssoftwareanpassen.
Falls der Kunde mit der Software nun endlich mehr oder weniger zufrieden arbeitet,fällt ihm noch dies und jenes ein, was er noch dazu haben möchte!Dann sind vielleichtnur Sieals einziger Entwickler dieser jungen, neuen Software, auch der Einzige, der diese Software vielleicht erweitern kann.:-(
Die Hauptfrage ist doch:
Kann der Kunde mit seiner neuen Software wirklich zufrieden sein?
Wenn die Software„hint' und vorne”nicht funktionieren sollte und keine Besserung in Aussicht ist,müssen Sie als Entwickler schmerzhafte Vertragsstrafen über sich ergehen lassen,zudem fühlt sich der Kunde um sein Geld betrogen.Womit wir schon beim nächsten Problem wären: dieEntwicklungskostenbezüglich derAufwandsschätzung.
Software-Engineeringbringt Ansätze zur Lösung vieler Probleme,aber auch Strukturierungsansätze damit gar nicht erst neue Probleme bzw. Katastrophen entstehen.
Katastrophen
Die Geschichte ist voll vonSoftware-Katastrophen:
1994:Bei der Wahl des Oberbürgermeisters inNeu-Ulm1994 wurde zunächst eine Wahlbeteiligung von104%ermittelt.Später musste man feststellen, dass sich in die Auswertungssoftware ein mysteriöser Faktor 2 eingeschlichen hatte.(Partsch)
1994/95:Ein Fehler in der softwaregesteuerten Innenbeleuchtung eines deutschenAutomobil-Herstellersführte1994/1995zu vollständigem Batterieausfall des betroffenenPKW-Typs.Die Kosten der dadurch ausgelösten Rückrufaktion werdenauf mehrere Millionen Mark geschätzt.(Partsch)
2004/05:Ein Softwarefehler hat sich beim deutschen Arbeitsamt eingeschlichen.Die Kontonummern der Antragsteller auf Arbeitslosengeld wurden falsch formatiert ausgegeben,die führenden Nullen wurden hinten angehängt.
2007:Hamburg, amMontag, den 11. Juni 2007war ein Pilot einer Verkehrsmaschine gezwungen eine Notlandung hinzulegen.Eine ganze Stunde versuchte er zu landen,doch derBoard-Computerweigerte sich und versagte den Landevorgang mit einer Fehlermeldung.Dieser Unfall ging glücklicherweise glimpflich aus und forderte keine Menschenleben.
… um nur ein paar Katastrophen zu nennen.Softwarefehler gehören nicht der Vergangenheit an!Oftmals haben kleine Ungenauigkeiten bei der Entwicklung verheerende Folgen.Es ist schließlich unsere Aufgabe aus der Vergangenheit zu lernen.Denn wir wissen ja:Erfahrung ist die Summe aller ausgewerteten Mißerfolge!
ZieleZiele beim Software-Engineering
Um den Berufsstand der Informatiker zu sichern,sind dieSoftware-Entwicklerstets darum bemüht qualitativ hochwertige Software zu produzieren.Deshalb wird bei der Softwareproduktion auf folgende Eigenschaften besonders großen Wert gelegt:
Zuverlässigkeit
Robustheit Die Software muss absturzsicher sein.Beispielsweise sollte die Software bei Falschbehandlung stets in einen definierten Zustand zurückkehren.Das Gleiche sollte aber auch dann gelten,wenn zum Beispiel ein Peripheriegerät abgeschaltet sein sollte bzw. fehlen sollte.
Korrektheit Die Ausgabe muss stets korrekt gemäß derSpezifikationsein.
Abstraktion und Wartbarkeit Oftmals müssen Änderungen an der Software vorgenommen werden,sei es durch Programmfehler, durch Wechsel des Betriebssystems oder durch Modernisierung der Anforderungen.Der Aufwand, ein bestehendes Softwaresystem je nach Bedarf abzuändern,ist unproblematischer, je abstrakter die Programmarchitektur angelegt wurde. Zum Beispiel könnte das Programm aus Schichten gemäß derANSI-Normbestehen.