IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels Yann-Gaël Guéhéneuc Professeur adjoint guehene@iro.umontreal.ca, local 2345 (Cours inspiré du cours du Pr. François Lustman) Département d informatique et de recherche opérationnelle Université de Montréal Yann-Gaël Guéhéneuc 2004
Les métriques 1. Introduction 2. Métriques de produit 3. Métriques de processus 4. Métrique de qualité 5. Conclusion 2/43
3/43 1. Introduction (1/5) Une application définit une métrique (ou une distance) sur X, ssi + R 2 : X d ), ( ), (, x y d y x d X y x = y x y x d X y x = = 0 ), (, ), ( ), ( ), (,, z y d y x d z x d X z y x +
1. Introduction (2/5) Métriques en génie logiciel «Lorsque vous pouvez mesurer ce dont vous parlez et l exprimer en nombres, vous savez quelque chose à son sujet ; mais lorsque vous ne pouvez l exprimer en nombres, votre connaissance est maigre et peu satisfaisante : c est peut-être le début de la connaissance mais dans vos pensées, vous avez à peine progressé jusqu au stade de la science.» Lord Kelvin (traduction approximative) 4/43
1. Introduction (3/5) Métriques en génie logiciel Formulation Collection Analyse «C est une erreur de proposer une mesure sans consensus sur la caractéristique mesurée» Norman Fenton (traduction approximative) 5/43
1. Introduction (4/5) Métriques en génie logiciel Privées Publiques Éthique! 6/43
1. Introduction (5/5) Métriques en génie logiciel Métriques directes / métriques indirectes Métrique directe Résultat direct de l observation Exemple : KLOC Métrique indirecte Résultat d une transformation des résultats de l observation Exemple : complexité cyclomatique 7/43
Les métriques 1. Introduction 2. Métriques de produit 3. Métriques de processus 4. Métrique de qualité 5. Conclusion 8/43
2. Métriques de produit (1/4) Exemples Nombre de lignes de code final Entity targetentity = relationship.gettargetactor(); final String targetentityname = targetentity.getname(); if (!(targetentity instanceof Ghost) (this.visibleelements & VisibilityElement.GHOST_ENTITIES_DISPLAY) == VisibilityElement.GHOST_ENTITIES_DISPLAY) { final StringBuffer relationshipnames; if (relationships.containskey(targetentityname)) { relationshipnames = (StringBuffer) relationships.get(targetentityname); } else { relationshipnames = newstringbuffer(); relationships.put(targetentityname, relationshipnames); 9/43
2. Métriques de produit (2/4) Exemples Complexité cyclomatique (McCabe) Mesure du nombre de chemins indépendants dans un algorithme. Mesure de la complexité de l algorithme par rapport au nombre de chemin pour traverser cet algorithme 10/43
2. Métriques de produit (3/4) Exemples Complexité cyclomatique V(G) = (# Liens) - (# Nœuds) + 1 11/43
2. Métriques de produit (4/4) Plus au chapitre 5.5. Contrôle du produit : métriques Plus dans le cours IFT3903 12/43
Les métriques 1. Introduction 2. Métriques de produit 3. Métriques de processus 4. Métrique de qualité 5. Conclusion 13/43
3. Métriques de processus (1/17) Métriques de maturité Structure interne Caractéristiques des équipes Caractéristiques de la hiérarchie Niveau de coopération Questionnaires Voir par exemple les entreprises Decision Point, Inc., Workforce Metrics 14/43
3. Métriques de processus (2/17) Métriques de maturité Gestion Niveau du projet Qualité et configuration de la gestion Questionnaires Voir par exemple S. J. Leadabrand and W.E. Burns ; Assessment Metrics for Use with the Capability Maturity Model: Are We Improving? ; CrossTalk, February 1994 15/43
3. Métriques de processus (3/17) Métriques de maturité Personnels Expérience Certification Efficacité Questionnaires Flexibilité Questionnaires Mises à niveau Nombre de cours Augmentation de la qualité 16/43
3. Métriques de processus (4/17) Métriques de maturité Technologie Disposition des ressources informatiques Niveau de technologie Niveau de remplacement des technologies Questionnaires 17/43
3. Métriques de processus (5/17) Métriques de maturité Documentation Application des standards Nombre de standards utilisés Questionnaires 18/43
3. Métriques de processus (6/17) Métriques de maturité Processus Productivité Efficacité Qualité Traçabilité Mean time to defect : moyenne du temps entre la découverte d un problème et du suivant pendant le développement Métriques actuelles / planifiées 19/43
3. Métriques de processus (7/17) Métriques de gestion Projet Jalons Nombre de jalons Nombre de besoins remplis par jalons Niveau de contrôle des métriques Risques «Photos» avant / après Modèles 20/43
3. Métriques de processus (8/17) Métriques de gestion Qualité Satisfaction des clients Caractéristiques de taille Caractéristiques de structure Évaluation empirique 21/43
3. Métriques de processus (9/17) Métriques de gestion Qualité Revue Nombre de revues Dépendances entre revues Niveau de revues 22/43
3. Métriques de processus (10/17) Métriques de gestion Qualité Productivité Performance Productivité / qualité Efficacité Temps Ressources 23/43
3. Métriques de processus (11/17) Métriques de gestion Qualité Assurance de la qualité Évaluation de la qualité Prévention des erreurs Niveau de mesure Analyse des données Normes ISO 9000-3 24/43
3. Métriques de processus (12/17) Métriques de gestion Configuration Changements Tailles Dépendances Intervalles Révision Versions Nombre de versions Nombre de versions par clients Différences entre versions 25/43
3. Métriques de processus (13/17) Métriques du cycle de vie Définitions des problèmes Types des problèmes Standards pour la définition Niveau d utilisation d outils Stabilité 26/43
3. Métriques de processus (14/17) Métriques du cycle de vie Besoins et spécifications Niveau du flot depuis la définition des problèmes Moyenne de la participation Méthode de développement Niveau des estimations Intégration Cas d utilisation 27/43
3. Métriques de processus (15/17) Métriques du cycle de vie Conception Niveau d automatisation Utilisation de bibliothèques Niveau de réutilisation 28/43
3. Métriques de processus (16/17) Métriques du cycle de vie Implantation Niveau d automatisation Moyenne de la qualité du code Niveau de couverture de tests Performances Distribution 29/43
3. Métriques de processus (17/17) Métriques du cycle de vie Maintenance Gestion des erreurs Changeabilité Extensibilité Modifications légères Fiabilité Contrôle des configurations 30/43
Les métriques 1. Introduction 2. Métriques de produit 3. Métriques de processus 4. Métrique de qualité 5. Conclusion 31/43
4. Métriques de qualité (1/10) Conformité Mesure des erreurs Date de détection Date de correction Criticité Nombre de tests Origine Code affecté par la correction 32/43
4. Métriques de qualité (2/10) Efficacité Questionnaires Voir par exemple Kevin McIsaac ; Metrics, Assessment Process ; ZDnet on-line, October 2002 Analyses / évaluation comparatives (benchmarking) 33/43
4. Métriques de qualité (3/10) Fiabilité Probabilité qu un programme s exécute sans défaillances dans un environnement donné pour une période de temps donnée (Fenton) Temps moyen pour un défaut (MTTF), de réparation (MTTR), entre défauts (MTBF = MTTF + MTTR) Disponibilité : MTTF / MTBF 100 34/43
4. Métriques de qualité (4/10) Maintenabilité Modèle de Coleman-Oman MI = 171 5.2 ln( avev) 0.23 avev ( g') 16.2 ln( aveloc) + 50 sin MI < 65 : maintenabilité faible avev : volume de Halstead moyen avev(g ) : complexité cyclomatique moyenne aveloc : nombre moyen de lignes de code percm : pourcentage de lignes de commentaires 65 MI < 85 : maintenabilité bonne 85 MI : maintenabilité excellente 2.46 percm 35/43
4. Métriques de qualité (5/10) Intégrité Vérification par le BIOS de l authentification de l utilisateur Nombre d attaques Accès à la(aux) base(s) de données Nombre de clés étrangères Profondeur de l arbre de références Nombre d algorithmes de prévention de la corruption 36/43
4. Métriques de qualité (6/10) Testabilité Unitaire Pourcentage de classes avec des dépendances codées explicitement Pourcentage de classes avec des dépendances implicites (utilisation de Class.forName()) Intégration T. B. Nguyen, M. Delaunay, C. Robach ; Testability Analysis For Software Components ; ICSM, October 2002 37/43
4. Métriques de qualité (7/10) Utilisabilité Questionnaires Pourcentage de la tâche complétée Ratio succès / échecs Charge de travail Nombre de commandes utilisées Temps d apprentissage Nombre de fois que l usage exprime sa frustration ou sa colère 38/43
4. Métriques de qualité (8/10) Inter-opérabilité Échangeabilité des données Nombre d interfaces de conversion des données implantées / nombre d interfaces de conversion spécifiées (nécessaires) Cohérence des interfaces Nombre de protocoles implémentant des formats cohérents / nombre de protocoles spécifiés (nécessaires) 39/43
4. Métriques de qualité (9/10) Portabilité Nombre de composants liés à la portabilité implantés / nombre de composants liés à la portabilité identifiés (nécessaires) 40/43
4. Métriques de qualité (10/10) Réutilisabilité Moins d appels par lignes de code Moins de paramètres d entrées/sorties Plus de commentaire par lignes de code Plus d appels à des fonctions «utilitaires» par ligne de code 41/43
Les métriques 1. Introduction 2. Métriques de produit 3. Métrique de qualité 4. Métriques de processus 5. Conclusion 42/43
4. Conclusion Une science à part entière Un sujet de recherche prometteur Attention aux aspects humains 43/43