ProgrammierPraktikum SS99

Warum Software-Engineering?

In diesem Kapitel wird kurz dargestellt, was Software-Technik (engl. Software Engineering) überhaupt ist, und womit sie sich beschäftigt.

Was ist Software?

Eine sinnvolle Definition von Software liefert Hesse94a:
Software
Menge von Programmen oder Daten zusammen mit begleitenden Dokumenten, die für ihre Anwendung notwendig oder hilfreich sind

Man beachte den Punkt zusammen mit begleitenden Dokumenten: Wer immer mal ein Programm geschrieben hat, das auch von anderen benutzt werden sollte, weiß diesen Punkt sehr zu würdigen. Dabei müssen das keine Papier-Dokumente sein: online-Hilfen oder Hypertext-Manuale sind moderner, leichter zu bedienen und werden deutlich intensiver benutzt als Handbücher.
Nun gut. Ein Software-Produkt ist eine als Produkt gebündelte Software, also etwas, daß man als Paket im Laden verkaufen kann (bzw. könnte). Der Begriff drückt die Sicht des Anwenders (von 'außen') auf eine Software aus, während der Begriff Software-System die von 'innen' gerichtete Sicht des Entwicklers umschreibt. Die Tatsache, daß Software ein immaterielles Produkt ist, hat weitreichende Konsequenzen:

(Wirtschaftliche) Bedeutung von Software


Links ist der Weltumsatz der Informations- und Telekommunikationsindustrie im Vergleich zu anderen Schlüsselindustrieen zu sehen. Wie aus den Tortendiagrammen unten zu schließen ist, ist (zumindest in Europa) davon etwa die Hälfte Informationstechnologie (IT), davon entfällt wiederum die Hälfte auf den Software-Gesamtmarkt.

Interessanterweise entfällt vom Softwareteil nur etwa ein Drittel auf Software-Produkte. Zwei Drittel machen die 'Softwarebezogenen Dienstleistungen' aus, also Installation, Anpassung, Pflege, Update, ...

Man kann davon ausgehen, daß der Markanteil der Software noch weiter wächst. Kauft man heute etwa einen Arbeitsplatz für Computer Aided Design (CAD) oder Computer Aided Software Engineering (CASE), ist das Verhältnis Hardwarekosten:Softwarekosten bei ca. 20:80. Die verwendete Software löst immer schwierigere Aufgaben und wird damit auch immer komplexer:
Komplexe Vermittlungsanlagen in der Telekommunikationsindustrie erfordern einen Software-Entwicklungsaufwand von bis zu 6000 Personenjahren.
(Balster96)

Das Beispiel macht auch der Sinn einer systematischen Softwareerstellung deutlich: Selbst wenn ein Programmierer das geforderte System 'mal eben' in 6000 Jahren programmieren würde -- dann wäre es vermutlich veraltet.
Gleichzeitig mit steigendem Umfang der Softwareprodukte (das o.g. Beispiel hat ca. 48 Millionen-Objekt-Instruktionen (MOI)) müssen immer höhere Qualitätsanforderungen gelöst werden. Marktprognosen sehen ein Lücke zwischen Softwarenachfrage einerseite und Personal- und Produktivitätsentwicklung andererseits: Software wird zu Engpaß der Informationstechnik. Eine Entwicklung, das zu verhindern, ist, daß immer weniger Software vollständig neu geschrieben wird, immer mehr Standardsoftware oder Komponenten aus Standardsoftware werden eingesetzt.

Was ist Software-Technik?

Software-Technik (bzw. engl. Software-Engineering) ist einerseits die Informatikdisziplin, die Prinzipien, Konzepte, Notationen, Methoden und Werkzeuge zur systematischen Anwendung in der Entwicklung von Software bereitstellt. Gleichzeitig wird darunter das Anwenden dieser Werkzeuge auf die Erstellung von Softwareprodukten (also jede systematische Entwicklung eines größeren Softwareproduktes) verstanden.

BEISPIEL:
Prinzip Methode Verfahren Werkzeug
Modularisierung Aufteilung des Gesamtproduktes in Teilprodukte, die nur über eine festgelegte Schnittstelle kommunizieren und sonst unabhängig sind Entwicklung mehreren Programmbibliotheken Testprogramm, daß globale Referenzen überprüft

Werkzeuge und auch abstrakterer Konzepte etc. werden oft zu CASE-Tools zusammengefaßt.
Die bereitgestellten Hilfsmittel werden bei der Software-Entwicklung eingesetzt, um aus einem geplanten Produkt ein fertiges zu machen. Der Gesamtschritt wird dabei (Modularisierung!) in Phasen eingeteilt, und die Entwicklung vom Software-Management organisiert und kontrolliert.

Qualität

Ziel der Software-Technik ist es dann, in kurzer Zeit und bei niedrigen Entwicklungskosten viele Softwareprodukte hoher Qualität zu produzieren. Qualität ist dabei bislang am schlechtesten zu messen, man kann aber Schlüsselbegriffe für Softwarequalität festlegen, die -- ggf. mit unterschiedlichen Multiplikatoren -- vom Anwender geprüft werden können.

Für den Benutzer sind zunächst am wichtigsten:
Vollständigkeit
Das Produkt sollte die geforderten Leistungen in vollem Umfang bieten
Benutzerfreundlichkeit
Das Produkt sollte die Absichten des Benutzers ohne Zeitverschwendung und Motivationsverlust umsetzen.
Fehlertoleranz
Das Produkt sollte bei Fehlbedienung in einen konsistenten, behebbaren Fehlerzustand übergehen.
Effizienz
Das Produkt sollte nach angemessener Antwortzeit Reaktionen zeigen.


Diese Begriffe drücken im wesentlichen die aktuelle Benutzbarkeit eines Softwareproduktes aus. Über die längerfristige Brauchbarkeit entscheiden u.a.
Portabilität
Grad der Hardware- und Systemsoftware-Unabhängigkeit. Wichtig, da deren Erneuerungszyklen idR wesentlich kürzer als der der Anwendung sind.
Zuverlässigkeit
Der Grad, in dem das System im Rahmen des vorgesehenen Zeitintervalls sein Leistungen vollständig erbringt.
Wartbarkeit
Änderbarkeit
Erweiterbarkeit
Maße für die Zeit, in der ein System nach Aufdeckung eines Fehlers oder einer fehlenden Funktion/Funktionalität in den erwarteten Zustand versetzt werden kann.



[vorige Seite] [nächste Seite] [Inhalt] [Literatur] [Stichworte]
Dietmar Lammers
Last modified: Tue Apr 6 14:04:51 MET DST 1999