Kriittisten systeemien rakentaminen ketterillä menetelmillä

May 14, 2014, 12:28 PM

Voiko ydinvoimalan softaa tehdä ketterästi? Tai haluaisitko käyttää sydämentahdistinta, jonka ohjelmisto on tehty ketterästi?

Ehkä suurin väärinymmärrys ketterässä käyttöönotossa on ollut dokumentoinnin poisjättäminen. Ketterän ohjelmistokehityksen julistus on tulkittu niin, että http://agilemanifesto.org/iso/fi/ ”enemmän kuin” sanojen tilalle on laitettu sana ”ei”. Kun jotkut yksittäiset tiimit jättivät dokumentaation tekemättä, tulee mieleen väistämättä kysymys voiko ketteriä menetelmiä ylipäänsä käyttää kriittisten sovellusten tekemiseen.

Itse ajattelen asiasta päinvastoin. Mielestäni juuri turvallisuuskriittisissä sovelluksissa on oleellista, että testattavuus on mietitty samaan aikaan toiminnallisen suunnittelun kanssa. Ohjelmat on hyvä suunnitella hyvin, mutta suunnitella samalla myös testattaviksi. On myös parempi että turvallisuuskriittiset ohjelmat rakennetaan alun alkaen painottaen laadun ja käytettävyyden iterointia pikemmin kuin nopeita aikatauluja.

Itse asiassa, USA:ssa ketterät menetelmät ovat laajalti esimerkiksi puolustusteollisuuden, lääketieteellisten laitteiden ohjelmistojen ja finanssisektorin käytössä. Rally ja Dean Leffingwell ovat julkaisseet aiheesta varsin mielenkiintoisen whitepaperin http://www.scaledagileframework.com/agile-development-in-high-assurance-and-regulated-environments/. Samasta aiheesta löytyy myös slideshare-esitys http://www.slideshare.net/agileindia/agile-practices-proven-in-highly-regulated-environments.

Turvallisuuskriittisten ohjelmistojen tekemisessä oleellista on laatukriteerien pitäminen koko ajan tiukalla tasolla. Sen sijaan että projektin testausta ja korjaamista jatketaan niin kauan että virheet on korjattu, ketterä kriittisten ohjelmistojen tekeminen lähtee siitä, että alusta asti kaikki tehty toiminnallisuus testataan ja virheet korjataan saman tien pois. Esityksissä todetaankin, että perinteiset menetelmät soveltuvat ketteriä menetelmiä huonommin kompleksisten turvallisuuskriittisten sovellusten rakentamiseen. Myös Iso-Britannian hallitus edistää ketterien menetelmien käyttöä hallituksen ICT-projekteissa perinteisten menetelmien puutteellisuuksien vuoksi http://www.infoq.com/news/2012/07/agile-in-government.

Virheiden lyhyemmät korjaussyklit ja kokonaisvaltaisesti pienempi virheiden määrä vastaaviin vesiputousprojekteihin verrattuna havaittiin myös Kirsi Korhosen väitöskirjassa (http://dspace.cc.tut.fi/dpub/handle/123456789/21063), joka vertailee NSN:llä tehtyjä ketteriä ja perinteisiä projekteja toisiinsa. Meillä on siis jopa ihan tiukkaa kotimaista tutkimustietoa siitä, että ketterillä menetelmillä saadaan aikaan parempaa laatua.