Änderungskosten: Wie viel Recycling kostet

Ursprünglicher Autor: Doug Bradbury
  • Übersetzung
Der Autor dieses Materials teilt die Methode zur Schätzung der Zeit, die für das Umschreiben eines bereits implementierten Projekts aufgewendet wird.


Wenn der Code wächst, wird es schwieriger, damit zu arbeiten. Die jahrelange Entwicklung und das Fangen von Fehlern führen dazu, dass man alles streichen und von vorne anfangen möchte. In der Tat ist die Idee, Fehler in der Vergangenheit zu hinterlassen, mit neuen Technologien ausgestattet und diesmal alles richtig zu machen, sehr verlockend. Bevor ich jedoch in den Abgrund springe, schlage ich noch vor, den wahren Wert dieses Schritts näher zu untersuchen.

Modell


Sie können alle Funktionen Ihrer Anwendung in einer Liste zusammenfassen und dann die Phasen und den ungefähren Zeitpunkt ihrer Verarbeitung auswerten. Die meisten tun dies, bevor Sie anfangen. Aber warum nehmen solche Projekte dann in der Praxis vier-, acht- oder sogar zehnmal mehr Zeit in Anspruch als die zu Beginn festgelegten Entwickler?

Lesen Sie auch
Veröffentlichung des Zeitaufwands für das Schreiben von Code, der für die Beurteilung des Arbeitsaufwands nützlich ist: „Regel 10: 1 beim Programmieren und Schreiben“


Es gibt drei Schlüsselfaktoren, die den Prozess erheblich verlängern. Und in der Regel werden sie bei der Bewertung der Kosten ignoriert. Es geht um:

  1. die Notwendigkeit, den Unterschied zwischen den Ebenen der aktuellen und der neuen Anwendung auszugleichen,
  2. die Menge der unvorhergesehenen Änderungen
  3. die Verbesserungen, die vorgenommen werden müssen, damit Benutzer zu einer neuen Anwendung wechseln möchten.



Differenzreduzierung


Der erste Faktor ist, dass eine neue Anwendung die aktuelle aufholen muss. Angenommen, wir reden über das Ersetzen des verwendeten Softwaresystems (und dies ist fast immer der Fall, weil warum etwas geändert wird, das niemand verwendet). Es werden erhebliche Anstrengungen unternommen, um die Arbeit aufrechtzuerhalten: Benutzer stellen Anfragen, es treten Fehler auf, und es treten Arten von Verkäufen auf, für die die Einführung neuer Funktionen erforderlich ist. In den meisten Fällen kann ein Team die Entwicklung des aktuellen Systems nicht abbrechen, um ein neues System zu erstellen.

Wenn Sie sich entscheiden, die Anwendung erneut zu entwickeln, schätzen Sie die Kosten dieses Projekts nur auf der Grundlage des gesammelten Wissens über das aktuelle System. Gleichzeitig ist es unmöglich zu berücksichtigen, welche Funktionen gleichzeitig mit der Entwicklung eines neuen Produkts zur aktuellen Version des Systems hinzugefügt werden, da zum Zeitpunkt der Bewertung der Bedarf an diesen Funktionen nicht bestand.

Trotzdem kann man die Produktivität des alten und des neuen Teams vergleichen und eine Vermutung anstellen. Wenn ein neues Entwicklungsteam beispielsweise Features doppelt so schnell ausgibt, muss der projizierte Zeitrahmen zum Schließen der Lücke zwischen Projekten mit zwei multipliziert werden. Wenn sie fünfmal schneller arbeiten, beträgt der Multiplikator 1,25. Die folgende Tabelle zeigt die Zeit, die ein neues Team benötigt, um das alte Team mit unterschiedlichen Geschwindigkeiten einzuholen.



Unvorhergesehene Änderungen


Der nächste Faktor, der die Verarbeitungszeit des Projekts verlängert, sind nicht offensichtliche Änderungen, die in der vorhandenen Anwendung verborgen sind. In der Regel werden ältere Systeme recycelt. Im Laufe der Jahre wurden viele Funktionen implementiert und eine Reihe von Fehlern behoben. Und oftmals durchlaufen Projekte mehr als eine Gruppe von Entwicklern. Beim Verlassen des Teams werden die von ihnen eingeführten Funktionen vergessen oder falsch interpretiert. Aber während Funktionen funktionieren, sind sie zumindest bei einigen Kunden gefragt.

Wenn Sie diesen Faktor nicht berücksichtigen und die Version freigeben, wird sie schlechter als die Norm ausfallen (gemäß dem obigen Zeitplan). Obwohl alles Geplante darin implementiert wird, werden die Fähigkeiten des neuen Projekts immer noch hinter der alten Anwendung zurückbleiben. Und Sie müssen wahrscheinlich die fehlenden Funktionen eingeben.

Diese zusätzliche Arbeitsbelastung wird in der vorläufigen Beurteilung übersehen. Es ist ziemlich schwierig zu bestimmen, aber Sie können zumindest die entsprechenden Annahmen treffen, die darauf beruhen, wie viel das neue Team im Verlauf der Untersuchung des aktuellen Produkts ermittelt hat. Es ist am besten, diesen Indikator als Prozentsatz der bekannten prognostizierten Arbeitslast zu messen und zur endgültigen Formel hinzuzufügen. Bezeichnen Sie diesen Faktor Fnp .

Verbesserungen für die Implementierung erforderlich


Das letzte Hindernis für Produkte, die ihre Vorgänger in puncto Funktionen eingeholt haben, ist die Angst der Benutzer, auf ein anderes System zu wechseln. Wenn das neue Produkt keine grundlegenden Verbesserungen aufweist, wohin bewegt sich der Endbenutzer dann? Dies gilt insbesondere dann, wenn die aktuelle Software eng in die Geschäftsprozesse einer anderen Organisation integriert ist. Egal wie umständlich das alte System sein mag, die Menschen sind bereits daran gewöhnt, haben gelernt, Unannehmlichkeiten zu umgehen und haben ein angemessenes „Muskelgedächtnis“ entwickelt. Schlagen Sie vor, sie werfen all diese Erfahrungen einfach in den Müll und fangen von vorne an? Dies wird die Benutzer nicht überzeugen, das neue Produkt zu bewerten.

Selbst wenn das Team alle bekannten und unbekannten Funktionen berücksichtigt, muss es daher neue Funktionen erfinden und hinzufügen, bis das Produkt in den Augen der vorhandenen Benutzer überzeugend genug aussieht.

Die Auswirkung dieses Faktors zu quantifizieren, ist ebenfalls recht schwierig. Sie können jedoch eine Annahme in Form eines Prozentsatzes des bekannten projizierten Arbeitsaufwands in die Formel aufnehmen. Bezeichne diesen Faktor mit Fj .

Um es zusammenzufassen


Die Summe von drei Faktoren - Verringerung der Differenz Fav , unvorhergesehene Änderungen Fnp und Verbesserungen des Projekts - erhöht die vorläufige Schätzung von Zeit und Kosten der Entwicklung um ein Vielfaches. Die endgültige Laufzeit, ausgedrückt in Bezug auf die anfängliche Bewertung, kann unter Verwendung der Formel

Gesamtzeitkosten = T + (Fav * T +) + (Fнп * То) + (Fу * Tо) berechnet werden.

Betrachten Sie ein Beispiel. Angenommen, Sie stellen ein Team zusammen, um die Kosten für die Verarbeitung Ihres Hauptprodukts abzuschätzen. Sie schlugen vor, dass vier Entwickler in einem Jahr fertig werden. Diese Annahme wird als To = 1 geschrieben .

Angenommen, Entwickler stempeln Features dreimal schneller als das alte Produktteam. Pn = 3. Dies bedeutet, dass der Faktor zum Reduzieren der Differenz 3 / (3 - 1) = 1,5 ist .

Somit wurden dem Projekt bereits 50% oder sechs Monate hinzugefügt, einfach basierend auf der Zeit, die das neue Team benötigt, um das alte Team einzuholen.

Was ist mit unvorhergesehenen Änderungen? Wie kann ich das Unbekannte, das in der alten Anwendung verborgen ist, als Prozentsatz der gesamten Funktionen ausdrücken? Zu diesem Zweck können Sie berücksichtigen, wie viele Jahre die Anwendung entwickelt und ergänzt wurde und wie oft sich das Team geändert hat. Versuchen wir zu erraten: Fнп = 25% .

Lassen Sie uns nun herausfinden, was für bestehende Kunden erforderlich ist, um das Produkt zu akzeptieren. Welche Anfragen nach neuen Chips haben sich in Ihrem Auftragsbestand angesammelt? Welche sind wertvoll genug, um bestehende Kunden davon zu überzeugen, auf die neuen zu wechseln? Denken Sie daran, dass Versuche, einem Kunden einen Übergang aufzuerlegen, manchmal dazu führen, dass er leichter zu einem Konkurrenten wechseln kann. Zum Beispiel sagen wir F 30% voraus , und dies wird für die Implementierung ausreichen.

Gesamt = 1 + 0,5 + 0,25 + 0,3 = 2,05 Jahre.

Selbst bei eher bescheidenen Annahmen hat sich die ursprüngliche Prognose mehr als verdoppelt. Fav , der Indikator für die Verringerung der Differenz, ist der volatilste Faktor. Und ob das neue Team nur doppelt so schnell zurechtkommt? Dann verdoppelt sich die anfängliche Bewertung dieses Faktors und das Endergebnis steigt auf 2,55!

Vor der Analyse des Nutzens einer neuen Anwendung und der Kosten für deren Neugestaltung ist es sinnvoll, die tatsächlichen Kosten eines solchen Projekts zu berechnen. Ich glaube, dass Sie in den meisten Fällen zu dem Schluss kommen werden, dass sich ein derartiger Recyclingansatz fast nie auszahlen wird.

Gibt es einen besseren Weg? Ich werde in meinem nächsten Beitrag eine Alternative anbieten.

Bild

Jetzt auch beliebt: