La vitrine de diffusion des mémoires et thèses de l'ÉTS
RECHERCHER

Toward better understanding and supporting of Continuous Integration (CI) practices

Téléchargements

Téléchargements par mois depuis la dernière année

Plus de statistiques...

Saidani, Islem (2022). Toward better understanding and supporting of Continuous Integration (CI) practices. Thèse de doctorat électronique, Montréal, École de technologie supérieure.

[thumbnail of SAIDANI_Islem.pdf]
Prévisualisation
PDF
Télécharger (2MB) | Prévisualisation

Résumé

The rapid growth of the software development industry raises new challenges to software developers as they need to respond quickly to the users’ needs in a world of complex and continuous change. Indeed, software systems undergo frequent changes to add new user requirements, fix discovered bugs, and adapt to new technological and environment changes. Thus, ensuring that these changes are done in a controlled way is of crucial importance. To this end, software development companies have massively adopted Continuous Integration (CI) in order to reduce the scope for error and increasing the speed to market to gain a competitive advantage. CI aims at supporting developers in integrating code changes constantly and quickly through an automated build and test processes. Nevertheless, like any solution, CI brings with it challenges like productivity loss and release delays. In this thesis, we aim to support the adoption of CI by addressing two main problems. In the first place, we tackle the lack of empirical knowledge about CI adoption and challenges. Then, we address the problem of CI builds related to its long time and failure.

First, we empirically examined the challenges faced by CI developers based on the discussions in Stack Overflow, a popular Q&A forum. Through this study, we revealed that software build is a major barrier that developers face when using CI Second, we showed through an empirical study, how CI adoption can impact the quality assurance efforts. We found that adopting CI has the potential to change the way developers apply code refactoring. Then, we tackled the build failure problem, by developing two solutions: The first is based the adaption of Non-dominated Sorting Genetic Algorithm (NSGA-II), a Multi-Objective Genetic Programming (MOGP) approach which allows generating rules from historical data of CI builds and whose binary output predicts whether the input build is most likely to succeed or fail. The second approach uses Long Short-Term Memory (LSTM)-based Recurrent Neural Networks (RNN) to construct prediction models for CI build outcome prediction. The problem is comprised of a single series of CI build outcomes and a model is required to learn from the series of past observations to predict the next CI build outcome in the sequence. In addition, we tailored Genetic Algorithm (GA) to tune the hyper-parameters for our LSTM models. The validation results reveal that the two proposed approaches showed better predictive performances than the state-of-art techniques. Lastly, we introduced a novel automated tool, based on the adaption of Strength-Pareto Evolutionary Algorithm (SPEA2), to detect changes that do not require to trigger the build, i.e., can be skipped. This approach outperformed existing techniques and was approved through an industrial evaluation.

Titre traduit

Vers une meilleure compréhension et application de l’Intégration Continue (IC)

Résumé traduit

La croissance rapide de l’industrie du développement de logiciels pose de nouveaux défis aux développeurs de logiciels, car ils doivent répondre rapidement aux besoins des utilisateurs. En effet, les systèmes logiciels subissent de fréquentes modifications pour ajouter de nouvelles exigences, corriger les bogues découverts et s’adapter aux nouveaux changements technologiques et environnementaux. Ainsi, s’assurer que ces changements sont effectués de manières contrôlée est d'une importance cruciale. À cette fin, les entreprises de développement de logiciels ont massivement adopté l’Intégration Continue (IC) afin de réduire les risques d’erreur et d’augmenter la vitesse déploiement pour obtenir un avantage concurrentiel. L’IC vise à aider les développeurs à intégrer les changements de code constamment et rapidement grâce à des processus de construction et de test automatisés. Néanmoins, comme toute solution, l’adoption de l’IC induit plusieurs défis tels que
la perte de productivité et les retards de livraison. Dans le cadre de cette thèse, nous visons à soutenir l’adoption de l’IC en abordant deux problèmes principaux. En premier lieu, nous nous attaquons au manque de connaissances empiriques sur l’adoption et les défis de l’IC. Ensuite, nous abordons le problème de construction lié à sa longue durée et à son échec.

Tout d’abord, nous avons examiné de manière empirique les défis auxquels sont confrontés les développeurs sur la base des discussions dans Stack Overflow, un forum Questions & Réponses populaire. Grâce à cette étude, nous avons révélé que la construction logicielle est un obstacle majeur auquel les développeurs sont confrontés lorsqu’ils utilisent l’IC. Deuxièmement, nous avons montré, à travers une étude empirique, comment l’adoption de l’IC peut avoir un impact sur les efforts d’assurance qualité. Nous avons constaté que l’adoption de l’IC a le potentiel de changer la façon dont les développeurs appliquent la refactorisation du code. Ensuite, nous nous sommes attaqués au problème d’échec de construction, en développant deux solutions: la première est basée sur l’adaptation de l’ algorithme génétique NSGA-II, une approche de programmation génétique multi-objectifs. Cette approche permet de générer des règles à partir des données historiques des constructions et dont la sortie prédit si la construction en question est plus susceptible de réussir ou d’échouer. La deuxième approche utilise des réseaux de neurones récurrents basés sur la mémoire à long court terme LSTM-RNN pour construire des modèles de prédiction des résultats de construction. Le problème est composé d’une seule série de résultats de construction et un modèle doit apprendre de la série d’observations passées pour prédire le prochain résultat de construction dans la séquence. De plus, nous avons adapté l’algorithme génétique mono-objectif GA pour régler les hyper-paramètres de nos modèles LSTM. Les résultats de validation révèlent que les deux approches proposées ont montré de meilleures performances prédictives que les techniques existantes. Enfin, nous avons introduit un nouvel outil automatisé, basé sur l’adaptation de l’algorithme génétique multi-objectifs SPEA2, pour détecter les changements qui ne nécessitent pas de déclencher la construction, c’est-à-dire qui peuvent être ignorés. Cette approche a surpassé les techniques existantes et a été approuvée par une évaluation industrielle.

Type de document: Mémoire ou thèse (Thèse de doctorat électronique)
Renseignements supplémentaires: "Manuscript-based thesis presented to École de technologie supérieure in partial fulfillment for the degree of doctor of philosophy". Comprend des références bibliographiques (pages 233-252).
Mots-clés libres: intégration continue, construction logicielle, génie logiciel basé sur la recherche heuristique, génie logiciel empirique, apprentissage approfondi
Directeur de mémoire/thèse:
Directeur de mémoire/thèse
Ouni, Ali
Programme: Doctorat en génie > Génie
Date de dépôt: 26 sept. 2022 18:13
Dernière modification: 26 sept. 2022 18:13
URI: https://espace.etsmtl.ca/id/eprint/3071

Gestion Actions (Identification requise)

Dernière vérification avant le dépôt Dernière vérification avant le dépôt