MÉTHODOLOGIE DE LA RECHERCHE
Introduction
Les méthodes utilisées dans la priorisation des tests aujourd’hui ne permettent pas de capturer les deux facteurs qui affectent le risque qui sont le nombre de fautes et leurs niveaux de sévérité respectifs. C’est dans ce contexte que nous utilisons une nouvelle définition du risque qui englobe ces deux entités. Nous avons utilisé un ensemble de données provenant du système ANT écrit en Java pour construire différents modèles de risque. Dans une première phase, on s’est intéressés à la classification binaire des classes fautives. Dans une seconde étape, nous avons investigué la prédiction de niveaux de sévérité des bogues. Nous avons utilisé l’échelle qualitative suivante pour la classification des fautes selon leur gravité : normale, élevée ou ne contient pas de fautes . Comme dernière phase, nous avons exploré le potentiel de la prédiction de risque. Dans ce qui suit, nous allons exposer nos questions de recherche et les détails de notre méthodologie de recherche.
Questions de Recherches
Dans cette étude, nous voulons répondre aux questions de recherche suivantes :
QRl : Le modèle de risque mentionné précédemment est-il adapté pour prédire l’existence de fautes logicielles?
Étant donné que l’utilisation d’un tel modèle de risque n’a pas encore été largement investiguée pour la prédiction de fautes , nous avons décidé de vérifier s’il peut réaliser une bonne performance.
QR2 : Une imbrication de modèles de risque (une combinaison de variantes du modèle de base) peut-elle effectuer une meilleure prédiction de l’occurrence de fautes logicielles?
L’hypothèse que nos modèles de risque à deux dimensions ne contiennent pas suffisamment d’informations pour nous donner des informations précieuses sur les fautes n’est pas à écarter. Afin de contrer cela, ou de l’améliorer, nous investiguons également des modèles de risque multidimensionnels où nous imbriquons une combinaison de modèles de risque à deux dimensions.
QR3 : Les modèles de risque mentionnés peuvent-ils prédire les niveaux de sévérité des fautes?
Le modèle de risque considéré n’a jamais été utilisé séparément, ni pour la classification binaire des classes fautives et encore moins pour la prédiction du niveau de sévérité des fautes. Nous avons alors décidé d’explorer son potentiel pour la prédiction de la gravité des fautes avec deux niveaux de gravité : élevée et normale ou pas sujettes à contenir des fautes.
QR4 : Une imbrication des modèles de risque mentionnés précédemment peut-elle améliorer la prédiction de la gravité des fautes ?
Dans un souci d’amélioration, nous avons creusé également l’utilisation de modèles de risque multidimensionnels pour la prédiction de la sévérité.
QR5: Notre modèle de risque peut-il prédire le risque des classes logicielles et nous donner des informations à la fois sur le nombre de fautes, mais aussi leurs niveaux de sévérité ?
Présentation des Données
Sous le format d’un fichier Excel, nous disposons d’un ensemble de données décrivant différentes versions du système ANT (http://ant.apache.org/), de la version 1.3 à la version 1.7, où chaque classe est décrite par le nombre de fautes qu’elle contient, leur niveau de gravité respectif qui peut être soit: bloquant, critique, majeur, normal, mineur ou trivial. Également, ce qui nous intéresse, les métriques orientées objet que nous avons exposées précédemment. Pour les nommer, il s’agit de : WMC, LOC, CBO, Ce, Ca, Fan-in et pour finir RFC.
Le tableau suivant décrit les différentes versions du système ANT utilisées et met en évidence le nombre de classes, classes défectueuses et le ratio de classes fautives avant et après la duplication de fautes [9]. La duplication de fautes est une méthodologie simple qui consiste à dupliquer les classes qui comprennent plus d’une faute autant de fois qu’elles présentent de fautes.
Construction des Modèles de Risque
À partir des données présentées ci-dessus, nous avons construit un ensemble de modèles de risque tel que défini dans la thèse de F. Touré [10J. Nous avons sélectionné différentes combinaisons de métriques en respectant la disposition suivante : en prenant ml une métrique qui décrit le mieux la probabilité de présence de faute, ces études [9, 15, 58, 59J attestent que ce sont les métriques de taille et de complexité qui jouent ce rôle, et m2 une métrique qui représente l’impact des fautes. Les études [60J et [61J mentionnent que les métriques de couplage accomplissent cette tâche. On peut donc diviser les métriques orientées objet en deux grandes familles comme l’illustre la figure suivante .
Prétraitements et Préparation des Données
La majorité, si ce n’est pas tous, des algorithmes de forage de données traitent les données sous forme d’une matrice unique appelée ‘Mining View’ dans le jargon du domaine des sciences de données. Toutefois, les données obtenues au début d’un projet ne sont pas nécessairement dans ce format . En outre, les ensembles de données contiennent fréquemment des valeurs manquantes, combinaisons de données impossibles et hors intervalles. Il Y a aussi certains algorithmes qui sont compatibles avec seulement quelques types d’attributs uniquement. Certaines données pourraient alors être incompatibles avec certains algorithmes. Le prétraitement des données [62] comprend le nettoyage, la normalisation, la transformation, l’extraction de caractéristiques, la sélection d’attributs et ainsi de suite. L’étape de prétraitement de données pourrait prendre jusqu’à 80% du temps et des ressources d’un projet de science des données. Heureusement, il existe des outils qui pourraient nous aider à éviter les situations de GIGO (Garbage In Garbage Out) sous la forme de filtres généralement.
En termes de prétraitement des données, les opérations suivantes ont été effectuées sur chaque version de ANT :
• Regroupement des bogues bloquants, critiques et majeurs pour former les fautes de sévérité élevée. D’un autre côté, les fautes de sévérité normale, mineure et triviale formeront les fautes de sévérité normale.
• Binarisation du nombre de fautes d’une classe donnée dans un nouvel attribut appelé « BugsBinary », c’est-à-dire 0 signifie que la classe est faiblement défectueuse et 1 fortement défectueuse.
• Dans un souci de compatibilité lors de l’utilisation des algorithmes d’apprentissage automatique, la transformation du filtre type nominal a été appliquée à la classe (attribut) à prédire.
• Afin d’améliorer les résultats de la prédiction, une normalisation linéaire a été réalisée sur les modèles pour obtenir des valeurs dans l’intervalle [-1, 1].
• Nous explorons également la contribution de techniques de stratification comme l’oversampling en appliquant le filtre Smote 35-65 % comme indiqué dans [63] et la duplication des classes fautives.
Machine Learning
Dans cette section, nous présentons une brève description des algorithmes de Machine Learning que nous avons utilisés en nous aidant de l’API de Weka [64] pour le langage Java. Les algorithmes d’apprentissage machine sont communément utilisés en classification des classes fautives afin d’appréhender les relations entre la métrique du code source (attributs) et les défauts (la classe à prédire ou le target). Ces algorithmes passent par une première phase d’entrainement en utilisant les ensembles de données des métriques et des fautes. Dans notre étude, nous avons utilisé les algorithmes d ‘apprentissage suivants: Naïve Bayes (NB) , J48, Random Forest (RF) , Support Vectors machines (SVM) et Multilayer Perceptron (ANN).
|
Table des matières
1 INTRODUCTION
1.1 Introduction
1.2 Problématique
1.3 Organisation du Mémoire
2 ÉTAT DE L’ART: un Aperçu
2.1 Introduction
2.2 Métriques Orientées Objet
2.2.1 Métriques de complexité
2.2.2 Métriques de taille
2.2.3 Métriques de couplage
2.2.4 Response For Class
2.3 Solutions Existantes
2.3.1 Seuils des métriques
2.3.2 Classification binaire
2.3.3 Niveau de sévérité
2.4 Limitations
2.5 Piste Potentielle
2.6 Conclusion
3 MÉTHODOLOGIE DE LA RECHERCHE
3.1 Introduction
3.2 Questions de Recherches
3.3 Présentation des Données
3.4 Construction des Modèles de Risque
3.5 Prétraitements et Préparation des Données
3.6 Machine Learning
3.6.1 Naïve bayes
3.6.2 Arbres de décisions
3.6.3 Machines à vecteurs de support
3.6.4 Réseaux de neurones artificiels
3.7 Méthodes d’Évaluation
3.7.1 10-Fold validation
3.7.2 G-mean
3.7.3 Area un der the curve
4 EXPÉRIMENTATIONS ET RÉSULTATS
4.1 Introduction
4.2 Classification Binaire
4.2.1 Description de l’expérimentation
4.2.2 Rappel des questions de recherche
4.2 .3 Résultats
4.2.4 Discussion
4.3 Détection du Niveau de Sévérité
4.3.1 Introduction
4.3.2 Rappel des questions de recherche
4.3.3 Détection des fautes de sévérité normale
4.3.4 Détection des fautes de sévérité élevées
4.3.5 Détection du niveau de sévérité des fautes
4.3.6 Conclusion
4.4 Prédiction de Risque
4.4.1 Introduction
4.4.2 Rappel des questions de recherche
4.4.3 Définition du risque empirique
4.4.4 Modèle de risque multidimensionnel
4.4.5 Description de l’expérimentation
4.4.6 Résultats
4.4.7 Conclusion
5 DISCUSSIONS ET CONCLUSION
5.1 Menaces de Validité
5.1.1 Risques de validité externes
5.1.2 Risques de validité internes
5.1.3 Risques de validité conceptuelle
5.2 Conclusion et Perspectives
BIBLIOGRAPHIE
ANNEXE A Classification Binaire
ANNEXE B Prédiction des Fautes de Sévérité Normale
ANNEXE C Prédiction des Fautes de Sévérité Élevée
ANNEXE D Prédiction du Niveau de Sévérité
ANNEXE E Prédiction de Risque
Télécharger le rapport complet