Introduction générale
Contexte Général
Au cours des deux dernières décennies, la
demande de logiciels pour diverses applications a augmenté rapidement.
Pour répondre à la demande des clients, une énorme
quantité d'applications logicielles sont développées
à des fins d'entreprise ou d'utilisation quotidienne. En raison de la
production de masse d'applications logicielles, la qualité des logiciels
reste un problème non résolu qui donne des performances
insatisfaisantes pour les applications industrielles et individuelles. Par
conséquent, pour résoudre ce problème, des tests logiciels
sont introduits, ce qui aide à trouver les défauts ou les bogues
dans l'application logicielle et tente de les résoudre.
La complexité croissante des logiciels modernes a accru
l'importance de la fiabilité des logiciels. La création des
logiciels hautement fiables nécessite une quantité
considérable des tests et de débogage. Cependant, en raison du
budget et du temps limités, ces efforts doivent être
priorisés pour améliorer l'efficacité. En effet, la
présence de fautes dans un système logiciel dégrade non
seulement sa qualité, mais augmente également le coût de
son développement et de sa maintenance. Par conséquent, un
processus automatisé de test logiciel est requis, ce qui peut
entraîner une amélioration des performances et une minimisation
des coûts de mise en oeuvre. Pour cela les techniques de
prédiction des défauts logiciels qui prédit
l'apparition
Introduction Générale 2
d'erreurs ont été largement utilisées
pour aider les développeurs à déterminer la
priorité des tests et du débogage.
La prédiction des défauts logiciels est le
processus de création des classifieurs pour prédire si des
défauts existent dans une zone spécifique du code source. Du
point de vue de la granularité de la prédiction, la
prédiction des défauts logiciels peut inclure la
prédiction des défauts au niveau de la méthode, de la
classe, du fichier, du package et du changement. Pour la recherche actuelle,
nous nous sommes concentrés sur la prédiction des défauts
au niveau du fichier, car il existe une grande quantité de
données étiquetées. La prédiction typique des
défauts logiciels se compose de deux phases : l'extraction des
caractéristiques à partir d'artefacts logiciels tels que le code
source et la création des modèles de classification à
l'aide de divers algorithmes d'apprentissage automatique pour la formation et
la validation. La prédiction des défauts logiciels basée
sur les techniques d'apprentissage automatique a gagné un grand
intérêt et des résultats prometteurs ont été
obtenus. Cependant, ces méthodes traditionnelles d'apprentissage
souffrent de quelques lacunes. Récemment, dans le domaine de la
prédiction des défauts logiciels et dans le but de palier aux
problèmes des techniques traditionnelles d'apprentissage automatique,
les schémas basés sur l'apprentissage profond ont fourni des
performances significatives.
Depuis l'avènement d'AlexNet [14]en
2012, l'apprentissage en profondeur a été largement
utilisé dans des domaines tels que la reconnaissance d'images, la
reconnaissance vocale et le traitement du langage naturel, en effet,
L'apprentissage en profondeur surmonte la communauté de l'IA en
apportant des améliorations pour résoudre des problèmes
auxquels on résiste depuis de nombreuses années. Il introduit
plus de succès à l'avenir car il nécessite très peu
d'ingénierie à la main. L'apprentissage profond est
dérivé de l'apprentissage automatique où la machine est
capable d'apprendre par elle-même, qui est basé sur l'idée
des réseaux de neurones profonds. Il est devenu une technique puissante
pour la génération automatisée de caractéristiques,
car l'architecture d'apprentissage en profondeur peut capturer efficacement des
caractéristiques non linéaires très complexes. Un an plus
tard, la méthode de pointe exploitant le réseau de neurones
convolutifs (CNN) a été proposé pour apprendre la
sémantique du code source via des programmes AST [15],
qui se sont avérés surpasser les approches
traditionnelles basées sur les caractéristiques dans la
prédiction des défauts logiciels.
Introduction Générale 3
Le problème de prédiction des défauts
logiciels est devenu un sujet de recherche remarquable, attirant
l'intérêt des chercheurs. Un modèle de prédiction de
défaut logiciel peut être utilisé pour classer les modules
logiciels en défectueux ou non.
Motivation
La prédiction des défauts logiciels vise
à identifier les modules logiciels sujets aux pannes en utilisant
certaines propriétés sous-adjacentes du projet logiciel avant le
début du processus de test proprement dit. Que ce soit dans le domaine
du génie logiciel ou de la recherche, la maîtrise des
défauts est un aspect important.
Un grand nombre de recherches ont discuté les avantages
de l'utilisation de techniques d'apprentissage automatique pour la
prédiction des défauts logiciels telles que la machine à
vecteurs de support, le réseau de neurones artificiels, l'arbre de
décision, etc. Cependant, ces algorithmes présentent des limites
en raison de : (i) des connaissances d'experts sont nécessaires pour
traiter les données, (ii) Un niveau, comparativement
élevé, d'interaction humaine avec des experts est requis et (iii)
une quantité massive de données d'apprentissage est
nécessaire pour le bon fonctionnement du système, ce qui peut
devenir difficile dans un environnement dynamique. Pour répondre aux
restrictions ci-dessus, un sous-ensemble plus prometteur de l'apprentissage
automatique, l'apprentissage en profondeur, a été adopté
pour améliorer la prédiction et a permet d'obtenir des
performances remarquables.
Notre motivation dans cette recherche consiste à
introduire un nouveau modèle de prédiction des défauts
logiciels basé sur une technique avancée de l'apprentissage
automatique qui est l'apprentissage profond. Ce dernier offre des informations
précieuses sur prédiction des défauts logiciels et
l'ambiguïté afin d'obtenir la qualité, la
maintenabilité et la réutilisabilité des logiciels. Notre
intention est de pallier aux inconvénients des modèles de
classification classiques et des modèles basés sur le niveau de
sévérité et à orienter les tests plus
efficacement.
Contribution
Afin de répondre aux problèmes cités
ci-dessus et en vue de réaliser un système de prédiction
de défauts logiciels qui permet de classer aisément les anomalies
présentent dans les logiciels. Un système de prédiction de
défauts logiciels est proposé pour prédire les pannes
logicielles utilisant la technique de réseau de neurones convolutifs.
Nous visons par cette
Introduction Générale 4
proposition de mesurer l'efficacité des algorithmes
d'apprentissage en profondeur pour la prédiction de défauts
logiciels et déterminer la meilleure qualité d'algorithme. La
technique sera utile aux développeurs et aux testeurs pour se concentrer
sur le code, ce qui finira par réduire les coûts de test et de
maintenance tout en contribuant à l'amélioration du logiciel et
à la fiabilité de l'ensemble du produit.
Organisation du mémoire
Notre mémoire se subdivise en quatre chapitres auxquels
s'ajoutent une conclusion et quelques perspectives pour de futures extensions
:
Le première chapitre « Prédiction
des défauts logiciel », est consacré à la
présentation de la prédiction de défauts logiciel (sa
définition, ses composants, avantages ...), en dressant les états
de l'art des travaux proposés.
Dans Le deuxième chapitre « Apprentissage
automatique », nous présentons quelques définitions
formelles et essentielles pour comprendre l'apprentissage automatique en
passant par les différents types des techniques supervisés et non
supervisés. Nous introduisons aussi l'apprentissage en profondeur et
nous discutant en détail la description des réseaux de neurones
convolutifs comme étant un outil de classification puissant.
Dans Le troisième chapitre « SFP-NN :
Apprentissage profond pour la prédiction des défauts logiciels
» nous présentons les détails de notre approche
proposée ainsi que les ensembles de données qui ont
contribués à l'évaluation et la validation de l'approche.
En décrivons l'approche proposée par notre travail.
Le quatrième chapitre et le dernier chapitre
« Implémentation », présentera une
implémentation de système de prédiction de défauts
logiciel en utilisant le CNN comme méthode de classification.
Commençant par la description et la présentation de
l'environnement de développement, le langage de programmation et les
bibliothèques utilisées. Les résultats obtenus par notre
système seront présentés dans ce chapitre ainsi que les
comparaisons réalisées avec d'autres techniques traditionnelles
de l'apprentissage automatique.
Nous clôturons par une conclusion qui souligne
l'avantage de l'approche proposée tout en discutant les résultats
obtenus et sans oublier les perspectives à donner à ce
travail.
Chapitre 01 : Prédiction des
défauts logiciels
Chapitre 01 : Prédiction des défauts logiciels 5
Chapitre 01 : Prédiction des défauts logiciels
6
1. Introduction
Le développement des logiciels de haute qualité
est l'un des défis les plus importants pour les ingénieurs en
logiciel. Pour cela, le développement de logiciels doit passer par une
séquence d'activités sous certaines contraintes pour proposer des
logiciels fiables et de haute qualité. Pendant les phases de conception
ou de développement, certains défauts peuvent être
passés au niveau suivant sans les détecter et les corriger. Par
conséquent, la qualité du logiciel va être affectée
ce qui va générer par la suite un produit final peu fiable qui
n'acquière pas non plus la satisfaction du client. Il est donc important
et bénéfique de ne pas simplement détecter l'occurrence du
défaut mais aussi de les prédire afin d'empêcher le
défaut avant qu'il ne devient réel.
La prédiction des défauts logiciels est un
domaine économiquement important en génie logiciel depuis plus de
20 ans. Un module défectueux dans un logiciel entraîne des
coûts de réparation et de développement
élevés et réduit la qualité du logiciel. La
prédiction des défauts logiciels est l'une des modèles de
qualité qui aident à conduire sainement le cycle de vie du
développement logiciel, en effet, trouver et corriger des erreurs peut
coûter beaucoup d'argent. Par conséquent, il est très
pratique de vérifier les défauts du logiciel.
Dans ce chapitre nous allons discuter la prédiction
des défauts logiciels ainsi que les principaux composants des
systèmes de prédiction. Par la suite, nous allons
présenter et discuter les travaux d'état de l'art
proposés.
2. Étude sur la prédiction des
défauts Logiciels 2.1. Définition
La prédiction des défauts logiciel est une
activité très importante et essentielle afin d'améliorer
la qualité du logiciel et réduire l'effort de maintenance avant
le déploiement du système. La prédiction des
défauts logiciels vise à prédire les modules logiciels
sujets aux pannes en utilisant certaines propriétés sous-jacentes
du projet logiciel [1]. Il est généralement effectué en
entrainant un modèle de prédiction à l'aide des
caractéristiques de projet inconnu, puis en utilisant le modèle
de prédiction pour prédire les défauts de projets
inconnus. Donc la prédiction des défauts logiciels est
basée sur la compréhension que si un projet
développé dans un environnement conduit à des
défauts, alors tout module développé dans
l'environnement
Chapitre 01 : Prédiction des défauts logiciels
7
similaire avec des caractéristiques de projet
similaires finira par être défectueux. La détection
précoce des modules défectueux est très utile pour
rationaliser les efforts à appliquer dans les phases ultérieures
du développement logiciel en concentrant mieux les efforts d'assurance
qualité sur ces modules[1]. La figure 1.1 donne un aperçu du
processus de prédiction des défauts logiciels.
Figure 1.1. Processus de prédiction de défauts
logiciel [1]. 2.2. Processus de prédiction des défauts
logiciels
La figure 1 donne un aperçu du processus de
prédiction des défauts logiciels avec les composants importants
du processus. Dans une première étape, les données de
défaillance logicielles sont collectées à partir des
référentiels de projets logiciels contenant des données
liées au cycle de développement du projet logiciel telles que :
le code source, les journaux de modification et les informations de
défaillance sont collectées à partir des
référentiels de défauts correspondants. Ensuite, les
valeurs de diverses mesures logicielles (par exemple, LOC, complexité
cyclomatique, etc.) sont extraites, qui fonctionnent comme des variables
indépendantes et les informations de défaut requises par rapport
à la prédiction de défaut (par exemple, le nombre de
défauts, défectueux et non défectueux) fonctionnent comme
la variable dépendante.
En règle générale, des techniques
statistiques et des techniques d'apprentissage automatique sont
utilisées pour créer des modèles de prédiction des
pannes. Enfin, les performances du modèle de prédiction construit
sont évaluées à l'aide de différentes mesures
d'évaluation des performances telles que l'exactitude, la
précision, le rappel et l'AUC (Area Under the Curve). En plus de la
brève discussion sur ces composants susmentionnés de la
Chapitre 01 : Prédiction des défauts logiciels
8
prédiction des défauts logiciels, les sections
à venir présentent des revues détaillées sur les
composants de ce processus. [1]
2.2.1. Base de données des défauts
logiciels
L'ensemble de données de défaut logiciel, qui
sert de base de données d'apprentissage et de base de données de
test dans le processus de prédiction de défaut logiciel, se
compose principalement de trois parties: Un ensemble de mesures logicielles,
des informations sur les défauts, telles que les défauts de
chaque module et des méta-informations sur le projet.
L'ensemble de données des défauts logiciels agit
comme un ensemble de données d'apprentissage et un ensemble de
données de test pendant le processus de prédiction des
défauts logiciels. [2]
2.2.2. Phase de prétraitement
Le prétraitement des données de surveillance de
l'état est une étape très importante et fondamentale lors
du développement du systèmes de modèles de données.
La phase de prétraitement des données comprend la
préparation et la transformation des données pour un traitement
simple et efficace sur des outils logiciels pour la prédiction [3]
Les attributs de chaque jeu de données ont
été chargés sur des feuilles de calcul Excel et
enregistrés sous forme de fichiers .CSV pour être
exécutés par la suite dans des environnements tels que : WEKA [4]
...etc.). Les valeurs manquantes vont être éliminées du
traitement ultérieur. Cette phase aboutie à des données
d'apprentissage propres pour un traitement ultérieur à l'aide
d'algorithmes de sélection et de classification des
caractéristiques.[3]
2.2.3. Phase d'apprentissage des
données
L'idée de lancer une étape de
prétraitement est pour préparer les données pour la phase
d'apprentissage. Les données sont divisées en deux parties : une
partie d'apprentissage et une partie de test. L'étape d'apprentissage
utilise des techniques d'apprentissage
Chapitre 01 : Prédiction des défauts logiciels
9
automatique pour entrainer le modèle sur les
données entrées au système. Contrairement, l'étape
de test est utilisée pour évaluer les performances des
modèles entraînés. [5]
Après avoir partitionné les données
d'apprentissage en un ensemble d'apprentissage et de test, un modèle de
prédiction des défauts logiciels est construit en utilisant les
ensembles de données de la même ou de différentes versions
du projet logiciel ou des projets logiciels différents
(prédiction des défauts entre projets). Un modèle de
prédiction des défauts logiciels est utilisé pour classer
les modules logiciels en catégories défaillantes ou non
(classification binaire), pour prédire le nombre de défauts dans
un module logiciel ou pour prédire la gravité des défauts.
Diverses techniques d'apprentissage automatique et statistiques peuvent
être utilisées pour créer des modèles de
prédiction de défauts logiciels. [5]
2.2.4. Phase de prédiction des
défauts
Dans ce type de schéma de prédiction des
défauts, les modules logiciels sont classés en classes
défaillantes ou non défaillantes. Généralement, les
modules ayant un ou plusieurs défauts marqués comme
défectueux et les modules ayant zéro défaut marqués
comme non défectueux. Il s'agit du type de schéma de
prédiction le plus fréquemment utilisé. [1]
3. Etat de l'art
Dans cette section nous allons présenter quelques
travaux de prédictions des défauts logiciels utilisant des
techniques d'apprentissage automatique. Mais avant cela, nous allons
répondre sur quelques questions principales de recherches qui sont
fréquemment posées lors de développement d'un
système de prédiction.
3.1. Questions de recherche
La table 1.1 présente six questions de recherches
abordées lors de la réalisation de notre système. Nous
avons identifié les techniques d'apprentissage automatique
utilisées pour prédire les défauts logiciels (RQ1),
analysé ces études en utilisant les techniques d'apprentissage
automatique pour la prédiction des défauts logiciels afin
répondre à RQ2, RQ3, RQ4, RQ5 et RQ6. Cette section
détermine les métriques les plus utilisées, les
métriques utiles, les mesures de performance utilisées, et enfin,
nous avons mentionné les forces et les faiblesses des techniques
d'apprentissage automatique. [6]
Chapitre 01 : Prédiction des défauts logiciels
10
TABLE 1.1. QUESTIONS DE RECHERCHES
RQ #
|
Questions de recherche
|
Motivation
|
RQ1
|
Quelles techniques d'apprentissage Automatique ont
été utilisées pour la prédiction des défauts
logiciels ?
|
Identifier les techniques d'apprentissage
qui sont utilisés dans la prédiction des
défauts logiciels.
|
RQ2
|
Quelles métriques sont couramment utilisées
dans la prédiction des défauts logiciels ?
|
Identifier les métriques couramment utilisées pour
la prédiction des défauts logiciels.
|
RQ3
|
Quelles métriques sont utiles pour la prédiction
des défauts logiciels ?
|
Identifier les métriques
Signalées comme approprié pour la prédiction
des défauts logiciels.
|
RQ4
|
Quelles bases de données sont utilisés pour la
prédiction des défauts logiciels?
|
Identifier les ensembles de données Déclarés
approprié pour la prédiction des défauts logiciels .
|
RQ5
|
Quelles mesures de performance sont utilisées pour la
prédiction des défauts logiciels ?
|
Évaluer la performance d'apprentissage automatique
techniques pour
|
RQ6
|
Quelles sont les forces et les faiblesses des techniques
d'apprentissage automatique ?
|
Déterminez les informations sur techniques d'apprentissage
automatique.
|
RQ1 : Quelles sont les techniques
d'apprentissage automatique qui ont été utilisées pour la
prédiction des défauts logiciels ?
Chapitre 01 : Prédiction des défauts logiciels
11
Les techniques d'apprentissage automatique utilisées
pour la prédiction des défauts définie comme suit :
· Arber de décision (DT)
· Apprenants Bayésiens (BL)
· Apprenants ensemble (EL)
· les réseaux de neurones (NN)
· Machine à vecteur de support (SVM)
· Apprentissage basé sur des règles (RBL)
· Algorithmes évolutionnaires (EA)
· Divers (Miscellaneous)
RQ2 : Quelles métriques sont couramment
utilisées dans la prédiction des défauts logiciels ?
Afin de prédire la propension aux pannes [6], les
études primaires utilisent des mesures logicielles comme variables
indépendantes. Il existe un certain nombre de mesures utilisées
dans le domaine du génie logiciel pour quantifier les
caractéristiques d'un logiciel. Nous définissons la
catégorisation des études primaires sélectionnées
en fonction du type de métrique utilisé par ces études
pour prédire la sensibilité aux pannes comme suit :
· Études utilisant des métriques
procédurales : Ces études utilisent des métriques
qui incluent les métriques de code statique traditionnelles qui sont
définies par Halstead et McCabe ainsi que les métriques de taille
telles que la métrique LOC (Lines of Code). [6]
· Études utilisant des métriques
orientées objet : Ces études utilisent des
métriques qui mesurent divers attributs d'un logiciel orienté
objet (OO) comme la cohésion, le couplage et l'héritage pour une
classe orienté objet. Bien que LOC soit une métrique
traditionnelle, de nombreuses études incluent également LOC ou
SLOC (Source Lines of Code) tout en utilisant des métriques
orienté objet [6]
· Études utilisant des métriques
hybrides : Certaines études utilisent à la fois des
métriques orienté objet et des métriques
procédurales pour la prédiction de défauts.
· Mesures diverses (Miscellaneous): ces
études incluent des mesures telles que les mesures d'exigence, les
mesures de changement, les mesures de réseau extraites du graphique de
dépendance, les mesures de désabonnement, le glissement des
erreurs par les mesures, les mesures de processus, l'âge du fichier, la
taille, les changements et les erreurs des mesures des versions
précédentes, les métriques élémentaires
d'évolution de la conception et autres
RQ4 : Quels Base de données sont
utilisés pour la prédiction des défauts logiciels ?
Chapitre 01 : Prédiction des défauts logiciels
12
métriques diverses qui ne peuvent pas être
regroupées en tant que métriques procédurales ou
orienté objet. [6]
Les métriques procédurales sont les
métriques les plus couramment utilisées (51%) dans les
études primaires sélectionnées [6]. Un certain nombre de
métriques orienté objet ont également été
utilisées pour la prédiction des défauts logiciels et la
collection de métriques la plus couramment utilisée a
été définie par Chidamber et Kemerer qui a
été utilisée dans les 28% des études qui utilisent
des métriques orienté objet.
RQ3 : Quelles sont les métriques utiles
pour la prédiction des défauts logiciels ?
Certaines études rapportent des métriques
orienté objet qui sont fortement corrélées à la
prédisposition aux défauts. Les métriques orienté
objet jugées utiles pour la prédiction des défauts
logiciels. CBO (Coupling Between Objects), RFC (Response for a Class) et LOC
sont des métriques très utiles pour la prédiction des
défauts logiciels utilisant des méthodes de sélection de
caractéristiques. Cependant, les études utilisant des techniques
d'extraction de caractéristiques n'ont pas clairement
spécifié des métriques utiles pour la prédiction
des défauts logiciels.
En ce qui concerne l'utilité des métriques
procédurales, les études ne donnent pas de résultat
concluant car les études primaires ne comparent pas l'utilité de
métriques procédurales spécifiques. [6]
Figure 1.2. Métriques Orienté objet utiles pour
la prédiction des défauts logiciels [6]
Chapitre 01 : Prédiction des défauts logiciels
13
Divers ensembles de données ont été
utilisés dans les études de prédiction de défauts
logiciels. Les ensembles de données utilisés peuvent être
accessibles au public ou de nature privée. Les ensembles de
données publics sont disponibles gratuitement tandis que les ensembles
de données privés ne sont pas partagés par les chercheurs
et les résultats sur ces ensembles de données ne peuvent donc pas
être vérifiés et ces études ne sont pas
reproductibles [6]. Les principaux ensembles de données utilisés
et leur catégorisation sont les suivants :
- Ensembles de données de la NASA :
Ces ensembles de données sont accessibles au public dans le
référentiel de la NASA par le programme de données de
métriques de la NASA et sont les ensembles de données les plus
couramment utilisés pour SFP. Ils sont utilisés dans 60% des
études primaires sélectionnées.
- Ensembles de données du
référentiel PROMISE : Ces données sont librement
accessibles au public dans le référentiel PROMISE [51] et
comprennent des ensembles de données SOFTLAB, des ensembles de
données du logiciel Jedit ainis que d'autres ensembles de
données. Ils sont utilisés dans 15% des études primaires
sélectionnées.
- Ensemble de données Eclipse :
environ 12% des études ont utilisé l'ensemble de
données Eclipse, qui est un projet open source dont l'ensemble de
données sur les défauts est accessible au public. Ce projet est
un environnement de développement intégré
développé en langage Java.
- Ensembles de données de projet Open Source :
cette catégorisation implique des études qui utilisent
d'autres projets open source tels que Lucene, Xylan, Ant, Apache, POI, etc.,
Ils sont utilisés par environ 12% des études.
- Ensemble de données étudiantes :
il s'agit d'un logiciel académique développé par
les étudiants.
- Autres : Cette catégorie comprend
certains ensembles de données industriels et privés comme celui
d'une banque commerciale, une application commerciale Java, un ensemble de
données d'entreprise de télécommunications, etc. Ils sont
utilisés par environ 9% des études.
Chapitre 01 : Prédiction des défauts logiciels
14
Figure 1.3. Ensembles de données utilisés pour la
prédiction des défauts logiciels [6]
RQ5 : Quelles mesures de performance sont
utilisées pour la prédiction des défauts logiciels ?
Un certain nombre de mesures sont utilisées pour
évaluer les performances de différents modèles de
prédiction de défauts logiciels [6]. Ces mesures de performance
sont utilisées pour comparer et évaluer les modèles
développés à l'aide de diverses techniques d'apprentissage
automatique et statistiques. La détection d'anomalies est
évaluée en analysant les anomalies qui ont été
incorrectement ou correctement détectées comme un comportement
anormal ou normal. Les méthodes qui nous intéressent pour la
détection des anomalies sont la classification et le clustering.
Les résultats attendus et les résultats obtenus
par la prédiction (apprentissage supervisé ou non
supervisé) sont alors organisés dans une matrice de confusion
composées des métriques principales suivantes :
- Vrai négatif ou True Negative (TN) : est le nombre de
non-défectueux cas classés non-défectueux.
- Vrai positif ou True Positive (TP) : est le nombre de cas
défectueux classés comme défectueux.
- Faux positif ou False Positive (FP) : est le nombre de cas
non-défectueux classés comme défectueux.
- Faux négatif ou False Négative (FN) : est le
nombre de cas défectueux classé non-défectueux. TABLE 1.2.
MATRICE DE CONFUSION [7]
Chapitre 01 : Prédiction des défauts logiciels
15
|
Positifs
Réels
|
Négatifs Réels
|
Positifs Prédits
|
TP
|
FP
|
Négatifs Prédits
|
FN
|
TN
|
Plusieurs indicateurs peuvent être dérivés
de ces principaux indicateurs. Parmi Celles utilisées dans notre
domaine, on retrouve l'exactitude (accuracy), la précision, Le rappel
est également appelé taux de vrais positifs (TVP).
- L'exactitude (Accuracy) :
C'est le rapport entre les sujets correctement
étiquetés et l'ensemble des sujets. L'accuracy est la plus
intuitive. Il s'agit de l'indicateur le plus naturel et le plus évident
permettant d'évaluer les performances d'un système de
classification. Cette valeur simple à calculer, correspond au
pourcentage d'éléments correctement identifiés par le
système. [8]
Accuracy =
|
TP + TN
|
(1)
|
TP+TN+FP+FN
|
|
- Mesure (F1-score) : La F-mesure correspond
à une moyenne harmonique de la précision et du rappel.
- La Précision :
C'est le nombre de vrais positifs divisé par le nombre de
vrais positifs et faux positifs.
- Le Rappel (TVP): Le rappel est le nombre de
vrais positifs divisé par le nombre de vrais positifs et le nombre de
faux négatifs.
Chapitre 01 : Prédiction des défauts logiciels
16
(2 * Rappel * Précision)
(4)
F1 - score =
(Rappel + Précision)
Le paramètre â permet de pondérer la
précision ou le rappel et vaut généralement 1.
L'avantage de ce choix est que lorsque la précision est
égale au rappel, on obtient : Précision = Rappel = F1-mesure.
Ceci facilite la lecture et on recherche à maximiser la F1-mesure en
maximisant simultanément la précision et le rappel [8].
- Sensibilité et spécificité
:
La sensibilité d'un test mesure sa capacité
à donner un résultat positif lorsqu'une hypothèse est
vérifiée. Elle s'oppose à la spécificité,
qui mesure la capacité d'un test à donner un résultat
négatif lorsque l'hypothèse n'est pas vérifiée [8].
Elle est donnée par :
Sensibilité =
|
TP
|
(5)
|
TP + FN
|
|
Une mesure de la sensibilité s'accompagne toujours d'une
mesure de spécificité qui est donnée par :
Spécificité =
|
TN
|
(6)
|
TN+FP
|
|
RQ6 : Quelles sont les forces et les faiblesses
des techniques d'apprentissage automatique ?
Dans cette section, nous décrivons les forces et les
faiblesses présentées par les techniques d'apprentissage
automatique.
Il a été rapporté que la technique NB
(naïve bayes) présente de bonnes performances dans les
problèmes de prédiction de défauts et est également
efficace pour gérer plusieurs ensembles de données avec des
propriétés variables. Dans le même temps, cette technique
ne tient pas compte de la corrélation entre les caractéristiques
de l'entrée et les performances de la technique
Chapitre 01 : Prédiction des défauts logiciels
17
naïve bayes varient fortement en fonction de la technique
de sélection d'attribut utilisée. La machine a vecteur de support
SVM a été applaudi pour son excellente capacité à
gérer les caractéristiques redondantes. L'algorithme de forets
aléatoires est simple dans sa mise en oeuvre et fournit de bons
résultats, c'est donc un bon moyen d'inclure la puissance de
l'apprentissage automatique dans ses recherches sans trop de frais
généraux. [6]
Généralement, différentes techniques ont
des avantages différents et il n'y a pas de solution universelle au
problème de la prédiction des défauts logiciels. Tout
dépend du domaine d'application, dans une situation où les faux
positifs sont fatals, favoriserait certaines techniques par rapport à
une situation où le coût est un facteur.
Récemment, des techniques d'apprentissage profond ont
été développées et qui ont prouvées leurs
efficacités dans de nombreux domaines. Ces techniques ont plusieurs
avantages (Données non structurées, système
d'apprentissage autonome, algorithme basé sur le réseau neuronal
d'algorithmes, identifie automatique des caractéristiques
discriminantes...etc.) mais malheureusement jusqu'à présent
seulement peut de travaux ont été publiés. [6]
Dans le tableau 1.2 nous allons résumer quelques
travaux et l'état de l'art. Nous présentons dans ce tableau, les
bases de données utilisées, les techniques d'apprentissage
automatique utilisées ainsi que les résultats obtenus par ces
travaux.
TABLE 1.3. PREDICTION DES DEFAUTS LOGICIELS : ETAT DE L'ART
Reference
|
Dataset
|
ML
|
Accuracy
|
[9]
|
PROMISE
|
Random Forest
|
PC3=0.96
|
|
dataset
|
|
MW1= 0.95
|
|
|
|
KC1= 0.92
|
|
|
|
PC4= 0.89
|
|
|
|
CM1= 0.93
|
[10]
|
C/C++ programs within
|
LSTM
|
0.92
|
|
Code4Bench.
|
RF
|
0.85
|
[11]
|
real test-and-
|
ANN
|
DS1= 0.938
|
|
debug data
|
|
DS2=0.954
|
|
|
|
DS3= 0.963
|
|
|
RF
|
DS1= 0.951
|
|
|
|
DS2=0.972
|
|
|
|
DS3=0.990
|
|
|
DT
|
DS1= 0.989
|
|
|
|
DS2=0.950
|
|
|
|
DS3=0.954
|
[12]
|
NASA Dataset
|
DBN
|
JW1= 0.785
|
|
|
|
|
MC1=0.977
|
|
|
|
M= 0.648
|
|