A graph based end to end defect prediction framework. - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2022

A graph based end to end defect prediction framework.

Le logiciel de prédiction des défauts logiciels basé sur les graphes

Résumé

Software defect prediction is one of the most explored research topics in software engineering. Modern software applications are often overly complicated and prone to failures. Software defect prediction (SDP) can alert on the risk of failure of a software component in the initial stages of development and help developers to appropriately schedule and prioritize their test efforts and ensure software quality. Traditional statistical software defect prediction tools are always time-consuming and ineffective. We argue that machine learning algorithms can capture useful properties of code that are difficult to extract by humans or other alternative research methods. However, the performance of machine learning tools varies depending on the quality of input data. Since the programming languages of modern applications hold increasingly complex characteristics which are difficult to understand, it is a prerequisite to provide a powerful representation of code analysis that can explore deeply the code software artefacts and capture useful information from different levels of abstraction of the programs. For these reasons, many efforts have been made to propose an efficient defect prediction tool, but the achievements do not represent yet high performance.In this thesis, we focus on software defect prediction and propose a novel deep learning-based technique to enhance existing defect prediction approaches. To build predictive models, previous studies focused on classic machine learning algorithms and handcrafted traditional features (i.e. software metrics). The software metrics are designed manually to capture the static properties of the code. Such methods are time-consuming and inaccurate since they fail to capture the semantic meanings of programs. Recently, researchers exploited deep learning algorithms based on either tree representations of programs or precise graphs representing program execution flows. However, these models do not offer high performance and do not cover all types of bugs. They often fail to capture intra-procedural dependencies. Indeed, several bugs are related to these dependencies. Such information is important in modelling program functionality and can lead to a more accurate defect prediction. The training procedure requires a sufficient historical data from a project to build a prediction model. Therefore, it is not practical for new projects, which have no or not enough historical data. An alternative solution is to train a prediction model by using data from other projects. The traditional approaches are based on metrics to select appropriate projects whose characteristics are close to the new project. However, the metrics are not enough to capture meaningful information from projects and then choose the best candidates that generalize well the new project. In this thesis, the emphasis was placed on two main tasks: First, to bridge the gap between programs' dependencies and defect prediction features, we propose an end-to-end deep learning algorithm to learn a powerful code representation including different levels of abstractions of code such as the syntax, the semantic and the dependencies automatically from code and further train and construct defect prediction classifier by using these complex features. The experimental results indicate that our approach can significantly improve the existing defect prediction approaches. Second, we propose a novel method to choose the best candidate projects for the project that lacks historical data. We evaluate the effectiveness of our method on 10 open-source projects. Results show that selecting carefully the projects can boost the performance of existing techniques and even of our proposed defect prediction framework, which considers all the other available projects and does not involve any selection strategy of projects.
Les applications logicielles modernes sont souvent trop compliquées et sujettes aux défaillances. La prédiction des défauts logiciels alerte sur le risque de défaillance dès les premières étapes du développement et aides les développeurs à planifier leurs efforts de test et à garantir une meilleure qualité logicielle. Actuellement, les outils statistiques traditionnels de prédiction des défauts ont montré leurs limites, alors que les techniques basées sur le machine learning ont prouvé leur capacité à mieux capturer les propriétés du code. Cependant, leurs performances varient en fonction de la qualité des données d'entrée. Or, les langages et frameworks des applications modernes présentent de plus en plus de complexité, il est indispensable de fournir une représentation d'analyse de code puissante capable d'explorer en profondeur les les artefacts du code source et de capturer les informations utiles à partir des différents niveaux d'abstraction des programmes. Pour ces raisons, de nombreux travaux ont été conduits par la communauté scientifique afin de proposer de nouveaux outils de prédiction de défauts logiciels, qui sont meilleurs que les précédents, mais avec un niveau de performance qui n’est pas encore suffisant.Dans cette thèse, nous proposons une nouvelle technique de prédiction des défauts logiciels basée sur l'apprentissage en profondeur, qui améliore les approches existantes, couteuses en temps et imprécises puisqu’elles ne permettent pas d’extraire les propriétés sémantiques des programmes. Récemment, les chercheurs ont commencé à exploiter des algorithmes d'apprentissage en profondeur basés soit sur des représentations arborescentes de programmes, soit sur des représentations graphiques représentant les flux d'exécution des programmes. Bien que meilleurs, ces modèles ne permettent pas encore de couvrir tous les types de défauts tels que ceux liés aux dépendances intraprocédurales, malgré leur importance.Pour construire un modèle de prédiction efficace, il est nécessaire d’alimenter le processus d’apprentissage avec suffisamment de données historiques relatives au projet. Par conséquent, pour les projets récents ne disposant pas de données suffisantes, le modèle de prédiction doit se construire en se basant sur les données historiques d'autres projets similaires. Afin de sélectionner ces projets, les approches traditionnelles se basent sur des comparaisons statistiques. Cependant, celles-ci ne suffisent pas à capturer les différences importantes entre les projets sur plusieurs aspects tels que l'architecture, l'expérience du développeur, le style de codage, la sémantique, etc., et rendent la tâche de sélection plus complexe.Dans ce travail de thèse, le focus a été mis sur deux objectifs principaux : Premièrement, afin de combler l’écart entre les dépendances des programmes et les caractéristiques du code de prédiction des défauts, nous proposons un algorithme d'apprentissage en profondeur de bout en bout pour apprendre de manière plus complète la représentation du code source incluant différents niveaux d'abstractions tels que la syntaxe, la sémantique, les dépendances et ainsi construire un classifieur de prédiction de défauts plus performant, qui prend en compte toutes ces caractéristiques complexes. Les résultats expérimentaux montrent que notre approche améliore considérablement les approches existantes de prédiction des défauts. Deuxièmement, nous proposons une nouvelle méthode pour mieux sélectionner les projets similaires qui seront utilisés pour leurs données historiques, en se basant sur un apprentissage en profondeur des caractéristiques des projets. En évaluant notre méthode sur des projets open source, les résultats montrent qu'une sélection rigoureuse des projets améliore sensiblement les performances des techniques existantes et même notre approche de prédiction proposée, lorsqu’elle n’inclut pas de stratégie de sélection des projets externes d’apprentissage.
Fichier principal
Vignette du fichier
these_internet_mbaya.pdf (7.36 Mo) Télécharger le fichier
resumefr_internet_mbaya_a_annexe.pdf (243.18 Ko) Télécharger le fichier
Origine : Version validée par le jury (STAR)
Format : Autre

Dates et versions

tel-03976590 , version 1 (07-02-2023)

Identifiants

  • HAL Id : tel-03976590 , version 1

Citer

Abir M'Baya. A graph based end to end defect prediction framework.. Other [cs.OH]. Université de Lyon, 2022. English. ⟨NNT : 2022LYSE2035⟩. ⟨tel-03976590⟩
93 Consultations
107 Téléchargements

Partager

Gmail Facebook X LinkedIn More