Ceci est un résultat bien connu en génie logiciel empirique qui a été reproduit et vérifié encore et encore dans d'innombrables études. Ce qui est très rare en génie logiciel, malheureusement: la plupart des «résultats» de l'ingénierie logicielle sont essentiellement des ouï-dire, des anecdotes, des suppositions, des opinions, des vœux pieux ou tout simplement des mensonges. En fait, la plupart des logiciels ne méritent probablement pas la marque «engineering». Malheureusement, bien qu'il soit l'un des résultats les plus solides, les plus scientifiquement et statistiquement solides, les plus recherchés, les plus largement vérifiés, le plus souvent reproduits du génie logiciel, il est également erroné.
Le problème est que toutes ces études ne contrôlent pas correctement leurs variables. Si vous voulez mesurer l'effet d'une variable, vous devez être très soin de changer ne que une variable et que les autres variables ne changent pas du tout . Pas "changer quelques variables", pas "minimiser les changements à d'autres variables". "Un seul" et les autres "pas du tout". Ou, dans les mots brillants de Zed Shaw: si vous voulez mesurer la merde, ne mesurez pas d'autre merde.
Dans ce cas particulier, ils ne pas juste mesure dans laquelle phase (besoins, analyse, architecture, conception, implémentation, tests, maintenance) le bug a été trouvé, ils également mesuré la longue il est resté dans le système. Et il se trouve que la phase est à peu près hors de propos, tout ce qui compte est le temps. Il est important que les bogues soient trouvés rapide, pas dans quelle phase.
Cela a des ramifications intéressantes: s'il est important de trouver des bogues rapide, alors pourquoi attendre si longtemps avec la phase la plus susceptible de trouver des bugs: test? Pourquoi ne pas mettre le test au commençant?
Le problème avec l'interprétation «traditionnelle» est qu'elle conduit à des décisions inefficaces. Parce que vous supposez que vous avez besoin de trouver tous les bugs pendant la phase des exigences, vous faites glisser la phase des exigences inutilement longtemps: vous ne pouvez pas exécuter exigences (ou architectures, ou conceptions), donc trouver un bug dans quelque chose que vous ne pouvez pas même exécuter est flippant dur! Fondamentalement, tandis que la fixation des bogues dans la phase des exigences est bon marché, trouver est coûteux.
Si, cependant, vous vous rendez compte que ce n'est pas de trouver les bugs dans la première phase possible, mais plutôt de trouver les bugs le plus tôt possible, alors vous pouvez faire des ajustements à votre processus, de sorte que vous déplacez la phase dans laquelle trouver bugs est moins cher (test) au moment où fixation eux est moins cher (le tout début).
Note: Je suis bien conscient de l'ironie de mettre fin à une diatribe de ne pas appliquer correctement les statistiques d'une réclamation complètement non fondées. Malheureusement, j'ai perdu le lien où j'ai lu ceci. Glenn Vanderburg a également mentionné cela dans son discours "Real Software Engineering" lors de la conférence Lone Star Ruby 2010, mais AFAICR, il n'a cité aucune source non plus.
Si quelqu'un connaît des sources, s'il vous plaît faites le moi savoir ou modifier ma réponse, ou même simplement voleras ma réponse. (Si vous pouvez trouver une source, vous méritez tous les rep!)
Je vote pour clore cette question hors-sujet car son coût de déploiement est – bummi
Je vote pour clore cette question hors-sujet parce qu'elle concerne la gestion d'un projet, pas la programmation. – gunr2171