science >> Wetenschap >  >> Elektronica

Onderzoekers stellen een nieuwe database samen met uitvoerbare Python-codefragmenten op GitHub

(a) Codefragment voor het gebruik van de geocode-API van Google Maps (b) Dockerbestand met omgevingsspecificatie die vereist is om het codefragment uit te voeren. Krediet:Horton &Parnin

Een team van onderzoekers van de North Carolina State University heeft onlangs een empirische analyse uitgevoerd van de uitvoerbare status van Python-codefragmenten die op GitHub worden gedeeld. hun studie, voorgepubliceerd op arXiv, presenteert ook Gistable, een nieuwe database met uitvoerbare Python-codefragmenten op GitHub's gist-systeem, die reproduceerbare studies op het gebied van software-engineering mogelijk zouden kunnen maken.

Elke dag, softwareontwikkelaars wereldwijd creëren en delen code online om nieuwe programmeerconcepten te demonstreren en te schetsen. GitHub is een van de grootste online platforms waarop ontwikkelaars hun codefragmenten kunnen delen en kunnen samenwerken aan de ontwikkeling van software. Momenteel, het bevat meer dan 300, 000 Python-fragmenten en meer dan 4,5 miljoen gists in verschillende programmeertalen.

Hoewel online gepubliceerde codefragmenten erg handig kunnen zijn, soms zijn ze niet direct uitvoerbaar door anderen. Dit kan te wijten zijn aan parseerfouten in de code of aan problemen met het uitvoeren van fragmenten in omgevingen die onvervulde afhankelijkheden bevatten.

Om een ​​beter begrip te krijgen van hoeveel codefragmenten die op het GitHub-systeem worden gehost, daadwerkelijk uitvoerbaar zijn, onderzoekers van de North Carolina State University hebben een grondige evaluatie uitgevoerd van de uitvoerbaarheid van openbaar beschikbare Python-scripts die op het platform worden gehost. Hun onderzoek was gericht op het identificeren van veelvoorkomende problemen met de uitvoering van codefragmenten, die waardevol inzicht kunnen bieden voor verder onderzoek naar geautomatiseerd softwareconfiguratiebeheer.

In hun studie hebben de onderzoekers presenteerden ook Gistable, een database en uitbreidbaar raamwerk gebouwd op GitHub's gist-systeem. Gistable bevat 10, 259 Python-codefragmenten, waarvan ongeveer 5, 000 worden geleverd met een Dockerfile om ze te configureren en uit te voeren zonder importfout.

"Ons werk aan Gistable was gemotiveerd als onderdeel van een groter project met betrekking tot geautomatiseerde configuratie van applicatieomgevingen, "Eric Horton, een van de onderzoekers die het onderzoek heeft uitgevoerd, vertelde TechXplore. "Gegeven een codebase, zoals de fragmenten bestudeerd in Gistable, we willen een proces vinden dat een voldoende uitvoeringsomgeving voor hen kan bouwen zonder input van een ontwikkelaar. Om dit te doen, we moesten eerst een stap terug doen en een paar vragen beantwoorden. Eerst, is dit een veelvoorkomend gebruik? We moesten een baseline vaststellen voor hoe vaak bestaande applicaties een soort niet-triviale configuratie nodig hebben. Tweede, wanneer niet uitvoerbaar, welk type configuratie is nodig om uitvoering mogelijk te maken?"

In hun studie hebben de onderzoekers ontdekten dat 75,6 procent van de geanalyseerde Python-gisten substantiële configuraties nodig hadden om problemen zoals ontbrekende afhankelijkheden op te lossen, configuratiebestanden, afhankelijk zijn van een specifiek besturingssysteem, of andere uitdagingen op het gebied van omgevingsconfiguratie. In aanvulling, de veronderstellingen die ontwikkelaars maken over resourcenamen bij het oplossen van configuratiefouten bleken minder dan de helft van de tijd correct te zijn.

"We ontdekten dat ongeveer 30 procent van onze steekproef in de categorie 'moeilijk te configureren' viel, met als meest voorkomende configuratieproblemen afhankelijkheden van externe bibliotheken, " legde Horton uit. "Ons onderzoek in de nabije toekomst zal zich richten op technieken voor het vinden en installeren van deze bibliotheken. Nadien, we hopen andere veelvoorkomende configuratieproblemen aan te pakken die zijn ontdekt als onderdeel van Gistable."

Algemeen, een onvoldoende geconfigureerde omgeving was de belangrijkste factor die verhinderde dat de Python-codefragmenten uitvoerbaar waren. Terwijl in sommige gevallen correcte configuraties van de applicatieomgeving kunnen automatisch worden hersteld, andere vereisten verdere interventies. In de toekomst, de onderzoekers zijn van plan om strategieën te onderzoeken om consequent effectieve omgevingsconfiguraties uit te voeren.

"Ik denk dat de meest betekenisvolle prestatie van deze studie ons onderzoek was naar hoe ontwikkelaars de configuratie handmatig uitvoeren, Horton zei. "Niet alleen bevestigden de reacties van deelnemers dat dit in veel gevallen een moeilijk probleem is, maar ze hebben ons ook geholpen om dingen te categoriseren die configuratie moeilijk kunnen maken. Dit is erg handig, omdat het ons wijst op een concrete lijst met items voor toekomstig onderzoek."

© 2018 Tech Xplore