Reinout STEVENS

advertisement
Abstract van het doctoraatsonderzoek
De Onderzoeksgroep
Software Languages Lab
nodigt U graag uit op de openbare verdediging van het proefschrift van
Reinout STEVENS
ter behaling van de graad van Doctor in de Wetenschappen
Titel van het proefschrift:
A Declarative Foundation for Querying the History of
Software Projects
Promotor:
Prof. dr. Coen De Roover
Prof. Dr. Viviane Jonckers
De verdediging heeft plaats op
Vrijdag 5 mei 2017 om 17:00h
in Auditorium D.0.02 op de Campus
Humanities, Sciences en Engineering van de Vrije
Universiteit Brussel, Pleinlaan 2 te 1050 Elsene,
en zal worden gevolgd door een receptie
Samenstelling van de jury
Prof. Dr. Em. Theo D’Hondt
Prof. Dr. Jan Hidders
Prof. Dr. Ann Dooms
Prof. Dr. Peter Vranckx
Dr. Julia Lawall (Sorbonne Université Paris)
Prof. Dr. Xavier Blanc (Université de Bordeaux)
Curriculum vitae
Reinout Stevens (°1988), behaalde een
master in computer-wetenschappen
aan de VUB in 2011. Dankzij een IWT
beurs verkende hij declaratieve
technieken voor het bevragen van de
geschiedenis van software projecten.
Gedurende deze vier jaar was hij coauteur van 1 journal paper, 2 fulllength conference papers en 5 short
conference papers. Hij presenteerde
zijn
resultaten
op
verschillende
internationale
workshops
en
conferenties. Het afgelopen jaar
besteedde hij grotendeels aan het
bijdragen van meerdere prototypes aan
een IWT SBO project in de context van
change-centric quality assurance.
Het gebruik van versiebeheersystemen is standaard om softwareprojecten te
ontwikkelen en onderhouden. Ze laten ontwikkelaars toe om gemaakte wijzigingen
aan de broncode te verdelen onder ontwikkelaars. Als bijproduct bevat een
versiebeheersysteem ook de geschiedenis van de broncode van het softwareproject.
Deze geschiedenis is interessant voor verscheidene belanghebbenden.
Softwareontwikkelaars kunnen deze geschiedenis gebruiken om antwoord te vinden
op vragen zoals “Wie heeft deze code geïntroduceerd?” of “Wie heeft er
bijgedragen aan deze falende klasse?”. Onderzoekers actief in het domein van
mining
software
repositories
gebruiken
deze
geschiedenis
om
het
ontwikkelingsproces te analyseren, om trends te vinden en toepasbaar advies te
verkrijgen.
Zulke geschiedenissen zijn te groot en complex om efficiënt manueel te
doorzoeken. Er is nood aan een algemene history querying tool die voldoet aan de
verschillende noden van de belanghebbenden. Zulk een tool identificeert
automatisch de elementen in de geschiedenis van een project die voldoen aan
karakteristieken die gespecificeerd zijn in een history query. We identificeren
verscheidene criteria voor zulk een algemene history querying tool. History querying
tools moeten onder andere de volgende karakteristieken in hun queries
ondersteunen:
 Versiekarakteristieken betreffen de verschillende elementen van een
versie. Voorbeelden van zulke elementen zijn de auteur, commit message
of de staat van de broncode van een bepaalde versie.
 Temporele karakteristieken betreffen de temporele quantificatie van
elementen van verschillende versies. Voorbeelden zijn “voor elke versie”
of “na de eerste versie die . . . ”.
 Wijzigingskarakteristieken betreffen de wijzigingen tussen twee versies
van de broncode. Voorbeelden zijn de toevoeging, verplaatsing, aanpassing
of verwijdering van broncode-elementen.
 Evolutiekarakteristieken betreffen het effect van de toepassing van een
sequentie van wijzigen op de broncode. Voorbeelden zijn de verzameling
van change sequenties die hetzelfde effect als een gekende refactoring of
eerder geziene transformatie van de broncode hebben.

We stellen een declaratieve fundering voor om de geschiedenis te bevragen die de
verschillende karakteristieken ondersteunt. Karakteristieken worden uitgedrukt in
logische queries, terwijl een logic proof procedure de geschiedenis-elementen
identificeert die de gespecificeerde karakteristieken omvatten. We ontwikkelen en
ontwerpen de algemene history querying tool QwalKeko die de verschillende
karakteristieken ondersteunt in een uniforme taal. We valideren de ondersteuning
van versie- en temporele karakteristieken door middel van verschillende gebruiksscenarios. We valideren de ondersteuning van wijzigingskarakteristieken door het
uitvoeren van een empirische studie die de co-evolutie van functionele testen met
het geteste systeem onderzoekt. We implementeren deze studie tweemaal;
eenmaal in QwalKeko en eenmaal in een algemene programmeertaal. We evalueren
beide implementaties door de verschillende onderdelen van de studie te vergelijken
met elkaar. Tot slot valideren we de ondersteuning van evolutiekarakteristieken
door verschillende instanties van refactorings te detecteren in verscheidene change
sequenties, verkregen van open-source projecten, en te verzekeren dat de
verkregen change sequenties correct, minimaal en uitvoerbaar zijn.
Download