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.
| Date | 9 Aug 2022 |
|---|
| Original language | American English |
|---|
| Awarding Institution | - École de technologie supérieure
|
|---|
| Supervisor | Ali Ouni (Supervisor) |
|---|
Saidani, I. (Author),
Ouni (Supervisor),
9 Aug 2022Student thesis: Doctoral thesis › Doctorate in Engineering: Engineering