Kohti parempaa laatua koodikatselmoinneilla

Olet varmaan kuullut Apulannan biisin, jossa lauletaan ”…jokin virhe ohjelmoinnissa, puutteita koodissa”. Niin, mikä voisi auttaa vähentämään ohjelmistoihin pääseviä erityyppisiä virheitä? Yksi keino on koodikatselmointi. Se on yksi ohjelmistokehityksen tärkeimmistä käytännöistä, jolla voi edistää laatua, parantaa tiimityötä ja vähentää koodista löytyviä virheitä.

Koodikatselmoinnissa tarkastellaan koodin laatua

Olet varmasti tekstiä kirjoittaessa huomannut, kuinka helposti omalle tekstilleen tulee sokeaksi. Muutaman päivän kuluttua samaa tekstiä lukiessa saatat ihmetellä, miten niin ilmiselvät virheet jäivätkin huomaamatta.

Koodikatselmoinnissa kehitystiimi tarkastelee toistensa kirjoittamaa koodia. Tavoitteena on koodin järjestelmällisellä läpikäynnillä parantaa toteutuksen laatua – samalla tekijät oppivat toisiltaan. Katselmoinnin aikana keskustellaan koodin rakenteesta, sovittujen käytäntöjen noudattamisesta ja mahdollisista kehityskohteista. Katselmointi on siis yhteistyötä. Se vahvistaa kehitystiimin keskinäistä luottamusta ja kunkin vastuuta hyvälaatuisesta koodista.

Parhaimmillaan ohjelmakoodi kulkee useampien silmäparien kautta ennen kuin sitä päästetään toteutuksen seuraaviin vaiheisiin. Ihmisillä kun vaikuttaisi olevan taipumus huomata erilaisia virheitä. Joku huomaa esimerkiksi kirjoitusvirheet ja joku toinen voikin huomata kuinka toteutuksesta saattaa tulla ongelma joskus tulevaisuudessa.

Millainen projekti, sellainen katselmointi

Jokainen ohjelmistoprojekti on omanlaisensa, joten koodikatselmointi muotoutuu kunkin projektin edetessä sen tarpeiden mukaiseksi. Menetelmiä koodikatselmointien suorittamiseksi on useita, joten mainitsen niistä vain muutaman. Juuri omaan projektiin sopiva löytyy kyllä, kun katselmointeja vain aletaan tehdä.

Eri menetelmien välillä on eroja siinä, kuinka paljon ne vaativat aikaa ja osallistujia. Yhteistä kaikille on kuitenkin se, että katselmoinnit eivät sisällä arvostelua ja asioista keskustellaan avoimesti.

Tavallisin tapaus on pyytää kollega katsomaan ohjelmakoodia esimerkiksi jonkin hankalasti ratkeavan virheen vuoksi. Tällainen ad hoc -katselmointi ei isommin järjestelyitä kaipaa, mutta voi auttaa nopeasti löytämään ratkaisun ongelmaan. Kun itse on jo tullut sokeaksi omalle koodilleen, niin sivusta tullut toinen koodari voi heti osua ongelman ytimeen. Toisinaan voi auttaa jo sekin, kun yrittää selittää ongelman ja koodin toiminnan toiselle koodarille – tai edes jollekin joka jaksaa kuunnella kiinnostuneen näköisenä. No, tai edes kuunnella.

Jos katselmoijan mielestä ohjelmakoodista löytyy korjattavaa, niin hän voi pyytää tekijää korjaamaan virheen tai selittämään miksi hän teki näin. Kun tilanne käydään läpi, niin useissa tapauksissa ainakin toinen osapuolista on voinut oppia jotain uutta. Joskus korjattavaa tulee, joskus ei. Koodikatselmoinnin jälkeen virheen korjaus on usein helppoa, mutta varsinkin lopulliseen tuotteeseen asti päästessään se saattaisi aiheuttaa harmaita hiuksia.

Usein koodikatselmointi tehdään silloin kun ollaan päästämässä jokin uusi ohjelmiston ominaisuus eteenpäin kehitysprosessissa. Esimerkiksi koodia ollaan yhdistämässä yhteisiin koodeihin ja pyydetään muita katselmoimaan koodi ennen yhdistämistä. Tällaisessa tapauksessa voidaan sopia, että esimerkiksi kolme muuta koodaria suorittaa katselmoinnin ennen yhdistämistä. Sitten kun tarpeeksi moni on hyväksynyt koodin, niin yhdistäminen voidaan tehdä.

Edellä mainituissa menetelmissä koodia kannattaisi viedä katselmointiin mahdollisuuksien mukaan pienissä osissa. Tällä tavoin voidaan huomata aiemmin, jos kehitys on menossa niin sanotusti ohi maalista. On paljon helpompaa ohjata kehitys takaisin radalleen mahdollisimman aikaisessa vaiheessa ja aikaakin säästyy. Pienemmän koodimäärän toiminnan hahmottaminen on helpompaa ja myös kehittäjillä pienempi kynnys ryhtyä katselmoitiin, kun hommassa ei mene tuntikausia.

Joissakin projekteissa voidaan järjestää katselmointitilaisuuksia tietyn ajan välein. Tällainen katselmointi vaatii järjestelyitä jo edellä mainittuja enemmän ja ohjelmakoodin määrä voi olla suurempi. Listaus katselmoitavista asioista voisi myös olla hyödyksi laajojen kokonaisuuksien tarkastelussa. Kaikkien katselmointiin osallistuvien olisi hyvä tutustua katselmoitavaan osuuteen ennalta, joten työaikaa tällaiseen koodikatselmointiin kuluu huomattavasti enemmän. Tulokset ovat myös odotettavasti paremmat tällaisen katselmoinnin jälkeen.

Panostus tulevaisuuteen

Koodikatselmointi on tehokas tapa parantaa ohjelmiston laatua, edistää tiimityötä ja jakaa tietoa kehitystiimissä. Säännöllinen katselmointi auttaa löytämään ja korjaamaan virheet varhaisessa vaiheessa, mikä vähentää kehityksen kustannuksia ja parantaa lopputuotteen laatua.

Kehitystiimien tulisi ajatella koodikatselmoinnin olevan investointi tulevaisuuteen. Katselmointien avulla koodista tulee yhdenmukaisempaa, ylläpidettävämpää ja tiimin yhteinen osaaminen kasvaa projektin edetessä. Pidetään katselmointeja positiivisessa hengessä ja mahdollisuutena oppia, niin virheitä ohjelmoinnissa ja puutteita koodissa löytyy jatkossa varmasti vähemmän.

 

Topi Ylitalo Consultor

Tämän blogikirjoituksen on kirjoittanut asiantuntijamme Topi Ylitalo.

 

Haluatko kuulla lisää?

Ota yhteyttä!