Un ancien collègue m'a dit que tous les bogues n'avaient pas besoin d'être corrigés, car au fur et à mesure que vous descendez dans la liste des bogues prioritaires, le cas d'utilisation qui provoque ce bogue devient plus obscur ou la satisfaction client acquise diminue. Mais vous devez encore passer beaucoup de temps à corriger ce bogue.
Dans un effort pour convaincre notre propriétaire de produit de ce concept, je n'ai pas pu trouver de bonnes ressources. Tout ce que j'ai pu trouver, c'est des discussions sur la question de savoir s'il y a un coût marginal dans le développement de logiciels ou non.
Y a-t-il un avantage vraiment marginal à corriger les bogues? Y a-t-il un terme différent qui explique ce concept?
D'un point de vue commercial, une correction de bogue n'est pas différente d'une demande de fonctionnalité. Il a un certain coût en temps de développement, et il a une certaine valeur pour les clients. Si un bogue n'est pas critique, il peut être tout à fait judicieux sur le plan commercial de prioriser une fonctionnalité précieuse au-dessus du correctif de bogue.
Mais d'un point de vue technique, les bogues peuvent être plus critiques, car ils indiquent une erreur dans une fondation sur laquelle un autre code pourrait utiliser/s'appuyer, auquel cas l'erreur est "contagieuse" et ajoute des coûts à l'avenir entretien. Donc pas la correction d'un bug est un dette technique qui nécessite une gestion, tandis que pas l'implémentation d'une fonctionnalité n'a pas vraiment de coût permanent. Mais le niveau de dette technique encourue par un bug dépend beaucoup de la nature du bug.
Tous ces facteurs doivent être pris en considération lors de l'établissement des priorités.
Quant à savoir s'il y a un avantage marginal à corriger les bogues: c'est une donnée. Étant donné que tous les bogues ne sont pas de gravité égale, vous priorisez naturellement les bogues les plus importants en premier. Donc, plus vous corrigez de bogues, plus la valeur marginale de la correction du suivant est faible. Mais que cela atteigne le niveau de correction du bug ne vaut pas la peine, c'est une décision commerciale plutôt qu'une décision technique.
Voici une bonne référence
http://www.joelonsoftware.com/articles/fog0000000043.html
Corrigez-vous les bugs avant d'écrire un nouveau code? La toute première version de Microsoft Word pour Windows était considérée comme un projet de "marche vers la mort". [...] parce que la phase de correction de bugs ne faisait pas partie du planning formel [...]
Microsoft a adopté universellement quelque chose de [...] la plus haute priorité est d'éliminer les bogues avant d'écrire tout nouveau code [...] En général, plus vous attendez avant de corriger un bogue, plus il est coûteux (en temps et en argent) de corriger .
Vous pouvez être sûr que plus ces bogues resteront longtemps, plus il faudra de temps pour les corriger une fois qu'ils deviendront prioritaires. Ainsi, au lieu d'avoir un avantage brut en ce moment, vous évitez une perte plus coûteuse à l'avenir.
Une bonne façon de gérer cela serait de définir une quantité de temps allouée pour traiter les problèmes de backlog. Cela ne pousserait pas aussi fort que Microsoft, mais cela garantira une quantité de résolution de problèmes futurs, s'ils ne sont pas déjà votre problème même si le client ne s'en soucie pas vraiment.
Dans un effort pour convaincre notre propriétaire de produit de ce concept, je n'ai pas pu trouver de bonnes ressources.
En supposant que vous travaillez pour une organisation commerciale, il y aura sûrement quelqu'un là-bas qui est au courant de l'analyse coûts-avantages .
Votre organisation dispose d'une quantité limitée de ressources pour les développeurs et d'une liste infinie de choses bénéfiques à faire. Ces avantages incluent à la fois l'ajout de nouvelles fonctionnalités et la suppression de bogues existants - la suppression d'un bogue améliore le logiciel, tout comme l'ajout d'une nouvelle fonctionnalité.
Donc, évidemment, il y a des décisions à prendre sur la façon d'allouer cette ressource finie à cette liste infinie, et il n'est pas particulièrement surprenant que le résultat soit que certains bogues ne soient pas corrigés en ce moment, ou la semaine prochaine, ou l'année prochaine, ou dans fait jamais.
Si vous cherchez une approche plus structurée ici, vous pouvez essayer le système PEF/REV qui attribue des nombres au Vues utilisateur et programmeur d'un bogue, comme point de départ pour décider de ce qui sera corrigé - et de ce qui ne le sera pas.
Voir également ces deux articles ici sur le génie logiciel:
Tous les aspects involontaires ou indésirables du comportement du logiciel ne sont pas tous des bogues. Ce qui est important, c'est de s'assurer que le logiciel dispose d'une gamme de conditions utiles et documentées dans lesquelles il peut être utilisé pour fonctionner de manière utile. Considérons, par exemple, un programme qui est censé accepter deux nombres, les multiplier et produire les résultats, et qui génère un faux numéro si le résultat est supérieur à 9,95 mais inférieur à 10,00, supérieur à 99,95 mais inférieur à 100,00, etc. Si le programme a été écrit dans le but de traiter des numéros dont le produit est compris entre 3 et 7, et ne sera jamais appelé à en traiter d'autres, la correction de son comportement avec 9,95 ne le rendrait pas plus utile pour son objectif. Cela pourrait cependant rendre le programme plus adapté à d'autres fins.
Dans une situation comme celle ci-dessus, il y aurait deux solutions raisonnables:
Résolvez le problème, si cela est possible.
Spécifiez des plages dans lesquelles la sortie du programme serait fiable et indiquez que le programme ne peut être utilisé que sur des données connues pour produire des valeurs dans des plages valides.
L'approche n ° 1 éliminerait le bogue. L'approche n ° 2 pourrait rendre la progression moins appropriée à certaines fins qu'elle ne le serait autrement, mais s'il n'y a pas besoin de programmes pour gérer les valeurs problématiques, cela pourrait ne pas être un problème.
Même si l'incapacité à gérer correctement les valeurs 99,95 à 100,0 est le résultat d'une erreur de programmation [par ex. décider de produire deux chiffres à gauche de la virgule décimale avant de l'arrondir à un endroit après, ce qui donne donc 00,00], cela ne devrait être considéré comme un bogue que si le programme était spécifié comme produisant une sortie significative dans de tels cas. [Par ailleurs, le problème susmentionné s'est produit dans le code d'impression Turbo C 2.00; dans ce contexte, c'est clairement un bogue, mais le code qui appelle le printf défectueux ne serait bogué que s'il pouvait produire des sorties dans les plages problématiques].
Dans un sens large, oui, tous les bogues n'ont pas besoin d'être corrigés. Il s'agit d'analyser le rapport bénéfice/risque.
Ce qui se passe généralement, c'est que l'entreprise organisera une réunion avec les responsables techniques et les parties prenantes pour discuter des bogues qui ne sont manifestement pas dans le besoin de corriger. Ils décideront si le temps (= argent) investi dans la correction du bug en vaudra la peine pour l'entreprise.
Par exemple, un "bug mineur" pourrait être une légère erreur d'orthographe/grammaire dans la section Termes et conditions d'un site Web. La personne qui a soulevé cette question peut penser qu'il est trop mineur pour changer, mais l'entreprise reconnaîtrait le préjudice potentiel qu'elle pourrait causer à la marque et la facilité relative de fixer quelques caractères.
D'un autre côté, vous pourriez avoir un bogue qui semble important, mais qui est difficile à corriger et n'affecte qu'un nombre négligeable d'utilisateurs. Par exemple. un lien de bouton mineur est rompu pour les utilisateurs utilisant une version héritée de Google Chrome et il arrive également que Javascript soit désactivé.
D'autres raisons pour lesquelles l'entreprise ne résout PAS un bogue pourraient être que le temps investi repousserait le projet un temps inattendu, ou que le temps du développeur serait mieux utilisé pour travailler sur d'autres correctifs/codages. Il se peut également que le bogue soit suffisamment mineur pour pouvoir être mis en ligne, puis corrigé à une date ultérieure.
J'espère que cela explique un peu mieux le concept! Je voudrais certainement éviter de penser à cela en termes généraux - chaque bug est unique et doit être traité comme tel.