SlideShare a Scribd company logo
1 of 28
SUP’MANAGEMENT 
Les métriques de Qualité d’un Logiciel 
Présenter Par : 
Amine Aounzou 
1 MQL
Plan 
2 
1. Rappels : Qualité Logiciel 
2. Introduction 
3. Les Métriques de Qualité 
 Lines-Of-code (LOC) 
 McCabe cyclomatic number v(G) 
 Halstead’s metrics 
 Maintainability Index 
4. Mesure de complexité avec Testwell CMT++ et Testwell CMTJava 
5. Conclusion 
MQL
Rappels : Qualité Logiciel 
La qualité d’un logiciel se mesure par rapport à plusieurs critères : 
 Répondre aux spécifications fonctionnelles : 
 Une application est créée pour répondre , tout d’abord, aux besoins 
fonctionnels des entreprises. 
 Les performances: 
 La rapidité d’exécution et Le temps de réponse 
 Doit être bâtie sur une architecture robuste. 
 Eviter le problème de montée en charge 
 La maintenance: 
 Une application doit évoluer dans le temps. 
 Doit être fermée à la modification et ouverte à l’extension 
 Une application qui n’évolue pas meurt. 
 Une application mal conçue est difficile à maintenir, par suite elle finit un 
jour à la poubelle. 
3 
MQL
4 
Rappels : Qualité Logiciel 
 Sécurité 
 Garantir l’intégrité et la sécurité des données 
 Portabilité 
 Doit être capable de s’exécuter dans différentes plateformes. 
 Capacité de communiquer avec d’autres applications distantes. 
 Disponibilité et tolérance aux pannes 
 Capacité de fournir le service à différents type de clients : 
 Client lourd : Interfaces graphiques SWING 
 Interface Web : protocole Http 
 Téléphone : SMS 
 Design des ses interfaces graphiques 
 Charte graphique et charte de navigation 
 Accès via différentes interfaces (Web, Téléphone, PDA, ,) 
 Coût du logiciel 
MQL
5 
Introduction 
La complexité de code a une influence directe sur la qualité et le coût d’un logiciel. 
Elle impacte sur la durée de vie et l’exploitation d’un logiciel, et plus particulièrement 
sur son taux de défauts, sa testabilité et sa maintenabilité. Une bonne compréhension 
et maîtrise de la complexité d’un code permet de développer un logiciel de meilleure 
qualité. 
MQL
6 
Les métriques peuvent être classées en trois catégories : 
• celles mesurant le processus de développement 
• celles mesurant des ressources 
• et celles de l‘évaluation du produit logiciel 
Les métriques de produits mesurent les qualités du logiciel. Parmi ces 
métriques, on distingue : 
 les métriques traditionnelles 
 les métriques orientées objet. 
MQL 
Introduction
7 
Les métriques orientées objet 
prennent en considération les relations entre éléments de programme (classes, 
méthodes). 
Les métriques traditionnelles 
se divisent en deux groupes : 
 les métriques mesurant la taille et la complexité 
complexité les plus connus sont les métriques de ligne de code ainsi que les métriques 
de Halstead 
 les métriques mesurant la structure du logiciel. 
comme la complexité cyclomatique de McCabe se basent sur des organigrammes de 
traitement ou des structures de classe. 
MQL 
Introduction
8 Les métriques des Lignes de code 
MQL
Les métriques des Lignes de code 
9 
Les métriques des Lignes de code 
Pour quantifier la complexité d’un logiciel, les mesures les plus utilisées sont les lignes de 
code (LOC « lines of code ») puisqu’elles sont simples, faciles à comprendrent à 
compter. Cependant ces mesures ne prennent pas en compte le contenu 
d'intelligence et la disposition du code. 
On peut distinguer les types de métriques de lignes de code suivants : 
 LOCphy: nombre de lignes physiques (total des lignes des fichiers source) ; 
 LOCpro: nombre de lignes de programme (déclarations, définitions, directives, et code 
 LOCcom: nombre de lignes de commentaire ; 
 LOCbl: nombre de lignes vides (en anglais number of blank lines). 
MQL
Quelles sont les limites acceptables ? 
10 
La longueur des fonctions devrait être de 4 à 40 lignes de programme. Une définition de 
fonction contient au moins un prototype, une ligne de code, et une paire d'accolades, qui 
font 4 lignes. 
En règle générale, une fonction plus grande que 40 lignes de programme doit pouvoir 
s’écrire en plusieurs fonctions plus simples. A toutes règles son exception, les fonctions 
contenant un état de sélection avec beaucoup de branches ne peuvent pas être 
décomposées en fonctions plus petites sans réduire la lisibilité 
La longueur d’un fichier devrait contenir entre 4 et 400 lignes de programme, ce qui 
équivaut déjà à un fichier possédant entre 10 et 40 fonctions. Un fichier de 4 lignes de 
programme correspond à une seule fonction de 4 lignes, c’est la plus petite entité qui 
peut raisonnablement occuper un fichier source complet. 
MQL
11 
Un fichier de plus de 400 lignes de programme est généralement trop long pour être 
compris en totalité. 
Pour aider à sa compréhension, on estime qu’au minimum 30 % et maximum 75 % d'un 
fichier devrait être commenté. 
Si moins d'un tiers du fichier est commenté, le fichier est soit très trivial, soit 
pauvrement expliqué. Si plus de 75% du fichier est commenté, le fichier n'est plus un 
programme, mais un document. 
MQL 
Quelles sont les limites acceptables ?
Le nombre Cyclomatique de 
Mc Cabe : v(G) 
12 
MQL
13 
MQL 
Le nombre Cyclomatique de Mc Cabe : v(G) 
La complexité Cyclomatique (complexité de McCabe), introduite par Thomas McCabe 
en 1976, est le calcul le plus largement répandu des métriques statiques. Conçue dans le 
but d’être indépendante du langage, la métrique de McCabe indique le nombre de 
chemins linéaires indépendants dans un module de programme et représente 
finalement la complexité des flux de donnés. 
N=nombre de noeuds(blocs d instructions sequentiel) 
E=Nombre d arcs(branches suivies par le progmme) 
V=nombre cyclomatique
14 
Le nombre Cyclomatique de Mc Cabe : v(G) 
Cas 2: I point d entrée S point de sortie 
MQL 
V(G)=e-n+i+s 
Exemple : 
If C1 then 
while(C2) loop 
X1 
End loop 
Else X2 
X3 
n=5 , e=6 V(G)=3 
NB:i=1 e s=1 
Cas 1:1 point d entrée 1 point de sortie 
V(G)=e-n+2 
C1 
C2 X2 
X3 
X1
15 
MQL 
Le nombre Cyclomatique de Mc Cabe : v(G) 
Une fonction devrait avoir une nombre cyclomatique inférieur à 15. Si une 
fonction a plus que 15 chemins d'exécution il est difficile à comprendre et à tester. 
Pour un fichier le nombre cyclomatique ne devrait pas dépasser 100.
16 Les Métriques de Halstead 
MQL
17 
MQL 
Les Métriques de Halstead 
Les métriques de complexité de Halstead ont été développées par l’américain Maurice 
Halstead et procurent une mesure quantitative de complexité. 
Ils sont basées sur l’interprétation du code comme une séquence de marqueurs, 
classifiés comme un opérateur ou une opérande. 
Toutes les métriques de Halstead sont dérivées du nombre d’opérateurs et d’opérandes : 
 nombre total des opérateurs uniques (n1) 
 nombre total des opérateurs (N1) 
 nombre total des opérandes uniques (n2) 
 nombre total des opérandes (N2)
Les Métriques de Halstead 
18 
Sur la base de ces chiffres on calcule : 
MQL 
 La Longueur du programme(N) : N = N1 + N2. 
 La Taille du vocabulaire(n) : n = n1 + n2 
A partir de là, on obtient le Volume du Programme(V) en multipliant la taille du 
vocabulaire par le logarithme 2 : 
V = N * log2(n) 
Le volume d’une fonction devrait être compris entre 20 et 1000. Le volume d'une 
fonction,d'une ligne et sans paramètre, qui n'est pas vide est d'environ 20. Une fonction 
avec un volume supérieur à 1000 comporte probablement trop de choses. Le volume 
d'un fichier devrait être au minimum à 100 et au maximum à 8000.
19 
Les Métriques de Halstead 
Le Niveau de difficulté (D) :ou propension d'erreurs du programme est proportionnel 
au nombre d’opérateurs unique (n1) dans le programme et dépend également du 
nombre total d’opérandes (N2) et du nombre d'opérandes uniques (n2). Si les mêmes 
opérandes sont utilisés plusieurs fois dans le programme, il est plus enclin aux erreurs. 
MQL 
D = ( n1 / 2 ) * ( N2 / n2 ) 
Le Niveau de programme (L) est l’inverse du Niveau de difficulté. Un programme de 
bas niveau est plus enclin aux erreurs qu'un programme de haut niveau. 
L = 1 / D 
L'Effort à l'implémentation (E) est proportionnel au volume (V) et au niveau de 
difficulté (D). Cette métrique est obtenu par la formule suivante : 
E = V * D
20 
Les Métriques de Halstead 
Halstead a découvert que diviser l'effort par 18 donne une approximation pour le Temps 
pour implémenter (T) un programme en secondes. 
MQL 
T = E / 18 
Il est même possible d’obtenir le « nombre de bugs fournis » (B) qui une estimation 
du nombre d'erreurs dans le programme. Cette valeur donne une indication pour le 
nombre d’erreurs qui devrait être trouver lors du test de logiciel. Le « nombre de bugs 
fournis » est calculé selon la formule suivante: 
B = ( E (2/3)) / 3000 
Des expériences ont montré que un fichier source écrit en C ou C++ contient 
malheureusement très souvent plus d'erreurs que B ne suggère.
21 L’Index de Maintenabilité (MI) 
MQL
22 
MQL 
L’Index de Maintenabilité (MI) 
L'index de maintenabilité permet d’évaluer lorsque le coût de la correction du 
logiciel est plus élevé que sa réécriture. Il est conseillé de réécrire des parties du 
logiciel avec une mauvaise maintenabilité afin d’économiser du temps et donc 
de l’argent lors de la maintenance. 
L'index de maintenabilité est calculé à partir des résultats de mesures de lignes de 
code, des métriques de Mc Cabe et des métriques de Halstead. 
Il y a trois variantes de l’index de maintenabilité : 
 la maintenabilité calculée sans les commentaires 
 la maintenabilité concernant des commentaires 
 l’Index de maintenabilité
23 
MQL 
L’Index de Maintenabilité (MI) 
1) la maintenabilité calculée sans les commentaires (MIwoc, Maintainability Index 
without comments): 
MIwoc = 171 - 5.2 * ln(aveV) -0.23 * aveG -16.2 * ln(aveLOC) 
Sachant que: 
 aveV = valeur moyenne du volume d’Halstead Volume (V) par module 
 aveG = valeur moyenne de la complexité cyclomatique v(G) par module 
 aveLOC = nombre moyen de lignes de code (LOCphy) par module 
2) la maintenabilité concernant des commentaires (MIcw, Maintainability Index 
commentweight) : 
MIcw = 50 * sin(sqrt(2.4 * perCM))
24 
MQL 
L’Index de Maintenabilité (MI) 
3) l’Index de maintenabilité (MI, Maintainability Index) est la somme de deux 
précédents : 
MI = MIwoc + Micw 
La valeur du MI indique la difficulté (ou facilité) de maintenir une application. 
Si la valeur est 85 ou plus la maintenabilité est bonne. Une valeur entre 65 et 85 indique 
une maintenabilité modérée. Si l´index de maintenabilité est inférieur à 65, la 
maintenance est difficile. Il est donc préférable de re-écrire des parties « mauvaises » du 
code.
Mesure de complexité avec Testwell CMT++ et Testwell CMTJava 
25 
Les outils Testwell CMT++ et Testwell /CMTJava permettent de mesurer la complexité 
du code. Grace à l’analyse des fichiers non-préprocessés les outils Testwell sont 
extrêmement rapide. Même des grands projets peuvent être analysés en quelques 
minutes. 
L’interface « Verybench » de Testwell CMT++/CMTJava permet d’obtenir 
différentes présentations de métriques pour développeurs, réviseurs, testeurs et le 
management. 
En plus des sorties textes, HTML, XML et CSV il est possible d’obtenir des rapports en 
PDF avec une présentation très claire qui permet de voir rapidement les défaillances de 
qualité. 
MQL
Mesure de complexité avec Testwell CMT++ et Testwell CMTJava 
26 
MQL
Mesure de complexité avec Testwell CMT++ et Testwell CMTJava 
27 
MQL
Conclusions 
28 
Les métriques de ligne de code, le nombre cyclomatique de McCabe, les métriques de 
Halstead et l’index de maintenabilité sont des moyens efficaces pour mesurer la 
complexité, la qualité et la maintenabilité d’un logiciel. Ces métriques servent 
également à localiser les modules difficile à tester et à maintenir. Des actions 
correctives peuvent alors être enclenchées pour corriger une complexité trop élevée 
plutôt que de garder des modules susceptibles d’être cher en maintenance. 
MQL

More Related Content

What's hot

Uml 2 pratique de la modélisation
Uml 2  pratique de la modélisationUml 2  pratique de la modélisation
Uml 2 pratique de la modélisationNassim Amine
 
Présentation projet de fin d'étude
Présentation projet de fin d'étudePrésentation projet de fin d'étude
Présentation projet de fin d'étudeDonia Hammami
 
Exigences de qualité des systèmes / logiciels
Exigences de qualité des systèmes / logicielsExigences de qualité des systèmes / logiciels
Exigences de qualité des systèmes / logicielsPierre
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfFadouaBouafifSamoud
 
2015 07 14_presentation-pfe-gestion-parc-informatique
2015 07 14_presentation-pfe-gestion-parc-informatique2015 07 14_presentation-pfe-gestion-parc-informatique
2015 07 14_presentation-pfe-gestion-parc-informatiqueUsmiste Rosso
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
Cours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieMohammed Amine Mostefai
 
Présentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clientsPrésentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clientsMohamed Ayoub OUERTATANI
 
Projet de fin d'etude sur le parc informatique
Projet  de fin d'etude sur le parc informatiqueProjet  de fin d'etude sur le parc informatique
Projet de fin d'etude sur le parc informatiqueHicham Ben
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
Aql métriques logicielles
Aql métriques logiciellesAql métriques logicielles
Aql métriques logiciellesmarwa baich
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web ServicesLilia Sfaxi
 

What's hot (20)

Uml 2 pratique de la modélisation
Uml 2  pratique de la modélisationUml 2  pratique de la modélisation
Uml 2 pratique de la modélisation
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
Assurance qualité
Assurance qualitéAssurance qualité
Assurance qualité
 
Présentation projet de fin d'étude
Présentation projet de fin d'étudePrésentation projet de fin d'étude
Présentation projet de fin d'étude
 
Exigences de qualité des systèmes / logiciels
Exigences de qualité des systèmes / logicielsExigences de qualité des systèmes / logiciels
Exigences de qualité des systèmes / logiciels
 
Qualite1
Qualite1Qualite1
Qualite1
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Méthodes agiles
Méthodes agilesMéthodes agiles
Méthodes agiles
 
2015 07 14_presentation-pfe-gestion-parc-informatique
2015 07 14_presentation-pfe-gestion-parc-informatique2015 07 14_presentation-pfe-gestion-parc-informatique
2015 07 14_presentation-pfe-gestion-parc-informatique
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Cours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vie
 
Cours Génie Logiciel - Introduction
Cours Génie Logiciel - IntroductionCours Génie Logiciel - Introduction
Cours Génie Logiciel - Introduction
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
 
Présentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clientsPrésentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clients
 
Projet de fin d'etude sur le parc informatique
Projet  de fin d'etude sur le parc informatiqueProjet  de fin d'etude sur le parc informatique
Projet de fin d'etude sur le parc informatique
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Aql métriques logicielles
Aql métriques logiciellesAql métriques logicielles
Aql métriques logicielles
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web Services
 

Viewers also liked

les metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitéles metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitésoregh
 
Contrôle de la qualité logiciel
Contrôle de la qualité logicielContrôle de la qualité logiciel
Contrôle de la qualité logicielSylvain Leroy
 
Normalisation des exigences système / logiciel
Normalisation des exigences système / logicielNormalisation des exigences système / logiciel
Normalisation des exigences système / logicielPierre
 
Le controle de qualite au laboratoire
Le controle de qualite au laboratoireLe controle de qualite au laboratoire
Le controle de qualite au laboratoireS/Abdessemed
 
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open source
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open sourceSoirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open source
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open sourceFrançois Le Droff
 
Introduction à la qualité logicielle (1/5)
Introduction à la qualité logicielle (1/5)Introduction à la qualité logicielle (1/5)
Introduction à la qualité logicielle (1/5)Sylvain Leroy
 
Developement logiciel: comment livrer de la qualite ?
Developement logiciel: comment livrer  de la qualite ?Developement logiciel: comment livrer  de la qualite ?
Developement logiciel: comment livrer de la qualite ?Innobec
 
Gestionnaires des ressources humaines
Gestionnaires des ressources humaines Gestionnaires des ressources humaines
Gestionnaires des ressources humaines Ifact-dz Formation HSE
 
Développement efficace d'application logicielle
Développement efficace d'application logicielleDéveloppement efficace d'application logicielle
Développement efficace d'application logiciellePyxis Technologies
 
web sémantique et web social: deux étapes vers les données liées d'un web ubi...
web sémantique et web social: deux étapes vers les données liées d'un web ubi...web sémantique et web social: deux étapes vers les données liées d'un web ubi...
web sémantique et web social: deux étapes vers les données liées d'un web ubi...Fabien Gandon
 
Les métriques en ligne et les réseaux / médias sociaux
Les métriques en ligne et les réseaux / médias sociauxLes métriques en ligne et les réseaux / médias sociaux
Les métriques en ligne et les réseaux / médias sociauxAude Ducret
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes PratiquesEmmanuel Hugonnet
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014Benoît de CHATEAUVIEUX
 
Assurance Qualité S O A
Assurance Qualité  S O AAssurance Qualité  S O A
Assurance Qualité S O Aguestb55335
 
La mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devopsLa mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devopsOlivier Garcia
 
Audit technique de code
Audit technique de codeAudit technique de code
Audit technique de codeMehdi TAZI
 
Fonds de Tube emboutis ISO NFA 49185 et Métriques
Fonds de Tube emboutis ISO NFA 49185 et MétriquesFonds de Tube emboutis ISO NFA 49185 et Métriques
Fonds de Tube emboutis ISO NFA 49185 et MétriquesDVAI
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange LabsEmmanuel Hugonnet
 
Procédure de contrôle qualité
Procédure de contrôle qualité Procédure de contrôle qualité
Procédure de contrôle qualité Marwoua Ben Salem
 

Viewers also liked (20)

les metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitéles metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualité
 
Contrôle de la qualité logiciel
Contrôle de la qualité logicielContrôle de la qualité logiciel
Contrôle de la qualité logiciel
 
Normalisation des exigences système / logiciel
Normalisation des exigences système / logicielNormalisation des exigences système / logiciel
Normalisation des exigences système / logiciel
 
Le controle de qualite au laboratoire
Le controle de qualite au laboratoireLe controle de qualite au laboratoire
Le controle de qualite au laboratoire
 
La mesure logicielle
La mesure logicielleLa mesure logicielle
La mesure logicielle
 
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open source
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open sourceSoirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open source
Soirée Qualite Logicielle Paris JUG : Tour d'horizon des outils open source
 
Introduction à la qualité logicielle (1/5)
Introduction à la qualité logicielle (1/5)Introduction à la qualité logicielle (1/5)
Introduction à la qualité logicielle (1/5)
 
Developement logiciel: comment livrer de la qualite ?
Developement logiciel: comment livrer  de la qualite ?Developement logiciel: comment livrer  de la qualite ?
Developement logiciel: comment livrer de la qualite ?
 
Gestionnaires des ressources humaines
Gestionnaires des ressources humaines Gestionnaires des ressources humaines
Gestionnaires des ressources humaines
 
Développement efficace d'application logicielle
Développement efficace d'application logicielleDéveloppement efficace d'application logicielle
Développement efficace d'application logicielle
 
web sémantique et web social: deux étapes vers les données liées d'un web ubi...
web sémantique et web social: deux étapes vers les données liées d'un web ubi...web sémantique et web social: deux étapes vers les données liées d'un web ubi...
web sémantique et web social: deux étapes vers les données liées d'un web ubi...
 
Les métriques en ligne et les réseaux / médias sociaux
Les métriques en ligne et les réseaux / médias sociauxLes métriques en ligne et les réseaux / médias sociaux
Les métriques en ligne et les réseaux / médias sociaux
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
Assurance Qualité S O A
Assurance Qualité  S O AAssurance Qualité  S O A
Assurance Qualité S O A
 
La mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devopsLa mesure, ce n'est pas que pour le devops
La mesure, ce n'est pas que pour le devops
 
Audit technique de code
Audit technique de codeAudit technique de code
Audit technique de code
 
Fonds de Tube emboutis ISO NFA 49185 et Métriques
Fonds de Tube emboutis ISO NFA 49185 et MétriquesFonds de Tube emboutis ISO NFA 49185 et Métriques
Fonds de Tube emboutis ISO NFA 49185 et Métriques
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
Procédure de contrôle qualité
Procédure de contrôle qualité Procédure de contrôle qualité
Procédure de contrôle qualité
 

Similar to Metrique

Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 
Programmation linéniaire
Programmation linéniaire Programmation linéniaire
Programmation linéniaire Mohammed Zaoui
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptxMED B
 
Owf 2013 rii panorama leroy
Owf 2013 rii panorama leroyOwf 2013 rii panorama leroy
Owf 2013 rii panorama leroyPatrick MOREAU
 
Cours VB 2012 seance 1
Cours VB 2012 seance 1Cours VB 2012 seance 1
Cours VB 2012 seance 1ISIG
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetAmine Chkr
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap IInes Ouaz
 
Introduction au Génie Logiciel
Introduction au Génie LogicielIntroduction au Génie Logiciel
Introduction au Génie Logicielguest0032c8
 
Cours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdfCours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdfHailisara
 
Cours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.comCours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.commorin moli
 

Similar to Metrique (20)

Asd
AsdAsd
Asd
 
Ktab asd
Ktab asdKtab asd
Ktab asd
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Programmation linéniaire
Programmation linéniaire Programmation linéniaire
Programmation linéniaire
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptx
 
Methodo support
Methodo supportMethodo support
Methodo support
 
Owf 2013 rii panorama leroy
Owf 2013 rii panorama leroyOwf 2013 rii panorama leroy
Owf 2013 rii panorama leroy
 
Algorithme chap 1
Algorithme chap 1Algorithme chap 1
Algorithme chap 1
 
[FR] Papier Cetsis 2014 - PLC Checker
[FR] Papier Cetsis 2014 - PLC Checker[FR] Papier Cetsis 2014 - PLC Checker
[FR] Papier Cetsis 2014 - PLC Checker
 
Cours VB 2012 seance 1
Cours VB 2012 seance 1Cours VB 2012 seance 1
Cours VB 2012 seance 1
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception Objet
 
Uml
UmlUml
Uml
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
 
Introduction au Génie Logiciel
Introduction au Génie LogicielIntroduction au Génie Logiciel
Introduction au Génie Logiciel
 
Cours1.pptx
Cours1.pptxCours1.pptx
Cours1.pptx
 
Cours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdfCours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdf
 
Cours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.comCours sur les circuits logiques câblés www.cours-online.com
Cours sur les circuits logiques câblés www.cours-online.com
 

Metrique

  • 1. SUP’MANAGEMENT Les métriques de Qualité d’un Logiciel Présenter Par : Amine Aounzou 1 MQL
  • 2. Plan 2 1. Rappels : Qualité Logiciel 2. Introduction 3. Les Métriques de Qualité  Lines-Of-code (LOC)  McCabe cyclomatic number v(G)  Halstead’s metrics  Maintainability Index 4. Mesure de complexité avec Testwell CMT++ et Testwell CMTJava 5. Conclusion MQL
  • 3. Rappels : Qualité Logiciel La qualité d’un logiciel se mesure par rapport à plusieurs critères :  Répondre aux spécifications fonctionnelles :  Une application est créée pour répondre , tout d’abord, aux besoins fonctionnels des entreprises.  Les performances:  La rapidité d’exécution et Le temps de réponse  Doit être bâtie sur une architecture robuste.  Eviter le problème de montée en charge  La maintenance:  Une application doit évoluer dans le temps.  Doit être fermée à la modification et ouverte à l’extension  Une application qui n’évolue pas meurt.  Une application mal conçue est difficile à maintenir, par suite elle finit un jour à la poubelle. 3 MQL
  • 4. 4 Rappels : Qualité Logiciel  Sécurité  Garantir l’intégrité et la sécurité des données  Portabilité  Doit être capable de s’exécuter dans différentes plateformes.  Capacité de communiquer avec d’autres applications distantes.  Disponibilité et tolérance aux pannes  Capacité de fournir le service à différents type de clients :  Client lourd : Interfaces graphiques SWING  Interface Web : protocole Http  Téléphone : SMS  Design des ses interfaces graphiques  Charte graphique et charte de navigation  Accès via différentes interfaces (Web, Téléphone, PDA, ,)  Coût du logiciel MQL
  • 5. 5 Introduction La complexité de code a une influence directe sur la qualité et le coût d’un logiciel. Elle impacte sur la durée de vie et l’exploitation d’un logiciel, et plus particulièrement sur son taux de défauts, sa testabilité et sa maintenabilité. Une bonne compréhension et maîtrise de la complexité d’un code permet de développer un logiciel de meilleure qualité. MQL
  • 6. 6 Les métriques peuvent être classées en trois catégories : • celles mesurant le processus de développement • celles mesurant des ressources • et celles de l‘évaluation du produit logiciel Les métriques de produits mesurent les qualités du logiciel. Parmi ces métriques, on distingue :  les métriques traditionnelles  les métriques orientées objet. MQL Introduction
  • 7. 7 Les métriques orientées objet prennent en considération les relations entre éléments de programme (classes, méthodes). Les métriques traditionnelles se divisent en deux groupes :  les métriques mesurant la taille et la complexité complexité les plus connus sont les métriques de ligne de code ainsi que les métriques de Halstead  les métriques mesurant la structure du logiciel. comme la complexité cyclomatique de McCabe se basent sur des organigrammes de traitement ou des structures de classe. MQL Introduction
  • 8. 8 Les métriques des Lignes de code MQL
  • 9. Les métriques des Lignes de code 9 Les métriques des Lignes de code Pour quantifier la complexité d’un logiciel, les mesures les plus utilisées sont les lignes de code (LOC « lines of code ») puisqu’elles sont simples, faciles à comprendrent à compter. Cependant ces mesures ne prennent pas en compte le contenu d'intelligence et la disposition du code. On peut distinguer les types de métriques de lignes de code suivants :  LOCphy: nombre de lignes physiques (total des lignes des fichiers source) ;  LOCpro: nombre de lignes de programme (déclarations, définitions, directives, et code  LOCcom: nombre de lignes de commentaire ;  LOCbl: nombre de lignes vides (en anglais number of blank lines). MQL
  • 10. Quelles sont les limites acceptables ? 10 La longueur des fonctions devrait être de 4 à 40 lignes de programme. Une définition de fonction contient au moins un prototype, une ligne de code, et une paire d'accolades, qui font 4 lignes. En règle générale, une fonction plus grande que 40 lignes de programme doit pouvoir s’écrire en plusieurs fonctions plus simples. A toutes règles son exception, les fonctions contenant un état de sélection avec beaucoup de branches ne peuvent pas être décomposées en fonctions plus petites sans réduire la lisibilité La longueur d’un fichier devrait contenir entre 4 et 400 lignes de programme, ce qui équivaut déjà à un fichier possédant entre 10 et 40 fonctions. Un fichier de 4 lignes de programme correspond à une seule fonction de 4 lignes, c’est la plus petite entité qui peut raisonnablement occuper un fichier source complet. MQL
  • 11. 11 Un fichier de plus de 400 lignes de programme est généralement trop long pour être compris en totalité. Pour aider à sa compréhension, on estime qu’au minimum 30 % et maximum 75 % d'un fichier devrait être commenté. Si moins d'un tiers du fichier est commenté, le fichier est soit très trivial, soit pauvrement expliqué. Si plus de 75% du fichier est commenté, le fichier n'est plus un programme, mais un document. MQL Quelles sont les limites acceptables ?
  • 12. Le nombre Cyclomatique de Mc Cabe : v(G) 12 MQL
  • 13. 13 MQL Le nombre Cyclomatique de Mc Cabe : v(G) La complexité Cyclomatique (complexité de McCabe), introduite par Thomas McCabe en 1976, est le calcul le plus largement répandu des métriques statiques. Conçue dans le but d’être indépendante du langage, la métrique de McCabe indique le nombre de chemins linéaires indépendants dans un module de programme et représente finalement la complexité des flux de donnés. N=nombre de noeuds(blocs d instructions sequentiel) E=Nombre d arcs(branches suivies par le progmme) V=nombre cyclomatique
  • 14. 14 Le nombre Cyclomatique de Mc Cabe : v(G) Cas 2: I point d entrée S point de sortie MQL V(G)=e-n+i+s Exemple : If C1 then while(C2) loop X1 End loop Else X2 X3 n=5 , e=6 V(G)=3 NB:i=1 e s=1 Cas 1:1 point d entrée 1 point de sortie V(G)=e-n+2 C1 C2 X2 X3 X1
  • 15. 15 MQL Le nombre Cyclomatique de Mc Cabe : v(G) Une fonction devrait avoir une nombre cyclomatique inférieur à 15. Si une fonction a plus que 15 chemins d'exécution il est difficile à comprendre et à tester. Pour un fichier le nombre cyclomatique ne devrait pas dépasser 100.
  • 16. 16 Les Métriques de Halstead MQL
  • 17. 17 MQL Les Métriques de Halstead Les métriques de complexité de Halstead ont été développées par l’américain Maurice Halstead et procurent une mesure quantitative de complexité. Ils sont basées sur l’interprétation du code comme une séquence de marqueurs, classifiés comme un opérateur ou une opérande. Toutes les métriques de Halstead sont dérivées du nombre d’opérateurs et d’opérandes :  nombre total des opérateurs uniques (n1)  nombre total des opérateurs (N1)  nombre total des opérandes uniques (n2)  nombre total des opérandes (N2)
  • 18. Les Métriques de Halstead 18 Sur la base de ces chiffres on calcule : MQL  La Longueur du programme(N) : N = N1 + N2.  La Taille du vocabulaire(n) : n = n1 + n2 A partir de là, on obtient le Volume du Programme(V) en multipliant la taille du vocabulaire par le logarithme 2 : V = N * log2(n) Le volume d’une fonction devrait être compris entre 20 et 1000. Le volume d'une fonction,d'une ligne et sans paramètre, qui n'est pas vide est d'environ 20. Une fonction avec un volume supérieur à 1000 comporte probablement trop de choses. Le volume d'un fichier devrait être au minimum à 100 et au maximum à 8000.
  • 19. 19 Les Métriques de Halstead Le Niveau de difficulté (D) :ou propension d'erreurs du programme est proportionnel au nombre d’opérateurs unique (n1) dans le programme et dépend également du nombre total d’opérandes (N2) et du nombre d'opérandes uniques (n2). Si les mêmes opérandes sont utilisés plusieurs fois dans le programme, il est plus enclin aux erreurs. MQL D = ( n1 / 2 ) * ( N2 / n2 ) Le Niveau de programme (L) est l’inverse du Niveau de difficulté. Un programme de bas niveau est plus enclin aux erreurs qu'un programme de haut niveau. L = 1 / D L'Effort à l'implémentation (E) est proportionnel au volume (V) et au niveau de difficulté (D). Cette métrique est obtenu par la formule suivante : E = V * D
  • 20. 20 Les Métriques de Halstead Halstead a découvert que diviser l'effort par 18 donne une approximation pour le Temps pour implémenter (T) un programme en secondes. MQL T = E / 18 Il est même possible d’obtenir le « nombre de bugs fournis » (B) qui une estimation du nombre d'erreurs dans le programme. Cette valeur donne une indication pour le nombre d’erreurs qui devrait être trouver lors du test de logiciel. Le « nombre de bugs fournis » est calculé selon la formule suivante: B = ( E (2/3)) / 3000 Des expériences ont montré que un fichier source écrit en C ou C++ contient malheureusement très souvent plus d'erreurs que B ne suggère.
  • 21. 21 L’Index de Maintenabilité (MI) MQL
  • 22. 22 MQL L’Index de Maintenabilité (MI) L'index de maintenabilité permet d’évaluer lorsque le coût de la correction du logiciel est plus élevé que sa réécriture. Il est conseillé de réécrire des parties du logiciel avec une mauvaise maintenabilité afin d’économiser du temps et donc de l’argent lors de la maintenance. L'index de maintenabilité est calculé à partir des résultats de mesures de lignes de code, des métriques de Mc Cabe et des métriques de Halstead. Il y a trois variantes de l’index de maintenabilité :  la maintenabilité calculée sans les commentaires  la maintenabilité concernant des commentaires  l’Index de maintenabilité
  • 23. 23 MQL L’Index de Maintenabilité (MI) 1) la maintenabilité calculée sans les commentaires (MIwoc, Maintainability Index without comments): MIwoc = 171 - 5.2 * ln(aveV) -0.23 * aveG -16.2 * ln(aveLOC) Sachant que:  aveV = valeur moyenne du volume d’Halstead Volume (V) par module  aveG = valeur moyenne de la complexité cyclomatique v(G) par module  aveLOC = nombre moyen de lignes de code (LOCphy) par module 2) la maintenabilité concernant des commentaires (MIcw, Maintainability Index commentweight) : MIcw = 50 * sin(sqrt(2.4 * perCM))
  • 24. 24 MQL L’Index de Maintenabilité (MI) 3) l’Index de maintenabilité (MI, Maintainability Index) est la somme de deux précédents : MI = MIwoc + Micw La valeur du MI indique la difficulté (ou facilité) de maintenir une application. Si la valeur est 85 ou plus la maintenabilité est bonne. Une valeur entre 65 et 85 indique une maintenabilité modérée. Si l´index de maintenabilité est inférieur à 65, la maintenance est difficile. Il est donc préférable de re-écrire des parties « mauvaises » du code.
  • 25. Mesure de complexité avec Testwell CMT++ et Testwell CMTJava 25 Les outils Testwell CMT++ et Testwell /CMTJava permettent de mesurer la complexité du code. Grace à l’analyse des fichiers non-préprocessés les outils Testwell sont extrêmement rapide. Même des grands projets peuvent être analysés en quelques minutes. L’interface « Verybench » de Testwell CMT++/CMTJava permet d’obtenir différentes présentations de métriques pour développeurs, réviseurs, testeurs et le management. En plus des sorties textes, HTML, XML et CSV il est possible d’obtenir des rapports en PDF avec une présentation très claire qui permet de voir rapidement les défaillances de qualité. MQL
  • 26. Mesure de complexité avec Testwell CMT++ et Testwell CMTJava 26 MQL
  • 27. Mesure de complexité avec Testwell CMT++ et Testwell CMTJava 27 MQL
  • 28. Conclusions 28 Les métriques de ligne de code, le nombre cyclomatique de McCabe, les métriques de Halstead et l’index de maintenabilité sont des moyens efficaces pour mesurer la complexité, la qualité et la maintenabilité d’un logiciel. Ces métriques servent également à localiser les modules difficile à tester et à maintenir. Des actions correctives peuvent alors être enclenchées pour corriger une complexité trop élevée plutôt que de garder des modules susceptibles d’être cher en maintenance. MQL