|
|
Es gibt eine Vielzahl von Definitionen für den Begriff Softwareengineering, hier sei die aus Helmut Balzert: "Lehrbuch der Software-Technik", Band 1, Spektrum Verlag, zitiert:
Es ist umstritten, ob der Entstehungsprozess von Software so gut verstanden wird, dass eine "ingenieurmäßige Herstellung" möglich ist: Kritiker argumentieren, dass Software nichts anderes sei als "ausführbares Wissen". Wissen jedoch lässt sich nicht ingenieursmäßig herstellen (wie sich etwa eine Brücke oder ein Hochhaus herstellen lässt), sondern wird in einem kreativen Prozess gefunden. Eine Richtung der Softwaretechnik (Extreme Programming) beschäftigt sich daher mit sehr flexiblen Methoden, die die Kreativität des einzelnen Entwicklers betonen und Verwaltungsaspekte in den Hintergrund treten lassen.
Kritiker argumentieren, dass besonders die heftig diskutierten Entwicklungsmodelle (Wasserfallmodell, V-Modell, etc.) und Modellierungssprachen (UML) in der Softwaretechnik-Wissenschaft den behelfsmäßigen, unterstützenden ad-hoc-Charakter verdecken und den Entwicklungsprozess unnötig bürokratisieren. Diese Methoden hemmen, so die Kritiker, dadurch Kreativität und Problemlösungskapazität des Entwicklers.
Struktogramme und ähnliche Werkzeuge werden in der Praxis nur selten verwendet. Wenn, dann für Ausschnitte aus dem Problem aber nicht für eine Modellierung des gesamten Projektes. In dem Bereich hat sich jedoch UML als praxistauglicher erwiesen und wird von Entwicklern häufig verwendet.
Es ist umstritten, ob die Softwarekrise durch Softwaretechnik oder vielmehr durch robustere, strukturiertere Programmiersprachen und Entwicklungstools gelöst wurde.
Siehe auch: Softwareentwicklung