Abstract
Software systems have become bigger and more complex than
ever. Such characteristics make it very difficult to prevent software defects.
The discovery of software defects at an early stage plays an important role in
improving the quality of the software; reduces the time and effort that should
be spent on software development. Various approaches have been proposed to
identify and correct such defects at minimal cost. However, the performance of
these approaches requires significant improvement. Therefore, in this work, we
propose a novel SFP-NN approach that takes advantage of deep learning
techniques to predict faults in software systems. First, we start with a
preprocessing phase of the publicly available dataset. Second, we perform data
modeling to prepare the input data for the deep learning model. Third, we feed
the modeled data to a convolutional neural network-based model to predict the
probability of defects. To validate our approach, the experiments are carried
out on fourteen (14) data sets from NASA and SOFTLAB. Experimental results
showed that, in the majority of databases, SFP-NN performed better compared to
other machine learning techniques.
Keywords: Software Fault Prediction,
Machine Learning, Deep Learning, Convolutional Neural Network,
Classification.
VII
Table de matières
Table des matières
Remerciment II
Dédicace III
Résumé IV
ÕÎáã V
ABSTRACT VI
Table de matières VII
Liste des figures X
Liste des tables XI
Liste des abréviations XII
Introduction générale 1
Chapitre 1 :Prédiction des défauts
logiciels 5
1. Introduction 6
2. Étude sur la prédiction des défauts
logiciels 6
2.1. Définition 6
2.2. Processus de prédiction des défauts logicie
7
2.2.1. Base de données des défauts logiciels 8
2.2.2. Phase de prétraitement 8
2.2.3. Phase d'apprentissage des données 8
2.2.4. Phase de prédiction des défauts 9
3. État de l'art 9
3.1. Questions de recherche 9
4. Conclusion 19
Chapitre 2 : Apprentissage automatique 20
1. Introduction 21
2. Apprentissage supervisé 21
2.1. Définition 21
2.2. Les techniques d'apprentissage supervisé 22
2.2.1. Machine à vecteur support 22
2.2.2. Réseau de neurone artificiels 24
2.2.3. Les forêts d'arbre décisionnels 24
3. Apprentissage non supervisé 25
3.1.Définition 25
3.2. Les techniques d'apprentissage non supervisé 26
VIII
Table de matières
3.2.1. L'algorithme k-moyennes 26
3.2.2. Classification hiérarchique 27
3.2.3. Algorithme d'espérance maximisation 27
4. Apprentissage profond 28
4.1. Définition 28
4.2. Les réseaux de neurones convolutifs 28
4.2.1. Présentation 29
4.2.2. Blocs de construction 30
4.2.2.1. Couche de convolution 30
4.2.2.2. Couche de pooling 32
4.2.2.3. Couche de correction 33
4.2.2.4. Le flattening 34
4.2.2.5. Couche entièrement connecté 35
4.2.2.6. Couche de perte 35
4.2.3. Choix des hyperparamètres 36
4.2.3.1.Nombre de filtres 36
4.2.3.2. Forme de filtres 36
4.2.3.3. Forme du maxpooling 36
5. Conclusion 37
Chapitre 3 : SFP-NN Apprentissage profond pour la
prédiction des défauts logiciels 38
1. Introduction 39
2. Approche proposée 39
2.1. La base de données NASA et SOFTLAB 40
2.1.1. Présentation des bases de données 43
2.1.2. Les métriques de la NASA MDP et SOFTLAB 42
2.2. Normalisation 46
2.3. Prédiction utilisant CNN 47
2.4. Choix des hyperparamètres 48
3. Conclusion 50
chapitre 4 : Implémentation 51
1. Introduction 52
2. Implémentation du SF-NN proposé 52
2.1. Environnement de développement 52
2.1.1. Langage de développement python 52
2.1.1.1.Caractéristiques du langage de
développement python 52
2.1.1.2.Bibliothèques utilisées de python 53
2.1.2. Environnement google colab 54
2.2. Présentation de déroulement de l'application
55
2.2.1. Importation des bibliothèques 55
2.2.2. Description de la base de données utilisée
56
2.2.3. Prétraitement des données 57
2.2.4. Apprentissage et création du modèle CNN
58
3. Résultats obtenus 59
IX
Table de matières
3.1.La précision et la perte du SFP-NN proposé
59
3.2. Matrice de confusion 64
3.3. Calcul de l'AUC 67
4. Comparaison de l'approche proposée 70
4.1. Les paramètres expérimentaux 70
4.2. Résultats obtenus 70
4.3. Discussions 73
5. Conclusion 74
Conclusion générale 75
Bibliographie 77
X
Liste des Figures
Liste des Figures
Figure 1.1 : Processus de prédiction de défauts
logiciel. 7
Figure 1.2 : Métriques OO utiles pour la
prédiction des défauts logiciels. 12
Figure 1.3 : Ensembles de données pour la
prédiction des défauts logiciels. 13
Figure 2.1 : Processus d'apprentissage supervisé 22
Figure 2.2 : Séparateur à vaste marge. 23
Figure 2.3 : Réseaux de neurones artificiels. 24
Figure 2.4 : Les Forêts d'Arbres Décisionnels.
25
Figure 2.5 : Apprentissage non supervisé. 26
Figure 2.6 : Architecture de réseau de neurones
convolutifs. 30
Figure 2.7 : Couche de convolution. 31
Figure 2.8 : L'opération de convolution. 31
Figure 2.9 : Type de pooling. 33
Figure 2.10 : La fonction d'activation ReLU 34
Figure 2.11 : Mise à plat des images finales. 35
Figure 3.1 : Schéma du SFP-NN proposé. 40
Figure 3.2 : La carte thermique de quelques bases de
données de la NASA. 46
Figure 3.3 : Architecture de réseau CNN. 47
Figure 4.1 : Google Collab. 55
Figure 4.2 : Importation des bibliothèques. 56
Figure 4.3 : Base de données PC1. 56
Figure 4.4 : Base de données AR1. 56
Figure 4.5 : Lecture de l'ensemble de données. 57
Figure 4.6 : Préparation des données . 57
Figure 4.7 : Partitionnement d'ensemble de données.
58
Figure 4.8 : Le code du CNN. 59
Figure 4.9 : La précision et le taux de perte de notre
modèle CNN. 64
Figure 4.10 : Matrices de confusions obtenues. 66
Figure 4.11 : Présentation des courbes ROC des
différentes bases de données. 70
XI
Liste des Tables
Liste des Tables
Table 1.1 : Question de recherches 10
Table 1.2 :Matrice de confusion 14
Table 1.3 :Prédiction des défauts logiciels :
état de l'art 17
Table 3.1 : Présentation de l'ensemble de
données utilises 42
Table 3.2 : Description de l'ensemble de données
utilises 42
Table 3.3 : Les paramétres du classifieur CNN
utilisé 50
Table 4.1 : Performance des prédicteurs utilisant CNN
sur les données de la NASA et SOFTLAB
59
Table 4.2 : Le réseau de neurones convolutifs
résultats obtenus 67
Table 4.3 :Résultats obtenus du classifieur svm 71
Table 4.4 : Résultats obtenus du classifieur Foret
aléatoire 71
Table 4.5 : ésultats obtenus du classifieur
Régression logistique 72
Table 4.6 : Comparaison de l'approche proposé avec les
techniques traditionelles d'apprentissage
automatique 73
XII
Liste des abréviations
La liste des abréviations
IA Intelligence Artificial
ML Machine Learning
SFP Software fault prediction
SFP-NN Software fault prediction-neural
network
CNN Les réseaux de neurones
convolutif.
DL Deep Learning
MDP Metrics data program
ANN Artificiel neural network
SVM Support Vector Machines.
RF Random Forest
LR Logestique regression
NB Naïve bayes
EM Des algorithmes de maximisation de
l'espérance.
RNN Le reseau neuronal récurrent.
TN True Négative
FP False Positive
TVP Taux de vrais positifs
DNN Deep neural network
ReLu Unité Linéaire
Rectifiée
AUC Area Under curv
LOC Ligne of code
MLP Multi Layers Perceptron
NN Neural network
OO Orienté objet
Introduction Générale 1
|