VAATIMUSMÄÄRITTELY
Motto: Erinomaisesti tehty järjestelmä ei ole mistään kotoisin, jos se toteuttaa väärät toiminnot.
Yleistä
Kehitystyön edetessä tarvitaan jatkuvasti seuraavia dokumentteja, joiden on ehdottomasti oltava erinomaisesti laadittuja:
- vaatimusmäärittely
- projekti- ja laatusuunnitelma
- sopimus
Toimittajan kannalta on tärkeää, että vaatimusmäärittely on niin yksityiskohtainen, että kehitystyö voidaan perustaa sille. Asiakkaan kannalta on tärkeää, että käyttäjien kaikki tärkeimmät vaatimukset on kirjattu riittävän yksityiskohtaisesti ja että toimittaja ymmärtää ne selvästi. Vaatimusmäärittelyn tulee sisältää tarkka ja virheetön kuvaus, jossa on huomioitu
- käyttäjien vaatimukset,
- käytettävän teknologian rajoitukset ja
- käytettävissä olevan panoksen (raha, työ) määrä.
Joidenkin tutkimusten mukaan vaatimusmäärittelyssä olevan virheen korjaaminen vasta sitten, kun järjestelmä on jo käytössä, on vähintään 50 kertaa kalliimpaa kuin virheen korjaaminen jo vaatimusmäärittelyä laadittaessa.
Vaatimusten käsittelyn (requirements engineering, RE) osatehtävät ovat vaatimusten laatiminen ja vaatimusten hallinta. Vaatimusten laatiminen sisältää vaatimusten selvittämisen (elicitation), vaatimusten analysoinnin ja mallintamisen, vaatimusten dokumentoinnin ja vaatimuksista sopimisen ja niiden tarkastamisen.
Hyväksyminen tulee aikanaan perustumaan vaatimusmäärittelyyn. Hyväksymistestin suunnitelma onkin syytä laatia samalla, kun laaditaan vaatimusmäärittelyä.
Vaatimusmäärittelyn sisältö
Vaatimukset on ilmaistava mitattavissa tai todennettavissa olevina määrityksinä. Jokainen vaatimus on ilmaistava yksityiskohtaisesti ja tarkasti. Jos jonkin seikan suhteen ei ole vaatimuksia, niin myös tämä on ilmaistava selkeästi.
Esimerkki sisällysluetteloksi:
- Yleiskatsaus
- Viitteet
- Määritelmät
- Toiminnallisuuteen kohdistuvat vaatimukset
- toimintovaatimukset (käyttäjän kannalta): kaikki toiminnot syötteiden, tulosten ja laskentojen tarkkuudella
- yhteensopivuus
- sovellusalueen standardien, säännösten tai yleisten tapojen noudattaminen
- turvallisuus
- toimintaympäristö
- Luotettavuuteen kohdistuvat vaatimukset
- kypsyys
- vikasietoisuus
- toipumiskyky
- Käytettävyyteen kohdistuvat vaatimukset
- ymmärrettävyys
- opittavuus
- operoitavuus
- Tehokkuuteen kohdistuvat vaatimukset
- ajankäyttö
- muiden resurssien käyttö
- Ylläpidettävyyteen kohdistuvat vaatimukset
- analysoitavuus
- muunneltavuus
- stabiilisuus
- testattavuus
- Siirrettävyyteen kohdistuvat vaatimukset
- liitettävyys
- asennettavuus
- siirrettävyyteen liittyvien standardien noudattaminen
- korvaavuus
Luotettavuusvaatimusten täytyy lausua asia käyttäjän näkökulmasta ja niiden pitää olla todennettavissa. Esimerkiksi seuraavat eivät ole hyväksyttäviä:
- "Ohjelman tulee olla virheetön." (Ei ole todennettavissa.)
- "Ohjelmassa saa olla korkeintaan 2 virhettä 1 000 riviä kohti." (Ei lausu asiaa käyttäjän näkökulmasta, joka on x virhettä tietyssä ajassa.)
Tiukka vaatimus on paitsi työläs täyttää myös työläs todentaa. Vaatimukset voivat myös vaihdella järjestelmän eri osissa, koska toiset osat ovat yleensä kriittisempiä kuin toiset.
Vaatimusmäärittelyn laatiminen
Asiakkaalla voi olla vaatimusmäärittely valmiina, jolloin voidaan käynnistää suoraan katselmusmenettely, jolla varmistetaan, että vaatimusmäärittely on asianmukainen. Vaikka asiakas luulee tietävänsä millainen järjestelmän tulee olla niin useimmiten tämä "tieto" ei kuitenkaan ole oikea. Vaatimukset muuttuvat, kun asiaa ajatellaan pohjamutia myöten ja kun järjestelmän toiminta alkaa hahmottua yksityiskohdiltaan.
Vaatimusmääritelyä tehtäessä joudutaan tietoja usein lypsämään tilaajalta, sillä monesti vaatimus voi olla alitajuinen, hyväksymätön, nolostuttava tai vaikea löytää. Vaatimusmäärittelyn teko voi sisältää asiakkaan kouluttamisen käytettävien menetelmien ja kuvaustapojen käyttöön. Asiakaskeskeinen toiminta voi aiheuttaa myös ongelmia. Kontrolli voi karata järjestelmän rakentajilta asiakkaalle, voi syntyä aikataulu- ja budjettiongelmia tai jotkin osa-alueet saattavat ylikorostua. Lisäksi on olemassa "ryhmä-ajattelun" ja konservatismin vaara.
Vaatimusten selvittäminen
Järjestelmälle asetettavien vaatimusten selvillesaamiseksi on selvitettävä erilaisia erilaisia asioita. Tällaisia ovat mm.
- järjestelmän rajat ja tavoitteet
- eri osapuolten ja käyttäjien roolit
- eri rooleissa olevien henkilöiden vastuut ja tehtävät
- osapuolten tarpeet ja niiden priorisointi
- työnkulku, käyttötavat
- käsiteltävien tietojen rakenne.
Vaatimusten selvittämiseksi voidaan käyttää erilaisia menetelmiä:
- perinteiset menetelmät
- haastattelut
- dokumentteihin perehtyminen
- kyselyt
- mukana tekeminen
- aivoriihi
- rajatun aiheen työryhmät
- case-tarkastelut
- muistilistat huomioitavista seikoista
- esitystapapohjaiset menetelmät
- tavoitelähtöisyys: menetelmää käytettäessä kirjataan
- organisaation tavoitteet
- vaatimukset, jotka määrittävät kuinka uusi järjestelmä johtaa tavoitteiden täyttymiseen
- esteet, jotka ilmaisevat milloin tavoitteisiin on mahdotonta päästä
- rajoitteet, jotka ilmaisevat milloin tavoitteisiin on mahdollista päästä
- käyttötapaukset ja skenaariot
- simulointi: menetelmä sopii käytettäväksi erityisesti silloin, kun asiakkaan edustajat ovat kokemattomia (ts. asiakkaalla ei ole aiemmin ollut vastaavantyyppistä järjestelmää)
- prototyypit: menetelmää käytettäessä on mietittävä etukäteen, mitä prototyypillä halutaan saada selville ja kuinka tämä asia mitataan/selvitetään prototyypin valmistuttua. Prototyypit voidaan lajitella selittävään, kokeelliseen ja kehittyvään prototyyppiin.
- tavoitelähtöisyys: menetelmää käytettäessä kirjataan
- kognitiiviset menetelmät: menetelmiä ovat mm. tehtäväanalyysi, protokolla-analyysi ja tietämyksen hankinta (knowledge elicitation).
Eri menetelmät sopivat erilaisiin tilanteisiin ja täydentävät toisiaan. Jokaisessa projektissa onkin valittava sopiva menetelmien joukko.
Vaatimusten analysointi ja mallintaminen
Mallintamisen syitä:
- selventäminen
- ymmärtäminen
- arviointi
- todentaminen
- analysointi
Mallintamisen kohteita:
- prosessi, rakenne, roolit ja vastuut, tietovuo, vuorovaikutukset, ...
- staattiset / dynaamiset piirteet
- yleinen / yhtä erikoistapausta kuvaava
Mallintamisen tekniikoita:
- teksti, grafiikka, animointi, prototyyppi, ...
- luonnollinen kieli tai formaali notaatio
Toiminnallisten vaatimusten mallintaminen, esim:
- rakenteinen analyysi (SADT, SSADM, JSD)
- oliosuuntautunut analyysi (OOA, OOSE, OMT, UML)
- formaalit menetelmät (SCR, RSML, Z, VDM)
Ei-toiminnallisten vaatimusten mallintaminen, esim:
- laatukysymykset (QFD, win-win)
- suorituskyky (ajastetut Petri-verkot)
- luotettavuus (probabilistinen MTTF)
Usein tarvitaan joukko erilaisia malleja eri asioista. UML (Unified Modeling Language) on mallinnuskieli, joka tukee koko elinkaarta ja jolle on olemassa eri toimittajien valmistamia välineitä. Ne sisältävät erilaisia kaaviotyyppejä, kuten käyttötapauskaavio, luokkakaavio, oliokaavio, komponenttikaavio, sijoittelukaavio, sekvenssikaavio, yhteistyökaavio, tilakaavio ja toimintokaavio.
Vaatimusten analysointia use case -analyysia käyttäen on käsitelty tarkemmin sivulla käyttötapausanalyysi.
Vaatimusten dokumentointi
Vaatimusmäärittelyn on oltava yksiselitteinen, täydellinen, ristiriidaton, todennettavissa oleva, muutettavissa oleva, jäljittyvä ja käyttökelpoinen ylläpidon aikana. Kustakin vaatimuksesta on kirjattava kaikki tarpeelliset tiedot. Tällaisia tietoja ovat esimerkiksi
- tunnus
- kuvaus
- perustelu
- lähde
- testi
- prioriteetti
- mahdollinen viite lisätietoihin
- yhteydet muihin vaatimuksiin
- muutoshistoria
Tiedot voidaan säilyttää tekstidokumenttina tai tietokannassa.
Vaatimukset on priorisoitava. Priorisointiasteikko voisi olla esimerkiksi:
- Välttämätön
- Hyödyllinen
- Mahdollinen
Vaatimuksista sopiminen ja niiden tarkastaminen
Vaatimusmäärittelyn täydellisyydestä ja oikeellisuudesta varmistutaan tekemällä vaatimusmäärittelylle muodollinen tarkastus. Tarkastuksen tarkoituksena on validoida vaatimusmäärittely. Tarkastajina on ehdottomasti oltava käyttäjien edustajia. Toimittajan edustajien tehtävä on lähinnä tarkastaa se, että kaikki tarvittavat asiat ovat mukana. Myös mahdolliset ristiriidat sovitetaan tarkastusmenettelyn avulla.
Vaatimusten hallinta
Vaatimusten hallinnan ongelmia ovat esimerkiksi vaatimusten sekalaisuus, erilaiset muutokset ja vaatimusten ristiriitaisuus.
Vaatimusmäärittelyn tekemisessä on huomioitava mm. seuraavat asiat:
- on hallittava usean henkilön samanaikaisesti suorittamaa ylläpitoa
- on tarjottava erilaisia näkymiä eri osapuolille
- on annettava vaatimusten taustatiedot
- on autettava kaksoiskappaleiden ja ristiriitojen löytämisessä
- on oltava käyttökelpoinen suunnitteluvaiheessa
- on autettava hyväksymistestauksessa
Edellisistä seuraa, että vaatimusmäärittely on asetettava versiohallinnan alaisuuteen ja että vaatimusmäärittelyn jäljitettävyyteen on kiinnitettävä erityistä huomiota.
Pienten järjestelmien vaatimusten hallinta voidaan toteuttaa yleiskäyttöisillä välineillä (tekstinkäsittely, taulukkolaskenta, tietokanta). Kyseisten välineiden käyttö vaatii kuitenkin suunnittelua ja kurinalaista työskentelyä. Lisäksi ylläpito on hankalaa.
Vaatimusten hallintaan on saatavilla myös erityisvälineet (CORE, DOORS, RequisitePro, ...), jotka tarjoavat aidon tuen vaatimusten hallinnalle. Kyseisille välineille on kuitenkin usein suuri käyttöönottokynnys.
Hyväksyminen
Hyväksymistestissä järjestelmää verrataan vaatimusmäärittelyyn. Hyväksymistesti onkin pääpiirteissään suunniteltava samalla kun laaditaan vaatimusmäärittely. Vaatimusmäärittelyn tapaan myös hyväksymistestin laatiminen ja suorittaminen on asiakkaan vastuulla ja toimittajalla on vain avustava tehtävä.
Hyväksyminen voidaan jakaa seuraaviin vaiheisiin:
- Hyväksymistestin suunnittelu. Suunnittelun tekee asiakas projektipäällikön avustuksella. Projektin johtoryhmä hyväksyy suunnitelman. Tässä vaiheessa määritellään hyväksymisperusteet (vaatimusmäärittelyn pohjalta), tarvittavat resurssit (henkilöt, laitteet, apuohjelmat), aikataulu ja yksityiskohtaiset toimintaohjeet.
- Ohjelmiston asennus (yleensä) asiakkaan koneelle. Asennuksen tekee toimittaja.
- Hyväksymistestin suoritus. Testin tekee asiakas projektipäällikön avustuksella.
- Kirjallisen hyväksynnän antaminen. Hyväksynnän antaa asiakas.
Vain jäsenille: