User login |
Etude statistique de la fiabilité d'un fichier au sein d'une architecture logicielleL'analyse statistique de la fiabilité d'un fichier nécessite d'évaluer deux dimensions essentielles sur un nombre important de fichiers:
Une fois ces données collectées, le principe de l'analyse est simple : on calcule un modèle statistique qui explique au mieux la première dimension par la seconde. On procède donc en trois étapes. Premièrement, on lance un programme, svnSniffer, qui lit le dépôt SVN d'un projet, et qui, pour chaque fichier commité, compte le nombre de fois où il est marqué "buggé". On a donc une mesure - approximative, mais c'est mieux que rien - de la fiabilité d'un fichier. Deuxièmement, le svnSniffer lance le logiciel Php_Depend qui calcule différentes métriques(*) , les récupère et stocke le tout dans une base de données. Troisièmement, on construit un modèle statistique (modèle de Poisson) qui explique au mieux le nombre de fois où un fichier commité est marqué "buggé" en fonction des métriques calculées par Php_Depend. Les résultats de cette analyse sont présentés dans un histogramme représentant les effets - positifs ou négatifs - des quatre variables (métriques) les plus significatives pour expliquer le niveau de fiabilité d'un fichier, dont voici un exemple pour le logiciel Typo3 (écrit en PHP). On présente également l'histogramme de la répartition du nombre de bugs pour ce logiciel ainsi que la représentation des fichiers qui le constituent dans le plan des deux facteurs principaux dégagés par le modèle.
On peut y distinguer deux choses en particulier : le nombre de contributeurs par fichier est fortement corrélé avec les bugs alors que ce sont les commentaires qui indiquent le mieux la corrélation inverse. Bref sur Typo3 mieux vaut ajouter des commentaires qu'augmenter le nombre de contributeurs. On verra d'autres projets par la suite... NB : la variable "comments" est ici le ratio du nombre de lignes de codes commentées par le nombre de lignes non commentées. Cela indique donc une importance relative des commentaires vis-à-vis du "code pur", et permet de mesurer l'effet d'un code abondamment - ou peu - commenté sur la fiabilité d'un fichier. (*) Les métriques calculées par phpDepend et leurs définitions sont disponibles à l'adresse http://www.manuel-pichler.de/pages/php_depend.html En voici le détail : ClassLevel (Class)
CodeRank (Class, Package)Une adaptation de l'algorithme PageRank de Google pour des classes et des packages.
Coupling (Project)
Cyclomatic Complexity (Project, Method, Function)
Dependency (Package)Pour avoir plus de détails, voir How reusable, extensible and maintainable is your software?.
Hierarchy (Project)
Inheritance (Project)
NodeCount (Project, Package, Class, Interface)
NodeLOC (Project, Package, Class, Interface, Method, Function)
|