Software-OptimierungSchritte zur genauen Kalkulation

Kostenberechnung ist besser als die Diktatur der Rotstifte

07.03.1997

In der Software-Entwicklung wird über den Daumen gepeilt. Und der ist breit, wie die Resultate zeigen. Die Projekte bleiben in den wenigsten Fällen im kalkulierten Zeit- und Kostenrahmen. Verbesserungen der Produktivität lassen sich nicht systematisch erreichen.

Das ist um so erstaunlicher, als sich die Software-Entwicklung grundsätzlich nicht von anderen Planungs- und Entwicklungstechniken unterscheidet. Das im folgenden Dargestellte beschreibt deswegen nichts revolutionär Neues. Es versucht nur, anderweitig gesicherte Erkenntnisse auf die Software-Entwicklung zu übertragen.

Generell ist festzustellen, daß die Kosten für ein Produkt durch seine Art, Funktionalität und Erstellung bestimmt werden. Die Bedürfnisse des Kunden und deren Umsetzung durch den Produktplaner bestimmen die Art des Produktes. Die Art der Fertigung liegt in der Verantwortung des Produzenten.

In der Software-Entwicklung ist das Produkt aus technischer Sicht eine Anzahl von aneinandergereihten Befehlen. Der Anwender erwartet von der Software-Entwicklung jedoch nicht die Lieferung von Programmcode, sondern daß der Computer ihm ganz bestimmte Arbeiten abnimmt.

Auch Qualität wird unterschiedlich beurteilt. Für den Entwickler liegt sie in der Art der technischen Realisierung, also etwa in Objektorientierung oder Wiederverwendbarkeit. Der Anwender legt dagegen Maßstäbe wie einfache Bedienung, Stabilität etc. an. Die Funktionalität von Softwareprodukten vergleichbar zu machen und damit messen zu können läuft auf die Beantwortung dreier Fragen hinaus: Wie viele Informationen stellt die Software dem Anwender in den Ergebnissen zur Verfügung? Wie viele Informationen muß der Anwender der Software per Eingaben mitteilen, um die gewünschten Ergebnisse erhalten zu können? Und wie viele Informationen soll das Softwaresystem für den Anwender vorhalten? Die einzelne, aus der Sicht des Anwenders erkennbare Information ist die Basis der Maßeinheit für die Funktionalität. Aus ihrer Summe werden heute in zahlreichen Softwaremetriken Maßeinheiten ermittelt, zum Beispiel Function-Points nach Albrecht und Symons, Data-Points, Feature-Points etc.

Der Zusammenhang zwischen der Funktionalität eines Softwareprodukts (seine Größe) und den Erstellungskosten folgt einer globalen Regel: Je größer die Funktionalität, also die Zahl der genutzten Informationen, desto höher ist bei gleichbleibenden Fertigungsbedingungen der Aufwand für die Erstellung der Software. Dabei steigt der Aufwand überproportional zur Größe des Produkts.

Wichtig ist, daß der Umfang der Funktionalität nichts Präzises über den Erstellungsaufwand aussagt. Entsprechende Angaben lassen sich vielmehr erst in Verbindung mit Statistiken treffen. Außerdem kann die Erzeugung gleicher Qualität aufgrund anderer Faktoren mit unterschiedlichen Kosten verbunden sein.

Die Qualität eines Softwareprodukts läßt sich nicht mit einem einheitlichen Meßwert beschreiben. Die Gründe dafür sind, daß sie sich aus vielen Merkmalen zusammensetzt sowie nach subjektiven Gesichtspunkten und situationsabhängig bewertet wird. So werden bei einer Bank die Ansprüche an die Sicherheit bei Buchungsprogrammen höher sein als bei Versandprogrammen für Werbung. Echtzeitanwendungen müssen schneller arbeiten als Batch-Programme.

In der Praxis muß sich jeder Anwender einen Qualitätsstandard definieren. An diesem muß er dann jede einzelne Anwendung messen. Als Qualitätsfaktor ist bei der Software-Erstellung auch der Zielrechner zu verstehen, auf dem das Programm laufen soll. Die Kostenanalyse muß herausfinden, wo hier eventuell kostensparende Abweichungen vom Standard zulässig sind.

Der Zusammenhang zwischen Qualitätsanforderungen und Aufwand für die Software-Erstellung läßt sich nur durch Statistiken nachweisen und nutzen. Je mehr Qualitätsmerkmale zu beachten sind, um so schwieriger wird es sein, den einzelnen Kostenfaktor im Hinblick auf seinen Einfluß zu gewichten.

Die aus dem Entwicklungsumfeld resultierenden Kostenfaktoren sind wesentlich zahlreicher als die aus dem Produkt. Die Kostenfaktoren der Fertigung bestimmen die Produktivität. Sie liegen in der Verantwortung des Software-Managements.

Materialkosten tauchen in der Kostenkalkulation einer Software-Entwicklung bis heute selten auf. Lange Zeit herrschte die Meinung, daß für diese Arbeit als Material nur Computer, Papier, Bleistift und Radiergummi gebraucht würden.

Zwei große Gruppen üben Einfluß aus

Inzwischen ist es nicht mehr ungewöhnlich, Software von Dritten zu beziehen und in eigene Entwicklungen zu integrieren. Unter diesem Gesichtspunkt ist dann auch die Standardsoftware zu betrachten, die mit erheblichem Aufwand an die eigenen Bedürfnisse angepaßt wird. Nach industriellen Kategorien wäre hier von einem Materialeinkauf und anschließender Produktveredelung zu sprechen.

Da Software-Erstellung mit einer industriellen Einzelfertigung zu vergleichen ist, ist der Faktor Material besonders kritisch. Denn er ist nach seiner Verwendung in den meisten Fällen nicht mehr zu Gunsten preiswerterer Alternativen austauschbar.

Die Kosten des Fertigungsablaufs werden durch zwei große Gruppen von Einflußfaktoren bestimmt, den menschlichen sowie den Werkzeugen und Methoden.

Die Bedeutung eines Mitarbeiters in der Software-Entwicklung für die Kosten ist unter unterschiedlichen Aspekten zu sehen. Hohe Personalfluktuation wird negative Auswirkungen zeigen. Noch größere Folgen haben die verschiedenen beruflichen Erfahrungen der Mitarbeiter. Nicht die optimale durchschnittliche Erfahrung über alle Gebiete zählt dabei, sondern nur die punktuelle, auf die aktuellen Aufgaben bezogene ist zu beachten. Nicht wer die meisten Programmiersprachen gut beherrscht, verbessert ein Projektteam, sondern wer die im laufenden Projekt verwendete Sprache kann.

Nicht nur die Entwickler kosten Geld. Der Auftraggeber, also der Fachbereich, hat ebenfalls merklichen Einfluß auf die Kosten der Software. Wenn er den Auftragsgegenstand unvollständig vorgibt oder im Verlauf der Software-Entwicklung häufig ändert, werden die Produktionskosten davon betroffen. Dabei bestimmen nicht nur die Größe der geänderten oder ergänzten Funktionen die Kosten, sondern auch deren Zeitpunkt und die Häufigkeit der Änderungen.

Drei Gruppen von technischen Faktoren

Technische Faktoren wie genutzte Maschinen und Werkzeuge oder angewandte Arbeitsmethoden bilden die andere Gruppe von Kostenfaktoren. Deren Einfluß ist jedoch nicht absolut zu sehen, sondern stets im Zusammenhang mit den Mitarbeitern. Je vertrauter diese mit den technischen Faktoren sind, um so produktiver können sie diese nutzen.

Bei den technischen Faktoren sind drei Gruppen zu unterscheiden: Hardware einschließlich Netzwerke, Software (Betriebssysteme, Datenbanksoftware etc.) und Arbeitswerkzeuge (Sprachen, Tools etc.) sowie Methoden zur Steuerung und Unterstützung der Entwicklungsarbeiten.

Die Hardwarekomponenten beeinflussen sowohl auf der Ap- plikations- als auch auf Entwicklungsrechnerseite die Kosten. Die Verantwortung für die Rechner, auf denen die Software genutzt wird, liegt in der Regel nicht bei den Entwicklern. Die Applika- tionsrechner verursachten dann erhöhte Entwicklungskosten, wenn man die Technologie der Rechner nicht mehr oder noch nicht beherrscht.

Kostenstrukturen müssen bekannt sein

Die Entscheidung für einen Entwicklungsrechner fällt fast immer in die Verantwortung des Softwarebereiches. Es liegt also in der Hand des Software-Managers, ob produktivitätsfördernde oder -hemmende Geräte zum Einsatz kommen.

Bei der Software als Kostenverursacher ist die gleiche Differenzierung wie bei der Hardware angebracht. Viele Komponenten werden dem Software-Entwickler vorgegeben, vor allem solche, die an die Hardwarebasis geknüpft sind, beispielsweise das Betriebssystem etc.

Die Verantwortung für leistungsstarke Tools hat ebenfalls das Software-Management. In vielen Fällen macht die zu frühe Einführung einer neuen Methodik oder neuer Werkzeuge die Rationalisierungsmöglichkeiten der alten Entwicklungsumgebung zunichte.

Dasselbe gilt bei den Methoden zur Steuerung und Unterstützung der Entwicklungsarbeiten wie Phasenmodell, Spiralmodell, Prototyping etc. Zu schnelle Wechsel der Methoden lähmen die Produktivität. Obwohl jeder weiß, daß Software ein langlebiges Produkt ist, wird die Kontinuität im Entwicklungsbereich vernachlässigt.

Vielen Software-Managern muß man den Vorwurf machen, daß sie ihre Kostenstrukturen zuwenig kennen. Den Beweis für diese Anklage geben die Berichtswesen, die in den Software-Abteilungen üblich sind. Sie weisen in den meisten Fällen nur den Aufwand pro Projekt, Mitarbeiter und einer global beschriebenen Tätigkeitsart nach. Beschreibungen im Hinblick auf die Kostenverursacher fehlen.

Kostenanalyse in der Software-Entwicklung setzt voraus, daß die Berichtswesen nicht nur die erfolgten Aktivitäten erfassen, sondern auch die Produkt- und Entwicklungsumfelder beschreiben. Dies bedeutet nicht, daß große Statistikabteilungen nötig wären. In der täglichen Praxis wird es in der Regel ausreichen, die Kostenverursacher als Basis für die Kalkulation zu ermitteln, im Verlauf des Projektes zu beobachten und am Ende des Projektes im Rahmen der Nachkalkulation festzuschreiben.

Angeklickt

Funktionale Software zum gewünschten Zeitpunkt zu bekommen ist für zahlreiche Anwender ein seltenes Erlebnis. Daß sie gar zum kalkulierten und günstigen Preis geliefert werden könne, gehört wohl ins Reich der Controller-Märchen. Das Produkt Software scheint das einzige Wirtschaftsgut zu sein, das allen Regeln industrieller Kostenrechnung hohnspricht. Entsprechend unverbindlich sind die Kalkulationen und das Berichtswesen der Entwicklungsabteilungen. Es ginge um einiges genauer.

*Robert Hürten ist Leiter der Unternehmensberatung Hürten und Partner in Dingelskirchen