Ohjelmistojen vaatimusmäärittely syksy 2013/5b Vaatimusten spesifiointi ja dokumentointi DeMarco & Yourdon 1979, Gane & Sarson 1979 Kuvauksen sisältö toiminnan hierarkkinen osiinjako tiedon kulku toimintojen välillä tiedon säilytys tiedon käyttäjät ja tuottajat Harri Laine Helsingin yliopisto Tietojenkäsittelytieteen laitos 1 2 PROSESSI (process) toiminto = tehtäväkokonaisuus kuvaa tekemistä (tietoa muokataan jollain tavoin) prosessi saa syötteitä ja tuottaa tulosteita TIETOVARASTO (data store) kuvaa tiedon tilapäistä tai pitkäaikaista säilytystä saa tietoa yhdeltä tai useammalta prosessilta prosessit voivat hakea tietoa tietovarastosta 3 ULKOINEN OLIO (external entity) järjestelmän ulkopuolelle rajattu järjestelmä, käyttäjä tai muu olio, joka joko saa systeemiltä tietoa ja/tai antaa systeemille tietoja ulkoisten olioiden toimintaan ei voi vaikuttaa joskus erotellaan ulkoiset oliot tiedontuottajiksi (source) ja tiedon hyväksikäyttäjiksi (sink) TIETOVUO (tietovirta) (data flow) kuvaa suoraa tiedonkulkua prosessin ja toisen prosessin / tietovaraston / ulkoisen olion välillä tietovuon toisena osapuolena on aina prosessi tietovuolla on suunta. 4 U1 V1 P V2 V3 U2 U3 Kuvaus on hierarkkisesti tarkentuva V1 P.1 P.2 V2.1 5 V.1 V.2 T.1 V.3 P.3 V2.2 V3 6 Harri Laine 1
Ulkopuolinen taho Notification Meetin gsyste m järjestelmä constraints constraintssent Notification data-yhteys Check constraint Syötetieto invalid valid copyof constraints individual Ask Collect Merge participant Tulostieto Prosessi Notification Determine Schedule Taso 0: yhteyskaavio (context diagram) 7 Ulkoinen olio Tietovarasto 8 Taso 1: yleiskaavio tärkeimmät toiminnot Tietovuokaavioissa ei esitetä toimintojen aikariippuvuutta eikä toimintaan liittyvää kontrollia. Näiden kuvaamista varten on kehitetty muunnelma (Ward & Mellor - reaaliaikalaajennos) ohjausprosessit ohjausvuot (-signaalit) Järjestelmän ohjaustiedon siirtyminen prosessien välillä. Osa prosesseista voi olla yksinomaan ohjausprosesseja. ohjaavat muun järjestelmän toimintaa. Myös osa tietovarastoista voi sisältää pelkkää ohjaustietoa. Ajoitussingnaalit yms, ohjausieto 9 Jatkuvat tietovuot. Jatkuva tietovuo kuvaa sellaista tietoa, jota tulee järjestelmään jatkuvasti. Tavallinen tietovuo on diskreettiä: sitä tulee hetken ja sitten tulo loppuu. Esim. antureilta luettavat tiedot ovat jatkuvia. Ohjausprosessit. Ohjausprosessi vaikuttaa tavallisten prosessien tekemiin tehtäviin lähettämälläohjaustietoja. Ohjaustiedot. Ohjaustieto on jokin järjestelmän tilasta toiseen siirtävä tieto. 10 Ohjaustietovarastot. Jatkuva tietovuo Ohjaustietovarasto on ohjaustietojen tallennuspaikka. Moniajoprosessit. Tavallinen tai ohjausprosessi, josta voi olla monta samanaikaistakopiota suorituksessa. Näin voidaan kuvata moniajo-ohjelmistoja. Ohjausviittaukset. Ohjausviittaus liittyy johonkin ohjaustietoon. Siinä viitataan ohjauskaaviota vastaavaan tilasiirtymäkaavioon, joka kertoo yksityiskohtaisesti, miten järjestelmän tila muuttuu ohjaustietojen johdosta. Kaikki kaavion ohjausviittaukset viittaavat samaan tilasiirtymäkaavioon. 11 Ohjausprosessi, käsittelee ohjaustietoja Ohjausvuo (ohjaussignaali) Ohjausviittaus Samanaikaiset 12 Harri Laine 2
ER-kaaviot oikeuskanta Oikeuksien kirjaus avain tarkistus avaussignaali Oven avaus hälyytys kamerasignaali 13 ER-kaavioilla (Entity-Relationship diagrams) kuvataan ongelmakentän käsitteitä, tietosisältöä tai tulevan järjestelmän komponentteja sekä niiden välisiä yhteyksiä. Kuvataan toiminnan kohteita tai osapuolia. Ei kuvaa toimintaa. Alkuperäiset ER-kaaviot esiteltiin jo 1976 (Chen), mutta sittemmin niistä on kehitetty erilaisia variaatioita. Tutuin variaatio on (UML:n) luokkakaavio (class diagram). 14 ER-kaaviot Käyttötapaukset Important GeneralPrefs Email invitedto Invitation Invites Meeting 1..* 0..* Date Name Location Address c onstraintsfor constraintsfrom 1..* Email ing exc ludeddates dat erange preferreddates withwhom Normal 1..1 Figure 4.5 Portion of an entity-relationship diagram for the scheduler 15 Käyttötapauskaaviot (use case) kuvaavat tiedoille suoritettavia operaatioita ja niiden yhteyttä toimintaympäristöön. Toimintakokonaisuudet määritellään käyttötapauksiksi (use cases). Käyttötapaus kuvaa järjestelmän tarjoamaa palvelua ja siihen vuorovaikutuksessa olevia järjestelmän komponentteja. Poikkeustapaukset pystytään esittelemään Kaaviot ovat kovin yleisellä tasolla, joten yksityiskohdat täytyy kuvata muilla spesifiointikielillä. 16 Käyttötapaukset Check <<extend>> Unauthorized Deny Determine Schedule <<include>> Resolve Conflicts Ask Collect Merge Poikkeustapaus Käyttötapaus, palvelu, operaatio Conflict Resolver Tarkenne Scheduler Järjestelmän Figure 4.9 Use case diagram for the scheduler komponentti 17 Työnkulkuja ja toimintojen suoritusketjuja voidaan kuvata esimerkiksi UML:n aktiviteettikaavioilla. Toiminnot Kontrollin kulku Toimintojen välillä kulkevia tietoja Toimintoihin liittyviä ehtoja Ehtoja siirtymille Vaihtoehtoja Rinnakkaisia tehtäviä Ositus esim. vastuutahon mukaan 18 Harri Laine 3
Vaihtoehdot haarautuvat/yhtyvät Toiminta voidaan sijoittaa kaistoille (swimlane) Kaista kuvaa esimerkiksi jotain oliota tai osajärjestelmää, jonka vastuulla toiminta on Asiakas toiminto aloitus Rinnakkaisuus alkaa / päättyy Toimittaja Kuva: Wikipedia Välittyvä tieto Kontrollin kulku 19 20 Viestiyhteyskaavio (event trace diagram) kuvaa skenaariona järjestelmän komponenttien välisen vuorovaikutuksen (viestinvälityksen, kommunikaation). Viestiyhteyskaavio kuvaa skenaarioon osallistuvien komponenttien tehtävät toisiinsa liittyvinä aikajanoina. Aika juoksee kaaviossa ylhäältä alas. Kaaviossa kuvataan komponentit, komponenttien toisilleen lähettämät pyynnöt ja vastaukset sekä toisinaan arviot pyyntöjen käsittelyyn kuluvasta ajasta. Kukin viestiyhteyskaavio kuvaa vain yhtä toimintaskenaariota, joten niitä tarvitaan useita järjestelmän koko toiminnan kuvaamiseksi. UML:n sequence diagram Viesti/yhteys Attribuutti Komponentti (daterange, withwhom) OK-request notification (date, location) Scheduler OK-constr? constraints! constraints scheduledetermination notification (date, location) 21 22 Aikajana Sisäinen toiminta Tilakaaviot Viestiyhteyskaavioon voi laittaa vaihtoehtoisia polkuja ja jopa silmukoita, mutta tekniikka on varsin kömpelö näiden osalta Kommunikointi kuvattavissa helposti kiinteän osallistujajoukon kesken entä dynaamisen 23 Tilasiirtymäkaavio (state machine diagram) on kompakti tapa kuvata komponentin koko elinkaari. Vaatimuksena on, että komponentilla on äärellinen joukko tiloja (states) ja tapahtumia (events). Tila kuvaa tiettyä komponentin tilannetta. Tapahtumat siirtävät komponentin tilasta toiseen. Komponentti siirtyy tilasta toiseen, kun se vastaanottaa tapahtuman ja kun määrätty suoritusehto (guard) toteutuu. Suoritusehto on tilasiirtymäkaavion välttämätön reunaehto. Siirtymä tilasta toiseen tapahtuu vain, jos tilojen välinen suoritusehto on voimassa. Tavallisten tilojen lisäksi tilasiirtymäkaaviossa on alkutila (initial state), joka kuvaa komponentin elinkaaren alkua, ja lopputiloja (final state), jotka kuvaavat komponentin elinkaaren loppua. 24 Harri Laine 4
Tilakaaviot Alkutila Tapahtuma Tila Gathering Meeting Data ed weakening Resolving [Unauthorized] [Conflicts] [No schedule conflicts] Determination notification Denied [Authorized] Validating Meeting KO-request Data OK-request [All available] Planning Suoritusehto MeetingScheduled MeetingNotified Lopputila 25 Formaali määrittely (formal specification) korjaa semi-formaalien kielten ongelmat lisäämällä tarkan syntaksin ja semantiikan myös kuvausten selityksiin. Formalismia käyttämällä vaatimusmäärittelyssä löydetyt ominaisuudet määritellään täsmällisesti ja yksiselitteisesti. Formaalilla kielellä kuvatut ominaisuudet voidaan verifioida automaattisesti. Toisaalta formaali määrittely vaatii syvällistä erikoisosaamista, jota ei ole kaikilla sidosryhmillä eikä edes keskiverto-ohjelmistokehittäjillä. Määrittelyt eivät ole kaikenkattavia 26 Formaalit spesifiointikielet perustuvat matemaattiseen formalismiin ja jakautuvat seuraavasti: Propositiologiikkaan (propositional logic) perustuvat kielet kuvaavat totuusarvoisia sääntöjä, joita yhdistetään loogisilla operaattoreilla,,,, ). Predikaattilogiikkaan (predicate logic) perustuvat kielet käyttävät propositiologiikan lisäksi muuttujia, vakioita, lausekkeita ja kvanttoreita (, ). Korkeamman kertaluvun funktioihin (higher-order functions) perustuvat kielet laajentavat propositio- ja predikaattilogiikkaa siten, että funktioiden argumentit voivat olla muuttujien ja vakioiden lisäksi funktioita. Temporaalilogiikkaan (temporal logic) perustuvat kielet lisäävät formalismiin ajan hallinnan. Kielet perustuvat historian (history) käsitteeseen. Historia kuvaa elementtien toimintaa ajassa ( joskus tulevaisuudessa, aina tulevaisuudessa, joskus menneisyydessä, aina siitä lähtien kun jne.). 27 Historiaan perustuvissa kielissä määritellään sallitut historiat. Perustuvat temporaalilogiikkaan. Tiloihin perustuvissa (state-based) kielissä lauseet kuvaavat mallinnettavan järjestelmän tiloja tietyllä hetkellä. Tunnetuin formaali spesifiointikieli Z on tilapohjainen kieli. Tulo ja jättöehdot Tapahtumiin perustuvissa (event-based) kielissä lauseet kuvaavat mallinnettavan järjestelmän siirtymistä tilasta toiseen. Sallitut siirtymät. Siirtymät kuvataan siirtymäfunktioina, joiden lähtö- ja maalitilat, laukaisevat tapahtumat ja suoritusehdot määritellään formaalisti. Algebraan perustuvissa kielissä (algebraic specification) järjestelmän operaatiot kuvataan yhtälöinä ja järjestelmässä käsiteltävä tieto abstrakteina tietotyyppeinä. Operaatioiden vaikutukset. 28 Harri Laine 5