Automated Classification of Source Code Changes Based on Metrics Clustering in the Software Development Process
Dit artikel presenteert een geautomatiseerde methode voor het classificeren van broncode-wijzigingen door middel van k-means-clustering op basis van elf metrics, waarbij de verdeling automatisch plaatsvindt en de mapping door een expert wordt uitgevoerd, wat de tijd voor code-review aanzienlijk verkort en een classificatiezuiverheid van 0,75 bereikt.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
De Grote Uitdaging: De "Bos van Veranderingen"
Stel je voor dat softwareontwikkeling een enorme stad is die voortdurend wordt verbouwd. Elke dag worden er nieuwe gebouwen neergezet, oude muren gesloopt, en worden er trappen verplaatst. In de programmeerwereld noemen we deze veranderingen "code changes".
Het probleem is dat deze stad zo groot is geworden dat niemand meer kan zien wat er precies gebeurt. Als er een fout in de stad zit (een bug), is het alsof je een verkeerd geplaatste lantaarnpaal moet vinden in een duister bos. Normaal gesproken moeten mensen (de "reviewers") elk stukje bouwplaatje (de code) met de hand bekijken om te zien of het veilig en logisch is. Dit kost enorm veel tijd en energie.
De Oplossing: Een Slimme Sorteerder
Knyazev heeft een slimme manier bedacht om dit proces te versnellen. Hij zegt: "Waarom kijken we niet naar de 'vingerafdrukken' van de veranderingen?"
In plaats van de hele tekst te lezen, meet hij bepaalde eigenschappen van elke verandering. Denk hierbij aan:
- Hoeveel regels zijn er bijgekomen of weggehaald? (De grootte van de verandering).
- Hoe complex is de logica? (Is het een simpele muur of een ingewikkelde trapconstructie?).
- Zijn er nieuwe deuren (interfaces) of gebouwen (klassen) toegevoegd?
Deze metingen worden omgezet in een cijferlijst (een vector) voor elke verandering.
De Magie: De "K-Neem" Sorteerder
Nu komt het slimme deel. Knyazev gebruikt een algoritme (een computerprogramma) dat k-means clustering heet.
De Analogie van de Fruitmand:
Stel je hebt een grote mand met duizenden vruchten. Sommige zijn appels, sommige peren, en sommige sinaasappels. Je wilt ze sorteren, maar je hebt geen tijd om elke vrucht te proeven.
- Je kijkt alleen naar de vorm en de kleur (de "metriek").
- De computer groepeert de vruchten die op elkaar lijken in stapels. Alle ronde, rode dingen komen bij elkaar. Alle lange, gele dingen ook.
- De computer doet dit automatisch. Hij weet nog niet of het appels of peren zijn, hij ziet alleen dat ze op elkaar lijken.
In het onderzoek worden de "vruchten" de code-veranderingen. De computer groepeert ze in stapels (clusters) op basis van hun cijferlijst.
De Menselijke Expert: De "Fruitkenners"
Hier is waar de mens nog nodig is, maar dan veel minder werk.
De computer heeft nu 12 stapels gemaakt. Een menselijke expert hoeft niet meer 2000 veranderingen te bekijken. Hij hoeft alleen maar naar één vrucht uit elke stapel te kijken en te zeggen: "Ah, deze stapel bestaat uit appels (nieuwe functies)" of "Deze stapel zijn peren (bugfixes)".
Zodra de expert één vrucht in een stapel heeft geïdentificeerd, mag de computer de rest van die stapel automatisch als "appel" markeren.
Wat Leverde Dit Op?
Het onderzoek werd getest op grote softwareprojecten (zoals Subversion en NHibernate). De resultaten waren indrukwekkend:
- Tijdwinst: In plaats van duizenden veranderingen handmatig te controleren, hoefde een expert er maar een klein stukje van te bekijken om de hele groep te classificeren.
- Nauwkeurigheid: De methode was ongeveer 75% nauwkeurig. Dat betekent dat 3 op de 4 keer de computer de verandering in het juiste hokje zette.
- De "Vage" Stapels: Soms waren de stapels niet perfect. Bijvoorbeeld, "refactoring" (het netjes maken van code zonder iets te veranderen) leek soms op "bugfixes". De computer vond ze op elkaar, maar de mens moest soms even nadenken.
Waarom is dit belangrijk?
Vroeger was het controleren van softwarecode als het zoeken naar een speld in een hooiberg. Met deze methode is het alsof je een machine hebt die de hooiberg eerst in kleine hoopjes verdeelt op basis van vorm, zodat je alleen nog maar naar de top van die hoopjes hoeft te kijken om te weten wat erin zit.
Kort samengevat:
Deze methode laat computers het zware, saaie werk doen (het groeperen van veranderingen), zodat menselijke experts zich kunnen richten op het belangrijke werk (het controleren van de kwaliteit). Het maakt softwareontwikkeling sneller, goedkoper en veiliger.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.