LES MÉTRIQUES
Les métriques d'un logiciel sont différentes mesures de propriété d'un logiciel. Les mesures sont primordiales en génie logiciel. Elles permettent d'estimer les coûts, les échéanciers et les ressource ce qui permet de définir un coût approximatif pour le système à créer. Nous allons discuter un peu des métriques pouvant être évaluées. Il est donc indispensable d'avoir de bonnes méthodes de travail ainsi que de bons logiciels pour mesurer un logiciel. Nous n'allons pas nous attarder énormément sur la théorie, car des outils existent pour effectuer ces tâches.Différentes types de mesure
Source lines of code Source lines of code (SLOC)
C'est le nombre de ligne de code du programme. Une telle mesure permet d'estimer l'effort nécessaire pour développer le logiciel. Ça permet d'aussi de connaître l'étendu du logiciel. Il y a deux types de mesure pour le SLOC.- Physique
- Logique
Physique
Le type physique compte ce qui indépendant du langage de programmation: les commentaires, interligne.Logique
Le type logique compte le nombre de commande, il est dépendant du langage utilisé. Par exemple en c, pascal, Java on pourrait avoir une idée en comptant le nombre de «;». Windows 3.1 a environ un SLOC de 3 millions tandis que celui de Windows XP tourne autour de 40 millions. Le noyau de Linux 2.4 tourne autour de 4 millions. Ce chiffre n'est que pour le noyau et non le gui et cie tel que les chiffres présentés pour Windows.Un programme ayant un SLOC élevé, sera habituellement plus long à faire, coûteux et nécessitera une bonne gestion.
La complexité cyclométrique
C'est le niveau de complexité de l'application, plusieurs critères déterminent cette complexité: flux de contrôle, flux de données, structure de donnée. Cette mesure détermine le nombre de chemin indépendant dans un algorithme. Plus qu'il y a de chemin, plus la complexité est élevée. Ce nombre détermine aussi la quantité de tests à effectuer si on désire tester toutes les possibilités. Un graphe de contrôle doit être créé afin de pouvoir déterminer la complexité structure du graphe.- n = Nombre de noeuds
- e = Nombre d'arcs
- v = Nombre cyclomatique
if(x) while(y) b; else z; a;
Voici un petit diagramme pour illustrer ce code
Il y a donc 5 noeuds et 6 arcs: n=5, e=6. Il y a 1 point d'entrée et 1 point de sortie. 5-6 + 1 + 1 = 3. Un nombre supérieur entre 30 et 50 comment à être très élevé. Des erreurs peuvent être aisément commises et les tests seront plus complexes à réaliser. Il y a quand même des exceptions, par exemple le switch disponible dans quelques langages... même si le nombre cyclomatique peut être élevé dans cette commande, sa compréhension est fort simple. L'exemple ci-dessus est simple, mais permet de se faire une idée de l'approche. De toute façon, ce genre de calcul est donné à des logiciels qui se chargent d'analyser le code source.
Point de fonction
Les points de fonctions sont utilisés lorsqu'on veut estimer la dimension du projet, le temps de développement ainsi que l'effort pour un projet. Cette méthode consiste à calculer le nombre d'entrée, sortie, interrogation et donnée (interne et externe).Les entrées
C'est les données qui entrent dans l'application. Ceci peut représenter des données matérielles : écran, cd... ou logiciel: paramètre, variable...Les sorties
C'est les données qui sortent de l'application.Les interrogations
C'est un mélange d'entrée et de sortieLes niveaux de complexité
Un niveau de complexité doit être déterminé pour chaque composant: faible, moyen et élevé. Un nombre est attribué pour faible, moyen et élevé.Calcul des points de fonction | ||||
Type de composant | Complexité | Nombre | Total | Total pour le composant |
Entrée | Faible | *4= | ||
Moyen | *5= | |||
Élevée | *6= | |||
Sortie | Faible | *4= | ||
Moyen | *5= | |||
Élevée | *6= | |||
Interrogations | Faible | *4= | ||
Moyen | *5= | |||
Élevée | *6= | |||
Nombre de point de fonction |
Depth of inheritance Tree
C'est la profondeur de la classe au niveau de l'héritage. Plus une méthode se situe à un niveau inférieur plus que son nombre de méthode et d'attributs son élèvé. La structure devient alors très complexe. Les erreurs peuvent être très difficiles à trouver dans un système avec énormément d'héritage. De plus, si des changements doivent être faits, ils peuvent avoir des impacts un peu partout au niveau des classes.Number of Children (NOC)
C'est le nombre d'enfants d'une classe.Il y a beaucoup de réutilisation lorsque le nombre d'enfants est élevé. Il peut aussi y avoir un problème au niveau de la classe de base. Des méthodes ont mal été définies, son niveau d'abstraction est trop bas ou trop élevé. Tel que dit précédemment s'il y a beaucoup d'enfants, beaucoup d'héritage a lieu, ce qui rend le système plus complexe à comprendre, à tester.Coupling between Objects (CBO)
C'est le complage de classe. Le nombre de classes qu'une classe utilise. Lorsque beaucoup de classe est utilisée dans une classe, il y a peu de modularité et donc le risque de réutilisation devient faible. C'est aussi un signe que notre classe peut avoir mal été pensé.Un CBO faible est un indice qu'une classe est réutilisable aisément.Mesure pour un projet
Les métriques ne s'applique pas uniquement sur les systèmes informatiques. Ils sont très important aussi pour le domaine de la gestion. Connaissant l'expériences des programmeurs, analystes, ils peut être possible de déterminer le nombre de jour homme pour le développement concernés. Une complexité peut être assigné à chaque module à développer. La même stratégie peut être assigné à la correction de problème. La mesure de la complexité à résoudre le problème ainsi que le degré de sévérité permettent d'assigner les bonnes ressources aux problèmes. L'outils Bugzilla offre différents diagrammes et de rapport concernant les problèmes du système. C'est un outils indispensable pour la phase de test.Logiciel pour les métriques
Divers outils existent pour les métriques dont plusieurs pour Java, en voici quelques-uns.JStyle
PMD
JDepend