En ingénierie et développement de logiciels , une métrique logicielle est une norme de mesure du degré auquel un système ou un processus logiciel possède une propriété. Même si une métrique n'est pas une mesure (les métriques sont des fonctions, tandis que les mesures sont les nombres obtenus par l'application de métriques), les deux termes sont souvent utilisés comme synonymes. Les mesures quantitatives étant essentielles dans toutes les sciences, les praticiens et théoriciens de l'informatique s'efforcent continuellement d'apporter des approches similaires au développement de logiciels. L'objectif est d'obtenir des mesures objectives, reproductibles et quantifiables, qui peuvent avoir de nombreuses applications précieuses dans la planification des calendriers et des budgets, l'estimation des coûts, l'assurance qualité, les tests, le débogage des logiciels , l'optimisation des performances des logiciels et l'affectation optimale des tâches du personnel.
Mesures logicielles courantes
Les mesures logicielles courantes incluent :
- ABC Software Métrique
- Tableau de bord équilibré
- Bugs par ligne de code
- Couverture du code
- Cohésion
- Densité des commentaires
- Composants logiciels connascents
- Modèle de coût constructif
- Couplage
- Complexité cyclomatique (complexité de McCabe)
- Densité de complexité cyclomatique
- Densité des défauts - défauts trouvés dans un composant
- Potentiel de défaut - nombre attendu de défauts dans un composant particulier
- Taux d'élimination des défauts
- DSQI (indice de qualité de la structure de conception)
- Points de fonction et points de fonction automatisés, une norme du groupe de gestion d'objets
- Complexité de Halstead
- Longueur du chemin d'instruction
- Indice de maintenabilité
- Lignes de code source - nombre de lignes de code
- Temps d'exécution du programme
- Temps de chargement du programme
- Taille du programme (binaire)
- Points de micro-fonction pondérés
- Temps de cycle (logiciel)
- Rendement du premier passage
- Probabilité d'engagement correctif
Limites
Le développement de logiciels étant un processus complexe, avec une grande variabilité des méthodologies et des objectifs, il est difficile de définir ou de mesurer les qualités et les quantités des logiciels et de déterminer une mesure valide et simultanée, en particulier lorsqu'une telle prédiction est faite avant la conception détaillée. Une autre source de difficulté et de débat est de déterminer quelles mesures sont importantes et ce qu'elles signifient. L'utilité pratique des mesures logicielles a donc été limitée aux domaines suivants :
- Programmation
- Dimensionnement du logiciel
- Complexité de la programmation
- Estimation de l'effort de développement logiciel
- Qualité du logiciel
Une mesure spécifique peut cibler un ou plusieurs des aspects ci-dessus, ou l'équilibre entre eux, par exemple comme indicateur de motivation d'équipe ou de performance de projet. De plus, les mesures varient entre le code de programme statique et dynamique, ainsi que pour les logiciels orientés objet (systèmes).
Acceptation et opinion publique
Certains praticiens du développement de logiciels soulignent que des mesures simplistes peuvent causer plus de mal que de bien. D'autres ont noté que les métriques sont devenues partie intégrante du processus de développement de logiciels. L'impact de la mesure sur la psychologie des programmeurs a soulevé des inquiétudes quant aux effets néfastes sur les performances en raison du stress, de l'anxiété de performance et des tentatives de tricherie sur les métriques, tandis que d'autres estiment qu'elle a un impact positif sur la valeur des développeurs envers leur propre travail et les empêche d'être sous-estimés. Certains soutiennent que la définition de nombreuses méthodologies de mesure est imprécise et qu'en conséquence, il est souvent difficile de savoir comment les outils de calcul parviennent à un résultat particulier, tandis que d'autres soutiennent qu'une quantification imparfaite est meilleure que rien (« Vous ne pouvez pas contrôler ce que vous ne pouvez pas mesurer »). Les preuves montrent que les métriques logicielles sont largement utilisées par les agences gouvernementales, l'armée américaine, la NASA, les consultants informatiques, les institutions universitaires, les logiciels d'estimation du développement commercial et universitaire .
Lectures complémentaires
- J. Smith, Introduction à la programmation linéaire , Acme Press, 2010. Un texte d'introduction.
- Reijo M.Savola, Qualité des mesures et indicateurs de sécurité, Computers & Security, Volume 37, septembre 2013, pages 78-90.