Le pourcentage d'équilibre de la capacité totale allouée à la correction des défauts est égal au taux d'injection des défauts .
De nombreux facteurs peuvent affecter ce taux, parmi eux, bien sûr: quel type de produit l'équipe développe, quelles technologies et pratiques techniques ils utilisent, le niveau de compétence de l'équipe, la culture de l'entreprise, etc.
En considérant l'équipe B, s'ils créent en moyenne 8 unités de reprise pour 10 unités de travail terminées, le fait de travailler ces 8 unités créera 6,4 nouvelles unités de reprise. On peut estimer l'effort total qu'ils devront éventuellement consacrer comme la somme d'une progression géométrique:
10 + 8 + 6,4 + 5,12 + ...
Le nombre de bogues diminuera de façon exponentielle avec le temps, mais l'équipe B a un coefficient si élevé dans son exposant qu'il ira à zéro très lentement. En fait, la somme des trois premiers termes de la série ci-dessus n'est que de 24,4; des cinq premiers, 33,6; des 10, 45 premiers; de toute la série, 50. Donc, résumé de l'équipe B: taux d'injection de défauts, 0,8; développement de fonctionnalités, 10/50 = 20%; correction de défauts, 80%. 20/80 est leur allocation de capacité durable.
En revanche, l'équipe A est en bien meilleure forme. Leur progression ressemble à ceci:
40 + 10 + 2,5 + 0,625 + ...
La somme de cette série est de 53 1/3, donc l'allocation de développement de fonctionnalités de l'équipe A est de 40 / (53 1/3) = 75% et l'allocation de correction de défauts est de 25%, ce qui correspond à leur taux d'injection de défauts de 10/40 = 0,25 .
En fait, tous les termes de la série de l'équipe A après les trois premiers sont négligeables. Concrètement, cela signifie que l'équipe A peut probablement éliminer tous ses bogues avec quelques versions de maintenance, la deuxième version étant assez petite. Cela crée également l'illusion que n'importe quelle équipe peut le faire. Mais pas l'équipe B.
J'ai pensé à cette équivalence en lisant le nouveau livre de David Anderson, "Kanban" . (Le livre porte sur un sujet différent, mais aborde également les problèmes de qualité.) En discutant de la qualité des logiciels, Anderson cite ce livre, par Capers Jones, "Software Assessments, Benchmarks, and Best Practices" :
"... en 2000 ... la qualité logicielle mesurée pour les équipes nord-américaines ... variait de 6 défauts par point de fonction à moins de 3 pour 100 points de fonction, une plage de 200 à 1. Le point médian est d'environ 1 défaut par 0,6 à 1,0 points de fonction. Cela implique qu'il est courant pour les équipes de consacrer plus de 90% de leur effort à réparer les défauts. "Il cite un exemple fourni par l'un de ses collègues d'une entreprise qui passe 90% du temps à corriger ses bugs. .
La fluidité avec laquelle Anderson passe du taux d'injection de défauts à l'allocation de capacité de fixation de défaut (la demande de défaillance en est le terme) suggère que l'équivalence des deux choses est bien connue des chercheurs en qualité logicielle et est probablement connue depuis un certain temps. .
Les mots clés du raisonnement que j'essaie de présenter ici sont "équilibre" et "durable". Si nous supprimons la durabilité, il existe un moyen évident de tromper ces chiffres: vous effectuez le codage initial, puis passez au codage ailleurs et laissez la maintenance à d'autres. Ou vous accumulez la dette technique et la déchargez sur un nouveau propriétaire.
Évidemment, aucune allocation particulière ne conviendra à toutes les équipes. Si nous décrétons que 20% doivent être dépensés pour les bogues, alors, si une équipe a un taux d'injection de défauts ultra bas, elle n'aura tout simplement pas assez de bogues pour combler le temps, et si une équipe avait un taux très élevé, leurs bogues continuera à s'accumuler.
Le calcul que j'ai utilisé ici est bien simplifié. J'ai négligé des choses comme les coûts de transaction (réunions de planification et d'estimation, autopsies, etc.), ce qui affecterait quelque peu les pourcentages. J'ai également omis des équations simulant le maintien d'un produit et le développement d'un autre en même temps. Mais la conclusion est toujours valable. Faites ce que vous pouvez, en termes de pratiques techniques, comme les tests unitaires, l'intégration continue, les révisions de code, etc., pour réduire votre taux d'injection de défauts et, par conséquent, votre demande de défaillance. Si vous ne pouvez créer qu'un seul bug pour 10 fonctionnalités, vous aurez beaucoup de temps libre pour développer de nouvelles fonctionnalités et satisfaire vos clients.