Softwaretechnik

Art und Weise, wie Software entwickelt wird
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 28. Februar 2006 um 20:30 Uhr durch 62.134.233.36 (Diskussion) (Kritik: vorgehensmodellkritik zu vorgehensmodelle). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Softwaretechnik (software engineering) als Teilgebiet der Informatik beschäftigt sich mit der standardisierten ingenieursmäßigen Herstellung von Software und den damit verbundenen Prozessen.

Es gibt eine weit verbreitete Ansicht, nach der die Softwareentwicklung ein eigenständiges Teilgebiet der Informatik sei, das sich mit der Entwicklung von Software beschäftigt. Es scheint sich aber zunehmend die Haltung durchzusetzen, dass Softwareentwicklung 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.

Moderne Perspektiven umfassen jedoch den gesamten Software-Lebenszyklus und schließen neben dem Entwickeln auch das Betreiben der Software ein, d.h. auch das Incident Management, Problem Management, Change Management, Release Management und Configuration Management einer Applikation. Siehe hierzu auch Application Management im Rahmen von ITIL.


Teilgebiete der Softwaretechnik

Der Entwicklungsprozess von systematisch entwickelter Software ist komplex und umfasst eine Vielzahl von Teildisziplinen der Informatik und des Projektmanagements. Die Disziplinen sind während des ganzen Entwicklungsprozesses eng miteinander verzahnt. Die wesentlichen Gebiete dabei sind Projektmanagement, Analyse, Entwurf, Implementierung, Qualitätsmangement, Konfigurationsmanagement und Dokumentation. 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.

Die Teilgebiete im Einzelnen sind in der folgenden Tabelle aufgeführt.

1. Planung

2. Analyse

3. Entwurf

4. Programmierung

5. Test

6. Qualitätsmanagement

7. Konfigurationsmanagement

8. Dokumentation


Ein relativ neues, aus der Softwaretechnik hervorgegangenes Gebiet ist das Web-Engineering, das Erkenntnisse und Themen für die Entwicklung von Internet-Anwendungen nutzt.

Vorgehensmodelle zur Softwareentwicklung

Hauptartikel: Vorgehensmodell (Software)

Da komplexe Software nur schwer zu erstellen und zu warten ist, bedienen sich Softwareentwickler eines Planes zur Entwicklung von Software. Dieser Plan (das Vorgehensmodell) unterteilt den Entwicklungsprozess in überschaubare, zeitlich und inhaltlich begrenzte Phasen, die die einzelnen Aktivitäten beinhalten. Die Software wird somit Schritt für Schritt fertiggestellt.

Kritik

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.

Experimentelles Software Engineering

Unter Experimentellem Software Engineering versteht man die empirische, experimentelle Untersuchung verschiedener Software-Engineering-Konzepte, -Techniken und -Methoden, um deren praktischen Nutzen in adressierten Kontexten messbar zu belegen. Erst durch messbare, zielgerichtete Aussagen kann, so die Befürworter, die Softwareentwicklung auf eine ingenieurmäßige Basis gestellt und entsprechend optimiert werden.

Siehe auch

Wikibooks: Softwaretechnik – Lern- und Lehrmaterialien

Literatur

  • H. Balzert: Software-Entwicklung. 2. Auflage. Spektrum Akademischer Verlag, Heidelberg 2001 (Lehrbuch der Software-Technik, Band 1) ISBN 3-8274-0480-0
  • M. Born, E. Holz, O. Kath: Softwareentwicklung mit UML 2, Addison-Wesley, 2004, ISBN 3-8273-2086-0
  • B. Brügge, A. H. Dutoit: Objekt-orientierte Softwaretechnik mit UML, Entwurfsmustern und Java, Pearson Studium, 2004, ISBN 3827370825
  • B. Oestereich: Objektorientierte Softwareentwicklung mit der UML 2.0, Oldenbourg Verlag, 2004, ISBN 3486272667
  • G. Pomberger, W. Pree: Software Engineering, Hanser Fachbuchverlag, 2004, ISBN 3446224297
  • I. Sommerville: Software Engineering, Addison-Wesley, 7.Auflage, 2004, ISBN 0321210263
  • W. Zuser, T. Grechenig, M. Köhle: Software Engineering mit UML und dem Unified Process, Pearson Studium, 2004, ISBN 3827370906