Vis enkel innførsel

dc.contributor.advisorTrætteberg, Hallvard
dc.contributor.authorKohmann, Marius
dc.date.accessioned2021-09-15T16:08:13Z
dc.date.available2021-09-15T16:08:13Z
dc.date.issued2020
dc.identifierno.ntnu:inspera:57320302:21902868
dc.identifier.urihttps://hdl.handle.net/11250/2777667
dc.description.abstractAbsence of correctly applied design principles triggers maintainability problems in software development and increases development cost. To current date, tools for developers have to a small extent targeted design principles and have suffered from not being an integrated part of the developers workflow. The reason being the difficulties in detecting design principle violations without creating noise in the developer workflow. This study targets this problem and takes an innovative approach for investigating how one can create a tool for DDPV (Detection of Design Principle Violations) that is integrated in the developer workflow without suffering from noise. By combining technologies for code analysis and Quality Assurance (QA), a tool for DDPV was developed using the design science methodology. Multiple iterations of development, testing and evaluation of prototypes was carried out and ended with an early version of a MVP (Minimum Viable Product). The product was then evaluated internally and received feedback from the open-source community. The results show that using automated comments on Pull Request (PR) to inform the developer about possible design issues will reduce the noise from false-positives significantly. This will enable the development of rules for DDPV with lower requirements on accuracy than what is traditionally accepted. However, the difficulty of DDPV creates such big amount of false-positives that further development on mechanisms for reducing the noise is needed. With continued research on good heuristics for DDPV and implementation of suggested mechanisms for reduction of noise, a tool like this this could have big implications on the maintainability of developed software.
dc.description.abstractFeil eller unngått bruk av designprinsipper i programvareutvikling medfører vedlikeholdsproblemer og øker utviklingskostnadene. Til nå har verktøy for utviklere i liten grad sett etter brudd på designprinsipper, og har heller ikke vært en del av arbeidsflyten til utviklere. Dette har vært grunnet vanskeligheten av å detektere brudd på designprinsipper uten å skape støy i utvikligsprosessen. Dette studiet tar en innovativ tilnærming til problemet for å se hvordan man kan lage et verktøy for deteksjon av brudd på designprinsipper som er integrert inn i arbeidsflyten til utviklere, og som ikke lider av støy. Ved å kombinere teknologi for kodeanalyse og teknologi for kvalitetssikring av kode utvikles et verktøy for deteksjon av brudd på designprinsipper med en forskningsmetode som kalles design science. Flere iterasjoner av utvikling, testing og evaluering av prototyper ble gjennomført og endte med en tidlig versjon av et MVP (Minimum Viable Product). Dette produktet ble så evaluert internt og gjennom tilbakemeldinger fra open-source community. Resultatene viser at det å automatisk legge til kommentarer på Pull Request (PR) for å informere utvikleren om mulige design-problemer vil redusere innvirkningen av falske positiver, og dermed redusere støyen betraktelig sammenlignet med tidligere metoder. Dette gjør at man kan utvikle regler for deteksjon av brudd på designprinsipper med lavere krav til treffsikkerhet enn tidligere. Likevel, vanskeligheten av å detektere brudd på design-prinsipper skaper så mye falske-positiver at videre utvikling av mekanismer for å redusere støy behøves. Med videre forskning på gode heuristikker for deteksjon av brudd på designprinsipper og implementasjon av nye mekanismer for redusering av støy vil et slikt verktøy potensielt ha stor innvirkning på videre utvikling av programvare.
dc.language
dc.publisherNTNU
dc.titleDetekt-hint - A tool for detecting design principle violations
dc.typeMaster thesis


Tilhørende fil(er)

Thumbnail

Denne innførselen finnes i følgende samling(er)

Vis enkel innførsel