Next: La fonctionnalité
Up: Chapitre 3 : Mesure
Previous: Chapitre 3 : Mesure
Mesurer la taille est essentiel pour mesurer :
- L'effort
- La productivité
- Le coût
- Le nombre de lignes ne peut pas être utilisé pour
refléter tous ces aspects.
- Ce n'est pas une raison pour rejeter la mesure des nombres de
lignes.
La taille peut être mesurée au moyen de 3 attributs:
- La longueur
- La fonctionnalité
- La complexité
La complexité
- La complexité des problèmes.
- La complexité des algorithmes.
- La complexité de la structure.
- La complexité Cognitive.
La longueur
On peut parler de longueur du code ou des spécifications.
En ce qui concerne le code:
- LOC = NCLOC + CLOC
- LOC = Nombre total des lignes (sans les lignes blanches).
- NCLOC = Nombre de lignes sans les commentaires ni les lignes
blanches.
- CLOC = Nombre de lignes de commentaires.
- Le taux de commentaires CLOC/LOC.
- Le nombre d'octets nécessaires pour stocker le texte source.
- Le nombre de caractères : CHAR =
LOC
La longueur
Pourquoi mesure-t-on la longueur:
- Mesurer l'importance des projets: petits/grands/moyens.
- Mesurer la productivité.
- Observer la tendance de l'évolution de la taille de projets
dans le temps.
- Comparaison de la longueur des modules au sein d'un même
projet.
- Influence de la longueur d'un module sur le nombre d'erreurs.
Exemple
with TEXT_IO; use TEXT_IO;
procedure Main is
-This program copies characters from an input
-file to an output file. Termination occurs
-either when all characters are copied or
-when a NULL character is input
Nullchar, Eof: exception;
Char : Character;
Input_file, Output_file, Console: FILE_TYPE;
Begin
loop
Open (FILE => Input_file, MODE => IN_FILE,
NAME => "CharsIn");
Open(FILE => Output_file, MODE => OUT_FILE,
NAME => "CharOut");
Get (Input_file, Char);
if END_OF_FILE (Input_file) then
raise Eof;
elseif Char = ASCII.NUL then
raise Nullchar;
else Put(Output_file, Char);
end if;
end loop;
exception
when Eof => Put (Console, "no null characters");
when Nullchar => Put (Console, "null terminator");
end Main
- 29 : nombre total de lignes (y compris les lignes blanches).
- 27 : nombre de toutes les lignes sauf les lignes blanches.
- 23 : nombre de toutes les lignes sauf les lignes blanches et les
commentaires.
- 16 : nombre de lingnes sauf lignes blanches, commentaires,
déclarations et entêtes.
- 20 : nombre de toutes les instructions sauf les commentaires.
- 13 : nombre des instructions sauf les commentaires, les
déclarations et les entêtes.
- 6 : nombre des instructions exécutables (n'incluant pas les
exceptions).
Ces mesures s'appliquent à differents types de code:
- Le code développé.
- Le code généré par des générateurs automatiques de
code source.
- Le code généré par des traducteurs automatiques.
- Le code ré-utilisé sans modification.
- Le code utilisé avec adaptation.
- Est-ce qu'on doit mesurer la longueur du
code qui n'a pas été livré?
- Comment mesurer le code d'un programme orienté-objet?
- Comment mesurer le code dans certains environnements comme
Visual Basic?
- Comment prendre en compte des composants reutilisés?
L'approche de Halstead
Problèmes de l'approche de Halstead
Les résultats empiriques de la science de Halstead ne sont pas
satisfaisants.
- L'objectif de la mesure de la longueur n'est pas clairement
déterminé.
- Les termes effort et temps de développement ne sont pas
clairement définis.
- La définition de ce que sont les opérateurs et les
opérandes n'est pas très claire.
- Il y a des écarts très important en ce qui concerne
l'estimation du temps par rapport à l'effort.
La longueur des spécifications
- Pour les spécifications et les analyses conceptuelles, nous
avons une combinaison de texte et de diagrammes.
- La longueur pourrait être mesurée par :
- Le nombre de pages du document.
- Une paire de nombres: la longueur du texte et la longueur du
diagramme.
- La longueur d'un diagramme est mesurée en termes d'objets
atomiques.
- Les objets atomiques des diagrammes de flot de données sont
les cercles (représentant les fonctions), les rectangles
(représentant les entités externes, les rectangles ouverts
(représentant les unités de stockage) et les arcs (représentant
les flots de données).
- Les entités atomiques des spécifications algébriques sont
les sortes, les fonctions, les opérations.
- Les objets atomiques d'un diagramme entités-relations sont les
entités et les relations.
- Les objets atomiques d'un automate (diagramme de transitions
d'états) sont les états et les transitions.
L'estimation de la longueur
La ré-utilisation
- La ré-utilisation est de plus en plus utilisée.
- Elle augmente la qualité (réduction des défauts).
- Elle augmente la productivité.
- Elle réduit le délai de livraison ou time to market.
Réutilisation chez Hatton:
- pour 7 produits (en 1995) le taux de réutilisation varie entre
35% et 50%.
Mesurer en présence de
ré-utilisation
Pour mesurer la longueur du code, spécification ou analyse
conceptuelle en présence de réutilisation, il faut estimer le
degré de réutilisation:
- Ré-utilisation verbatim (aucune modification).
- Légèrement modifié: le code ré-utilisé est modifié
à moins 25% des lignes.
- Enormément modifié: le code est modifié à plus de 25%
des lignes.
- Produit nouveau: aucune ré-utilisation.
Next: La fonctionnalité
Up: Chapitre 3 : Mesure
Previous: Chapitre 3 : Mesure
Nadia Tawbi
Wed Feb 19 20:44:46 EST 1997