Zum Inhalt springen

Softwaretechnik

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 28. Mai 2005 um 17:26 Uhr durch Sparti (Diskussion | Beiträge) (typo). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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.

Planung

Analyse

Entwurf

Implementierung

Test

Qualitätsmanagement

Konfigurationsmanagement

Dokumentation

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:

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