• Aucun résultat trouvé

Mesure du produit logiciel

N/A
N/A
Protected

Academic year: 2022

Partager "Mesure du produit logiciel"

Copied!
21
0
0

Texte intégral

(1)

IFT3913

Qualité du logiciel et métriques

Chapitre 7

Mesure du produit logiciel

2

Plan du cours

„

Introduction

„

Modèles de processus du développement du logiciel

„

Théorie de la mesure

„

Qualité du logiciel

„

Mesure de la qualité du logiciel

„

Études empiriques

„

Mesure du produit logiciel

„

Collection et analyse des métriques

(2)

3

Introduction

„

De nombreux travaux montrent que les attributs internes du produit logiciel ont un impact sur ses attributs externes

– Une bonne structure interne donne une bonne qualité du produit

– Agir sur la structure interne permet de contrôler la qualité du produit

„

Les attributs internes peuvent être mesurés très tôt dans le cycle de développement

– Grâce à la prédiction, des actions correctives peuvent-être entreprises, réduisant ainsi les coûts de maintenance

Attributs internes

Taille, couverture, … Données de test

Taille, réutilisation, modularité, couplage, cohésion, fonctionnalité, complexité algorithmique, structuration du flot de contrôle, …

Code

Taille, réutilisation, modularité, couplage, cohésion, fonctionnalité, …

Conception

Taille, réutilisation, modularité, fonctionnalité, redondance, …

Spécification

Attributs internes (exemples) Produit

(3)

5

Taille

„

Historiquement, un des premiers aspects mesurés du logiciel

„

Similaire à l’attribut taille d’un humain (attributs grandeur, poids)

„

Par analogie, les attributs important de la taille sont

– Taille physique – Fonctionnalité – Complexité

6

Taille: taille physique

„

C’est la taille physique d’un produit

„

Elle peut être mesurée aussi bien au niveau du code qu’au niveau de la spécification ou de la conception

„

Code

– La mesure la plus utilisée est le Nombre de Lignes de Code

– Mesure ambiguë : différentes façons de la mesurer

• Inclusion ou non des commentaires et des déclarations

• Comment compter si une ligne qui contient plusieurs instructions

(4)

7

Taille: taille physique

„

Code (suite)

– La définition la plus répondue est

« Est considérée comme ligne de code toute ligne qui ne soit pas un commentaire ni une ligne vide.

Le nombre d’instructions ou de parties d’instructions n’est pas important » Ceci inclut les entêtes de programmes, les

déclarations et les instructions (exécutables et non exécutables)

– Cette mesure est désignée par NCLOC (Non- Comment Lines Of Code)

Taille: taille physique

„

Code (suite)

– Le nombre de commentaires peut être mesuré par le nombre de lignes de commentaires (CLOC) – La taille physique totale est donc

LOC = NCLOC + CLOC – On peut ainsi mesurer la densité de

commentaires par CLOC/LOC

– LOC peut être plus pratique à utiliser que NCLOC

• Elle est plus facile à extraire

• Elle renseigne sur le nombre de pages pour imprimer le programme, l’espace nécessaire pour le stockage et la

(5)

9

Taille: taille physique

„

Code (autres mesures)

– Le nombre d’octets nécessaires au stockage du programme

• Mesure indépendante du type de langage

• Facile à extraire

– Le nombre de caractère CHAR est une autre mesure de la taille physique

• Facile à extraire

• Peut être une base pour le calcule de LOC LOC = CHAR/α

oùαest le nombre moyen de caractères par ligne de texte

10

Taille: taille physique

„

Code (autres mesures)

– Le nombre d’instructions livrées (DSI)

• Mesure dépendante du langage de

programmation

(6)

11

Taille: taille physique

„

Spécification et conception

– Il est très difficile de trouver une mesure similaire à LOC ou CHAR

– La nature des documents est très variée et il est difficile de déterminer les types

d’objets atomiques à compter (comme les caractères ou les lignes dans le cas du code)

– Les documents sont composés de texte et de diagrammes

Taille: taille physique

„

Spécification et conception

– Dans l’industrie, une mesure utilisée est le nombre de page

• Avantage : uniformise le texte et les diagrammes

• Inconvénient : comment gérer les pages contenant du texte et des diagrammes – Une idée serait de mesurer le texte et

trouver une unité de mesure pour les

diagrammes

(7)

13

Taille: taille physique

„

Spécification et conception

– DeMarco propose une méthode de développement du logiciel mettant en œuvre 3 vues

– Cette méthode permet de bien identifier les objets atomiques

– Aucune mesure de taille physique n’est cependant définie

États, transition État/Transition

États

Entités, relations Entité/Relation

Données

Ellipses

Éléments de données Flot de données

Dictionnaire de données Fonctionnelle

Objets atomiques Diagramme

Vue

14

Taille: taille physique

„

Prédiction

– Il est très utile de prédire la taille physique du code (LOC) très tôt dans le cycle de

développement

– Soit α le ratio d’expansion obtenu à partir de données historiques

– Soit Si la taille de conception d’un module i – LOC peut être estimer par la formule suivante

conception taille

code taille

_

= _ α

=

= m

i

Si

LOC

1

α

(8)

15

Taille: taille physique

„

Prédiction

– α dépend de chaque organisation – Une autre façon de prédire LOC a été

proposé par Walston & Felix

D est la taille de la documentation en pages et L la taille du code en milliers de LOC

01 .

49L

1

D =

Taille: fonctionnalité

„

Intuitivement, c’est le nombre de fonctions fournies dans le logiciel

„

Il existe deux travaux reconnus pour la mesure de la fonctionnalité

– Les points de fonctions (Albrecht) – Les métriques BANG (DeMarco)

„

L’objectif de ces deux travaux est de produire

des mesures de taille qui permettent de bien

prédire le coût et l’effort de développement

(9)

17

Taille: fonctionnalité

„

Points de fonctions

– L’objectif est de mesurer la quantité de fonctionnalité offerte par un logiciel à partir de sa spécification

– Pour calculer le nombre de points de fonctions FP (function points), il faut d’abord calculer le compte de fonctions non ajusté UFC (unadjusted function count)

18

Taille: fonctionnalité

„

Points de fonctions

– Pour calculer UFC, il faut déterminer à partir d'une certaine représentation du logiciel, le nombre d'éléments des types suivants

Entrées externes: éléments de données fournis par l'utilisateur (tels que des noms de fichiers et des sélections de menus). Ceci n’inclus pas les requêtes de l’utilisateur

Sorties externes : éléments de données fourni à l'utilisateur (tels que les états et les messages)

Requêtes externes : entrées interactives exigeant une réponse

Fichiers externes : interfaces compréhensibles par une machine avec d'autres systèmes

Fichiers internes : Fichiers principaux logiques dans le système

(10)

19

Taille: fonctionnalité

„

Points de fonctions

– Exemple (vérificateur d’orthographe) – Spécification :

• Le vérificateur accepte en entrée un fichier document et optionnellement un fichier dictionnaire personnel

• Le vérificateur affiche tous les mots qui ne sont ni dans le fichier dictionnaire, ni dans le fichier dictionnaire personnel

• L’utilisateur peut à tout moment demander le nombre de mots traités et le nombre d’erreurs trouvées durant le processus de vérification

Taille: fonctionnalité

„

Points de fonctions

„ # entrées externes = 2

„ # sorties externe = 3

„ # requête externes = 2

Vérificateur

Utilisateur Utilisateur

Dictionnaire

Requête # erreurs

Requête # mots traités

Fichier document

Fichier dictionnaire personnel

Message # mots traités

Message # erreurs trouvées à date

Rapport des mots erronés Contenu du dictionnaire

(11)

21

Taille: fonctionnalité

„

Points de fonctions – Complexité subjective

• Échelle ordinale

• Valeurs : simple, moyen et complexe

• Les entreprises ont développé des heuristiques pour affecter une valeur à un type.

– Facteur de pondération (fpond)

• Un coefficient qui correspond à une combinaison (type d’éléments – complexité subjective)

complexe Moyen

simple

10 7

5 Fichiers internes

15 10

7 Fichiers externes

6 4

3 Requêtes externes

7 5

4 Sorties externes

6 4

3 Entrées externes

Facteur de pondération Types d’éléments

22

Taille: fonctionnalité

„

Points de fonctions – Calcul de UFC

– Exemple (Vérificateur)

• Quelle est la valeur de UFC si tous les éléments sont de complexité moyenne ?

• Quelle est la valeur de UFC si le fichier dictionnaire était complexe

) _ (

* ) _ _ _

15

(

1

i fpond i

type éléments Nb

UFC

i

=

=

(12)

23

Taille: fonctionnalité

„

Points de fonctions

– Calcul du nombre de points de fonction FP

– Facteur de complexité technique (TFC)

• C’est un facteur d’ajustement de UFC dans une plage de

±35% (0.65 <=TFC<=1.35)

• Facteurs influençant la complexité TFC

UFC FP = *

F14 Facilité de changement F13 Sites multiples

F12 Facilité d’installation F11 Facilité de Réutilisation

F10 Traitements complexes F9 Interface complexe

F8 Mise à jour en ligne F7 Facilité d'opération

F6 Saisie de données en ligne F5 Configuration très utilisée

F4 Exigences de performances F3 Fonctions distribuées

F2 Communication de données F1 Back-up fiable et récupération

Taille: fonctionnalité

„

Points de fonctions

– Facteur de complexité technique

• Calcul de TFC

Pour chaque facteur on attribue une valeur dans une échelle ordinale (0,1,2,3, 4,5) où 0 veut dire que le facteur est non pertinent et 5 veut dire essentiel

( =0.65 si tous les Fi=0 et 1.35 si tous les Fi=5)

=

+

= 14

1

01 . 0 65 . 0

i

Fi TFC

(13)

25

Taille: fonctionnalité

„

Les métriques BANG (DeMarco)

– Deux métriques Bang selon le type du système

• Fonctions

• Données

– La métrique Bang fonctions

• Consiste à compter les nombre de processus de bas niveau dans le DFD

• Ce comptage de base est pondéré en fonction du type de processus et du nombre de nœuds données utilisés par le processus

- La métrique Bang données

• Consiste à compter les nombre d’entités dans le ERD

• Ce comptage de base est pondéré en fonction du nombre de relations impliquant chaque entité

26

Structure du flot de contrôle

„

De nombreux travaux sur les métriques ont porté sur la structure du flot de contrôle

„

Graphe de flot de contrôle – Graphe orienté

• nœud = instruction du programme

• Arc = le flot de contrôle entre une instruction et une autre

– Autre concepts

• Degré_entrée d’un nœud = nombre d’arcs incidents

• Degré_sortie d’un nœud = nombre d’arcs sortants

• Nœud procédure = un nœud de degré_sortie 1

• Nœud prédicat = un nœud de degré_sortie > 1

• Chemin = une séquence d’arcs consécutifs

• Chemin simple = une séquence d’arcs consécutifs sans répétition

(14)

27

Structure du flot de contrôle

„

Exemple de graphe de flot de contrôle

10 lire p 20 lire e 30 Cal := 1 40 Si e ~= 0 alors 50 Tant que e > 0 faire 60 cal := cal * p 70 e := e - 1 80 Fin_faire 90 Fin_si 100 écrire cal 110 fin

10 20 30 40

90

50 60 70 80

100 110

Structure du flot de contrôle

„

Graphe de flot de contrôle

P0 P2 Pn

Séquence n a

A T F D0

If a than A

a A

T F

D1

If a than A else B B

a A1

1 n

Cn

Case a of 1 : A1

2 : A2

n : An An A2 2

a T

F F

D2 D3 a

(15)

29

Mesure de la complexité

„

Complexité cyclomatique de McCabe

– Pour un graphe de flot de contrôle F comportant n nœuds (dont d nœuds prédicats) et e arcs, il existe trois façons de la mesurer

V(F) = e – n + 2

V(F) = 1 + d

V(F) = r (r est le nombre de régions de F)

30

Mesure de la complexité

„

Complexité cyclomatique de McCabe

– Exemple

10 20 30 40

90

50 60 70 80

100 110 v(F) = 12 – 11 + 2

= 1 + 2

= 3

(16)

31

Couplage

„

Définition

– C’est le degré d’interdépendance entre modules

„

Types de couplage entre deux modules x et y (du moins mauvais au plus mauvais)

– Pas de couplage (R0) : Indépendant

– Couplage de données (R1) : x, y communiquent avec des paramètres

– Couplage de signature (R2) : x, y acceptent le même type d'enregistrement comme paramètre

– Couplage de contrôle (R3) : x passe un paramètre à y qui influence le contrôle

– Couplage par variables globales communes (R4) : x et y accèdent à la même donnée globale

– Couplage de contenu (R5) : x modifie des données ou des instructions à l'intérieur de y

Couplage

„

Graphe de couplage

(3,2)

(3,2) (5,1)

(2,2) (2,2)

Relation de couplage (signatures)

Occurrences

M1

M3 M4

M2

Module

) 1 ,

( = + +

n i n y x c

3

Mesure de couplage

i est la pire relation de couplage et n le nombre d’interconnexions entre x et y

(17)

33

Couplage

„

Mesure de couplage – c(x,y) est de type ordinal

– Soit un système S comportant les modules M

1

, …, M

m

, comment définir une mesure global du

couplage C(S) ?

{

c M M i j m

}

S

C( )est la valeur médianedel'ensemble ( i, j):1≤ ≤ ≤

– D’autres mesures de couplage pour un module x existent. Par exemple, le nombre maximum, le nombre moyen et le nombre total d’interconnexions

34

Cohésion

„ Définition

– La cohésion d'un module est le degré de participation des composants à la même tâche

„ Types de cohésion (du plus désirable au moins désirable) – Fonctionnelle : le module effectue une seule fonction bien définie.

– Séquentielle: le module effectue plus d'une fonction, mais dans l'ordre défini par la spécification

– Communicationnelle: le module effectue plusieurs fonctions toutes sur le même ensemble de données

– Procédurale : le module effectue plusieurs fonctions appartenant au même processus

– Temporelle: le module effectue plusieurs fonctions intervenant toutes dans le même laps de temps.

– Logique: le module effectue plusieurs fonctions liées logiquement – Cohésion par coïncidence: le module effectue plusieurs fonctions

sans aucune liaison entre elles

(18)

35

Cohésion

„

Un module peut avoir plusieurs types de cohésion

„

On caractérise un module par sa moins désirable cohésion

„

La mesure de cohésion est de type ordinale

„

La cohésion d’un système peut être mesuré comme suit

module de total nb

lle fonctionne cohésion

une ayant modules de cohésion nb de

Ratio =

Les métriques orientées objet

„

La majorité des métriques proposées sont destinées au paradigme

procédural

„

Elles ne s’appliquent pas au paradigme des objets

„

Des métriques spécifique OO ont été proposées ces dernières années

„

Les plus connues sont celles de

Chidamber et Kamerer

(19)

37

Les métriques orientées objet

„

Depth of Inheritance Tree (DIT) – Définition:

• Profondeur de la classe dans l'arbre d'héritage. En cas d'héritage multiple, DIT vaudra la profondeur maximale depuis la classe racine jusqu'à la classe mesurée

– Considérations:

• Plus une classe se situe profondément dans l'arbre d'héritage, plus le nombre de méthodes et de comportements, dont elle hérite, sera grand. Ceci rendra son comportement d'autant moins prévisible.

• Plus un arbre est profond, plus la conception est complexe

• Plus une classe se situe profond dans l'arbre d'héritage, plus il est probable qu'elle réutilise des méthodes héritées

38

Les métriques orientées objet

„

Number Of Children (NOC) – Définition:

• Nombre de descendants immédiat de la classe dans la hiérarchie de classe.

– Considérations:

• Plus le nombre d'enfants est élevé plus la réutilisation effective est importante, car l'héritage est une forme de réutilisation

• Plus le nombre d'enfants est élevé, plus le risque d'une utilisation inadéquate du mécanisme de l'héritage est grand. On pourra alors se trouver face à soit une mauvaise abstraction pour la classe de base

• Le nombre d'enfants donne une idée de l'influence potentielle d'une classe sur la conception. Si une classe a un nombre important d'enfants, elle pourra requérir d'avantage d'efforts de test

(20)

39

Les métriques orientées objet

„

Weighted Methods per Class (WMC) – Définition:

• Somme pondérée des complexités des méthodes d'une classe. Si toutes les méthodes d'une classe sont de complexité 1

– Considérations:

• Le nombre et la complexité des méthodes d'une classe est un bon indicateur du temps à passer pour

développer et maintenir une classe.

• Plus on a de méthodes dans une classe, plus l'impact pourra être grand sur les classes enfants via l'héritage.

• Les classes qui ont un grand nombre de méthodes complexes sont en général plus spécifiques à l'application et donc moins réutilisables.

Les métriques orientées objet

„

Coupling Between Objects (CBO) – Définition:

• Nombre d'autres classes auxquelles une classe est couplée. Deux classes sont dites couplées si une méthode de l'une utilise une méthode ou un attribut de l'autre

– Considérations:

• Un couplage excessif entre classes se fait au détriment de la modularité et empêche la réutilisation.

• Pour promouvoir l'encapsulation, le couplage entre classe devrait être minimal. Plus une classe est couplée à d'autres classes, plus une modification de cette classe peut influencer de classes.

• Une mesure du couplage est importante pour déterminer

(21)

41

Les métriques orientées objet

„

Response For a Class (RFC) – Définition:

• RFC vaut la cardinalité de l'ensemble de réponse d'une classe. L'ensemble de réponse d'une classe est l'ensemble des méthodes qui peuvent être directement appelée lors de l'exécution de n'importe quelle méthode de cette classe (= réponse à un message).

– Considérations:

• Si un grand nombre de méthodes peuvent être appelées en réponse à un message, le test et le débogage d'une classe deviennent plus compliqués, car ils requièrent un niveau de compréhension plus élevé de la part du testeur

• La complexité d'une classe est d'autant plus élevée qu'elle peut appeler un grand nombre de méthodes

42

Les métriques orientées objet

„

Lack of COhesion in Methods (LCOM) – Définition:

• LCOM compte le nombre de paires de méthodes qui n’accèdent pas aux même attributs diminué du nombre de paires de méthodes qui accèdent aux même attributs (= 0 si la différence est négative)

– Considérations:

• Une forte cohésion est signe d’une bonne encapsulation

• Une faible cohésion suggère qu’une classe doit être décomposée en 2 ou plusieurs classes

• Toute mesure de disparité entre les méthodes aide à trouver les fautes de conception

• Une faible cohésion augmente la complexité et par conséquent la probabilité d’existence d’erreurs dans le processus de développement

Références

Documents relatifs

Mill partage avec les utilitaristes le même refus de penser l’être humain à partir d’une morale transcendante ou a priori (intuitionniste). Il n’y a pas de phénomènes moraux en

Nous vous recommandons d’enlever vos bijoux pour les soins et de les ranger dans le coffre de votre chambre. Nous déclinons toute responsabilité en cas de perte ou de vol

3- Ne cessant d’améliorer notre commande, nous avons constaté qu’un phénomène d’oscillation de l’eau autour d’un niveau provoque de nombreux démarrage et arrêt

n  Positionnement du test dans le cycle de vie du logiciel n  Test et méthodes agiles.. n  Qu’est-ce que

[r]

[r]

[r]

Je cherche le plus grand nombre entier pair s’écrivant avec 4 chiffres différents qui respecte les conditions suivantes : La somme des 4 chiffres est 6... Je cherche le plus