1. Johdanto. Ohjelmistojen vaatimusmäärittely. Vaatimusmäärittelyn faktat ja vaihtoehdot. Vaatimusmäärittelyn luonne. Vaatimusmäärittely tänään

Samankaltaiset tiedostot
1. Johdanto. Ohjelmistojen vaatimusmäärittely. Vaatimusmäärittelyn faktat ja vaihtoehdot. Vaatimusmäärittelyn luonne. Vaatimusmäärittely tänään

Ohjelmistojen vaatimusmäärittely Helsingin yliopisto, TKTL, s2013. Harri Laine 1. Vaatimusmäärittely. Vaatimusmäärittely. Vaatimusmäärittely

1. Johdanto. Ohjelmistojen vaatimusmäärittely. Vaatimusmäärittelyn faktat ja vaihtoehdot. Vaatimusmäärittelyn luonne

Ohjelmistojen vaatimusmäärittely

Tietojärjestelmän osat

Dokumentointi ketterissä menetelmissä

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Ohjelmistojen suunnittelu

Ohjelmistojen vaatimusmäärittely Helsingin yliopisto, TKTL, s Harri Laine 1. Vaatimusten spesifiointi ja dokumentointi

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

4. Vaatimusanalyysi. Vaatimusanalyysin tavoitteet

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Yhteenvetoa, pieniä laajennuksia, tulevaisuuden haasteita

4. Vaatimusmäärittely

Implisiittiset vaatimukset. 4. Vaatimusmäärittely. Eksplisiittiset vaatimukset. Vaatimusmäärittelyn tavoitteet. Vaatimusten luonne II

Työpohja 1: Ideointi tulevaisuuden mahdollisuuksista ja potentiaalista

Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)

Yllättävän, keskustelun aikana puhkeavan ristiriidan käsittely

The OWL-S are not what they seem

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

S Ihminen ja tietoliikennetekniikka. Syksy 2005, laskari 1

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

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

Aineistoista. Laadulliset menetelmät: miksi tarpeen? Haastattelut, fokusryhmät, havainnointi, historiantutkimus, miksei videointikin

1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi ja asettele alkiot siihen.

Ohjelmistotuotanto, vaatimusanalyysi Syksy Vaatimusanalyysi. Implisiittiset vaatimukset. Eksplisiittiset vaatimukset

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Projektin suunnittelu A71A00300

Vaatimustenhallinta. Exit

TeamCHAMPION TeamCHAMPION wiki.tut.fi/champion

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista

Ohjelmistojen mallintaminen, mallintaminen ja UML

MITÄ ON GEMBA-WALK? Janne Metsolahti Työnjohtaja YIT Infra Oy

Projektin suunnittelu A71A00300

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

b) Määritä myös seuraavat joukot ja anna kussakin tapauksessa lyhyt sanallinen perustelu.

Ohjelmistotuotanto, s

Keskeiset teemat Kysymysten laatiminen vertaisarviointikäynnille ja kysymys- ja haastattelutekniikat Johdatus aiheeseen ennakkotehtävän pohjalta

Nollasummapelit ja bayesilaiset pelit

1 Kannat ja kannanvaihto

Aino Kääriäinen Aino Kääriäinen yliopistonlehtori Helsingin yliopisto

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi

Aluksi. Riskien hallinta. Riskityyppejä. Riskillä on kaksi ominaisuutta. Reaktiivinen strategia. Proaktiivinen strategia

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

T Tietojenkäsittelyopin ohjelmatyö Tietokonegrafiikka-algoritmien visualisointi Vaatimustenhallinta

Toimiva työyhteisö DEMO

1. Osoita, että joukon X osajoukoille A ja B on voimassa toinen ns. de Morganin laki (A B) = A B.

Alkukartoitus Opiskeluvalmiudet

Varhaiskasvatuksen arvioinnin toteuttaminen

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Yhteisöllisen toimintatavan jalkauttaminen!

Ohjelmistojen testaus

Käyttäjätarinat perinteisessä hankkeessa. Sisältö ja käytännöt

Ohjelmistotuotanto, projektinhallinta Kevät 2005

verkkojen G ja H välinen isomorfismi. Nyt kuvaus f on bijektio, joka säilyttää kyseisissä verkoissa esiintyvät särmät, joten pari

Ohjelmiston toteutussuunnitelma

Todistamisessa on tärkeää erottaa tapaukset, kun sääntö pätee joillakin tai kun sääntö pätee kaikilla. Esim. On olemassa reaaliluku x, jolle x = 5.

Suomen Ekonomien hallitukseen Hallitushaastattelut Taitavaksi haastattelijaksi

Harjoitus 7: NCSS - Tilastollinen analyysi

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

T Johdatus käyttäjäkeskeiseen tuotekehitykseen. suunnitteluprosessissa. Käyttäjän huomiointi. Iteroitu versio paljon kirjoitusvirheitä

Käyttäjäkeskeinen suunnittelu

UML- mallinnus: Tilakaavio

Soft QA. Vaatimusten muutostenhallinta. Ongelma

Jatkuvat satunnaismuuttujat

STEP 1 Tilaa ajattelulle

Määrittely- ja suunnittelumenetelmät

Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely

Onnistunut ohjelmistoprojekti

2. Ohjelmistotuotantoprosessi

Yhteisön kehitystyöhön osallistumisen mahdollisuudet ja mallit

Oleelliset vaikeudet OT:ssa 1/2

3. Projektinhallinta. Miksi ohjelmistoprojektin hallinta on erilaista?

TOIMINNALLINEN MÄÄRITTELY MS

Lapsi ja perhe tilanteensa kuvaajana yhteiskehittämisen osuus

Prosessimalli. 2. Ohjelmistotuotantoprosessi. Prosessimallin vaihejako. Prosessimallien perustehtävät. Ohjelmiston suunnittelu. Vaatimusmäärittely

Täydentäviä muistiinpanoja laskennan rajoista

Pohjoismainen työturvallisuusilmapiirikyselylomake

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Kuka vastaa tietojärjestelmähankkeen laadusta?

Projektin suunnittelu 71A00300

Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto

Työpaikkaosaamisen kehittämisen malli monikulttuurisille työpaikoille

Todistusmenetelmiä Miksi pitää todistaa?

Onnistunut ohjelmistoprojekti

Onnistunut SAP-projekti laadunvarmistuksen keinoin

T Tietojenkäsittelyopin ohjelmatyö Tietokonegrafiikka-algoritmien visualisointi Vaatimustenhallinta

ohjekortti #1 Tämä on ehto. Kun se täyttyy pelissä, seuraa tämän siirron sääntöjä.

CHERMUG-pelien käyttö opiskelijoiden keskuudessa vaihtoehtoisen tutkimustavan oppimiseksi

Hankinnan problematiikka

Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:

Matematiikan tukikurssi, kurssikerta 3

S Ihminen ja tietoliikennetekniikka

TYÖHAASTATTELIJANA ONNISTUMINEN I Risto Kökkö Kevätkarkelot 2012

Mitä prosessissa kehitetään. Prosessin kehittäminen. Kehittämisen tavoitteita. Perusasioita kehittämisessä. Pohjana esim. CMM

Luento 9. June 2, Luento 9

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Transkriptio:

1. Johdanto Ohjelmistojen vaatimusmäärittely Helsingin yliopisto Tietojenkäsittelytieteen laitos Vaatimusmäärittely (Requirements Engineering) on yksi ohjelmistojärjestelmien kehitystyön perustehtävistä. Se on jossakin muodossa läsnä lähes kaikissa ei-triviaaleja ohjelmistojärjestelmiä toteuttavissa prosesseissa ja projekteissa. Ohjelmistojen vaatimusmäärittelyä on tehty yhtä kauan kuin on tehty ohjelmistoja, mutta tieteenä sitä on tehty 1980-luvun puolestavälistä ja kurinalaisesti 1990-luvun alkupuolelta lähtien. Lasken alkukohdaksi vuoden 1993, jolloin pidettiin ensimmäinen iso vaatimusmäärittelykonferenssi. Toki sitä ennen on jo tehty yksittäistä alan tutkimusta. 2 Vaatimusmäärittelyn faktat ja vaihtoehdot Vaatimusmäärittely tarkoittaa eri ihmisille eri asioita. Oikeastaan vain seuraavista asioista ollaan samaa mieltä: Ohjelmistojärjestelmälle asetetaan toiminnallisia ja eitoiminnallisia vaatimuksia, jotka järjestelmän on toteutettava. Osa vaatimuksista on järjestelmää koskevia rajoitteita. Vaatimukset tulevat sidosryhmiltä (stakeholders). Kukin sidosryhmä on jollain lailla tekemisissä järjestelmän kanssa. Vaatimukset on kuvattava sopivalla tavalla ohjelmistojärjestelmän ominaisuuksiksi. Tämän kurssin lähestymistapa on melko muodollinen ja monipuolinen. Muitakin tapoja on. 3 Vaatimusmäärittelyn luonne Vaatimusmäärittelyssä kartoitetaan (elicitation), arvioidaan (evaluation), määritellään (specification), analysoidaan (analysis) ja muutetaan (evolution) ohjelmiston tavoitteita (objectives), toiminnallisuutta (functionality), ominaisuuksia (quality) ja rajoituksia (constraint). Edellinen laaja määritelmä voidaan tiivistää jotenkin näin: Vaatimusmäärittelyssä selvitetään, mitä ohjelmistojärjestelmältä vaaditaan ja miten löydetyt vaatimukset saadaan kuvattua ohjelmistona. 4 Vaatimusmäärittelyn alkuajat Ohjelmistotuotannon alkuaikoina vaatimuksia ei sen kummemmin määritelty. Ohjelmistot olivat pieniä, määrittely oli melko helppoa ja sidosryhmiä oli vähän. Ohjelmistojen monimutkaistuessa niiden laatu alkoi kärsiä kehnosti tehdystä vaatimusmäärittelystä. Jo 1976 julkaistiin empiirinen tutkimus: Software requirements: Are they really a problem? Sen mukaan riittämättömät, epätäydelliset, epäyhtenäiset tai moniselitteiset vaatimukset ovat yllättävän yleisiä ja vaikuttavat huomattavasti ohjelmistojen laatuun (Bell ja Thayer, 1976). Bell ja Thayer totesivat, että vaatimukset eivät ilmesty tyhjästä. Niitä täytyy tuottaa, tarkistaa ja korjata. 5 Vaatimusmäärittely tänään Vaatimusmäärittely on edistynyt paljon 90-luvun alusta, mutta siitä huolimatta se on ehkä kehittymättömin ohjelmistokehitystyön perustehtävistä. Myös tänään puuttuvat ja virheelliset vaatimukset ovat yksi tärkeimmistä projektin epäonnistumisen syistä. Vaatimusmäärittely on vaikeaa. Vaatimusten kartutus, sovittaminen yhteen ja tulkitseminen puhtaasti epäformaalista luonnollisesta kielestä äärimmäisen formaaliksi ohjelmakoodiksi on kaukana triviaalista ongelmasta. Lisäksi modernit ohjelmistojärjestelmät ovat äärimmäisen monimutkaisia. Vaatimuksia ja sidosryhmiä on paljon. Vaatimuksilla on huomattavasti keskinäisiä riippuvuuksia. 6 1

2. Vaatimusmäärittelyn perusteet Ongelmakenttä Ennen kuin voimme toteuttaa jonkin ongelman ratkaisevan ohjelmistojärjestelmän, meidän on ymmärrettävä ja määriteltävä, mikä tarkkaan ottaen on ratkaistava ongelma. Tässä on vaatimusmäärittelyn perimmäinen luonne. Meidän täytyy keksiä, ymmärtää, muotoilla, analysoida ja päättää kolme asiaa: Mikä on ratkaistava ongelma, Miksi ongelma pitää ratkaista ja Kenen vastuulla on ongelman ratkaisu. Vaatimusmäärittelyssä siis vastataan kolmeen kysymykseen. Mitä halutaan? Miksi halutaan? Kuka ottaa vastuun? 7 Ratkaistava ongelma on osa laajempaa kokonaisuutta, ongelmakenttää. Ongelmakenttä (problem domain, oppikirjassa problem world) tarkoittaa sellaista teknistä, fyysistä tai organisaatioympäristöä, jossa ongelma esiintyy. Ohjelmistoprojektin tehtävänä on tehdä ongelmakentässä toimiva laite (machine), joka ratkaisee kyseisen ongelman. Laite sisältää ohjelmiston lisäksi laitteiston, jossa ohjelmisto toimii. Laitteistovaatimukset ovat osa ohjelmistojärjestelmän vaatimuksia mutta eivät ohjelmiston vaatimuksia. Kurssilla laite ja ohjelmistojärjestelmä ovat synonyymeja. 8 Vaatimusmäärittely vs. suunnittelu Vaatimusmäärittelyä Ongelmakentän tapahtumia Yhteisiä tapahtumia Laitteen tapahtumia Suunnittelua Ongelmakenttä Järjestelmä Vaatimusmäärittelyssä ollaan kiinnostuneita ongelmakentän ominaisuuksista ja laitteen vaikutuksesta ongelmakenttään. Suunnittelussa ollaan kiinnostuneita laitteesta. Ongelmakentän ja laitteen leikkaus on laitteen rajapinta. Järjestelmä Järjestelmä (system) tarkoittaa joukkoa (järjestelmä)komponentteja, jotka toimivat yhteistyössä täyttääkseen jonkin tavoitteen. Järjestelmä on laajempi käsite kuin ohjelmistojärjestelmä. Se sisältää mm. käyttäjät. Koska vaatimusmäärittelyssä olemme aikeissa ratkaista ongelmakentän ongelman,tarvitsemme kaksi järjestelmää: Nykyjärjestelmä (system-as-is), joka ratkaisi ongelman ennen kehitettävää laitetta. Tuleva järjestelmä (system-to-be), joka otetaan käyttöön, kun laite on valmis ja käytössä. 9 10 Nykyjärjestelmä Nykyjärjestelmä on käytännössä aina olemassa. Nykyisen järjestelmän ei tarvitse olla tietokonepohjainen. Esimerkiksi ennen TKTL:n ilmoittautumisjärjestelmää labroihin ilmoittauduttiin fyysisesti jonottamalla ja laittamalla nimensä ilmoittautumislistalle. Tämäkin on järjestelmä. Jos ongelmakenttä on täysin uusi, niin nykyistä järjestelmää ei löydy. Esimerkiksi ongelmakenttä rakenna pysyvä tukikohta kuuhun ei sisällä nykyistä järjestelmää, vaan korkeintaan osia siitä. 11 Tuleva ohjelmisto Laitteeseen kehitettävä ohjelmisto on vain yksi tulevan järjestelmän komponenteista. Tätä kutsutaan tulevaksi ohjelmistoksi (software-tobe). Muut komponentit vaikuttavat ongelmakenttään. Ne muodostavat tulevan ohjelmiston toimintaympäristön. Muita komponentteja ovat esimerkiksi Ihmiset tai liiketoimintayksiköt, Fyysiset laitteet, kuten anturit ja kommunikointi ja Yhteistyössä olevat toiset osajärjestelmät. 12 2

Ongelmakentän ymmärrys Ongelmakentän ositus Ymmärtääksemme ongelmakentän meidän on ymmärrettävä nykyisen järjestelmän tavoitteet, toimintaa säätelevät lait, rajoitteet ja heikkoudet. Ymmärtääksemme tulevan ohjelmiston vaatimukset meidän on ymmärrettävä ongelmakentän lisäksi tulevalle järjestelmälle asetettavat vaatimukset. Usein ongelmakenttä ei ole stabiili, vaan ratkaisun vaatimukset muuttuvat ajan kanssa. Tällöin kehitetään yksi tai useampi välivaihe: seuraava järjestelmä (system-to-be-next). Ongelmakenttä voidaan osittaa kolmelle tasolle (vertaa kalvo 7): Miksi tulevaa järjestelmää tarvitaan? (WHY) Nykyistä järjestelmää tutkimalla löydetään nykyisiä ongelmia, keksitään mahdollisuuksia ja ymmärretään ongelmakenttää. Tulevalle järjestelmälle selvitetään tavoitteet, jotka järjestelmän tulee täyttää. Mitä tarpeita sen avulla täytetään? (WHAT?) Tulevan järjestelmän tavoitteet toteuttavat palvelut, oletukset ja reunaehdot selvitetään. Kuka tulevassa järjestelmässä osallistuu tarpeiden täyttämiseen? (WHO?) Tuleva ohjelmisto, ihmiset, laitteet ja olemassa olevat (osa)järjestelmät toteuttavat tulevan järjestelmän. 13 14 Miksi? Eli Why-taso Tulevan järjestelmän kehitystyön taustat tulee selvittää, jotta ongelmakenttää voidaan ymmärtää kunnolla. Miksi nykyjärjestelmä ei kelpaa? Mitkä ovat sen heikkoudet? Mitä tulevalta järjestelmältä odotetaan? Miten tuleva järjestelmä suhtautuu asiakkaan liiketoimintamalleihin ja tavoitteisiin? Miten tuleva järjestelmä suhtautuu nykyisin käytössä oleviin järjestelmiin? Vastausten selvittäminen on yleensä osa kelpoisuusselvitystä (feasibility study), jolla katsotaan, kannattaako projektia aloittaa. Yhtä lailla se voi olla osa vaatimusmäärittelyä. Ristiriitaiset tavoitteet Tulevan järjestelmän tavoitteet saattavat vaihdella sen mukaan, kuka niitä esittää. Eri esittäjien tavoitteet saattavat olla ristiriitaisia. Esimerkiksi ongelmakenttä luotain toiselle tähdelle vaatii järjestelmän, joka toimittaa luotaimen perille mahdollisimman nopeasti (tähtitieteilijät) tai mahdollisimman edullisesti (poliitikot). Tavoitteiden väliset ristiriidat on selvitettävä ennen kuin projektissa voidaan edetä. Tämä vaatii kompromisseja eri osapuolilta. 15 16 Mitä? Eli What-taso Kun tulevan järjestelmän tavoitteet tiedetään, voidaan selvittää, mitä palveluja (services) järjestelmältä odotetaan näiden tavoitteiden täyttämiseksi. Osa palveluista toteutetaan tulevan ohjelmiston avulla. Muut palvelut toteutetaan järjestelmän muiden komponenttien avulla, myös mahdollisesti manuaalisesti. Palveluiden ja vaatimusten välillä on monta-moneensuhde. Palvelu voi ratkaista monta vaatimusta ja yhden vaatimuksen toteuttamiseksi voidaan tarvita useita palveluja. (Yleensä yksi riittää tosin.) Palveluiden lisäksi täytyy selvittää järjestelmää koskevat rajoitteet (constraints) ja oletukset (assumptions). 17 Kuka? Eli Who-taso Tulevan järjestelmän vastuut on selvitettävä. Tämä koskee sekä järjestelmässä toimivia ihmisiä että järjestelmän osajärjestelmiä. Ilman toimivaa vastuujakoa kehittynytkin järjestelmä saattaa toimia väärin tai hitaasti. Vastuujako ymmärretään yleensä ihmisten väliseksi vastuujaoksi, mutta yhtä lailla osajärjestelmien välillä on vastuujakoa. Vastuut voidaan osittaa usealla tavalla. Paras vastuujako minimoi tulevan järjestelmän epäonnistumisen todennäköisyyden. Todennäköisin vastuujako minimoi epäonnistumisen todennäköisyyden ja kehitystyön kustannusten funktion. 18 3

Ohjelmiston toimintaympäristö Samalla lailla kun ongelmakenttä ja laite eroteltiin toisistaan, myös tulevan ohjelmiston toimintaympäristö ja ohjelmakoodi erotetaan toisistaan. Vaatimusmäärittelyssä selvitetään, millä ehdoilla tuleva ohjelmisto toimii (toimintaympäristö) ja miten ohjelmisto kommunikoi ulkomaailman kanssa (ohjelmiston ja toimintaympäristön rajapinta). Toimintaympäristön vaatimukset ovat järjestelmävaatimuksia (system requirements) Rajapinnan vaatimukset ovat ohjelmistovaatimuksia (software requirements). Ohjelmiston toimintaympäristön kaavakuva Ympäristön tapahtumia Yhteisiä tapahtumia Vaatimusmäärittelyä Järjestelmävaatimuksia Ohjelmistovaatimuksia Ohjelmiston tapahtumia Toteutuksen sisäisiä vaatimuksia (eivät kuulu vaatimusmäärittelyyn) Suunnittelua 19 20 Järjestelmävaatimukset Järjestelmävaatimus tarkoittaa sellaista toimintaympäristön vaatimusta, jonka tuleva ohjelmisto toteuttaa yhteistyössä muiden järjestelmän komponenttien kanssa. Nämä vaikuttavat suoraan ongelmakenttään. Esimerkiksi seuraava on järjestelmävaatimus: Luotain aloittaa jarrutuksen, kun sen etäisyys x tähdestä on välillä 1,5 AU < x < 0,5 AU (AU = maan keskietäisyys auringosta). Ohjelmistovaatimukset Ohjelmistovaatimus tarkoittaa sellaista toimintaympäristön vaatimusta, jonka ohjelmisto toteuttaa yksin. Nämä vaikuttavat välillisesti ongelmakenttään rajapinnan kautta. Esimerkiksi seuraava on ohjelmistovaatimus: Muuttujan etäisyystähdestä arvon on oltava yli 0,5. Ohjelmistovaatimukset ovat järjestelmävaatimuksia, koska ne ovat osa ongelmakenttää. Järjestelmävaatimukset eivät usein ole ohjelmistovaatimuksia. 21 22 Reunaehdot ja oletukset Reunaehto (domain property) on ongelmakentän ominaisuus. Se on aina voimassa, eikä sitä voida kiertää mitenkään. Reunaehdot liittyvät yleensä fysiikan lakeihin. Esimerkiksi seuraava on reunaehto: Luotaimen lähettämät radiosignaalit kulkevat valonnopeudella. Oletus (assumption) on väite, jonka oletetaan pätevän ongelmakentässä. Esimerkiksi seuraava on oletus: Ohjelmistossa laskettu luotaimen etäisyys tähdestä on sama kuin luotaimen todellinen etäisyys tähdestä. 23 Järjestelmä- ja ohjelmistovaatimusten sykli Järjestelmä- ja ohjelmistovaatimusten roolit ovat selkeät. Oikein määritelty ohjelmisto ohjaa seuraavaa sykliä: 1. Tuleva ohjelmisto saa syötteitä syötelaitteilta, kuten syöteantureilta. 2. Syötteet vaikuttavat ohjelmiston toimintaan ohjelmistovaatimusten mukaisesti. 3. Ohjelmisto tuottaa vaatimusten mukaisia tulosteita tulostuslaitteille, kuten ohjausantureille. 4. Ohjausanturit ohjaavat laitteistokomponentteja, jolloin ohjelmiston toimintaympäristö muuttuu. Muutokset ovat järjestelmävaatimusten mukaisia. 5. Syöttölaitteet havaitsevat toimintaympäristön muutoksen. Sykli alkaa alusta. 24 4

Vaatimusluokat Toiminnalliset vaatimukset Kaikki vaatimukset jakautuvat kahteen luokkaan: toiminnallisiin vaatimuksiin (functional requirements) ja ei-toiminnallisiin vaatimuksiin (non-functional requirements). Toiminnalliset vaatimukset liittyvät tulevan ohjelmiston tarjoamiin palveluihin. Ei-toiminnalliset määrittelevät, mitä rajoituksia tulevan järjestelmän palveluilla on. Reunaehdot ovat sukua ei-toiminnallisille vaatimuksille. Nekin rajoittavat järjestelmän toimintaa, mutta erona ei-toiminnallisille vaatimuksille niistä ei voida neuvotella. Toiminnalliset vaatimukset määrittelevät, miten tuleva ohjelmisto vaikuttaa ympäristöönsä. Ne vastaavat aiemmin listattuun Mitä-kysymykseen (What). Esim. Luotaimen hallintaohjelmisto lähettää pyydettäessä tilaraportin omasta tilastaan. Toiminnalliset vaatimukset voivat myös viitata toimintaympäristön vaikutukseen tulevan ohjelmiston toimintaan. Esim. Luotaimen hallintaohjelmisto kytkee aurinkopaneelit pois päältä, kun paristojen varaustaso x toteuttaa ehdon 95% < x < 100%. 25 26 Ei-toiminnalliset vaatimukset Ei-toiminnalliset vaatimukset määrittelevät ehtoja, miten tulevan ohjelmiston pitää täyttää toiminnalliset vaatimukset tai miten tulevan ohjelmiston kehitystyötä pitää tehdä. Esim. Kaikki luotaimen radioliikenne on kryptattu. Luotaimelle tehdään samoilla määrityksillä kolme eri ohjelmistoversiota. Ei-toiminnallisia vaatimuksia voi toisinaan olla vaikea havaita, mutta onneksi niistä on tehty useampikin kattava luokittelu. 27 Ei-toiminnallisten vaatimusten luokittelu 28 Ei-toiminnallisten vaatimusten luokkia Laatuvaatimukset (quality requirements) Nämä kuvaavat ohjelmiston laatuun liittyviä ominaisuuksia vastaten kysymykseen Miten hyvin (How well). Näillä on yhteys laatutekijöihin (quality factors, quality attributes) Ohjeistusvaatimukset (compliance requirements) Nämä kuvaavat ohjelmiston suhdetta kansallisiin ja kansainvälisiin lakeihin, sosiaalisiin sääntöihin, poliittisiin tai kulttuurisiin rajoituksiin, standardeihin jne. Arkkitehtuurivaatimukset Nämä kuvaavat, miten tuleva ohjelmisto liittyy toimintaympäristöönsä. Kehitystyön vaatimukset Nämä kuvaavat, mitä ohjelmistotekniikan prosesseja ja menetelmiä käytetään, mitkä ovat kehitystyön sallitut kustannukset jne. Nämä eivät liity ohjelmiston käyttöön. 29 Vaatimusmäärittelyprosessi Vaatimusmäärittelyyn kuuluu prosessi, joka sisältää työvaiheet, toimijat ja tuotokset. Vaatimusmäärittelyn työvaiheet sisältävät tuotoksen tekemiseen vaadittavat tehtävät (kohta tarkemmin). Vaatimusmäärittelyn toimijat ovat tulevan ohjelmiston sidosryhmiä (stakeholders). Sidosryhmä tarkoittaa henkilöä, ryhmää tai järjestelmää, jonka toimintaan tuleva ohjelmisto vaikuttaa, joka on vastuussa tulevan ohjelmiston vaatimuksista tai joka osallistuu valmiin ohjelmiston hyväksymiseen. Vaatimusmäärittelyn tuotos on vaatimusdokumentti (requirements document, RD). Se kuvaa sekä löydetyt vaatimukset että tulevan ohjelmiston ja toimintaympäristön välisen rajapinnan. 30 5

Vaatimusmäärittelyn työvaiheet Vaatimusmäärittelyn työvaiheet 2 Ongelmakentän ymmärtäminen Tässä työvaiheessa tutustutaan nykyiseen järjestelmään ja ongelmakenttään mahdollisimman monelta suunnalta. Selvitettäviä asioita ovat: Miten nykyjärjestelmä toimii osana ongelmakenttää. Mitkä ovat nykyisen järjestelmän tavoitteet, komponentit, säännöt ja tehtävät. Mitä rajoituksia ja sääntöjä sillä on. Mitkä ovat vaatimusmäärittelyn sidosryhmät. Mitkä ovat sidosryhmien mielestä nykyisen järjestelmän vahvuudet ja heikkoudet. Ongelmakentän halinta ja vaatimusten kartutus Tässä työvaiheessa syvennetään tietämystä ongelmakentästä ja hankitaan raakatietoa tulevasta ohjelmistosta ja käyttöympäristöstä. Selvitettäviä asioita ovat: Miten uudella teknologialla ja/tai muuttuneilla liiketoimintamalleilla voidaan korjata nykyisen järjestelmän heikkouksia menettämättä sen vahvuuksia. Mitä nykyisestä järjestelmästä eroavia tavoitteita on tulevalla järjestelmällä ja mitä erilaisia vaihtoehtoja tavoitteiden täyttämiseen on. Ympäristön ja tekniikan tulevalle järjestelmälle asettamat rajoitteet. Mahdolliset vastuujaot (Kuka-taso) Skenaariot kuvaamaan tulevan ohjelmiston ja sen toimintaympäristön välistä vuorovaikutusta. Ongelmakentän ja toimintaympäristön ominaisuudet ja oletukset. Edelliset kohdat toteuttavat tulevan ohjelmiston vaatimukset. 31 32 Vaatimusmäärittelyn työvaiheet 3 Vaatimusten evaluointi Tässä vaiheessa ratkotaan kartutusvaiheessa esille tulleet kysymykset ja ongelmat: Vaatimuksiin liittyvät ristiriidat ratkotaan. Eri näkökulmat ja sidosryhmät näkevät ongelmakentän ja tulevan ohjelmiston eri tavoin, mikä voi johtaa ristiriitaisiin vaatimuksiin tai eri tulkintoihin. Tulevan järjestelmän riskit kartoitetaan ja järjestelmälle tehdään riskianalyysi. Kartutusvaiheessa esille tulleet vaihtoehtoiset ratkaisut evaluoidaan. Vaihtoehdoista valitaan sopivin. Vaatimukset priorisoidaan. Tämä helpottaa sekä evaluointia että toteutusaikataulun laadintaa. 33 Vaatimusmäärittelyn työvaiheet 4 Spesifiointi ja dokumentointi Tässä vaiheessa tarkennetaan, strukturoidaan ja dokumentoidaan evaluointivaiheessa hyväksyttyjä tulevan järjestelmän ominaisuuksia. Tuloksena saadaan vaatimusdokumentti, joka sisältää tulevan järjestelmän tavoitteet, määritelmät, ongelmakentän ominaisuudet, vastuut, järjestelmävaatimukset, ohjelmistovaatimukset ja käyttöympäristöoletukset. Vaatimusten vahvistaminen Lopuksi vaatimusdokumentista varmennetaan, että tuleva järjestelmä täyttää sidosryhmien tarpeet. Samalla varmistetaan, että vaatimusdokumentissa spesifikaatiot on kuvattu yhtenäisesti ja että ne kattavat ongelmakentän. Vahvistettu vaatimusdokumentti on kehitystyön syöte. Vaatimusmäärittelyprosessi on iteratiivinen. Kaikkea ei selvitetä kerralla, vaan vaatimukset ja ongelmakentän ymmärrys tarkentuvat ajan kanssa (seuraava kalvo) 34 Vaatimusmäärittelyn spiraali Vaatimusmäärittelyn laatu Hyvä vaatimusmäärittely ja erityisesti hyvä vaatimusdokumentti ei synny itsestään. Niiden on täytettävä joukko laatutekijöitä: Täydellisyys (completeness) Kaikki tulevalle järjestelmälle asetetut tavoitteet tulee olla katettu. Kaikki mahdolliset tulevan ohjelmiston syötteet ja tulosteet on katettu. Poikkeustilanteet on katettu jne. Johdonmukaisuus (consistency) Vaatimukset, oletukset ja reunaehdot ovat keskenään yhteensopivia ja kuvattu yhtenäisesti. 35 36 6

Vaatimusmäärittelyn laatu 2 Vaatimusmäärittelyn laatu 3 Riittävyys (adequacy) Vaatimukset kuvaavat tulevan järjestelmän todellisia tarpeita. Ohjelmistovaatimukset vastaavat niitä kuvaavia järjestelmävaatimuksia. Reunaehdot kuvaavat ongelmakentän lainalaisuudet oikein. Toimintaympäristöstä tehtävät oletukset ovat realistisia. Yksikäsitteisyys (unambiguity) Vaatimuksissa, oletuksissa ja reunaehdoissa ei ole moniselitteisyyttä. Mitattavuus (measureability) Vaatimusten pitää olla sellaisella tarkkuudella, että niitä voidaan evaluoida numeerisesti. 37 Asianmukaisuus (pertinence) Vaatimukset ja oletukset liittyvät tulevalle järjestelmälle asetettuihin tavoitteisiin, eivät toteutukseen. Soveltuvuus (feasibility) Vaatimusten täytyy olla toteutettavissa annetulla budjetilla, aikataululla ja teknologialla. Luettavuus (comprehensibility) Vaatimukset, oletukset ja reunaehdot on kuvattu dokumentaatiossa ymmärrettävästi. Hyvä rakenne (good structure) Vaatimusdokumentti on rakenteeltaan looginen ja yhtenäinen. Termejä ei käytetä ennen niiden esittelyä. 38 Vaatimusmäärittelyn laatu 4 Muunnettavuus (modifiability) Vaatimusdokumenttia on mahdollista päivittää ja laajentaa paikallisesti ilman että kokonaisuus kärsii. Seurattavuus (traceability) Jokaisesta vaatimuksesta, oletuksesta ja reunaehdosta tiedetään, mikä sidosryhmä sen on esittänyt ja koska. Jokaisen vaatimuksen vaikutus tulevaan järjestelmään selviää dokumentista. Osa tärkeimmistä vaatimuksista (esim. Täydellisyys ja riittävyys) riippuvat ongelmakentästä ja tulevalle järjestelmälle asetetuista tavoitteista. Tällaisia vaatimuksia on vaikea evaluoida. Ketterä ohjelmistokehitys ja vaatimusmäärittely Ketterä ohjelmistokehitys (agile development) on moderni tapa tehdä ohjelmistoja. Siinä ohjelmistoa rakennetaan iteratiivisesti pieni osa kerrallaan lyhyinä sykleinä. Ketterä ohjelmistokehitys ja vaatimusmäärittely eivät ole ristiriidassa keskenään. Vaatimusmäärittelyn spiraali (kalvo 35) on jo iteratiivinen prosessi. Vaatimusmäärittelyn kannalta jokainen spiraalin sykli lisättynä lyhyellä toteutusvaiheella vastaa ketterän ohjelmistokehityksen sykliä. 39 40 Syklin lyhentämisen seurauksia Syklin äärimmäinen lyhentäminen johtaa keventyneeseen vaatimusmäärittelyyn: Osa toiminnallisuudesta saadaan suoraan käyttäjältä mahdollisesti hyvin kevyellä evaluoinnilla, spesifioinnilla ja laadunvarmistuksella tai jopa ilman näitä vaiheita. Esimerkiksi testitapaukset vastaavat usein spesifikaatiota. Yhdellä kerralla toteutetaan pieni osa tulevan ohjelmiston toiminnallisuudesta. Asiakkaalta saadaan välitön palaute toteutetuista vaatimuksista. 41 Ketterän kehitystyön vaatimuksia Vaatimusmäärittelyn kannalta kaikki projektit eivät ole hyviä ketteriä projekteja. Oppikirja listaa seuraavat vaatimukset: Kaikki sidosryhmät, myös loppukäyttäjät, palautuvat yhdeksi asiakkaan rooliksi. Asiakas on läsnä kehitystiimissä tai aina tavoitettavissa. Projekti on riittävän yksinkertainen ja ei-kriittinen, jotta ei-toiminnalliset vaatimukset, ympäristön rajoitukset, taustalla olevat oletukset, vaihtoehtoiset toteutustavat ja tulevan järjestelmän riskit voidaan kuitata vähällä työllä tai jättää huomioimatta. Asiakas osaa antaa vaatimukset yhtenäisesti (ei konflikteja) ja ymmärtää niiden arvon (ei priorisointia). Vaatimuksia ei tarvitse spesifioida tarkasti ennen toteutusta. Tiheät julkaisut ovat tärkeämpiä kuin vaatimusten verifiointi. Uudet tai muuttuvat vaatimukset eivät vaadi raskasta refaktorointia. Kehitystiimi huolehtii tulevan ohjelmiston ylläpidosta. Onneksi ketteryys ei ole binäärinen ominaisuus. Mitä vähemmän edellisistä vaatimuksista toteutuu, sitä enemmän aikaa tulee tarjota kullekin vaatimusmäärittelyn syklille. 42 7

3. Ongelmakentän hallinta ja vaatimusten kartutus Ongelmakentän hallinta ja vaatimusten kartutus (OHVK) on vaatimusmäärittelyn spiraalin (kalvo 35) ensimmäinen työvaihe. Siinä on kaksi toisiinsa vahvasti sitoutunutta osaa: Ongelmakentän hallinta: selvitetään, missä ympäristössä nykyinen ja tuleva järjestelmä toimivat Vaatimusten kartutus: selvitetään, mitä tulevalta järjestelmältä odotetaan ongelmakentässä. Tämä on vaatimusmäärittelyn haastavin työvaihe. Etsittävää tietoa on paljon, ja tulokset vaikuttavat kaikkiin tuleviin ohjelmistokehityksen (ei pelkästään vaatimusmäärittelyn) työvaiheisiin. Kerättävä tietämys OHVK-työvaiheessa kerätään tietämystä, mitä tarvitaan tulevan järjestelmän ominaisuuksien kartoittamiseen. Vaiheessa tarvitaan ainakin Tulevan järjestelmän organisaation tietämystä: rakenne, liiketoimintatavoitteet, politiikat, roolit ja vastuut. Ongelmakentän tietämystä: alan terminologia, tavoitteet, säännöt ja lait. Nykyisen järjestelmän tietämystä: tavoitteet, toimijat, resurssit, tehtävät, työnkulut ja ongelmat. 43 44 OHVK:n tulos OHVK-työvaiheen tuloksena saadaan alustava raportti nykyjärjestelmästä, organisaatiosta, ongelmakentästä, nykyjärjestelmästä löydetyistä ongelmista, nykyjärjestelmän tarjoamista mahdollisuuksista (tulevan järjestelmän kannalta) ja vaihtoehtoisista tavoista ratkaista nykyjärjestelmän ongelmat. (Toki raportissa listataan myös löydetyt vaatimukset, vaikka niitä ei mainita oppikirjassa) 3.1. Sidosryhmien tunnistus ja vuorovaikutus Sidosryhmiä voi olla paljon, jolloin kaikkia ei voida ottaa mukaan vaatimusmäärittelyyn. Sopiva otos voidaan valita esimerkiksi seuraavien ehtojen perusteella: Asema organisaatiossa Päätäntävaltaa tulevasta järjestelmästä Ongelmakentän asiantuntijuus Altistuminen havaituille ongelmille (eli käyttää nykyistä järjestelmää) Vaikuttaa järjestelmän hyväksyntään (käyttöönotossa) Henkilökohtaisia tavoitteita tulevalle järjestelmälle Sidosryhmiä päivitetään prosessin edetessä, kun löydetään uusia näkökulmia. 45 46 OHVK:n esteitä OHVK:n esteitä 2 OHVK-prosessi ei ole helppo, vaan siinä on paljon sille ominaisia hankaluuksia. Näiden tunnistaminen helpottaa niiden korjaamista: Sidosryhmien väliset konfliktit Sidosryhmien tavoitteet järjestelmälle vaihtelevat Tietoon ei päästä käsiksi Avainhenkilöt eivät ennätä osallistua tai eivät pidä OHVK-työvaihetta tärkeänä Sidosryhmät eivät uskalla kertoa mielipidettään Pelätään tulevaan järjestelmään siirtymisen seurauksia Kommunikaatiovaikeudet Sidosryhmien taustat, terminologiat ja kulttuurit eroavat niin paljon, että yhteistä kieltä ei löydy Hiljainen tieto (tacit information) ja piilossa olevat tavoitteet Sidosryhmät eivät osaa kuvata ajatuksiaan sanoiksi Sidosryhmillä on epärealistisia odotuksia Sidosryhmät eivät tiedä, mitä oikeastaan haluavat Yhteiskunnalliset tekijät Poliittiset tekijät ja kilpailijat vaikuttavat päätöksiin Muutosvastarintaa esiintyy Aika-/kustannuspaineet rajoittavat työvaihetta Epästabiiliit olosuhteet Organisaatiomuutokset ja työntekijöiden vaihtuvuus vaikuttavat prosessiin Sidosryhmien tarpeet vaihtelevat prosessin eri vaiheissa. 47 48 8

Epäsuorat ja suorat kartutustekniikat Vaatimuksia voidaan kartuttaa kahdella tavalla. Epäsuorilla kartutustekniikoilla (artefact-driven elicitation techniques) vaatimuksia etsitään tallennetuista tiedoista ilman suoraa kontaktia sidosryhmiin. Suorilla kartutustekniikoilla (stakeholder-driven elicitation techniques) vaatimuksia etsitään interaktiivisesti yhdessä sidosryhmien kanssa. OHVK-työvaihe kannattaa aloittaa epäsuorilla kartutustekniikoilla, koska löydetyt tiedot auttavat suoria kartutustekniikoita. 3.2. Epäsuorat kartutustekniikat Seuraavassa on lista yleisistä epäsuorista kartutustekniikoista: Taustatutkimus Kaivetaan vaatimuksia olemassaolevista dokumenteista Tiedon louhinta Kaivetaan vaatimuksia olemassaolevien dokumenttien ulkopuolisesta datasta (esim. käyttötilastoista) Kyselytutkimukset Tehdään sidosryhmille täytettävä kyselylomake Kertomukset Kuvataan toiminta askel askeleelta Prototyypit Tehdään kehitettävän ohjelmiston malli sidosryhmille kokeiltavaksi 49 50 Taustatutkimus Tiedon louhinta Taustatutkimuksessa tutustutaan olemassa olevaan dokumentaatioon: Organisaatiodokumentaatio: organisaatiokaaviot, liiketoimintasuunnitelmat, toimintakäsikirjat, kokouspöytäkirjat, osavuosikatsaukset jne. Ongelmakentän dokumentaatio: alan kirjat, tieteelliset julkaisut, säännöt, vastaavat järjestelmät jne. Nykyjärjestelmän dokumentaatio: tiedonkulku, työskentelytavat, liiketoimintasäännöt jne. Myös valitukset, viat, muutospyynnöt jne. Dokumentaatiota on yleensä ennemmin liikaa kuin liian vähän. Tiedonlouhinta auttaa etsimään tulevan järjestelmän kannalta keskeisiä tietoja. 51 Taustatutkimusta voidaan täydentää keräämällä tietoja dokumentteihin tallentamattomasta datasta, kuten myynnistä, käyttötilastoista, tehokkuuskäyristä, käyttöasteesta jne. Tiedon louhinnalla saadaan parhaimmillaan dynaamisia tilastoja vanhan järjestelmän käytöstä ja käyttäytymisestä. Oikein tulkittuina tällaiset tiedot ovat erittäin tärkeitä tulevalle järjestelmälle. 52 Kyselytutkimukset Kyselytutkimukset ovat tehokas keino kerätä tietoja isolta joukolta sidosryhmiä. Niissä sidosryhmät vastaavat monivalinnoilla joukkoon lomakkeella olevia kysymyksiä. Kyselytutkimuksella saadaan selvitettyä näppärästi ja melko edullisesti mielipiteitä. Toisaalta kyselytutkimuksen antamat tulokset ovat rajoittuneita, koska lomake on melko rajoittunut tiedonvälityskanava. Kyselytutkimukset sopivat parhaiten haastatteluja varten tarvittavien taustatietojen keruuseen. Kertomukset Kertomukset (narratives) ovat erinomainen keino kuvata, miten nykyjärjestelmä toimii tai miten tulevan järjestelmän pitäisi toimia. Väljin muoto kertomuksista ovat kuvakäsikirjoitukset (storyboards). Niissä kertomus kerrotaan kuvasarjana. Esimerkiksi nykyjärjestelmän käytöstä kertova sarjakuva on kuvakäsikirjoitus. Kuvakäsikirjoitukseen saa rakennetta lisäämällä siihen tarkentavaa tietoa: Ketkä ovat mukana kuvakäsikirjoituksessa. Mitä heille tapahtuu. Miten mitäkin tapahtuu meille (eri kuvissa). Miksi kaikki tapahtuu. Entä jos jokin muu tapahtuma toteutuisi. Mikä voi mennä pieleen. 53 54 9

Skenaariot Skenaario (scenario) on ehkä yleisimmin käytetty kertomustyyppi. Siinä kuvataan järjestelmälle ominainen komponenttien välinen toiminta. Skenaario sisältää rakenteisen kuvakäsikirjoituksen kohdat ketkä, mitä ja miten. Skenaarioilla voidaan kuvata nykyistä järjestelmää tai tulevan järjestelmän vaatimuksia. 55 Positiiviset ja negatiiviset skenaariot Skenaariot voivat olla positiivisia tai negatiivisia. Positiivisessa skenaariossa kuvataan, mitä järjestelmässä tapahtuu. Negatiivisessa järjestelmässä kuvataan, mitä järjestelmässä ei saa tapahtua. Useimmat skenaariot ovat positiivisia. Sidosryhmät pitävät niistä, koska ne kuvaavat konkreettisia tapahtumia. Negatiiviset skenaariot ovat vastaesimerkkejä. Niitä tarvitaan, kun halutaan selvittää järjestelmän reunaehtoja. 56 Normaalit ja epänormaalit skenaariot Normaaleissa skenaarioissa kuvataan, miten järjestelmän onnistunut toiminta tapahtuu. Epänormaaleissa skenaarioissa kuvataan poikkeustilanteita: mitä tapahtuu, kun asiat eivät mene odotetulla tavalla. Normaalit ja epänormaalit skenaariot ovat molemmat positiivisia skenaarioita. Järjestelmän on selvittävä myös poikkeustilanteista. Skenaarioiden vahvuudet ja heikkoudet Skenaariot ovat selkeitä ja helposti ymmärrettäviä eri sidosryhmille. Niiden avulla on helppo kuvata järjestelmän sekä toivottua että eitoivottua toimintaa. Toisaalta skenaariot ovat esimerkkejä. Ne ovat osittaisia kuvauksia järjestelmän toiminnasta eivätkä ne anna lopullisia vastauksia. Tarkka järjestelmän kuvaus skenaarioina vaatisi jokaisen järjestelmän komponentin kaikkien toimintatapausten kaikki kombinaatiot. Tuloksena olisi testauksesta tuttu kombinaatioräjähdys. Skenaariot kuvaavat komponenttien interaktiota, mutta eivät sen taustalla olevia tavoitteita. 57 58 Prototyypit 3.3. Suorat kartutustekniikat Joskus dokumentti ei ole paras tapa kuvata tulevan järjestelmän toimintaa sidosryhmille. Teksti ei välttämättä kerro, millä lailla tuleva järjestelmä vaikuttaa työskentelyyn. Tällaisissa tilanteissa ohjelmiston prototyypit (prototypes) auttavat. Prototyyppi on yksinkertaistettu ohjelmisto, joka näyttää oikealta, mutta toimii rajoitetusti. Parhaimmillaan prototyyppi helpottaa toiminnallisten vaatimusten löytämistä eri sidosryhmiltä. Toisaalta prototyypit eivät ole kovin käteviä eitoiminnallisten vaatimusten kartutuksessa. Suorat kartutustekniikat perustuvat sidosryhmien kanssa käytävään suoraan vuorovaikutukseen. Tärkeimmät suorat kartutustekniikat ovat: Haastattelut Kysytään sidosryhmiltä, mitä he haluavat. Havainnointi Käydään katsomassa nykyjärjestelmää paikan päällä. Ryhmäistunnot Pidetään OHVK:n sidosryhmien ryhmätapaamisia. 59 60 10

Haastattelut Haastattelut (interviews) ovat ehkä tärkein vaatimusten kartutustekniikka. Siinä yhdeltä sidosryhmältä kysytään kerrallaan haluttuja tietoja. Haastattelut voivat olla rakenteisia, vapaita tai hybridejä. Rakenteisessa haastattelussa (structured interview) käytetään ennalta annettuja kysymyksiä. Vapaassa haastattelussa (unstructured interview) keskustelu etenee ilman annettuja kysymyksiä. Hybridihaastattelu alkaa rakenteisena mutta vaihtuu vähitellen vapaaksi. Haastattelujen vahvuudet ja heikkoudet Haastattelujen avulla saadaan parhaimmillaan kartutettua sellaista tietoa, jota ei saada millään muulla tavalla: Vanhan järjestelmän todellinen toiminta. Parannusehdotuksia. Henkilökohtaisia mielipiteitä. Valituksia vanhasta järjestelmästä. Käsityksiä, tuntemuksia Ennalta arvaamattomia näkökulmia. Toisaalta joskus haastateltavien vapaasti kertomia asioita on vaikea yhdistää yhtenäiseksi kokonaisuudeksi. Haastattelun onnistuminen riippuu todella paljon haastattelijasta ja käytetyistä kysymyksistä. 61 62 Haastattelujen muistilista Haastattelujen muistilista 2 Haastattelut ovat tehokas kartutusmenetelmä, kun ne tehdään oikein. Seuraavassa on oppikirjan onnistuneen haastattelun muistilista: Valitse sellaiset haastateltavat, joiden avulla saadaan kattava ja luotettava kuva ongelmakentästä. Valmistaudu haastatteluun etukäteen. Keskity haastateltavan kannalta oleellisiin kysymyksiin. Pidä haastattelun ohjat omissa käsissä. Pidä huoli, että haastateltava tuntee olonsa mukavaksi haastattelun alusta alkaen. Pyydä erikseen lupaa nauhurin käyttöön. Esittele haastattelun aihe. Aloita helpoilla kysymyksillä. Pidä haastattelun ilmapiiri tasa-arvoisena. 63 Keskitä haastattelu koskemaan haastateltavan työhön ja työhön liittyviin ongelmiin. Keskity haastatteluun. Kysy avoimet kysymykset haastattelun loppupuolella. Avoin kysymys ei sisällä vastausehdotusta. Esimerkiksi Mitä kello on? on avoin kysymys. Onko kello jo kaksi? ja Valitse seuraavista kellonaika ovat suljettuja kysymyksiä. Ole valmis vaihtamaan haastattelun suuntaa, jos saat odottamattoman mielenkiintoisen vastauksen. Kysy Miksi? -kysymyksiä tehdyistä päätöksistä, ennalta vahvistetuista ratkaisuista ja muista kyseenalaisista ratkaisuista, MUTTA ole tarkkana, jotta et vaikuta hyökkäävältä. Tämä on oppikirjan kanta. Miksi? -kysymyksistä on mielestäni usein enemmän haittaa kuin hyötyä. 64 Haastattelujen muistilista 3 Vältä seuraavanlaisia kysymyksiä: Mielipiteen värittämiä ja puolueellisia kysymyksiä. Kysymyksiä, jotka sisältävät toivotun vastauksen (suljettujen kysymysten aliluokka) Kysymyksiä, joihin haastateltava ei todennäköisesti osaa tai voi vastata. Tyhmiä kysymyksiä, eli sellaisia kysymyksiä, joiden vastauksen sinun pitäisi haastateltavan mielestä jo tietää. Nämä liittyvät yleensä ongelmakentän lakeihin. Tee haastattelun puhtaaksikirjoitus heti haastattelun jälkeen. Sovi haastateltavan kanssa haastattelun tarkastuksen aikataulusta. Havainnointi Havainnointitekniikat perustuvat oletukseen, jonka mukaan tehtävän havainnointi on tehokkaampi keino ymmärtää sitä kuin annettu kuvaus tehtävästä. Havainnointi on erityisen tehokasta silloin, kun tehtävään liittyy useita toimijoita, jotka eivät ole täysin selvillä toistensa tehtävistä ja tehtävien välisistä yhteyksistä. Havainnointi voi olla aktiivista tai passiivista. Aktiivisessa havainnoinnissa havainnoija osallistuu tehtävään äärimmillään jopa tiimin jäsenenä. Passiivisessa havainnoinnissa havainnoija tarkkailee tehtäviä kauempaa vaikuttamatta niihin suoraan. 65 66 11

Havainnointitekniikoita Ääneen ajattelussa (protocol analysis) havainnoitava kertoo ääneen, mitä on tekemässä ja mitä ajattelee. Ääneen ajattelua käytetään enemmän käytettävyystutkimuksessa, mutta sama tekniikka toimii vaatimusmäärittelyssä. Etnografiassa (etnographic studies) havainnoija tarkasteltavaa havainnoitavia pitkähkön ajanjakson verran. Toiminnan lisäksi havainnoidaan toimijoiden asenteita, reaktioita, eleitä, keskusteluja ym. Havainnoinnin vahvuudet ja heikkoudet Havainnointi on erinomainen tekniikka, kun halutaan selvittää hiljaista tietoa. Havainnoimalla huomataan parhaimmillaan myös sellaisia yksityiskohtia, joita esimerkiksi haastateltava jättäisi mainitsematta itsestäänselvyyksinä. Toisaalta havainnointi on kallis tekniikka. Se vaatii paljon aikaa eikä sen avulla saada kerralla selville kuin pieni osa nykyjärjestelmän toiminnasta. Lisäksi havainnoinnin avulla ei juurikaan löydetä tulevan järjestelmän ratkaisuja tai vaihtoehtoisia toimintatapoja. 67 68 Ryhmäistunnot Rakenteiset ryhmäistunnot Ryhmäistunnoissa vaatimusten kartutusta tehdään ryhmissä. Ajatuksena on, että ryhmä havaitsee, arvioi ja esittää ratkaisuja paremmin yhdessä kuin yksilöinä. Ryhmäistuntoja pidetään muutaman päivän mittaisissa työpajoissa (workshop), joiden aikana pidetään useita istuntoja. Työskentelyn apuna käytetään koko työtilaa, kuten tussitauluja, piirtoheittimiä, tietokoneita jne. Rakenteisessa ryhmäistunnossa (structured group sessions) kullakin osallistujalla on ennalta määrätty tehtävä: puheenjohtaja, sihteeri, käyttäjä, manageri, ohjelmistokehittäjä, jne. Istuntoon osallistujat esittävät mielipiteensä roolinsa edustajina. Istunnoilla on tarkka ohjelma, jota seurataan huolellisesti. Rakenteiset ryhmäistunnot ovat parhaimmillaan, kun sidosryhmillä on konfliktoivia odotuksia tulevasta järjestelmästä. Osa konflikteista saadaan yleensä ratkottua jo istunnoissa. 69 70 Rakenteettomat ryhmäistunnot Vielä OHVK:n tekniikoista Rakenteettomassa ryhmäistunnossa (unstructured group session) eli aivoriihessä (brainstorming) ei ole erityisiä rooleja. Työskentely tapahtuu vapaasti seuraavilla ehdoilla: Ensimmäisessä vaiheessa jokainen osallistuja generoi spontaanisti mahdollisimman monta ongelmaa lähestyvää ratkaisua. Myös hullut ideat kelpaavat tässä vaiheessa. Toisessa vaiheessa osallistujat arvioivat yhdessä ehdotettuja ideoita ja valitsevat niistä parhaat. Aivoriihet ovat erinomainen kartutustekniikka, kunhan osallistujat hyväksyvät hullutkin ideat eivätkä arvioi idean hyvyydellä idean esittäjää. Edellä listatut tekniikat eivät tietenkään sulje toisiaan pois. Mikään tekniikka ei yksin riitä, vaan tekniikoita tulee käyttää yhdessä. Laajempaan myyntiin tarkoitetuissa järjestelmissä kehitysprosessissa ei välttämättä ole mukana sidosryhmien edustajia. Tällöin suoria tekniikoita ei voida käyttää sellaisenaan (esim. ei löydy haastateltavia). Tällaisissa tilanteissa epäsuoria tekniikoita voidaan täydentää esimerkiksi markkinatutkimuksilla ja liiketoimintasuunnitelmilla. 71 72 12

4. Vaatimusten arviointi OHVK:ssa kerätyt vaatimukset pitää arvioida: Vaatimusten väliset ristiriidat pitää ratkoa etsimällä sopiva kompromissi. Vaatimuksiin liittyvät riskit on tunnistettava ja niiden vaikutusta pienennettävä. Vaihtoehtoiset ratkaisut on arvioitava ja arvion perusteella laitettava paremmuusjärjestykseen. Vaatimukset täytyy priorisoida. Vaatimusten arviointi on sidoksissa vaatimusten kartutukseen. Sitä mukaa kun vaatimuksia löydetään, niitä myös arvioidaan. 4.1. Epäjohdonmukaisuuksien hallinta Vaatimukset eivät yleensä ole keskenään johdonmukaisia, koska niitä esittäneet tahot eivät ole johdonmukaisia. Epäjohdonmukaisuudet ovat jotain seuraavista tyypeistä: Termistöyhteentörmäys (Terminology clash) Nimeämisyhteentörmäys (Designation clash) Rakenneyhteentörmäys (Structure clash) Vahva konflikti (Strong conflict) Heikko konflikti (Weak conflict) 73 74 Epäjohdonmukaisuustyypit Epäjohdonmukaisuustyypit 2 Terminologiayhteentörmäys Samasta käsitteestä käytetään eri vaatimuksissa eri nimeä. Esim. Moottorit käynnistyvät kiihdytykseen vs. Raketit sammuvat kiihdytyksen jälkeen. Nimeämisyhteentörmäys Sama nimi tarkoittaa eri asioita eri vaatimuksissa. Esim. Viestinvälitin toimittaa luotaimelta lähtevät radioviestit vs. Viestinvälitin huolehtii ohjelmiston komponenttien välisestä viestinnästä. Rakenneyhteentörmäys Samalle käsitteelle on määritelty eri rakenne eri vaatimuksissa. Esim. Jarrutushetki tarkoittaa ajanjaksoa, jolloin raketit ovat käytössä vs. Jarrutushetki tarkoittaa hetkeä, jolloin raketit käynnistyvät. Vahva ristiriita Kaksi tai useampi väite ei voi missään tilanteessa olla yhdessä totta. Esim. Ohjausjärjestelmä ohjaa kaikkia järjestelmiä ja Yksikään järjestelmä ei ohjaa itseään Kuka ohjaa ohjausjärjestelmää? Heikko ristiriita Kaksi tai useampi väite ei voi joillain ehdoilla olla yhdessä totta. Esim. Rakettimoottorit sammutetaan viimeistään viiden minuutin käytön jälkeen vs. Rakettimoottorit sammutetaan, kun niitä ei enää tarvita. Ehdot ovat totta, kunhan moottoreita ei koskaan tarvita viittä minuuttia enempää. 75 76 Epäjohdonmukaisuuksien hallinta Terminologia-, nimeämis- ja rakenneyhteentörmäykset tarkoittavat määritelmien moniselitteisyyttä. Näistä ongelmista päästään eroon hyvin tehdyllä sanastolla (glossary of terms). Sanasto tarjoaa sekä tarkan kaikkien sidosryhmien hyväksymän määritelmän jokaiselle käytetylle termille että mahdollisen listan termin synonyymeista. Sanastoa rakennetaan vaatimusten kartutuksen aikana. 77 Epäjohdonmukaisuuksien hallinta 2 Vahvojen ja heikkojen ristiriitojen hallinta on edellisiä tyyppejä vaikeampaa. Hallinta alkaa tunnistamalla ristiriitojen syyt: Eri sidosryhmien tavoitteet ovat erilaiset, jolloin ne voivat konfliktoida. Ristiriitaiset tavoitteet johtavat ristiriitaisiin vaatimuksiin. Tavoitteiden ratkaistut ristiriidat ratkovat samalla vastaavien vaatimusten väliset ristiriidat. Eri vaatimustyyppien kesken on luonnostaan ristiriitaisuutta. Ei-toiminnalliset vaatimukset ovat usein keskenään ristiriitaisia. Toiminnalliset vaatimukset saattavat olla ristiriidassa eitoiminnallisten vaatimusten kanssa. 78 13

Ristiriitojen ratkominen Ristiriitojen hallintaprosessi Ristiriitojen ratkominen vaatii sidosryhmien välistä neuvottelua. Neuvottelussa huomioidaan Kunkin sidosryhmän tulevan järjestelmän tavoitteet. Tavoitteiden väliset erot. Tavoitteisiin liittyvät riskit ja epävarmuudet. Tavoitteiden sidosryhmäkohtaiset prioriteetit. Neuvottelun tuloksena on saatava sellainen tavoitelista, johon kaikki sidosryhmät sitoutuvat. Vaatimusten väliset ristiriidat ratkotaan näin: Tunnistetaan päällekkäiset väitteet. Tunnistetaan päällekkäisten väitteiden väliset ristiriidat. Esitetään joukko ristiriidan ratkaisuja. Evaluoidaan ratkaisut ja valitaan niistä paras. Identify overlapping statements Detect conflicts among them & document them Generate conflict resolutions Figure 3.1 Conflict management Evaluate resolutions and select best ones 79 80 Tunnistetaan päällekkäiset väitteet Kaksi väitettä (vaatimusta, määritelmää, ym.) ovat päällekkäiset, jos ne kohdistuvat kokonaan tai osittain samaan ilmiöön (ongelmakentän alueeseen, laitteeseen, ohjelmistoon ym.) Tunnistus voi olla syntaktinen. Väitteiden avainsanoja verrataan sanaston avulla. Tunnistus voi olla semanttinen. Väitteiden sisältämiä käsitteitä ja toimintoja verrataan toisiinsa. 81 Tunnistetaan päällekkäisten väitteiden väliset ristiriidat Epämuodollinen tunnistus Konfliktien tunnistus perustuu asiantuntija-arvoihin ongelmakentästä. Heuristinen tunnistus Konfliktien tunnistus perustuu heuristiikkaan. Esimerkiksi ei-toiminnallisten vaatimusten konfliktit perustuvat ei-toiminnallisten vaatimusten luokitteluun (kalvo 28). Formaali tunnistus Väitteet kuvataan matemaattiseen logiikkaan perustuvalla formaalilla kielellä. Konfliktit tunnistetaan epäjohdonmukaisuustarkistuksilla (inconsistency checking), todistuksilla (theorem proving), rajaarvoanalyysilla (derivation of bundary conditions) tai vastaavalla. 82 Esitetään joukko ristiriidan ratkaisuja Ratkaisujen etsintään voidaan käyttää ainakin seuraavia keinoja: Etsitään vaihtoehtoisia ratkaisuja kartutustekniikoilla (eli kysytään sidosryhmiltä). Muokataan vaatimukset sellaisiksi, että ristiriidan aiheuttava raja-arvo ei toteudu Minimoidaan ei-toivotun raja-arvotilan kestoaika. Heikennetään ristiriitaisia ehtoja Pudotetaan matalan prioriteetin vaatimuksia Erikoistetaan konfliktilähdettä tai konfliktin kohdetta. 83 Evaluoidaan ratkaisut ja valitaan paras Parhaan vaihtoehdon valinta ei välttämättä ole yksiselitteistä. Eri vaihtoehdot tarjoavat vaihtelevasti hyviä ja huonoja puolia. Päätöstä helpottamaan voidaan valita sopiva arviointikriteeristö, joka kertoo (yleensä subjektiivisen) valinnan hyvyysarvon. Arviointi voi esimerkiksi perustua ratkaisuiden vaikutukseen ei-toiminallisiin vaatimuksiin, niiden toteutuksen riskeihin tai sidosryhmien tarpeiden priorisointeihin. Työvaihe vaatii yleensä neuvottelua sidosryhmien kanssa. 84 14

4.2. Riskianalyysi Riski Varsinkin vaatimusmäärittelyprosessin alkuvaiheessa sekä sidosryhmien edustajat että vaatimusmäärittelijät ovat herkkiä ylilyönneille. Esim. seuraavat ovat implisiittisiä oletuksia: Tulevan järjestelmän oletukset ovat realistisia. Ongelmakenttä toimii odotetulla tavalla. Tuleva järjestelmä toimii odotetulla tavalla. Kehitystyö sujuu odotetulla tavalla jne. Käytännössä edelliset kohdat eivät toteudu. Siirtyminen nykyjärjestelmästä tulevaan järjestelmään on täynnä riskejä. Tulevan järjestelmän vaatimukset jäävät vajaiksi, jos riskejä ei tunnisteta tai niihin ei varauduta. Riski (risk) on epävarmuustekijä, jonka toteutuminen voi aiheuttaa ongelmia riskin kohteelle. Riskillä on negatiivinen vaikutus kohteeseen. Riskillä on (toteutumis)todennäköisyys (likelihood of occurence) ja yksi tai useampia ei-toivottuja seurauksia (consequences). Jokaisella seurauksella on todennäköisyys ja vakavuus (severity). Riskin todennäköisyys on eri kuin seurauksen todennäköisyys. Riskillä Junan ovi aukeaa junan ollessa liikkeellä on eri todennäköisyys kuin riskin seurauksella Matkustaja putoaa liikkuvasta junasta. 85 86 Riskienhallinta Riskienhallinnan keinoja Riskienhallinta (risk management) on oleellinen osa vaatimusten arviointia. Löydetyistä vaatimuksista, oletuksista ja reunaehdoista ei aina huomioida niihin liittyviä riskejä. Kaikkia riskejä ei tarvitse huomioida. Huomiointiin vaikuttavat riskin todennäköisyys, seurausten todennäköisyys ja seurausten vakavuus. Jos vaatimukseen liittyy huomioitavia riskejä, niin vaatimuksen tueksi tarvitaan vastatoimia (countermeasures). Kukin vastatoimi on uusi vaatimus. Kaikki seuraavat keinot perustuvat uusien vaatimusten esittelyyn: Pienennetään riskin todennäköisyyttä. Estetään riskin toteutuminen. Pienennetään riskin seurauksen todennäköisyyttä. Estetään tietyn seurauksen toteutuminen. Pienennetään riskin seurauksen vaikutusta. Käytännössä uudet vaatimukset täydentävät riskialttiita vaatimuksia. Joskus uudet vaatimukset voivat myös korvata riskialttiin vaatimuksen. 87 88 4.3. Vaihtoehtojen arviointi ja päätöksenteko Vaatimusmäärittelyssä on tärkeää etsiä ja arvioida vaihtoehtoisia ratkaisuja: Tulevan järjestelmän tavoite voidaan usein ratkaista erilaisilla yhdistelmillä alitavoitteita, ominaisuuksia ja oletuksia. Tulevan järjestelmän vastuut voidaan jakaa usealla tavalla sen komponenteille. Ristiriidat voidaan ratkaista usealla eri tavalla. Riskiin voidaan vaikuttaa usealla eri tavalla jne. Jokaista valintaa kohden tarvitaan kriteerit, joilla arvioidaan vaihtoehtojen paremmuus. Laadullinen arviointi Vaihtoehtojen paremmuutta voidaan arvioida laadullisilla arvointikriteereillä. Laadullisissa arviointikriteereissä vaihtoehdot asetetaan paremmuusjärjestykseen ongelmakentän asiantuntijuuteen perustuvien päätösten avulla. Vaihtoehtojen vaikutusta ei-toiminnallisiin vaatimuksiin voidaan esimerkiksi arvioida sopivalla (ei-numeerisella) asteikolla: Esim. + = hyvä, ++ = erittäin hyvä, - = huono, -- = erittäin huono. Vastaavalla tavalla voidaan arvioida vaihtoehtojen vaikutusta tulevan järjestelmän riskeihin. 89 90 15

Numeerinen arviointi Numeerisen arvioinnin esimerkki Vaihtoehtoja voidaan myös arvioida numeerisesti. Tällöin käytetään yleensä painotettuja matriiseja (weighted matrices). Jokaiselle kriteerille annetaan painoarvo, joka esittää sen merkityksellisyyttä suhteessa muihin kriteereihin. Jokainen matriisisolu (kriteeri k, vaihtoehto v) kuvaa, millä todennäköisyydellä vaihtoehto v täyttää kriteerin k. Vaihtoehdoille lasketaan matriisista painotetut keskiarvot kriteerien painoarvojen ja vaihtoehtojen täyttymisen perusteella. Olkoon meillä kaksi vaihtoehtoa: 1. Tarvittavat tiedot saadaan sähköpostitse. 2. Tarvittavat tiedot saadaan esityslistalta. Olkoon meillä kolme kriteeriä (ei-toiminnallisia vaatimuksia): Nopea vasteaika Luotettava vastaus Minimaalinen vaivannäkö Näillä ehdoilla matriisissa on 2x3=6 solua: Vasteaika Luotettavuus Vaivattomuus Sähköposti 0,50 0,90 0,50 Esityslista 0,90 0,30 1,00 91 92 Numeerisen arvioinnin esimerkki 2 Palvelujen toteutumisten todennäköisyydet arvioidaan kartutustietojen avulla. Esimerkiksi skenaariot auttavat tässä. Eri kriteereille määriteltävät painoarvot riippuvat sidosryhmien toiveista. Valitaan seuraavat arvot: Vasteaika: 0,30 Luotettavuus: 0,60 Vaivattomuus: 0,10 Näin vaihtoehdoille saadaan arviot: Sähköposti: 0,30*0,50+0,60*0,90+0,10*0,50 = 0,74 Esityslista: 0,30*0,90+0,60*0,30+0,10*1,00 = 0,55 Annetuilla parametreilla sähköposti on parempi vaihtoehto. 4.4. Vaatimusten priorisointi Vaatimuksia täytyy arvioinnin lisäksi priorisoida. Prioriteetteja tarvitaan seuraavista syistä: Järjestelmän kehitystyöhön varattu budjetti ja aikataulu eivät ehkä salli kaikkien löydettyjen vaatimusten toteuttamista. Lisäävässä kehitystyössä (incremental development) järjestelmää toteutetaan osissa useana julkaisuna. Julkaisuun valittavat vaatimukset riippuvat niiden prioriteeteista. Prioriteetteja tarvitaan ratkottaessa vaatimusten välisiä ristiriitoja. Prioriteettien perusteella päätetään, mitkä vaatimukset ovat pakollisia, mitkä toivottavia ja mitkä siirrettävissä myöhempään ajankohtaan. 93 94 Arvo-kustannus-vertailu Arvo-kustannus-kaavioesimerkki Hyvä tapa priorisoida vaatimuksia on arvokustannus-vertailu (value-cost comparison): Jokaisesta vaatimuksesta arvioidaan sen arvo (hyödyllisyys) järjestelmälle. Jokaisesta vaatimuksesta arvioidaan sen kehitystyön kustannus. Saadut arvot näytetään arvo-kustannus-kaaviossa (seuraava kalvo) Arvojen ja kustannusten arviointiin käytetään sopivaa heuristiikkaa (katso esim. oppikirjaa). Value percentage 50 40 30 20 10 POD HPL High priority PCR MLC Medium priority 10 20 30 40 50 Cost percentage POD: Produce Optimal Dates HPL: Handle Preferred Locations PCR: Parameterize Conflict Resolution MLC: Support Multi-Lingual Communication MA: Provide Meeting Assistant Low priority Figure 3.6 Value-cost requirements prioritization for the meeting scheduler: outcome of the AHP process MA 95 96 16

5. Vaatimusten spesifiointi ja dokumentointi Edellisissä työvaiheissa saadut tulokset on määriteltävä yksityiskohtaisesti sellaisella tarkkuudella, että tuleva järjestelmä voidaan suunnitella niiden avulla. Tätä työvaihetta kutsutaan vaatimusten spesifioinniksi (ja dokumentoinniksi). Tuloksena saadaan uusin versio vaatimusdokumentista. Koska vaatimusmäärittely on iteratiivinen prosessi, myös vaatimusdokumentti täydentyy ajan kanssa. Vaatimusdokumentin sisältö Kaikki tulevan järjestelmän sovitut ominaisuudet on määriteltävä yksikäsitteisesti: Tavoitteet, käsitteet, ongelmakentän ominaisuudet, järjestelmä- ja ohjelmistovaatimukset, oletukset, vastuut. Valittujen ratkaisujen perustelut. Mahdolliset tulevat spesifikaation muutokset Sovitut ominaisuudet on kirjattava yhtäpitävästi vaatimusdokumenttiin sellaisessa muodossa, että dokumentaatiota tarvitsevat sidosryhmät ymmärtävät sitä. 97 98 Vaatimusdokumentin heikkoudet Vaatimusdokumentin kirjoittaminen on riskialtista. Oppikirjassa on listattu seuraavat vaatimusdokumentin potentiaaliset heikkoudet: Laiminlyönti (Omission): ongelmakenttää ei ole katettu kotonaan, tulevan järjestelmän vaatimuksia puuttuu. Ristiriita (Contradiction): Ominaisuuksia on kuvattu yhteensopimattomasti. Riittämättömyys (Inadequacy): Ominaisuutta ei ole kuvattu riittävällä tarkkuudella. Vaatimusmäärittelyn heikkoudet 2 Moniselitteisyys (Ambiguity): Ominaisuus voidaan tulkita keskenään ristiriitaisilla tavoilla. Mittaamattomuus (Unmeasurability): Ominaisuus on kuvattu tavalla, jota ei voida verrata vaihtoehtoihin tai jota ei voida verifioida valmiista tuotteesta. Häly (Noise): Vaatimusdokumentin osa ei kuvaa ongelmakenttää. Ylimäärittely (Overspesification): Vaatimusdokumentin osa liittyy ongelmakenttään vaan laiteratkaisuun. Jälkilisäys (Remorse): Ominaisuus määritellään liian myöhään tai sattumalta. 99 100 Vaatimusmäärittelyn heikkoudet 3 Kelpaamattomuus (Unfeasibility): Ominaisuus ei ole toteutettavissa annetulla budjetilla, aikataululla tai toimintaympäristöllä. Vaikeatajuisuus (Unintelligibility): Ominaisuus on sitä tarvitsevien sidosryhmien kannalta väärällä tavalla tai tarkkuudella. Kehno rakenne (Poor structuring): Ominaisuudet on ryhmitelty dokumentissa epäsopivasti. Eteenpäinviittaus (Forward reference): Ominaisuus määritellään käytön jälkeen. 101 Vaatimusmäärittelyn heikkoudet 4 Huono muokattavuus (Poor modifiability): Ominaisuuden muokkaus vaikuttaa liian laajasti vaatimusdokumentin muihin ominaisuuksiin. Läpinäkyvyys (Opacity): Ominaisuuden tavoite, esittäjä tai riippuvuudet muihin ominaisuuksiin eivät selviä dokumentaatiosta. Erityisen vaarallisia heikkouksia ovat laiminlyönnit, ristiriidat, riittämättömyydet, moniselitteisyydet ja mittaamattomuudet. Nämä vaikuttavat suoraan tulevan järjestelmän laatuun. Loput heikkoudet vaikuttavat laatuun välillisesti lisäämällä epäonnistumisen riskiä ja aiheuttamalla turhaa työtä. 102 17