stefan fiedler [gruppe fünf] [home]

[ < ] [ globale Übersicht ] [ Kapitelübersicht ] [ Stichwortsuche ] [ > ]

5.6 Was ist Software?

Software bezeichnet die Gesamtheit aller Programme und deren Dokumentation, die auf einem Computer eingesetzt werden können. Im Unterschied zur Hardware handelt es sich also bei Software um die nicht technisch-physikalischen Bestandteile einer Datenverarbeitungsanlage.

Systemsoftware bezeichnet jene Programme, die für die korrekten organisatorischen Abläufe auf einem Computer notwendig sind, die die Programerstellung und -ausführung unterstützen (Compiler, etc.) und allgemeine Dienstleistungen (z.B. die Dateiverwaltung) erbringen.

Anwendungssoftware dient zur unmittelbaren Lösung von Problemen der Computer-Anwender. Dementsprechend groß ist auch die Anzahl der verfügbaren Programme und der von ihnen abgedeckte Bereich an Problemen. Anwendungssoftware reicht von Textverarbeitungssystemen über kommerzielle Programme bis hin zu technischer Software.

Numerische Software wird zur Lösung numerischer Probleme -- von Approximationsaufgaben, linearen und nichtlinearen Gleichungssystemen, etc. -- verwendet. Sie ist vor allem bei der Entwicklung von technischer und naturwissenschaftlicher Anwendungssoftware ein wichtiges Hilfsmittel.

5.6.1 Softwarekosten

Besonderes Augenmerk fällt bei Überlegungen zur Wirtschaftlichkeit im Softwarebereich auf den Personalaufwand. Andere Faktoren, wie z.B. Maschinenzeit, etc. sind von untergeordneter Bedeutung. Wichtig ist somit, um in der Planungsphase sinnvoll kalkulieren zu können, die richtige Schätzung des Personalaufwandes, sprich der erforderlichen Zeit und der benötigten Personen. Als Richtwert für die Produktivität von Programmierern dienen hier die lines of code, die pro Person und Zeiteinheit fertiggestellt werden.

Umfangreiche empirische Studien haben gezeigt, daß die Produktivität von Programmierern um mehrere Größenordnungen variieren kann. Extremwerte liegen bei ca. 5 und 5000 Zeilen (lines of code) pro Person und Monat. Durchschnittliche Werte liegen bei ca. 250 Zeilen.

Beispiel (IMSL, NAG) Als Richtwerte für Kostenschätzungen können folgende Produktivitätszahlen numerischer Programmsysteme bzw. -bibliotheken dienen:

Die hohe Produktivität soll jedoch nicht über den Umstand hinwegtäuschen, daß der Gesamtaufwand zur Entwicklung einer numerischen Programmbibliothek enorm hoch ist. In der NAG-Fortran-Library stecken insgesamt mehr als 1000 Personaljahre.

Realistische Kostenschätzungen lassen sich nicht mit den persönlichen Erfahrungen unroutinierter Software-Entwickler anstellen. Programmieranfänger schreiben oft in sehr kurzer Zeit Programme mit einer großen Anzahl an Zeilen. Rechnet man diese Werte ohne weitere Überlegungen hoch, so kommt man zu unrealistischen Monatsleistungen. Dies deshalb, weil die Komplexität größerer Softwaresysteme, sowie der Test- und Dokumentationsaufwand oft nicht berücksichtigt wird.

Produktivitätsfaktoren

Von welchen Faktoren wird die Produktivität am stärksten beeinflußt?

Starker Einfluß

Signifikanter Einfluß

Daraus ersieht man, daß z.B. die steigenden Anforderungen an die Benutzerschnittstelle oder die Dokumentation zu einer Produktivitätsverringerung führen. Trotz steigender Qualität der Software ist in Zukunft dennoch mit einer gleichbleibenden Produktivität zu rechnen.

Universell verwendbare Module

Um dennoch Produktivitätssteigerungen zu erreichen, bedient man sich im numerischen Bereich Standard-Software-Bauteilen. Die Anschaffungskosten für diese fertigen Routinen und Module betragen nur einen Bruchteil der Kosten, die für eine Neuentwicklung entstehen würden. Diese Module können z.B. über NetLib bezogen werden.

Wartungskosten

Bei Softwarekosten muß zwischen Entwicklungs- und Wartungskosten unterschieden werden. Bisher wurden primär die Entwicklungskosten angesprochen, die für die Wartung entstehenden Kosten sind jedoch keineswegs vernachlässigbar. Abgesehen von sogenannten one shot-Programmen, die nur einmal verwendet werden und bei denen daher keine Wartungskosten anfallen, beträgt der Anteil der Kosten für die Wartung bei Großprojekten bis zu 2/3 der Gesamtkosten.

Im Mittel wird für die Wartung eines numerischen Softwareproduktes ungefähr genausoviel aufzuwenden sein, wie für dessen Entwicklung. Auch hier bringt die Verwendung von Standardsoftware -- also fertigen Modulen und Routinen -- wesentliche Vorteile, speziell wenn diese städig professionell gewartet werden.


[ < ] [ globale Übersicht ] [ Kapitelübersicht ] [ Stichwortsuche ] [ > ]