Comparing Code level Techniques for Runtime Continuous Experimentation
Loading...
URL
Journal Title
Journal ISSN
Volume Title
Perustieteiden korkeakoulu |
Master's thesis
Unless otherwise stated, all rights belong to the author. You may download, display and print this publication for Your own personal use. Commercial use is prohibited.
Authors
Date
2021-10-18
Department
Major/Subject
Software and Service Engineering
Mcode
SCI3043
Degree programme
Master’s Programme in Computer, Communication and Information Sciences
Language
en
Pages
57
Series
Abstract
Context: The world is increasingly reliant on software and therefore to speed up development processes, software companies are moving towards continuous software development practices. One such practice is continuous experimentation where different versions of the software are compared through experiments to find out which of the alternatives is the most relevant for a given context. The two main approaches within the continuous experimentation field are code-level techniques and deployment-based techniques. Objective: The goal of this thesis is to gain an understanding of such code-level techniques that can be used to implement experiments as part of continuous experimentation. Method: The research method of this thesis is based on a design science framework. First, the requirements for code-level techniques to implement experiments continuously are considered. Second, three simple techniques suitable for the current study are chosen from those classified in software variability field. The chosen techniques are conditional execution, inheritance, and aggregation/delegation. Third, to gain an understanding of their usability for continuous experimentation, three experiments are implemented with each of the chosen techniques. Fourth, the implementations are compared using evaluation criteria based on the experiment life cycle stages. Findings: In the thesis three findings are discussed. First, a guideline on how an experiment can be considered as a special case of software variability is formulated. Then, the evaluation criteria, which categorized qualities on the basis of the experiment life cycle stages, are presented. Using the criteria, the three techniques mentioned above are evaluated. Out of these three techniques, aggregation/delegation appears the most useful.Konteksti: Nykyään maailma on syvästi riippuvainen tietokoneohjelmistoista. Tästä seuraten yhtiöt pyrkivät nopeuttamaan ohjelmistojen kehittämistä siirtymällä käyttämään jatkuvia ohjelmistokehitys käytäntöjä. Eräs tällainen käytäntö on jatkuva kokeilu, missä eri ohjelmistoversioita verrataan kokeilujen kautta, jotta vaihtoehdoista tilanteeseen sopivinta voidaan käyttää. Näitä kokeiluja voidaan luoda kahdella tavalla: kooditason ja reititystason tekniikoilla. Tavoite: Tämän diplomityön tavoite on ymmärtää, kuinka kooditason tekniikkoja voidaan käyttää kokeilujen toteuttamiseen osana jatkuvaa kokeilua. Metodi: Diplomityön metodi seuraa suunnittelutiede viitekehystä. Ensin selvitetään, mitä vaaditaan tekniikoilta, jotta niitä voidaan käyttää osana jatkuvaa kokeilua. Toiseksi kolme yksinkertaista, työlle soveltuvaa tekniikkaa valitaan niistä, mitä on luokiteltu osana ohjelmistovaihtelevuuden tutkimusalaa. Valitut tekniikat ovat ehdollinen ajo, periytyvyys ja agregaatti/delegointi. Näillä kolmella tekniikalla toteutetaan kullakin kolme kokeilua, jotta niiden soveltuvuutta jatkuvaa kokeilua varten voidaan paremmin arvioida. Lopuksi tekniikkoja arvioidaan käyttäen kirjallisuuden kautta kehitettyä arviointikriteeristöä. Löydökset: Tässä diplomityössä keskustellaan kolmesta löydöksestä. Ensiksi ajatustapa, kuinka kokeilu voidaan ajatella erikoistapauksena ohjelmistovaihtelevuudesta muotoillaan. Sen jälkeen esitellään arvostelumetodi, jossa arvostelukriteerit pohditaan kokeilun elinkaaren kautta. Arvostelumetodia käyttäen kolme yllä mainittua tekniikkaa arvioidaan. Näistä kolmesta tekniikasta aggregaatti/delegointi vaikuttaa hyödyllisimmältä.Description
Supervisor
Fagerholm, FabianThesis advisor
Fagerholm, FabianKeywords
continuous experimentation, code-level techniques, software variability, variability techniques, run-time