METRICS-BASED RECOMMENDATION SYSTEM FOR SOFTWARE ENGINEERING - Gašparič, Marko (M. Gašparič, 2013)
This thesis presents the state-of-the-art of recommendation systems for software engineering. The systematic literature review and the survey of authors of analyzed publications showed that the most successful characteristics of the systems are a modular architecture, that is not distributed, and a reactive behavior. Existing RSSEs are mostly standalone solutions or Eclipse plugins. When developers study their own activities they improve their estimating and planning skills and reduce the number of defects in their work. We developed a prototype that is an Eclipse plugin and visualizes an overall team effort spent per source code artifact, source code metrics, and recommendations for source code improvements. To evaluate the prototype we conducted nine interviews. Interviews showed that users find the functionalities of our system useful and would also like to get more information, particularly about an effort per developer. Additionally, interviews revealed that developers are willing to execute a non-repetitive task to use the system, while they are not willing to leave the development environment to obtain the same information and recommendations. 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. (.)