Bereits 2014 habe ich aufgezeigt, wie durch die Wiederverwendung möglichst kleinteiliger fachlicher und technischer Komponenten Optimierungspotenziale gehoben werden können. Als Beispiel diente damals die Entwicklung eines Travel Management Systems – hier wurden insgesamt 2.286 Personentage eingespart.
Angesichts dieser beeindruckenden Zahl stellt sich die Frage: Wie weit kann die Produktivität bei der Entwicklung individueller Systeme gesteigert werden?
Blogserie: Produktivität in der Softwareentwicklung
- Produktivitätssteigerung in der Softwareentwicklung – eine Buchvorstellung
- Neues Buch: Produktivitätssteigerung in der Softwareentwicklung – Teil 2
- Drei Hebel für mehr Produktivität in der Softwareentwicklung
- Produktive Softwareentwicklung erfordert ein Managementmodell
- In der Softwareentwicklung ist jeder Fehler eine Chance
- Produktiver Durchblick: Monitoring in der Softwareentwicklung
Die Manufaktur – Softwareentwicklung als Handwerk
Wenn das zu erstellende Produkt als Unikat angesehen wird und der Entwicklungsprozess sehr individuell ist, sprechen wir von einer Softwaremanufaktur. Es werden bestehende Programmiersprachen, Compiler, Entwicklungsumgebungen, Werkzeuge etc. genutzt – ansonsten zeichnet sich die Entwicklung jedoch weitgehend durch manuelle Arbeit aus. Die Produktqualität gilt in der Manufaktur allgemein als gut, ist jedoch stark von der Erfahrung und den Fähigkeiten der Entwickler abhängig.
Uns liegen zahlreiche Messwerte der Produktivität aus eigenen wie auch aus Kundenprojekten vor. In der Regel wird ein Wert von einem DIP/PT erreicht, gut laufende Projekte kommen auf bis zu zwei DIP/PT – schlechte Projekte können auch deutlich unter einem DIP/PT liegen.
Was ist ein DIP?
Die Data-Interaction-Point-Methode (DIP-Methode) ist eine Methode zur Messung des funktionalen Umfangs. Sie basiert wie die Function-Point-Methode und die COSMIC-Methode auf dem Standard ISO/IEC 14143 und ist eine wichtige Grundlage für Aufwandsschätzungen und quantitative Kennzahlen.
Verbesserungen durch Entwicklungsstandards
Bessere Leistungswerte lassen sich durch den Einsatz von technischen und Prozessstandards erreichen. Beispiele dafür sind:
- Programmierrichtlinien und Entwurfsmuster, unterstützt durch Entwicklungsumgebungen, die mit Versionsverwaltungssystemen, Werkzeugen zur Codeprüfung usw. integriert sind
- Frameworks als Entwicklungsrahmen mit wiederverwendbaren technischen Komponenten
- Standard-Architekturen, die in ihrem Zusammenspiel bewährte Systemkomponenten vorgeben und die Integration der zu entwickelnden Software mit diesen Systemkomponenten wie auch einen nachträglichen Austausch erleichtern
- Moderne Programmierparadigmen, welche einerseits Aufgaben an die unterliegende Plattform delegieren und dadurch die Menge des zu entwickelnden Codes reduzieren, andererseits die Stärken der Konzepte aus beispielsweise objektorientierter und funktionaler Programmierung kombinieren
- Prozessmodelle, durch die Prozesse und Methoden für alle Kompetenzbereiche der Softwareentwicklung festgelegt sind, einschließlich Vorlagen für alle zu erstellenden Dokumente
Durch Standards können viele Anforderungen erfüllt werden, ohne dass dafür Code entwickelt werden muss. Getestet werden muss wiederverwendeter Code nur in seinem Zusammenspiel. Ein zentraler Vorteil: Qualität und Produktivität sind unabhängig von der Erfahrung und den handwerklichen Fähigkeiten einzelner Prozessbeteiligter.
In Projekten, die Gebrauch von technischen und Prozessstandards machen (ohne dabei jedoch Teilprozesse der Softwareentwicklung zu automatisieren) haben wir in der Vergangenheit eine Produktivität zwischen zwei und vier DIP/PT gemessen – d.h. gegenüber einer eher handwerklich orientierten Arbeitsweise mit einer durchschnittlichen Produktivität von einem DIP/PT kann eine bis zu viermal höhere Produktivität erreicht werden. Standardisierung ist ein erster Schritt von der Manufaktur hin zur Fabrik und eine wichtige Grundlage für den nächsten Meilenstein: die zunehmende Automatisierung entlang des Fertigungsprozesses.
Automatisierung birgt weiteres Potenzial
Modellbasierte Entwicklung mit automatischer Code-Generierung ermöglicht die Implementierung einer Software auf der abstrakten Ebene eines Modells anstelle einer Programmiersprache. Ein Beispiel dafür ist die PASS Software Factory, mit der dieses Paradigma seit fast 20 Jahren in der kommerziellen Softwareentwicklung eingesetzt wird.
Sie basiert auf Modellen für die verschiedenen Gestaltungsbereiche einer Software, d.h. Dialoge, Prozesse, Workflows, Datenstrukturen oder Schnittstellen, und zeichnet sich durch Werkzeuge aus, mit denen Objekte in diesen Bereichen erstellt und verändert werden können. Der Entwickler verknüpft die verschiedenen Modelle: z.B. Workflows mit Dialogen, Buttons in den Dialogen mit Prozessen oder Eingabefelder mit Datenelementen. Ein Codegenerator erzeugt auf Basis dieser Modelle lauffähigen und um technische Validierungsprüfungen angereicherten Code. Dabei ist Automatisierung nicht nur im Bereich der Implementierung möglich, sondern über den gesamten Entwicklungsprozess hinweg. Nachgelagert der Implementierung lassen sich Build- und Deployprozesse automatisieren, mit etwas höherem Aufwand auch Tests.
Bei Entwicklungsprojekten, in denen die PASS Software Factory zum Einsatz kam, haben wir Produktivitätswerte zwischen vier und acht DIP/PT gemessen, bei Standardisierung beispielsweise von GUI-Elementen oder Workflows auch zwischen 20 und 25 DIP/PT.
Fachlich-funktionale Standardisierung und Wiederverwendung
In der Softwareentwicklung kann noch sehr viel mehr Aufwand eingespart werden, wenn ein System nur noch aus bestehenden normierten Komponenten mit jeweils festgelegten fachlichen Funktionen zusammengesetzt wird und diese nicht mehr individuell programmiert werden müssen. Je kleiner diese Komponenten sind, umso geringer sind die Einschränkungen bezüglich der Individualität des Systems. Dies erfordert die Bereitstellung jeder einmal programmierten fachlichen oder technischen Komponente mit einer Beschreibung ihrer Funktionalität und Schnittstelle für künftige Projekte, sodass neue Anforderungen möglichst vollständig durch Orchestrierung dieser bestehenden Komponenten erfüllt werden können. Im Idealfall entsteht nur noch Aufwand zur Anforderungsanalyse, Orchestrierung und Konfiguration eines Systems.
Die oben erwähnte Produktivität im Rahmen der Entwicklung eines Travel Management System wurde in der Zwischenzeit so nochmals deutlich getoppt: Bei einem im Kundenauftrag erstellten Travel Management System wurden 90 Prozent der Funktionalität durch wiederverwendete, d.h. bereits in anderen Systemen erfolgreich eingesetzte Komponenten abgedeckt. Das System wurde mit einem funktionalen Umfang von 30.442 Data Interaction Points ausgeliefert. Insgesamt war bis zur Auslieferung ein Personalaufwand von 377 PT erforderlich. Dies entspricht einer Produktivität von 80,7 DIP/PT.
Ein Leistungsvergleich in Zahlen
Nimmt man die Entwicklung des zuvor beschriebenen Travel Management Systems als Bezug und errechnet, welcher Personalaufwand bei der typischen Produktivität von Softwareentwicklung nach Art einer Manufaktur sowie bei einer modellbasierten Entwicklung erforderlich gewesen wäre, ergibt sich das folgende Bild:
Ein Managementmodell zur Optimierung der Produktivität
Die Analyse von nach unterschiedlichen Paradigmen durchgeführten Entwicklungsprojekten macht nicht nur das Potenzial von Produktivitätssteigerungen deutlich. Dabei wird auch klar, dass einzelne Verbesserungsmaßnahmen nicht ausreichen, um die Produktivität nachhaltig zu steigern. PASS hat seit mehreren Jahren ein Managementmodell im Einsatz, das eine objektive Steuerung durch zielgerichtete Einflussnahme und gleichzeitige Kontrolle der eigenen Produktivität ermöglicht. Das Fundament bilden dabei Messmethoden und eine überschaubare Anzahl von Leistungskennzahlen (Key Performance Indicators, KPIs), ohne die ein Unternehmen weder feststellen kann, wie produktiv es ist, noch, ob Veränderungen zu einer Verbesserung oder Verschlechterung geführt haben. Dieses Managementmodell stelle ich Ihnen in meinem nächsten Beitrag vor.
Buchreihe zur Produktivität in der Softwareentwicklung
Weiterführende Informationen zum Thema bietet Ihnen meine Buchreihe „Produktivitätssteigerung in der Softwareentwicklung“, die u.a. praktische Erfahrungen mit Messungen in der Softwareentwicklung sowie das oben angesprochene Managementmodell ausführlich beleuchtet.
Bildquelle: Shutterstock