Der Gleichgewichtsprozentsatz der Gesamtkapazität, die der Fehlerbehebung zugewiesen ist, entspricht der Fehlerinjektionsrate .
Viele Faktoren können diese Rate beeinflussen, unter anderem natürlich: Welche Art von Produkt entwickelt das Team, welche Technologien und technischen Praktiken werden verwendet, wie gut das Team ist, welche Unternehmenskultur wird verwendet usw.
Wenn Team B durchschnittlich 8 Überarbeitungseinheiten für jeweils 10 abgeschlossene Arbeitseinheiten erstellt, werden durch die Bearbeitung dieser 8 Einheiten neue 6,4 Überarbeitungseinheiten erstellt. Wir können den Gesamtaufwand, den sie eventuell aufwenden müssen, als Summe eines geometrischen Verlaufs abschätzen:
10 + 8 + 6,4 + 5,12 + ...
Die Anzahl der Bugs nimmt mit der Zeit exponentiell ab, aber Team B hat einen solchen Koeffizienten in seinem Exponenten, dass er sehr langsam auf Null geht. Tatsächlich beträgt die Summe der ersten drei Terme in der obigen Reihe nur 24,4; von den ersten fünf 33,6; von den ersten 10 45; der gesamten Serie, 50. Also, Team B Zusammenfassung: Defektinjektionsrate, 0,8; Merkmalsentwicklung, 10/50 = 20%; Fehlerbehebung, 80%. 20/80 ist ihre nachhaltige Kapazitätsallokation.
Im Gegensatz dazu ist Team A in einer viel besseren Verfassung. Ihr Fortschritt sieht folgendermaßen aus:
40 + 10 + 2,5 + 0,625 + ...
Die Summe dieser Serie beträgt 53 1/3, daher beträgt die Zuweisung für die Funktionsentwicklung von Team A 40 / (53 1/3) = 75% und die Zuweisung für die Fehlerbehebung 25%, was ihrer Fehlerinjektionsrate von 10/40 = 0,25 entspricht .
Tatsächlich sind alle Begriffe in der Serie von Team A nach den ersten drei zu vernachlässigen. In der Praxis bedeutet dies, dass Team A wahrscheinlich alle Fehler mit ein paar Wartungsversionen beseitigen kann, wobei die zweite Version einen recht kleinen Umfang hat. Dies schafft auch die Illusion, dass jedes Team das kann. Aber nicht team b
Ich habe über diese Entsprechung nachgedacht, als ich David Andersons neues Buch "Kanban" gelesen habe . (Das Buch befasst sich mit einem anderen Thema, geht aber auch auf Qualitätsprobleme ein.) Bei der Erörterung der Softwarequalität zitiert Anderson dieses Buch von Capers Jones mit den Worten "Software Assessments, Benchmarks und Best Practices" :
"... im Jahr 2000 ... die gemessene Softwarequalität für nordamerikanische Teams ... reichte von 6 Fehlern pro Funktionspunkt bis zu weniger als 3 pro 100 Funktionspunkten, einem Bereich von 200 bis 1. Der Mittelpunkt liegt bei ungefähr 1 Fehler pro 0,6 bis 1,0 Funktionspunkte. Dies bedeutet, dass Teams häufig mehr als 90 Prozent ihres Aufwands für die Behebung von Fehlern aufwenden. "Er nennt ein Beispiel eines Kollegen eines Unternehmens, das 90% der Zeit damit verbringt, ihre Fehler zu beheben .
Die Geläufigkeit , mit denen geht Anderson aus der Defekt Injektionsrate zur DEFEXT Festsetzungskapazitätszuweisung ( Ausfall Forderung ist der Begriff dafür) schlägt vor , dass die Gleichwertigkeit der beiden Dinge gut zu Software - Qualität Forschern bekannt und wird wahrscheinlich seit einiger Zeit bekannt .
Die Schlüsselwörter in der Argumentationslinie, die ich hier präsentieren möchte, sind "Gleichgewicht" und "nachhaltig". Wenn wir Nachhaltigkeit aufheben, gibt es einen offensichtlichen Weg, diese Zahlen zu betrügen: Sie machen die anfängliche Kodierung, fahren dann fort, um woanders zu kodieren, und überlassen die Wartung anderen. Oder Sie führen die technischen Schulden aus und laden sie bei einem neuen Eigentümer ab.
Offensichtlich wird keine bestimmte Zuordnung für alle Teams passen. Wenn wir entschieden haben, dass 20% für Bugs ausgegeben werden müssen, dann haben ein Team mit einer extrem niedrigen Fehlerinjektionsrate einfach nicht genug Bugs, um die Zeit auszufüllen, und wenn ein Team eine sehr hohe Rate hat, dann sind es die Bugs wird sich weiter ansammeln.
Die Mathematik, die ich hier verwendet habe, ist sehr vereinfacht. Ich habe Dinge wie Transaktionskosten (Planungs- und Schätzungsbesprechungen, Post-Mortems usw.) vernachlässigt, die die Prozentsätze etwas beeinflussen würden. Ich habe auch Gleichungen weggelassen, die simulieren, dass ein Produkt erhalten bleibt und gleichzeitig ein anderes entwickelt wird. Aber die Schlussfolgerung bleibt bestehen. Tun Sie, was Sie im Hinblick auf technische Verfahren tun können, wie z. B. Komponententests, kontinuierliche Integration, Codeüberprüfungen usw., um Ihre Fehlerinjektionsrate und folglich Ihre Fehleranforderung zu reduzieren. Wenn Sie nur einen Fehler für jeweils 10 Funktionen erstellen können, haben Sie viel Zeit, um neue Funktionen zu entwickeln und Ihre Kunden zufriedenzustellen.