Refaktorointi on keskeinen menetelmä ohjelmistojen laadun, erityisesti ylläpidettävyyden, kohentamiseksi ja säilyttämiseksi. Refaktoroinnin vaikutuksista ohjelmistojen sisäiseen laatuun on kuitenkin tehty tutkimuksia, jotka viittaavat ettei refaktorointioperaatioiden vaikutus laatuun ole välttämättä positiivinen, vaan jopa päinvastainen.
Tässä tutkielmassa perehdytään ohjelmistojen laatuun, mittareihin ja refaktorointiin ja tarkastellaan syitä sille, miksi tietyissä tutkimuksissa staattisessa analyysissä käytettyjen mittarien lukemat implikoivat ohjelmiston laadun heikkenevän refaktoroinnin seurauksena. Tutkielmassa todetaan, että staattisen analyysin suorittaminen refaktoroinneille on hyvin hankalaa, sillä on erittäin vaikeaa saada refaktoroinneista kunnollista edustavaa otantaa. Tämä johtuu pääasiassa siitä, että ohjelmistokehittäjät refaktoroivat sekä käyttävät versionhallintajärjestelmiä keskenään hyvin erilaisilla tavoilla. Käytännössä tämä tarkoittaa sitä, että kommitointiviestit eivät välttämättä oikeasti vastaa itse kommitoinnin sisältöä. Monesti kommitointi saattaa olla merkittynä refaktoroinniksi, mutta sisältääkin oikeasti refaktorointia sekä uuden toiminnallisuuden lisäämistä. Toisaalta taas joukosta löytyy myös refaktorointeja, joita ei ole kommitointiviesteissä merkitty sellaisiksi. Tämä vääristää huomattavasti sellaisia otantoja, jotka perustuvat refaktorointien suodattamiseen kommitointiviestien perusteella. Tutkielmassa todetaan myös, että yleisesti kirjallisuudessa käytetyt mittarit eivät välttämättä ole kovin hyvin ymmärrettyjä, sillä useat mittarit mittaavat hyvin samankaltaisia ulottuvuuksia. Mittareiden valinta ja ymmärrys on ensisijaisen tärkeää, mikäli halutaan myös saada mittaustuloksia, joiden implikaatiot ymmärretään. Myös mittareiden ja tutkimuksessa pohjana käytetyn SQuaRE -laatustandardin laatupiirteiden välinen suhde on epäselvä. Kvalitatiiviset haastattelu- ja kysely tutkimukset kuitenkin implikoivat, että refaktorointia pidetään ohjelmiston laadun kannalta hyvin merkittävänä työkaluna. Ohjelmistokehittäjät ja -arkkitehdit kokevat, että ohjelmiston ylläpito ja jatkokehitys helpottuvat, kun ohjelmiston lähdekoodia refaktoroidaan säännöllisesti.
ACM Computing Classification System (CCS):
Software and its engineering → Maintaining software Software and its engineering → Software evolution Software and its engineering → Software version control