Secondary abstract: |
Svetovalni sistem za razvoj programske opreme (recommendation system for software engineering – RSSE) je programska rešitev, ki prikazuje predvidoma koristne informacije za inženirsko nalogo v danih okoliščinah [68]. V magistrskem delu so predstavljena najsodobnejša orodja RSSE in prototip orodja, ki smo ga razvili sami. Želeli smo odgovoriti na štiri raziskovalna vprašanja:
RV1: Kakšne so tipične funkcionalnosti obstoječih sistemov RSSE?
RV2: Kakšna je tehnična zasnova obstoječih sistemov RSSE?
RV3: Katere prakse RSSE sistemov so najbolje sprejete?
RV4: Katere dodatne zahteve mora izpolnjevati na metrikah temelječ RSSE, da bo (bolj)
koristen za razvijalce?
Odgovore na prva tri vprašanja smo pridobili z izvedbo sistematičnega pregleda literature in anketiranjem avtorjev člankov, zajetih v pregledu. Z iskalnim nizom “(”recommendation systems” OR ”recommendation system” OR ”recommender systems” OR ”recommender system”) AND (”software development” OR ”software developer” OR ”software engineering”)” smo izvedli povpraševanje v štirih digitalnih knjižnicah (IEEE Xplore, ScienceDirect, ACM in Scopus). Od 353 rezultatov je bilo 260 unikatnih. Ko smo izločili nerelevantne rezultate, je ostalo 46 primarnih študij, ki so opisovale implementirane rešitve RSSE. Ker so bila tri orodja opisana v dveh člankih, smo izvlečke združili. V magistrski nalogi je tako predstavljenih in analiziranih 43 orodij.
Več kot polovica orodij razvijalcu priporoča artefakte programske kode oziroma ga vodi do njih. Večina predstavi informacije in napotke v obliki seznamov.
Sisteme smo ločili po obnašanju na reaktivne in proaktivne. Sistem RSSE je reaktiven, če mora uporabnik sam zahtevati priporočila. Proaktivni sistemi svetujejo samodejno, kar pomeni, da uporabniku ni potrebno ugotoviti, da potrebuje nasvet, ampak to ugotovi sistem. Razlika med kvalitetnim proaktivnim svetovanjem in nadlegovanjem je majhna, zato smo pričakovali, da bo večina sistemov reaktivna. Predvidevali smo, da se bo skupaj z napredkom pri raziskavah povečevalo tudi število proaktivnih sistemov, zato smo bili presenečeni nad ugotovitvijo, da so reaktivni sistemi v zadnjih letih bolj v trendu kot so bili v preteklosti.
Skoraj vsa orodja uporabljajo za vhodne podatke zgolj artefakte, ki so bili ustvarjeni tekom aktualnega projekta ali katerega preteklega projekta, npr. odprtokodnega projekta. Pri 28% sistemov ni potrebno dodatno delo za normalno delovanje, 18,5% jih čaka na uporabnikovo zahtevo in še enkrat toliko jih čaka na vnos poizvedbe. Za 9,3% sistemov nismo mogli ugotoviti, ali je potrebno dodatno delo za delovanje sistema. Preostali sistemi RSSE zahtevajo precej več truda kot je vnos zahteve.
Nekateri sistemi imajo več različic, vendar je več kot 90% sistemov na voljo samo v eni različici. Več kot polovica sistemov je samostojnih in več kot 40% je vtičnikov za okolje Eclipse. 18 orodij podpira samo razvoj v Javi, 20 jih je jezikovno neodvisnih, eno podpira objektnoorientirane jezike in eno jezike, ki jih podpira Eclipse. Orodja, ki ne podpirajo Jave, podpirajo samo Javascript, C# ali Smalltalk. Vsekakor je Java daleč najbolj popularen jezik na področju sistemov RSSE. Tudi naš prototip orodja RSSE trenutno podpira samo Javo.
Najbolj pogost tip arhitekture pri sistemih, ki smo jih analizirali v sistematičnem pregledu literature, je modularna arhitektura, ki ni porazdeljena. Le 7 sistemov temelji na arhitekturi odjemalec-strežnik. Zanimivo je, da je vseh 7 sistemov tudi Eclipse vtičnikov.
Rezultati analize algoritmov, ki jih uporabljajo sistemi RSSE, so pokazali, da noben algoritem ni uporabljen pri več kot 10% sistemov in da večina sistemov temelji na novih, nepreizkušenih algoritmih. Vseeno imajo sistemi nekaj skupnih pristopov pri izdelavi nasvetov, to so: rangiranje, obteževanje, filtriranje, analize podobnosti, frekvenčne analize, združevanje in klasificiranje. (...) |