Ketterä vaatimustenhallinta ja miksi se on useimmiten hyvä asia K A R I A L HO C E O I M P R OV EIT OY
Sisältö ImproveIt Oy Perinteinen vaatimushallinta Ketterä vaatimustenhallinta Monenlaista softakehitystä Ketteryys on jatkumo Käytäntöjen jakaminen 2
ImproveIt Oy Perustettu 2007 Tuotteet ja palvelut ohjelmistokehityksen parantamiseen Vaatimusmäärittelyn ja -hallinnan erikoisosaaminen Konsultointi Koulutus Johtavat teknologiaratkaisut Vahva kokemus ja kumppanuudet 3
Perinteinen vaatimusmäärittely Vaatimukset aina valmiiksi ensin virheiden kustannusvaikutus suurin ketjun loppupäässä 20-200x / vaihe Laadunvarmistus esim. katselmoinneilla Jäljitettävyys Kuva: Flickr.com / Ryan Somma / CC BY 2.0 Tiukka muutoshallinta 4
Perinteinen vaatimusmäärittely ja hallinta Iteratiivisessa prosessissa vaatimusmäärittely voi toistua Esim. OpenUP: 5
Laatukriteerejä vaatimuksille Ymmärrettävyys Yksiselitteinen Täydellinen Testattava Muokattavissa oleva Järkevä kokonaisuus Ristiriidaton Jäljitettävä Priorisoitu Pätevyys Oikea Tarpeellinen Mahdollinen toteuttaa 6
Vaatimusten luokitteluja ja dokumentaatiomalleja löytyy mm. standardeista: IEEE 830 ISO/IEC/IEEE 29148:2011 7
Onko kaikki vaiva aina tarpeellista? Olisiko kevyempi määrittely kuitenkin riittävää? 8
Ketterä vaatimusmäärittely Scrum-prosessissa Daily Scrum 24 hours Planning meeting 14-30 days Review meeting Product Backlog Sprint Backlog Sprint Working increment of the product 9
Ketterän vaatimusmäärittelyn E T U J A Tehokkuus Kyky reagoida muutoksiin Tulokset arvioitavissa joka Sprintin jälkeen Itseohjautuvuus ja työtyytyväisyys E D E LLY TY KSIÄ Tiivis kommunikaatio asiakkaan kanssa Kurinalainen ja osaava tiimi Tehokkaat välineet ja käytännöt Esim. refaktorointi, CI, TDD, hyväksymistestit 10
Softakehitystä on monenlaista Tuotetyyppi Räätälöity ohjelmisto Sulautettu järjestelmä Oma perinteinen ohjelmistotuote Oma pilviohjelmisto Mobiiliohjelmisto Ohjelmisto säädellylle toimialalle (esim. lääkintälaitteet) Ominaista mm. Asiakkaan tarjouspyyntö käynnistää vaatimusprosessin. Muutoksista joudutaan yleensä keskustelemaan. Vaatimukset pitää jakaa (SW/HW). Kehityssyklejä rajoittaa usein HW. Tuotepäällikkö keskeisessä roolissa. Julkaisut harkittava tarkkaan. Päivitysten ja julkaisujen jakelu helppoa. Korostunut käyttäjäkokemuksen merkitys. Paljon ulkoisia tuote- ja prosessivaatimuksia. 11
Muita muuttujia Sovelluskehityksen ja testauksen teknologiat Uuskehitys, jatkokehitys vai ylläpito? Kilpailutettu hankinta Organisaation koko, osaaminen ja kulttuuri 12
Prosessivaatimuksia lääkintälaite-alalla (IEC 62304) Määrätty jäljitettävyys vaatimuksista Määrätyt kehityksen vaiheet Design Vika Vaatimus Koodi Testitapaus Huono yhteensopivuus ketterään prosessiin 13
Voisiko menettelyjä yhtenäistää? Parhaat puolet kummastakin? 14
Ketteryys on oikeasti jatkumo 0 10 Ei prosessia Ei dokumentaatiota Ei katselmointeja Reaktiivisuus Korkea riski Mahdollisesti nopeata Raskas prosessi Paljon dokumentaatiota Tarkat katselmoinnit Ennakointi Matala riski Mahdollisesti hidasta 15
Optimiketteryys on olemassa Ottaen huomioon edellä mainitut muuttujat 1 0,9 0,8 0,7 0,6 0,5 0,4 0,3 Projekti 1 Projekti 2 0,2 0,1 0 Liian ketterä Optimi Proj 1 Optimi Proj 2 Liian raskas 16
Ovatko vaatimukset silti ongelma ohjelmistonkehityksessä? Virheiden jakautuma Vaatimusongelmia: Tiedonsaanti Priorisointi/toteutus Määrittely Vaatimukset Suunnittelu Koodaus Testaus Ylläpito Hall, T. et al. Requirement Problems in Twelve Software Companies: An Empirical Analysis. IEE Proceedings Software, 149, 5 (October 2002), pp. 153-160. 17
Käytäntöjen jakaminen Perinteinen prosessi voi hyötyä ketterien käytäntöjen lainaamisesta Tiivis asiakaskontakti, päivittäiset buildit ja jatkuva integraatio, TDD, prototyypit Myös Lean-ajattelutapa on usein hyödyllinen (mm. eliminoi turha tekeminen, rakenna laatua, tee päätökset myöhään) Ketterä prosessi voi hyötyä perinteisten käytäntöjen lainaamisesta Laajempien sidosryhmien huomiointi, vaatimusten laatu, eitoiminnalliset vaatimukset, jäljitettävyys, työkalujen tehokas käyttö 18
Prototyypit 19
Pretotyypit Pretotyping [preetuh-tahy-ping], verb: Testing the initial appeal and actual usage of a potential new product by simulating its core experience with the smallest possible investment of time and money. www.pretotyping.org 20
Kiitos! K A R I. A LHO@I MPR OVE IT. FI F I. L I NKE D IN.C OM/IN/ K ARIALHO W W W. IMPROV E IT.FI 21