Ohjelmistojen laadun parantaminen refaktoroinnilla Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto

Samankaltaiset tiedostot
Refaktorointi teknisen velan hallintavälineenä Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto

Tutkittua tietoa. Tutkittua tietoa 1

Ohjelmistojen mallintaminen. Luento 11, 7.12.

T Refaktorointi

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

Johdantoluento. Ohjelmien ylläpito

COTOOL dokumentaatio SEPA: Refaktorointi

Työkalut ohjelmistokehityksen tukena

TDD Käytännössä Todellinen työkalu vai lehmipoikien laukkaa? Harri Kulmala Solita Oy

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

E-laskun asiakasarvo pk-sektorilla

Ketterä vaatimustenhallinta

Osavuosikatsaus 1-9/2014

Onnistunut ohjelmistoprojekti

AKL Tiedolla johtaminen. Kenneth Ekström- Faros Group

Ohjelmistotestaus -09

Scrum-käytännöt ja käyttäjäkokemustyö ohjelmistoalan yrityksessä. Marie-Elise Kontro

Käytettävyyslaatumallin rakentaminen verkkosivustolle

Osavuosikatsaus 1-6/2014

Menetelmäraportti - Konfiguraationhallinta

Avoimen lähdekoodin karttapalvelu Oskarin hyödyntäminen HSY:ssä. Henna-Kaisa Räsänen HSY paikkatietoseminaari Finlandia-talo

LAADUNVARMISTUS KETTERISSÄ OHJELMISTOKEHITYSMENETELMISSÄ

SEPA diary. Dokumentti: SEPA_diary_PK_RI.doc Päiväys: Projekti : AgileElephant Versio: V0.2

LAATURAPORTTI Iteraatio 1

Staattisen analyysin ja mittareiden käyttö refaktoroinnin vaikutuksien analysoinnissa ohjelmistojen sisäisen laadun perspektiivistä

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

SataSPIN. Prosessien parantaminen verkostoitumalla. Porin korkeakouluyksikkö, TTKK

Ohjelmistoprosessit ja ohjelmistojen laatu Kevät Ohjelmistoprosessit ja ohjelmistojen laatu. Projektinhallinnan laadunvarmistus

Kohti Kohaa avoimen lähdekoodin kirjastojärjestelmän käyttöönotto

Miia Behm sosiologia Itä-Suomen yliopisto Lokakuu Työllistymisen esteet pitkäaikaistyöttömän näkökulmasta

VERSIONHALLINTA. PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

Software product lines

Virheraportoijien virhemäärien jakaumat virhetietokannassa

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Avoin lähdekoodi hankinnoissa Juha Yrjölä

Koekysymyksiä. Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistojen suorituskyky

Onnistunut ohjelmistoprojekti

Software engineering

MITEN SUOMALAISET HOITAVAT KIPUJAAN Riitta Ahonen, professori Kuopion yliopisto, sosiaalifarmasian laitos

Merenkulun turvallisuuskulttuurin tutkimus

Kahden virtualisointiohjelmiston suorituskyvyn testaus (valmiin työn esittely)

13/20: Kierrätys kannattaa koodaamisessakin

Tehostettu kisällioppiminen tietojenkäsittelytieteen ja matematiikan opetuksessa yliopistossa Thomas Vikberg

Testauksen hallinta Testaustyökalut Luento 7 Antti-Pekka Tuovinen

Ohjelmistojen laatu asiakkaan näkökulmasta

1 Sisällysluettelo 2 Johdanto 3 Menetelmän käyttö

LAATUMITTARIT LÄÄKETEOLLISUUDESSA

Avoin lähdekoodi (Open Source) liiketoiminnassa

Metriikat käytänteiden tukena ohjelmiston laadun arvioimisessa

Avoimen ja jaetun tiedon hyödyntäminen. Juha Ala-Mursula BusinessOulu

KUNTIEN JA HUS:N ASIAKAS- JA POTILASTIETOJÄRJESTELMÄN HANKINTA

Liite A: Kyselylomake

Avoimen lähdekoodin ohjelmistot julkisessa hallinnossa

arvostelija Konfiguraationhallinta ja Rational ClearCase Juha Kuosmanen Helsinki Ohjelmistotuotantonvälineet-seminaari

Siltatiedon tarkkuustason määrittäminen Taitorakennerekisterissä. Maria Vinter

Hajautetun ohjelmistokehityksen laatu

COMBI-HANKEEN YLEISESITTELY Prof. Juha Vinha

OHJELMISTOLISENSSIT JA LIIKETOIMINTA. TKK, tietotekniikkaoikeuden seminaari Hannes Saarinen

Yleistä OPE-linjan kanditutkielmista

Arkkitehtuurinen reflektio

Tietokannan eheysrajoitteet ja niiden määrittäminen SQL-kielellä

Laaturaportti [iteraatio 2] Ryhmä 14

Built Environment Process Reengineering (PRE)

SEPA päiväkirja. Aihe: Staattiset menetelmät Tekijät: Mikko Halttunen 58198B, Mikko Närjänen 58122B Ryhmä: Neptune T Ohjelmistoprojekti I

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Ohjelmistojen mallintaminen

Kiekun työaikojen hallinnan kehittämistarpeet. Kieku-käyttäjäfoorumi Marko Maaniitty / Verohallinto

Edustajiston kokous Lahdessa MR Kuva Jorma Tenovuo. Uusi ohjelmistokehittäjä aloittaa marraskuu 2008

Testaaminen ohjelmiston kehitysprosessin aikana

BIMin mahdollisuudet hukan poistossa ja arvonluonnissa LCIFIN Vuosiseminaari

Oppilaiden motivaation ja kiinnostuksen lisääminen matematiikan opiskeluun ja harrastamiseen. Pekka Peura

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

arvostelija Turvallisuuskriittisissä, sulautetuissa järjestelmissä esiintyvien ohjelmistovaatimusten virheanalyysi Jarkko-Juhana Sievi

Testaus teoriassa ja käytännössä. Jukka Paakki Helsingin yliopisto Tietojenkäsittelytieteen laitos

Energiatehokkuus rakennustyömaalla nykytila ja haasteet. Build up Skills Workshop Helsinki Minna Kuusela TTS

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Suomen avoimien tietojärjestelmien keskus COSS ry

Innovointiprosessi. Lili Aunimo Lili Aunimo

Kaupunginkanslian avoin ohjelmistokehitys, rajapintatyö, syksy kevät Projektitarpeen ja tavoitteiden kuvaus

OTM - Katsaus sisältöön. Sidosryhmäseminaari

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

Yhteinen opintohallinnon järjestelmä

Modulaarisuus sosiaali- ja terveyspalveluiden rakenteena. Sh, TtM, FT, Mervi Vähätalo Turun kauppakorkeakoulu Turku School of Economics

Suomen avoimien tietojärjestelmien keskus COSS ry

Hankintatoimi huippukuntoon! Teollisuusyritysten hankintatoimen kehityshanke

Julkaisufoorumin kuulumiset

ETSIVÄ VANHUSTYÖ. koulutuskokonaisuus. Aika ja paikka Kouluttaja

UUSI HILKKA KOTIHOIDON JA -PALVELUN DIGITALISOINTI

Uusilla konsepteilla oikeanlaisia palveluita Helsinkiin

TABLETIT JA EUROOPAN TUOTTAVUUS- VALLANKUMOUS TUTKIMUSRAPORTTI

Tietotekniikan hyödyt Rakennustietosäätiö, Rakli, RTK, RTT, SKOL,

Ketteryys kokeilemalla. Leo Malila Kehittämispäällikkö, Kela

Käyttökokemuksen evaluoinnista käyttökokemuksen ohjaamaan suunnitteluun. ecommunication & UX SUMMIT Eija Kaasinen, VTT

Σ!3674. Advanced Test Automation for Complex Software-Intensive Systems

Materiaalikatselmustoiminnan kehitys TYKELI -taustatyöpaja Motiva Oy, Paula Eskola

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Onnistunut SAP-projekti laadunvarmistuksen keinoin

Lastensuojelun rajoilla

Mitä Lean on? Lean5 Europe Oy Ltd

Transkriptio:

Ohjelmistojen laadun parantaminen refaktoroinnilla Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto Mäkinen / Ohjelmistojen laadun parantaminen / Ohjelmistoprosessit ja ohjelmistojen laatu 28.4.2015 1

Refaktorointi Refaktoroinnilla tarkoitetaan olemassaolevien ohjelmiston koodirakenteiden muokkaamista ilman ulkoisen toiminnallisuuden muutosta Refaktorointi tähtää koodin sisäisen laadun parantamiseen rakennemuutoksin 28.4.2015 2

Tutkimuskysymyksiä Tunniste RQ1 RQ2 RQ3 RQ4 Kuvaus Millä tavoin ohjelmistoyritykset Suomessa kokevat refaktoroinnin? Miten refaktorointi nivoutuu kehitystyöhön? Mihin refaktorointipäätökset yrityksissä perustuvat, käytetäänkö laatumittareita? Onko kehityssyklin pituudella vaikutusta refaktorointiin? 28.4.2015 3

Need for Speed (N4S) Valtakunnallisessa tutkimushankkeessa pyritään parantamaan suomalaisten ohjelmistoyritysten reaktiivisuutta kykyä toimittaa ohjelmistoja nopeammin loppukäyttäjälle Hankkeessa n. 30 yritystä ja n. 10 tutkimuslaitosta 28.4.2015 4

Tutkimusasetelma Tapaustutkimus suomalaisista ohjelmistoalan yrityksistä ja niiden refaktorointikäytännöistä Haastateltiin keväällä 2015 yritysten kokeneita ohjelmistokehittäjiä ja arkkitehtejä 10 haastattelua, 12 haastateltavaa, 9 yritystä Semi-strukturoidut haastattelut kestoltaan tunnista kahteen Refaktorointiteemoja: määritelmä, menetelmät, työkalut, metriikat, riskit, hyödyt, haasteet, päätöksenteko, kehityssyklin vaikutukset Pääyhteistyökumppani: 28.4.2015 5

Mikä on refaktorointia? Päivittäin tehtäviä pieniä rakennemuutoksia ei usein koettu refaktoroinniksi Refaktorointi miellettiin enemmän useita työpäiviä kestäväksi koodin uudellenorganisoimiseksi Haastateltavien käsitys refaktoroinnista vastaa paremmin restrukturoinnin (restructuring, reengineering) käsitettä Kehittäjät arvioivat käyttävänsä n. viidenneksen työajastaan refaktorointiin tai restrukturointiin 28.4.2015 6

Ohjelmiston laadun määrittäminen Kuvailkaa mitkä laatutekijät saattaisivat olla keskeisiä refaktoroinnin kannalta Miten ja mistä niitä voisi mitata, millaisia laatumittareita on olemassa? 28.4.2015 7

Laatumetriikoiden käyttö yrityksissä Haastateltavat eivät pääsääntöisesti pitäneet laatumetriikoita oleellisina Laatumetriikan parantamisesta voi tulla tavoite itsessään, huomio keskittyy vääriin asioihin Staattista koodianalyysia kuitenkin hyödynnettiin jonkin verran turvallisuuskriittisissä tapauksissa 28.4.2015 8

Refaktorointikokemukset edellisistä tutkimuksista Stroggylos ja Spinellis tutkivat avoimen lähdekoodin projektien rakennetta ennen ja jälkeen refaktoroinnin Koodin staattisen analyysin perusteella laatumetriikat eivät parantuneeet, päinvastoin Kytkentä- ja koheesiometriikat huonontuivat refaktoroinnin jälkeen koodirakenteiden laadun parantamista ja refaktoroinnin onnistumista voi olla vaikea nähdä koodimetriikoista 28.4.2015 9

Mistä refaktorointitarpeet johtuvat? Kiireen takia tehdään tietoisesti rakenteeltaan heikompia koodiratkaisuja Kehitystyötä aloitettaessa ei ole täydellistä tietoa nykyisistä ja tulevista tarpeista Kehittäjät oppivat koko ajan uutta ja kokonaisuus nähdään myöhemmin uudessa valossa 28.4.2015 10

Näkemys refaktorointiin johtavista syistä vähän niinku omakotitaloo rakentaa, niihän sitä sanotaan että ensimmäinen pitäis polttaa, toinen myyä ja kolmannessa asuu ite. Koodin kanssa vähä sama juttu. pääsuunnittelija suomalaisesta ohjelmistoalan yrityksestä 28.4.2015 11

Refaktoroinnin hyödyt Refaktoroinnilla pyritään haastatteluiden mukaan ensisijaisesti parantamaan koodin Ylläpidettävyyttä Luettavuutta Ymmärrettävyyttä Muita mainittuja suorituskyvyn parantaminen, modulaarisuuden tuomat edut, kehittäjämotivaatio Ensisijaisesti tavoitellut hyödyt samansuuntaisia kuin Microsoftin laajassa kehittäjäkyselyssä 28.4.2015 12

Refaktoroinnin riskit ja haitat Kattavista testeistä huolimatta koodi voi hajota ja virheiden määrä lisääntyä Muutokset ulkoisiin rajapintoihin saattavat vaikuttaa kolmannen osapuolen palveluihin Ei takeita koodin muutoksesta parempaan suuntaan, laatu voi huonontua Vaivalla tehty isompi rakenteellinen muutos saatetaan joutua hylkäämään 28.4.2015 13

Refaktoroinnin tekniset vaatimukset ja työkalut Versionhallintajärjestelmät Automatisoidut testit eri tasoilla antavat regressiovarmuutta Jatkuvan integraation palvelimet Kehitysympäristöjen refaktorointiapuvälineet hyvä lisä, mutteivät täysin välttämättömiä kehitystyölle 28.4.2015 14

Refaktorointi ja päätöksenteko Refaktorointipäätökset perustuvat kehittäjien intuitioon Hyvien laatumittareiden puutteen vuoksi tarpeita vaikea kvantifioida Pienemmät refaktoroinnin hoituvat kehitystyön osana Laajempiin rakennemuutoksiin hyväksyntä ylempää Alihankintana tehdyssä asiakastyössä laajaa restrukturointia vaikeampi perustella Sisäisissä projekteissa refaktorointipäätökset helpompia 28.4.2015 15

Refaktoroinnin dilemma Pyrittävä näkemään millaisia tarpeita ohjelmiston tulee täyttää tulevaisuudessa Kehittäjän tulee tehdä paras arvaus mitkä osat koodista pysyvät staattisina, mitkä mahdollisesti muuttuvat Lyhyen elinkaaren omaavilla ohjelmistotuotteilla refaktorointi ei ehkä kannata 28.4.2015 16

Lähteet Fowler, M., Beck, K., Brant, J., Opdyke, W., Roberts, D.: Refactoring - Improving the Design of Existing Code, Addison-Wesley, 1999. Stroggylos, K., and Spinellis, D.: "Refactoring--Does It Improve Software Quality?." Proceedings of the 5th International Workshop on Software Quality. IEEE Computer Society, 2007. Kim, M., Zimmermann, T., Nagappan, N., A field study on refactoring challenges and benefits., In: SIGSOFT 12/FSE-20, ACM, pp. 1-11, 2012 28.4.2015 17

Kiitos! 28.4.2015 18