Erfahrungsbasierte Aufwandsschätzung

Kalkulation mit der Abakus-Methode: Arbeitsaufwand besser einschätzen
Keine Kommentare

„Die Webseite muss eine komfortable Möglichkeit zur Kontaktaufnahme bieten.“ oder „Sollten die Nutzer uns nicht sagen können, was sie von unseren Angeboten halten?“ Konzepter und Entwickler müssen oft anhand solch unspezifischer Aussagen ein konkretes Projekt planen und den Aufwand schätzen. Ohne eine strukturierte Herangehensweise ist das schwierig und fehlerträchtig. Die praxisorientierte Abakus-Methode hilft bei der erfahrungsbasierten Kalkulation von Softwareprojekten.

Die Überführung von Kundenwünschen in Anforderungen sowie in eine zuverlässige Aufwands- und Kostenschätzung sind grundlegende Voraussetzungen für den Erfolg von Softwareprojekten. In besonderem Maß gilt dies für Auftragsprojekte, die in Deutschland sehr oft von spezialisierten mittelständischen Unternehmen (KMU) durchgeführt werden. Wissenschaftlich validierte Methoden zur Aufwandsschätzung werden von den Projektverantwortlichen in KMU allerdings oft als zu sperrig und in ihrem Umfeld nicht praktikabel empfunden, wie wir bereits in unserem Beitrag im Entwickler Magazin 4.17 berichtet haben.

Die Folge ist, dass es in der Schätzpraxis der Unternehmen zu teils gravierenden Fehlern kommt. Selbst bei einer qualitativ hochwertigen Anforderungserfassung können Projekte dann schnell unrentabel werden, in Schieflage geraten oder sogar die Liquidität eines KMU gefährden [1]. Sind die Anforderungen hingegen nicht präzise definiert, sondern liegen als eher vage Beschreibungen vor, beispielsweise in Form einer losen Sammlung von User Stories, verschärft sich die Problematik zusätzlich [3]. Vor diesem Hintergrund startete Anfang 2016 das Forschungsvorhaben Abakus (Kasten: „Abakus“) mit dem Ziel, eine erfahrungsbasierte, werkzeuggestützte Methode zu entwickeln, die insbesondere KMU bei einer effizienten und zuverlässigen Aufwandsschätzung hilft.

Abakus
Abakus bezeichnet eine softwaregestützte Methode zur Kalkulation von Softwareprojekten mittels vergleichender Schätzverfahren.
Projektpartner
• ICT Solutions AG (Gesamtprojektleitung)
• siteVERTREIBER new media
• HK Business Solutions GmbH
• Insiders Technologies GmbH
• OSSENO Software GmbH
• Universität Trier
• Fraunhofer-Institut für Experimentelles Software Engineering IESE
Das Projekt wird vom Bundesministerium für Bildung und Forschung im Rahmen der Maßnahme „KMU-innovativ: IKT“ gefördert (01IS15050).
Mehr Informationen: www.abakus-projekt.de
Laufzeit: Januar 2016 – Dezember 2017

Zwischenzeitlich ist die Methodenentwicklung abgeschlossen und es steht ein Werkzeugprototyp bereit, der bereits systematisch durch vier KMU evaluiert wurde. Bei der Konzeption der Methode wurden fünf Prinzipien einer guten Schätzung berücksichtigt, von denen Entwickler profitieren können, auch ohne dass sie die Abakus-Methode selbst zum Einsatz bringen (Kasten: „Praxistipps“). In diesem Beitrag werden anhand eines einfachen Beispiels die Möglichkeiten der Aufwandsschätzung in der Abakus-Methode vorgestellt, mit denen Aufwandsschätzungen im eigenen Umfeld optimiert werden können. Zugleich wird bei den einzelnen Aktivitäten auf die zugrunde liegenden Prinzipien eingegangen, die auch unabhängig von der Methode anwendbar sind.

Praxistipps
Die fünf Prinzipien guter Schätzung
• Zerlegen Sie das Projekt in seine Bestandteile und identifizieren Sie zumindest die wichtigsten Features und deren Funktionen, die durch die Software bereitgestellt werden sollen.
• Dokumentieren Sie die eigenen Erfahrungen, insbesondere hinsichtlich des tatsächlich benötigten Aufwands zur Umsetzung.
• Ziehen Sie für die Schätzung eines Features die tatsächlichen Aufwände heran, die bei der Umsetzung des Features in früheren Projekten angefallen sind.
• Berücksichtigen Sie Gemeinsamkeiten und Unterschiede zwischen dem aktuellen Projekt und früheren Projekten.
• Bestimmen Sie nicht nur den wahrscheinlichsten Schätzwert, sondern auch einen minimalen und einen maximalen Wert.

Von der Anforderung zur Kalkulation

Zur Veranschaulichung greifen wir das Beispiel aus der Einleitung auf. Der Kundenwunsch „die Webseite muss natürlich auch eine komfortable und sichere Möglichkeit anbieten, mit uns in Kontakt zu treten“, lässt eine ganze Reihe von möglichen Lösungen zu. Ein simpler Mailto-Link oder die Angabe einer Telefonnummer sind genauso denkbare Lösungen wie ein Kontaktformular oder sogar ein Videochat. Zunächst muss also der mögliche Lösungsraum eingegrenzt werden, dies kann im Dialog mit dem Kunden geschehen oder durch die schätzende Person, falls die Problemstellung und Rahmenbedingungen des Kunden hinreichend durchdrungen sind. An dieser Stelle soll die nächstliegende Lösung gewählt werden, nämlich die Umsetzung eines Kontaktformulars. Aber auch ein Kontaktformular als allgemeines Feature ist noch nicht eindeutig genug eingegrenzt, um es aus dem Stegreif beschreiben, kalkulieren und umsetzen zu können.

Zunächst sollte der technische Rahmen bestimmt werden, in dem das Kontaktformular eingesetzt wird. Handelt es sich um die Erweiterung eines bestehenden Webauftritts, der mit einem bestimmten Content-Management-System umgesetzt wurde, oder um eine Neuentwicklung auf Basis von Java oder PHP? Die technischen Rahmenbedingungen bestimmen die möglichen Lösungen und haben damit einen Einfluss auf den Aufwand.

Zusätzlich gibt es eine ganze Reihe verschiedener Varianten von Kontaktformularen, die sich funktional unterscheiden. Ein sehr einfaches Kontaktformular würde beispielsweise lediglich die Felder Name, E-Mail-Adresse und Nachricht beinhalten und per Mail an eine fest definierte Adresse versendet werden. Komplexere Kontaktformulare könnten zusätzlich eine Funktion zur Speicherung der Inhalte in einer Datenbank beinhalten und das Formular durch ein Captcha-Modul absichern, um Spam zu vermeiden. Diese zusätzlichen Funktionen erhöhen den Aufwand für die Umsetzung und damit natürlich auch den Preis. In unserem Beispiel soll ein Kontaktformular umgesetzt werden, das die Felder Name, Vorname, Straße, PLZ, Ort, E-Mail-Adresse und Telefon sowie einen Nachrichtentext beinhaltet. Die E-Mail-Adresse ist ein Pflichtfeld und soll auf Korrektheit geprüft werden, zusätzlich ist für das Formular ein Captchaelement vorzusehen und die Daten sollen in einer Datenbank gespeichert und per E-Mail versendet werden. Wir haben das Projekt bzw. ein Feature, das im Projekt umgesetzt werden soll, nun in seine Bestandteile zerlegt und damit das erste Prinzip guter Schätzung angewandt.

Mit diesen präzisierten Angaben kann die Schätzung beginnen, da es jetzt möglich ist, Tätigkeiten und ihren jeweiligen Aufwand abzuleiten. Damit hat man nun ein Mengengerüst für die Umsetzung geschaffen. Ein Mengengerüst liegt nahezu allen Kalkulationen zugrunde und ist die Basis für eine Schätzung. Hier kann eine Analogie helfen: Für einen Maler ist das Mengengerüst im einfachsten Fall die Anzahl und Quadratmeterzahl zu streichender Räume. Ein detaillierteres Mengengerüst, das eine genauere Schätzung erlaubt, ist hingegen neben der zu streichenden Fläche auch ihr Untergrund sowie die Anzahl abzuklebender Fenster, Türen und Steckdosen. In unserem Fall sind das die Anzahl an Feldern, die umzusetzenden Funktionen für die Validierung, die Überprüfung des Captchas sowie der Versand und die Speicherung der Daten. Was uns jetzt noch fehlt, sind die Aufwände für die Umsetzung der Funktionen. Wir müssen abschätzen, wie lange die Integration und Validierung eines Datenfelds dauert bzw. wie viel Aufwand eine Funktion zur Anbindung des Formulars an eine Datenbank verursacht.

Auch unser Maler muss jetzt das Mengengerüst mit den entsprechenden Aufwänden versehen und greift dabei auf sein Erfahrungswissen zurück. Aus bereits abgewickelten Projekten kennt er z. B. die Zeiten für den Anstrich eines Quadratmeters Raufasertapete sowie die Zeiten für die Abklebearbeiten. Die sich ergebenden Zeiten müssen abschließend nur noch mit den Stundensätzen multipliziert werden und die Schätzung ist fertig.

Auch für die Schätzpraxis in Softwareprojekten ist an dieser Stelle das Wissen aus bereits umgesetzten Projekten und dort benötigen Aufwänden sehr hilfreich, da man diese als Vergleichswerte heranziehen kann. Es gelten das zweite und dritte Prinzip, die besagen, dass für die Schätzung eines Features nach Möglichkeit die tatsächlichen dokumentierten Aufwände herangezogen werden sollten, die bei der Umsetzung in früheren Projekten angefallen sind. Denn auch erfahrene Schätzer neigen nachweislich zu systematischen Fehlern, die sich am besten begrenzen lassen, indem tatsächliche Aufwandszahlen aus früheren Projekten die Ausgangsbasis künftiger Schätzungen bilden [4].

Wir schauen also in unsere historischen Projektkalkulationen und ermitteln die Zeiten für die Integration und Validierung eines Datenfelds, die Anbindung eines Formulars an die Versandschnittstelle sowie die Integration eines Captchamoduls. Wenn wir keine zu 100 Prozent passende Kalkulation finden, dann schauen wir nach ähnlichen Projekten oder nach solchen, die Analogien zum vorhandenen Projekt aufweisen. Die Funktionen eines Kontaktformulars sind z. B. mit den Funktionen jeder anderen HTML-Eingabemaske vergleichbar und können daher als Analogie herangezogen werden. Dabei müssen aber die Gemeinsamkeiten und Unterschiede zwischen dem aktuellen Projekt und früheren Projekten berücksichtigt werden, um Abweichungen nach oben oder unten in der Schätzung zu berücksichtigen und das vierte Prinzip guter Schätzung einzuhalten [5]. Gemachte Annahmen werden damit explizit und die Schätzung wird nachvollziehbarer.

Zusammenfassend können wir festhalten, je präziser die umzusetzende Software beschrieben werden kann und je besser die Erfahrungsbasis ist, desto präziser kann die Schätzung der Kosten für die Umsetzung ausfallen.

Das Abakus-Konzept

Um den KMU-spezifischen Bedürfnissen im Rahmen der Aufwands- und Kostenschätzung besser gerecht zu werden, wurde im Forschungsprojekt Abakus eine Lösung entwickelt, der eine werkzeuggestützte, erfahrungsbasierte Schätzmethodik zugrunde liegt. Im Zentrum der Abakus-Methode (Abb. 1) steht eine Erfahrungsdatenbank, in der Kalkulationen aus abgeschlossenen und laufenden Projekten des Unternehmens gespeichert werden. Dieses Erfahrungswissen steht allen Projektverantwortlichen im Unternehmen zur Verfügung und wird zur Schätzung von Softwareprojekten herangezogen.

Abb. 1: Die Abakus-Methode

Die zugrunde liegende Annahme dabei ist: Je umfangreicher das vorgehaltene Wissen, desto einfacher und verlässlicher wird die Schätzung neuer Projekte. Das Prinzip ist einfach: Erfahrungen, die bei der Umsetzung von Projekten gemacht wurden, können leicht dokumentiert werden, insbesondere hinsichtlich des tatsächlich benötigten Aufwands. Nur so lässt sich eine verlässliche Basis für zukünftige Schätzungen schaffen.

Das Abakus-Werkzeug ist als Webanwendung auf Basis des Frameworks CodeIgniter realisiert und mittels Bootstrap responsiv aufgebaut worden. Das Werkzeug unterstützt den Abakus-Workflow, der mit dem Anlegen von Kundenwünschen bzw. Anforderungen beginnt. Diese können entweder manuell erfasst oder semi-automatisch importiert werden. Dazu können Lastenhefte oder Briefingdokumente gescannt und auf Kundenwünsche hin analysiert werden. Identifizierte Kundenwünsche lassen sich dann über einen einfachen Kontrollmechanismus ins Tool übernehmen.

Ein Kundenwunsch ist eine einfache, aber möglichst konkrete Aussage darüber, was der Kunde von der Software verlangt. Unser initiales Beispiel kann sofort als Kundenwunsch übernommen werden: „Als Webseitenbesucher möchte ich mit dem Betreiber Kontakt aufnehmen können“.

Im nächsten Schritt sucht der Anwender in der Erfahrungsdatenbank nach Features, die zu diesen Kundenwünschen passen. Unter einem Feature verstehen wir eine Sammlung zusammenhängender Funktionalitäten in Form einer wiederverwendbaren Softwarekomponente. Abbildung 2 zeigt das Werkzeug, nachdem wir zur Umsetzung unseres Kundenwunschs das Feature „Kontaktformular“ ausgewählt haben.

Abb. 2: Kalkulation eines Features im Abakus-Werkzeug

Oft hat ein Unternehmen in vergangenen Projekten bereits Features entwickelt, die zu einem aktuellen Kundenwunsch passen, so wie dies in unserem Beispiel der Fall ist. Existiert für einen Kundenwunsch noch kein passendes Feature, so kann es im Werkzeug angelegt werden. Dieses Zerlegen eines Gesamtprojekts in einzelne Features entspricht dem Prinzip „teile und herrsche“: Auch wenn ein Projekt neu ist und die Anforderungen an das Projekt zum Zeitpunkt der Schätzung noch nicht vollständig ausgearbeitet sind, können grundlegende Features gefunden werden, die bei der Softwareentwicklung im eigenen Umfeld verwendet wurden. Diese Features stellen eine deutlich stabilere Basis für anschließende Schätzungen dar als der direkte Vergleich zwischen Projekten.

Häufig wurden existierende Features auch schon in verschiedenen Varianten umgesetzt; beim Kontaktformular beispielsweise eine Basisvariante und eine aufwändigere Variante mit Spamschutz und komplexer Logik oder einer SSL-Verschlüsselung. Die Varianten eines Features unterscheiden sich folglich hinsichtlich ihres Funktionsumfangs. Im Abakus-Werkzeug können die dem Feature zugeordneten Funktionen daher in der Mitte des Bildschirms konfiguriert werden. Mit den grünen Pins können sie der ausgewählten Variante eines Features zugeordnet werden und fließen dann automatisch in die Kalkulation ein. Dies ist möglich, da die gespeicherten Features und ihre Varianten, die in früheren Projekten realisiert wurden, zusammen mit den benötigten Aufwänden für die Umsetzung vorgehalten sind. Den Funktionen können bei Bedarf ergänzende Dokumente zugeordnet werden, die sie semantisch beschreiben, beispielsweise ein Foliensatz oder kommentierter Bildschirmausdruck.

Die Kalkulation der Funktionen und Lösungsvarianten erfolgt über die Zuordnung von Tätigkeiten, die die notwendigen Arbeiten bei der Realisierung beschreiben. Den Tätigkeiten wird zudem die benötigte Dauer für die Umsetzung sowie ein Kostensatz zugeordnet. In Abbildung 2 finden sich die zur Umsetzung der ausgewählten Variante notwendigen Tätigkeiten in der Spalte ganz rechts. Bei der Arbeit mit dem Abakus-Werkzeug sind die Kosten für die Umsetzung eines Features und seiner Funktionen jederzeit sichtbar und unterstützen den Kalkulator bei seiner Arbeit. Zusätzlich können die Features und ihre Varianten mit sogenannten Kontexttags versehen werden. Diese Tags enthalten z. B. Informationen zur Systemumgebung oder zu bestimmten nicht funktionalen Anforderungen. Anhand der Kontexttags können generelle Aufwandstreiber wie neue Technologie oder schwierige Kundenbeziehung berücksichtigt werden, um das Projekt besser mit bereits abgeschlossenen Projekten vergleichen zu können. Dieses Wissen über den Projektkontext sowie die Beziehungen zwischen den Features, ihren Varianten und den darin enthaltenen Funktionen bilden die Basis für die Suche nach historischen Aufwandsdaten. Nachdem eine entsprechende Variante eines Features konfiguriert und kalkuliert wurde, kann diese über den Button in den Wahrenkorb mit dem Kundenwunsch verknüpft werden.

Die Schätzmethode

Neben der oben gezeigten Möglichkeit zur Sichtung und Übernahme von Daten aus früheren Projekten, bietet das Werkzeug auch die Möglichkeit, die vorhandenen Daten direkt in eine durch das Werkzeug bereitgestellte Schätzung einfließen zu lassen. Abhängig vom Kenntnisstand über das zu schätzende Projekt werden hierbei sowohl die Möglichkeiten einer Grobschätzung von Features und Funktionen angeboten als auch eine Hilfestellung beim Auffinden einer möglichst ähnlichen Variante des zu schätzenden Features. Diese kann dann als Ausgangsbasis für eine Feinschätzung durch einen Experten dienen.

Dem fünften Prinzip guter Schätzpraxis folgend, bilden ein Wert für den erwarteten Aufwand sowie ein Unsicherheitsintervall den Kern eines jeden Schätzergebnisses. Das Unsicherheitsintervall bringt den typischen Schwankungsbereich bezüglich des tatsächlichen Werts im Hinblick auf die verfügbare Datenlage zum Ausdruck.

Entsprechend zeigt Abbildung 3 das Ergebnis einer Schätzung für den Gesamtaufwand zur Umsetzung unserer gewählten Lösungsvariante. Hierbei werden neben einer Unter- und Obergrenze für die Gesamtschätzung auch der individuelle Beitrag der einzelnen Funktionen zum erwarteten Gesamtaufwand sowie die dadurch verursachte Unsicherheit in der Schätzung dargeboten.

Abb. 3: Schätzung von Funktionen im Abakus-Werkzeug

Die Schätzmethode berücksichtigt in ihren Ergebnissen neben den Aufwandsdaten aus der Erfahrungsdatenbank bis zu drei weitere Informationsquellen: (1) Implizites Erfahrungswissen, indem der Schätzende um eine grobe persönliche Einschätzung (gering, mittel, hoch) des Aufwands gebeten wird. (2) Die Ähnlichkeit des aktuellen Projekts zu den verfügbaren historischen Projekten, die mittels eines asymmetrischen Ähnlichkeitsmaßes anhand der vergebenen Kontexttags bestimmt wird. (3) Die Überlappung zwischen den in der zu schätzenden Variante bereitzustellenden Funktionen im Vergleich zu den in den historischen Varianten bereitgestellten Funktionen. Das letzte Wort bei der Schätzung hat jedoch stets der Anwender, der für den Feinschliff der Schätzung verantwortlich ist. Er kann die vorgeschlagenen Werte anpassen und sogar überschreiben.

Literatur
[1] Bundschuh, Manfred; Fabry, Axel: „Aufwandschätzung von IT Projekten“, REDLINE Verlag, 2004
[3] Kalenborn, Axel: „Angebotserstellung und Planung von Internet-Projekten. Die werkzeugbasierte ‚Modeling by Example‘-Methode, Springer Vieweg, 2014
[4] Kahneman, Daniel: „Schnelles Denken, langsames Denken“, Siedler Verlag, 2012
[5] Liedtke, Thomas: „Wie gut schätzen Schätzer?“, in Seufert, Manfred et al: „MetriKon 2015 – Praxis der Software-Messung“, S. 33 – 40

Entwickler Magazin

Entwickler Magazin abonnierenDieser Artikel ist im Entwickler Magazin erschienen.

Natürlich können Sie das Entwickler Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -