WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Prédiction de défauts logiciel utilisant des techniques d'apprentissage automatique


par Amina Oulaceb
Université Mohammed Cherif Messadia - Master informatique en génie logiciel 2021
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

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.

Précision =

TP

(2)

 
 
 

- 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.

Rappel =

TP

(3)

TP+FN

 

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

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Et il n'est rien de plus beau que l'instant qui précède le voyage, l'instant ou l'horizon de demain vient nous rendre visite et nous dire ses promesses"   Milan Kundera