Non.
La qualité du logiciel est vraiment difficile à mesurer objectivement. Assez dur pour qu'il n'y ait pas de solution. Je m'abstiens dans cette réponse de m'attarder sur la question de savoir s'il peut y avoir une solution, mais simplement de souligner pourquoi il serait vraiment difficile d'en définir une.
Raisonnement par statu quo
Comme Kilian Foth l'a souligné, s'il existait une mesure simple pour un "bon" logiciel, nous l'utilisions tous et tout le monde l'exigerait.
Il existe des projets dans lesquels les gestionnaires ont décidé d'appliquer certaines mesures. Parfois cela a fonctionné, parfois non. Je n'ai connaissance d'aucune corrélation significative. Les logiciels de systèmes particulièrement critiques (pensez aux avions, aux voitures, etc.) ont beaucoup d'exigences de métriques pour "assurer" la qualité SW - Je ne connais aucune étude montrant que ces exigences se traduisent réellement par une qualité supérieure, et j'ai une expérience personnelle de la contraire.
Raisonnement par contre-espionnage
Déjà évoqué par Kilian, et plus généralement formulé comme "chaque métrique peut et sera jouée".
Que signifie jouer une métrique? C'est un jeu amusant pour les développeurs: vous vous assurez que les valeurs métriques sont vraiment bonnes, tout en faisant des trucs vraiment merdiques.
Disons que vous mesurez les défauts par LOC. Comment vais-je jouer ça? Facile - ajoutez simplement plus de code! Créez un code stupide qui entraîne une non-opération sur 100 lignes et tout à coup, vous avez moins de défauts par LOC. Le meilleur de tous: vous avez en fait diminué la qualité du logiciel de cette façon.
Les lacunes des outils sont abusées, les définitions sont étirées à leur maximum, des façons complètement nouvelles sont inventées ... en gros, les développeurs sont vraiment des gens intelligents et si vous n'avez qu'un seul développeur dans votre équipe qui s'amuse à jouer des métriques, alors vos métriques seront discutables.
Cela ne veut pas dire que les métriques sont toujours mauvaises - mais l'attitude de l'équipe envers ces métriques est cruciale. En particulier, cela implique que cela ne fonctionnera pas bien pour une relation de sous-traitant / fournisseur tiers.
Raisonnement par mauvais ciblage
Ce que vous voulez mesurer, c'est la qualité du logiciel. Ce que vous mesurez, c'est une ou plusieurs mesures.
Il y a un écart entre ce que vous mesurez et ce que vous pensez que cela vous dira. Cet écart est même énorme.
Cela arrive tout le temps dans toutes sortes d'entreprises autour de nous. Avez-vous déjà vu des décisions basées sur des KPI (indicateurs clés de performance)? C'est juste le même problème - vous voulez qu'une entreprise se porte bien, mais vous mesurez autre chose.
Raisonnement par quantifiabilité
Les métriques peuvent être mesurées. C'est la seule raison pour laquelle nous traitons avec eux. La qualité des logiciels, cependant, va bien au-delà de ces entités mesurables et a beaucoup de choses très difficiles à quantifier: dans quelle mesure le code source est-il lisible? Dans quelle mesure votre conception est-elle extensible? À quel point est-il difficile pour les nouveaux membres de l'équipe de s'engager? etc.
Ne juger la qualité d'un logiciel que par des mesures et fermer les yeux sur les éléments de qualité que vous ne pouvez pas quantifier ne fonctionnera certainement pas bien.
Éditer:
Sommaire
Permettez-moi de souligner que ce qui précède consiste à juger objectivement si un logiciel est bon ou mauvais en fonction de mesures. Cela signifie qu'il ne dit rien sur la question de savoir si et quand vous devez appliquer des mesures.
En fait, c'est une implication unidirectionnelle: de mauvaises métriques impliquent un mauvais code. Unidirectionnel signifie qu'un mauvais code ne garantit pas de mauvaises mesures, pas plus que de bonnes mesures ne garantissent un bon code. D'un autre côté, cela signifie en soi que vous pouvez appliquer des mesures pour juger un logiciel - lorsque vous gardez cette implication à l'esprit.
Vous mesurez le logiciel A et les mesures s'avèrent vraiment mauvaises. Vous pouvez alors être certain que la qualité du code est mauvaise. Vous mesurez le logiciel B et les mesures sont correctes, alors vous n'avez aucune idée de la qualité du code. Ne vous laissez pas berner en pensant que "metrics good = code good" quand c'est vraiment juste "code good => metrics good".
En substance, vous pouvez utiliser des métriques pour trouver des problèmes de qualité, mais pas la qualité elle-même.