Measuring software maintainability

Loading...
Thumbnail Image
Journal Title
Journal ISSN
Volume Title
Perustieteiden korkeakoulu | Master's thesis
Date
2015-08-24
Department
Major/Subject
Ohjelmistotuotanto
Mcode
T3001
Degree programme
Tietotekniikan koulutusohjelma
Language
en
Pages
90 + 4
Series
Abstract
Maintenance forms the major part of the software's development costs. Keeping the software's code base in a good shape, i.e. maintainable, speeds up and reduces the cost of making changes and makes them less risky. Refactoring and reengineering are practices to improve a software's maintainability. An essential part of keeping a software's maintainability at a desired level or systematically improving its maintainability is to measure the progress and to find the parts of code whose improvement would have the biggest affect on the overall maintainability. This can be done by using metrics. It is crucial to make sure the metrics are actively used by the company personnel. This can be done by providing useful deployment practices for the metrics. A literature review and a case study was conducted using a simplified version of the Design Science. The aim was to find a relevant set of metrics and useful ways of deploying them at the case company. In the case study, workshops were organized at the case company to fulfill the aim. Out of the suggested metrics the three top prioritized ones were implemented in a automated metrics system. The analyzed files were prioritized based on the file activity. An aggregated index was calculated out of the three metrics to provide a quick overview on the situation. Out of the suggested deployment ideas two deployment practices were prototyped. A reactive way is proposed for monitoring the change in the maintainability of the code base and a proactive way for systematically reducing the technical debt by identifying the most problematic places in the code base whose refactoring would most benefit the total maintainability of the software. The implemented metrics system and the prototyped deployment practices were presented and evaluated at the case company and were found useful. Apart from the three company specific code measures, the results should be generally applicable to any Scrum organization that aims to control and systematically repay its quality debt. The organization can use a similar approach as described in this thesis to find out their unique set of top priority technical debt issues to measure. The process was applied in a multi-site Scrum organization and hence applied techniques that fit well distributed teams. The deployment practices utilize cloud services making them useful to distributed teams.

Ylläpito mudostaa pääosan ohjelmiston kehityskustannuksista. Koodikannan pitäminen ylläpidettävänä tekee koodimuutoksista nopeampia, kustannustehokkaampia, sekä riskittömämpiä. Ohjelmiston ylläpidettävyyttä voi parantaa refaktoroinnilla ja laajemmalla uudelleensuunnittelulla. Jotta ohjelmiston ylläpidettävyyttä voitaisiin parantaa järjestelmällisesti tai edes pitää halutulla tasolla, täytyy sitä voida mitata. On tärkeää varmistaa metriikoiden jalkauttaminen yrityksessä tarjoamalla niiden käyttöön sopivia käytäntöjä. Tutkimus suoritettiin kirjallisuuskatsauksen ja yksinkertaistetuttua Design Science -tutkimusmetodia noudattavan case-tutkimuksen muodossa. Tutkimuksen tavoitteena oli löytää case-yritykselle olennainen heidän ohjelmistonsa ylläpidettävyyttä kuvaava mittaristo, sekä hyödylliseksi koettuja jalkauttamiskäytäntöjä valituille metriikoille. Mittaristoa ja jalkauttamistapoja pohdittiin case-yrityksessä järjestetyissä työpajoissa. Koodikannasta kolmea tärkeimmäksi valittua metriikkaa tuottava metriikkajärjestelmä implementoitiin. Analysoidut tiedostot priorisoitiin tiedostojen aktiivisuuden perusteella ja jokaiselle tiedostolle laskettiin metriikoiden perusteella indeksi, joka antaa nopean yleiskuvan sen ylläpidettävyydestä. Ehdotettujen jalkauttamisideoiden perusteella kehitettiin kaksi prototyyppiä jalkauttamiskäytännöistä. Niistä toinen tarjoaa reaktiivisen lähestymistavan antamalla luontevan paikan seurata koodikannan ylläpidettävyyden muutoksia. Toinen, proaktiivinen tapa mahdollistaa ohjelmiston ylläpidettävyyden järjestelmmällisen kehittämisen osoittamalla koodikannasta ne paikat, joiden parantaminen eniten kehittäisi ohjelmiston kokonaisylläpidettävyyttä. Kehitetty metriikkajärjestelmä ja prototyyppitasolla toteutetut jalkauttamiskäytännöt esiteltiin case-yrityksessä ja arvioitiin siellä hyödyllisiksi. Lukuunottamatta kolmea case yritykselle spesifistä metriikkaa, kaikki tutkimustulokset ovat yleistettävissä mille tahansa Scrum-organisaatiolle, joka haluaa hallita ja parantaa koodinsa ylläpidettävyyttä. Löytääkseen juuri omalle koodikannalleen sopivimmat ylläpidettävyyden mittarit, organisaatio voi käyttää tutkimuksessa kuvattua, hajautetulle Scrum-organisaatiolle sovitettua prosessia. Jalkauttamiskäytännöt hyödyntävät pilvipalveluita ja sopivat siksi hajautettujen tuotekehitystiimien käyttöön.
Description
Supervisor
Kauppinen, Marjo
Thesis advisor
Lehtinen, Timo
Brotherus, Robert
Keywords
software maintainability, technical debt, metrics, maintainability
Other note
Citation