Experimental Research on a Continuous Integrating pipeline with a Machine Learning approach : Master Thesis done in collaboration with Electronic Arts

Time-consuming code builds within the Continuous Integration pipeline is a common problem in today’s software industry. With fast-evolving trends and technologies, Machine Learning has become a more popular approach to tackle and solve real problems within the software industry. It has been shown to...

Full description

Bibliographic Details
Main Author: Sigurdardóttir, Sigrún Arna
Format: Others
Language:English
Published: KTH, Skolan för elektroteknik och datavetenskap (EECS) 2021
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-303158
id ndltd-UPSALLA1-oai-DiVA.org-kth-303158
record_format oai_dc
collection NDLTD
language English
format Others
sources NDLTD
topic Machine Learning
Continuous Integration
Builds
Prediction
dataset
Code Change
Data Analysis
Maskininlärning
Kontinuerlig Integration
Byggnader
Förutsägelse
Datamängd
Kodändring
Dataanalys
Software Engineering
Programvaruteknik
spellingShingle Machine Learning
Continuous Integration
Builds
Prediction
dataset
Code Change
Data Analysis
Maskininlärning
Kontinuerlig Integration
Byggnader
Förutsägelse
Datamängd
Kodändring
Dataanalys
Software Engineering
Programvaruteknik
Sigurdardóttir, Sigrún Arna
Experimental Research on a Continuous Integrating pipeline with a Machine Learning approach : Master Thesis done in collaboration with Electronic Arts
description Time-consuming code builds within the Continuous Integration pipeline is a common problem in today’s software industry. With fast-evolving trends and technologies, Machine Learning has become a more popular approach to tackle and solve real problems within the software industry. It has been shown to be successful to train Machine Learning models that can classify whether a code change is likely to be successful or fail during a code build. Reducing the time it takes to run code builds within the Continuous Integration pipeline can lead to higher productivity in software development, faster feedback for developers, and lower the cost of hardware resources used to run the builds. To answer the research question: How accurate can success or failure in code build be predicted by using Machine Learning techniques on the historical data collection? The important factor is the historical data available and understanding the data. Thorough data analysis was conducted on the historical data and a data cleaning process to create a dataset suitable for feeding the Machine Learning models. The dataset was imbalanced, favouring the successful builds, and to balance the dataset the SMOTE method was used to create synthetic samples. Binary classification and supervised learning comparison of four Machine Learning models were performed; Random Forest, Logistic Regression, Support Vector Machine, and Neural Network. The performance metrics used to measure the performance of the models were recall, precision, specificity, f1-score, ROC curve, and AUC score. To reduce the dimensionality of the features the PCA method was used. The outcome of the Machine Learning models revealed that historical data can be used to accurately predict if a code change will result in a code build success or failure.  === Den tidskrävande koden bygger inom pipeline för kontinuerlig integration är en vanlig faktor i dagens mjukvaruindustri. Med trender och teknologier som utvecklas snabbt har maskininlärning blivit ett mer populärt tillvägagångssätt för att ta itu med och lösa verkliga problem inom programvaruindustrin. Det har visat sig vara framgångsrikt att träna maskininlärningsmodeller som kan klassificeras om en kodändring sannolikt kommer att lyckas eller misslyckas under en kodbyggnad. Genom att förbättra och minska den tid det tar att köra kodbyggnader i den kontinuerliga integrationsrörledningen kan det leda till högre produktivitet inom mjukvaruutveckling och snabbare feedback för utvecklare. För att svara på forskningsfrågan: Hur korrekt kan förutsäga framgång eller misslyckande i kodbyggnad med hjälp av Machine Learning-tekniker för historisk datainsamling? Den viktiga faktorn är den tillgängliga historiska informationen och förståelsen för data. Noggrann dataanalys utfördes på historiska data och en datarengöringsprocess för att skapa en datamängd lämplig för matning av maskininlärningsmodellerna. Datauppsättningen var obalanserad och för att balansera användes uppsättningen SMOTE-metoden. Med binär klassificering och övervakad inlärningsjämförelse gjordes fyra maskininlärningsmodeller, Random Forest, Logistic Regression, Support Vector Machine och Neural Network. Prestandamätvärdena som används för att mäta prestandan hos modellerna är återkallelse, precision, f1-poäng och genomsnittlig ROCAUC-poäng. För att minska dimensionaliteten hos funktionerna användes PCA-metoden. Resultatet av modellerna avslöjar att de med god noggrannhet kan klassificeras om en kodändring misslyckas eller lyckas baserat på den datamängd som skapats från historiska data som används för att träna modellerna.
author Sigurdardóttir, Sigrún Arna
author_facet Sigurdardóttir, Sigrún Arna
author_sort Sigurdardóttir, Sigrún Arna
title Experimental Research on a Continuous Integrating pipeline with a Machine Learning approach : Master Thesis done in collaboration with Electronic Arts
title_short Experimental Research on a Continuous Integrating pipeline with a Machine Learning approach : Master Thesis done in collaboration with Electronic Arts
title_full Experimental Research on a Continuous Integrating pipeline with a Machine Learning approach : Master Thesis done in collaboration with Electronic Arts
title_fullStr Experimental Research on a Continuous Integrating pipeline with a Machine Learning approach : Master Thesis done in collaboration with Electronic Arts
title_full_unstemmed Experimental Research on a Continuous Integrating pipeline with a Machine Learning approach : Master Thesis done in collaboration with Electronic Arts
title_sort experimental research on a continuous integrating pipeline with a machine learning approach : master thesis done in collaboration with electronic arts
publisher KTH, Skolan för elektroteknik och datavetenskap (EECS)
publishDate 2021
url http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-303158
work_keys_str_mv AT sigurdardottirsigrunarna experimentalresearchonacontinuousintegratingpipelinewithamachinelearningapproachmasterthesisdoneincollaborationwithelectronicarts
_version_ 1719489370338099200
spelling ndltd-UPSALLA1-oai-DiVA.org-kth-3031582021-10-12T05:26:31ZExperimental Research on a Continuous Integrating pipeline with a Machine Learning approach : Master Thesis done in collaboration with Electronic ArtsengSigurdardóttir, Sigrún ArnaKTH, Skolan för elektroteknik och datavetenskap (EECS)2021Machine LearningContinuous IntegrationBuildsPredictiondatasetCode ChangeData AnalysisMaskininlärningKontinuerlig IntegrationByggnaderFörutsägelseDatamängdKodändringDataanalysSoftware EngineeringProgramvaruteknikTime-consuming code builds within the Continuous Integration pipeline is a common problem in today’s software industry. With fast-evolving trends and technologies, Machine Learning has become a more popular approach to tackle and solve real problems within the software industry. It has been shown to be successful to train Machine Learning models that can classify whether a code change is likely to be successful or fail during a code build. Reducing the time it takes to run code builds within the Continuous Integration pipeline can lead to higher productivity in software development, faster feedback for developers, and lower the cost of hardware resources used to run the builds. To answer the research question: How accurate can success or failure in code build be predicted by using Machine Learning techniques on the historical data collection? The important factor is the historical data available and understanding the data. Thorough data analysis was conducted on the historical data and a data cleaning process to create a dataset suitable for feeding the Machine Learning models. The dataset was imbalanced, favouring the successful builds, and to balance the dataset the SMOTE method was used to create synthetic samples. Binary classification and supervised learning comparison of four Machine Learning models were performed; Random Forest, Logistic Regression, Support Vector Machine, and Neural Network. The performance metrics used to measure the performance of the models were recall, precision, specificity, f1-score, ROC curve, and AUC score. To reduce the dimensionality of the features the PCA method was used. The outcome of the Machine Learning models revealed that historical data can be used to accurately predict if a code change will result in a code build success or failure.  Den tidskrävande koden bygger inom pipeline för kontinuerlig integration är en vanlig faktor i dagens mjukvaruindustri. Med trender och teknologier som utvecklas snabbt har maskininlärning blivit ett mer populärt tillvägagångssätt för att ta itu med och lösa verkliga problem inom programvaruindustrin. Det har visat sig vara framgångsrikt att träna maskininlärningsmodeller som kan klassificeras om en kodändring sannolikt kommer att lyckas eller misslyckas under en kodbyggnad. Genom att förbättra och minska den tid det tar att köra kodbyggnader i den kontinuerliga integrationsrörledningen kan det leda till högre produktivitet inom mjukvaruutveckling och snabbare feedback för utvecklare. För att svara på forskningsfrågan: Hur korrekt kan förutsäga framgång eller misslyckande i kodbyggnad med hjälp av Machine Learning-tekniker för historisk datainsamling? Den viktiga faktorn är den tillgängliga historiska informationen och förståelsen för data. Noggrann dataanalys utfördes på historiska data och en datarengöringsprocess för att skapa en datamängd lämplig för matning av maskininlärningsmodellerna. Datauppsättningen var obalanserad och för att balansera användes uppsättningen SMOTE-metoden. Med binär klassificering och övervakad inlärningsjämförelse gjordes fyra maskininlärningsmodeller, Random Forest, Logistic Regression, Support Vector Machine och Neural Network. Prestandamätvärdena som används för att mäta prestandan hos modellerna är återkallelse, precision, f1-poäng och genomsnittlig ROCAUC-poäng. För att minska dimensionaliteten hos funktionerna användes PCA-metoden. Resultatet av modellerna avslöjar att de med god noggrannhet kan klassificeras om en kodändring misslyckas eller lyckas baserat på den datamängd som skapats från historiska data som används för att träna modellerna. Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-303158TRITA-EECS-EX ; 2021:534application/pdfinfo:eu-repo/semantics/openAccess