Softwaretechnik
Die Softwaretechnik (software engineering) als Teilgebiet der Informatik beschäftigt sich mit der standardisierten ingenieurmäßigen Herstellung von Software und den damit verbundenen Prozessen.
Es gibt eine weit verbreitete Ansicht, nach der die Softwareentwicklung ein eigentständiges Teilgebiet der Informatik ist, das sich mit der Entwicklung von Software beschäftig. Es scheint sich aber zunehmend die Haltung durchzusetzen, dass Softwareentwicklung als das Teilgebiet der Softwaretechnik ist, das sich mit der Implementierungsphase eines Softwareprojektes beschäftigt.
Die Definition von Softwaretechnik ist nicht einheitlich. Eine Definition von Helmut Balzert beschreibt das Gebiet als
zielorientierte Bereitstellung und systematische Verwendung von Prinzipien, Methoden und Werkzeugen für die arbeitsteilige, ingenieurmäßige Entwicklung und Anwendung von umfangreichen Softwaresystemen. Vorlage:Lit
Softwaretechnik umfasst eine Vielzahl von Teilgebieten, die in ihrer Gesamtheit den gesamten Softwareentwicklungsprozess, von der Planung bis zum Testen und dem "Rollout", begleiten.
Teilgebiete der Softwaretechnik
Der Entwicklungsprozess von systematisch entwickelter Software ist komplex und umfasst eine vielzahl an Teildisziplinen der Informatik und des Projektmanagement. Die Disziplinen sind während des ganzen Entwicklungsprozesses eng miteinander verzahnt. Die wesentlichen Gebiete dabei sind das Projektmanagement, Analyse, Entwurf, Implementierung, Qualitätsmangement, Konfigurationsmanagement und die Dokumentation.
Die Teilgebiete im Einzelnen sind in der folgenden Tabelle aufgelistet.
|
|
Vorgehensmodelle des Softwareentwicklungsprozesses
Analyse, Entwurf, Implementierung und Tests werden meist als Kernprozesse der Softwareentwicklung angesehen, während hingegen Projektmanagement, Qualitätsmanagement und Konfigurationsmanagement als Unterstützungsprozesse verstanden werden.
Die einzelnen Teilprozesse der Softwareentwicklung sind niemals getrennt voneinander zu betrachten und stellen idealisierte Einzelmodule dar. In der Realität finden sich dynamische Abfolgen, Vorgehensmodelle (engl. Software development process), die die einzelnen Aktivitäten auf verschiedene Phasen im Entwicklungsprozess aufteilen und diese dann – u. U. mit geringen Modifikationen – einmal (z. B. Wasserfallmodell) oder mehrmals durchlaufen (z. B. Spiralmodell). Bei mehrmaligen Durchläufen erfolgt eine iterative Verfeinerung der einzelnen Softwarekomponenten. Um die best practice oder 'optimalen' Vorgehensmodelle werden teilweise Glaubenskriege ausgefochten. Zweifellos verhält es sich so, dass je statischer und eindimensionaler die Betrachtungsweise, desto weniger hat sie mit der Praxis der Programmierung zu tun.
Weitere Modelle neben den schon genannten zwei sind:
- V-Modell
- Rational Unified Process
- actiF
- Extreme Programming
- Top-Down- und Bottom-Up-Design
- Chaosmodell
- (Rapid) Prototyping
- Evolutionäres Prototyping
- Iterative und Inkrementelle Entwicklung / Spiralmodell
Nicht alle diese Modelle umfassen den vollständigen Entwicklungsprozess.
Es existieren verschieden Bewertungsverfahren für den Softwareprozess, u. a. das Capability Maturity Model oder "Spice".
Kritik
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 (Agile Software-Entwicklung) 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 Vorgehensmodelle (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 Entwicklungswerkzeuge gelöst werden kann.
Die aktuellen Entwicklungen des Softwareengineering werden in der Dokumentation des "Software Engineering Body of Knowledge" (SWEBOK) beschrieben. Letzteres ist ein durch die IEEE gefördertes Projekt.
Siehe auch
Literatur
- Helmut Balzert: Software-Entwicklung. 2. Auflage. Spektrum Akademischer Verlag, Heidelberg 2001 (Lehrbuch der Software-Technik, Band 1) ISBN 3-8274-0480-0
Weblinks
- Einführung in die Softwaretechnologie - Online Tutorial
- Software-Engineering-Komptenzzentrum: Ein vom Bundesministerium für Bildung und Forschung (BMBF) gefördertes Portal.
- Fachgruppe Softwaretechnik der Gesellschaft für Informatik
- Softwaretechnik an der UNI Stuttgart (Stadt: Stuttgart), hier wurde der Studiengang Softwaretechnik als erstes angeboten.
- Sehr guter und äußerst umfangreicher Artikel über systematische Softwareentwicklung