Il existe différents types de qualité qui peuvent être mesurés dans les produits logiciels, par exemple l'adéquation à l'objectif (par exemple, l'utilisation finale), la maintenabilité, l'efficacité. Certains d'entre eux sont quelque peu subjectifs ou spécifiques au domaine (par exemple, de bons principes de conception d'interface graphique peuvent être différents selon les cultures ou dépendre du contexte d'utilisation, pensez à l'utilisation militaire par rapport à l'utilisation par le consommateur).
Ce qui m'intéresse, c'est une forme plus profonde de qualité liée au réseau (ou graphique) des types et à leur interdépendance, c'est-à-dire à quels types chaque type fait-il référence, existe-t-il des clusters d'interconnectivité clairement identifiables architecture à plusieurs niveaux, ou à l'inverse existe-t-il une grosse «boule» de références de type (code «monolithique»). De plus, la taille de chaque type et / ou méthode (par exemple, mesurée en quantité de code d'octet Java ou .Net IL) devrait donner une indication de l'endroit où de grands algorithmes complexes ont été mis en œuvre sous forme de blocs de code monolithiques au lieu d'être décomposés en plus faciles à gérer / à gérer. morceaux.
Une analyse basée sur de telles idées peut être capable de calculer des métriques qui sont au moins un indicateur de qualité. Le seuil exact / les points de décision entre la haute et la basse qualité seraient suspects, par exemple, car par maintenabilité, nous entendons la maintenabilité par les programmeurs humains et donc la décomposition fonctionnelle doit être compatible avec la façon dont les esprits humains fonctionnent. En tant que tel, je me demande s'il peut jamais y avoir une définition mathématiquement pure de la qualité du logiciel qui transcende tous les logiciels possibles dans tous les scénarios possibles.
Je me demande également si c'est une idée dangereuse, que si les procurations objectives de qualité deviennent populaires, les pressions commerciales inciteront les développeurs à poursuivre ces mesures au détriment de la qualité globale (ces aspects de la qualité non mesurés par les procurations).
Une autre façon de penser la qualité est du point de vue de l'entropie. L'entropie est la tendance des systèmes à passer d'états ordonnés à des états désordonnés. Quiconque a déjà travaillé sur un projet logiciel de taille moyenne à grande échelle appréciera le degré de dégradation de la qualité de la base de code au fil du temps. Les pressions commerciales entraînent généralement des changements qui se concentrent sur de nouvelles fonctionnalités (sauf lorsque la qualité elle-même est le principal argument de vente, par exemple dans les logiciels avioniques), et l'érosion de la qualité par des problèmes de régression et une fonctionnalité de `` taille de chaussures '' où elle ne correspond pas bien. une perspective de qualité et de maintenance. Alors, peut-on mesurer l'entropie des logiciels? Et si oui, comment?