Vaihe 6 - Suunnittelu II - dynaaminen mallintaminen
Tarkennetaan analyysivaiheen yhteistoimintakaaviot
sekvenssikaavioiksi siten, että ne sisältävät myös
suunnitteluvaiheessa lisätyt uusia luokkia vastaavat oliot ja
kuvaavat aiempaa tarkemmin myös järjestelmän sisäistä
käyttäytymistä. Lisäksi täsmennetään järjestelmän toimintalogiikan
kuvausta tilakaaviolla.
Huomaa, että järjestelmän alkuperäinen kuvaus on epätäydellinen,
erityisesti käyttäytymisen ja poikkeustapausten osalta. Samoin
vaiheen 5 aikana luokkakaavioon on voinut jäädä puutteita tai
epäloogisuuksia, jotka tulee korjata sekvenssi- ja tilakaavioista
saatavan lisätiedon pohjalta.
Tehtävät
- Laadi jokaisesta analyysikurssilla mallinnetusta
yhteistoimintakaaviosta yksi tai useampi sekvenssikaavio (ks. myös seuraava
kohta), jotka kuvaavat järjestelmän normaalin toiminnan ja
yleisimmät poikkeustapaukset (laajoilla sekvenssikaavioilla osan
yksityiskohdista voi jättää pois). Muista huomioida
sekvenssikaavioissa vaiheessa 3 toteutetut assosiaatiot erityisesti
kohdealueluokkien osalta.
- Vähintään yksi (ei kuitenkaan kaikkia) sekvenssikaavio on
laadittava tekstimuodossa.
Tekstikuvauksen formaatti on vapaa, mutta sen tulee olla
"pseudokoodimainen" (="rakenteinen" muoto, ei pelkkää
vapaasanakuvausta), ja sisältää oleellisesti samat tiedot kuin
vastaavassa piirretyssä kaaviossa, ja näkökulman tulee olla
olioiden välisten viestien seuraamisessa. Suositeltavia formaatteja
ovat PlantUML:n tai
Umletin tekstiformaatit, mutta muitakin
vaihtoehtoja on. Tekstikuvauksen "kääntyminen" kaavioksi ei ole
välttämätöntä, mutta siitä on toki hyötyä (niin laatimisen kuin
tarkastuksen kannalta).
- Mallinna järjestelmän monimutkaisimman tai muuten kiinnostavan (=enemmän kuin 2 tilaa) ohjain- tai kohdealueluokan toiminta tilakaaviolla. Osita alitiloja tarvittaessa.
- Laadi sijoituskaavio,
joka sisältää järjestelmän (oletetun) hajautuksen eri
laitteille, ja keskeisimmät komponentit. Voit käyttää komponenttien
pohjana 3. vaiheessa mallinnettuja paketteja, mutta myös
mahdollisia 3. osapuolen tai oletetun ajoympäristön (esim. jokin
web-sovelluskehys) komponentteja).
- Viimeistele vaiheiden
1-5 tehtävät ja tulokset ja mallien yhtenäisyys: toimintayksikön
kuvaus ja tavoitemäärittelyt, käyttötapauskaavio ja käyttötapausten
sanalliset kuvaukset, tietohakemisto, käyttöliittymälogiikan
kuvaus, sekä analyysi- ja suunnitteluvaiheen luokkakaaviot.
Huom. analyysivaiheen
luokkakaavio pidetään edelleen "analyysitasoisena", eli
assosiaatioiden toteutuksia (ja niihin liittyviä metodeita),
kokoelmaluokkia, käyttöliittymä- tai ohjausluokkia ei päivitetä -
ainoastaan suunnitteluvaiheen aikana löydetyt uudet kohdealueeseen
liittyvät attribuutit ja kohdealueluokat.
Yhteistoimintakaavioita ja CRC-kortteja ei tarvitse
päivittää..
Vinkkejä
- Prosessi sekvenssikaavion laatimiselle:
-
- Valitse käyttötapaus ja siihen liittyvä
yhteistoimintakaavio.
- Esitä suorakaiteilla luokkia vastaavat oliot (tarvittaessa eri muuttujanimillä eriteltynä) ja ulkoiset aktorit tikku-ukoilla.
- Lisää kaavioon aiemmin mallinnetut liiketoimintaluokat sekä vaiheessa 3 määritellyt tarkennetut käyttöliittymä-, ja ohjaus- ja mahdolliset säiliöluokat.
- Käyttämällä lähtökohtana tekemääsi tekstimuotoista käyttötapauskuvausta ja yhteistoimintakaaviota mieti, millaisia viestejä, missä järjestyksessä ja millä ehdoin ko. olioiden/aktoreiden välillä on välitettävä, jotta toiminta olisi mahdollista suunnitteluvaiheen mallissa.
- Kuvaa viestit nuolilla ja nimeä ne kuvaavilla termeillä (verbi-muodossa). Viestien yhteydessä suluissa tulee esittää myös tärkeimmät parametrit, joiden arvoja välitetään oliolta toiselle. Yksinkertaisia palauteviestejä ei tarvitse esittää, ellei paluuarvoa käytetä jatkossa (esim. olioviitemuuttuja). Viestin tulee olla vastaanottavan olion luokan operaatio..
- Kuvaa edellä osoitetulla tavalla ensin normaalitapaukset. Poikkeustapaukset ja vaihtoehtoiset toimintatavat voit kuvata normaalitapausten kanssa samassa kaaviossa, jos ne siihen sopivat, muutoin erillisenä kaaviona. Ehto- ja toistorakenteet voidaan kuvata UML 2.0:n alikaavioilla tai yksinkertaistetuilla UML 1.4-tyylisillä merkinnöillä ([ehto] viestin nimessä ehdollisille rakenteille, * toistosymbolina jne). vrt. esim. Repeat-rakenne kirjastojärjestelmässä).
- Tarkista, että käyttötapaukseen ajateltu käyttäytyminen on tullut kuvattua.
- Tarkista, että kaikkia sekvenssikaaviossa esiintyviä olioita
vastaavat luokat ovat luokkakaaviossa. Ovatko kaikki luokat
tiedossa, voiko esim. ohjausluokka kutsua
liiketoimintaluokkia?
- Täydennä luokkakaaviota sekvenssikaavioiden laatimisen aikana huomattujen muutostarpeiden osalta. Sijoita luokkakaavion luokkiin kaikki ne operaatiot, jotka käyvät ilmi sekvenssikaavioista.
- Valitse käyttötapaus ja siihen liittyvä
yhteistoimintakaavio.
- Tilakaavioiden laadinnasta ks. moniste, luku 5.3.2 ja 10. luento.
- Sijoituskaavioista ks. 8. luento.
- Kuvausten oikeellisuuden tarkastamisesta:
-
- Kattavatko vuorovaikutuskaaviot (tässä sekvenssikaaviot) tärkeimpien käyttötapausten kuvaaman käyttäytymisen, myös yleisimmät poikkeustapaukset?
- Tietävätkö oliot sen, mitä niiden oletetaan tietävän vuorovaikutuskaavioiden perusteella? Onko luokilla kaikki sellaiset attribuutit, joiden arvoja oliot tarvitsevat - jos ei ole, voiko tarvittavan viitteen pyytää toiselta oliolta? Attribuutteja joita lisätään ja haetaan, viiteattribuutit,...
- Onko kaikki tarpeelliset assosiaatiot kuvattu luokkakaaviossa?
- Onko vuorovaikutuskaavioiden kuvaaman käyttäytymisen edellyttämät operaatiot esitetty suunnitteluvaiheen luokkakaaviossa?
- Onko toiminnan ohjausvastuu jaettu tarkoituksenmukaisesti, so. ovatko operaatiot oikeissa luokissa?
- Onko nimiä käytetty johdonmukaisesti: esim. olion nimi sekvenssikaaviossa = luokkanimi luokkakaaviossa; viestin nimi sekvenssikaaviossa = operaatio luokkakaaviossa?
- Onko analyysivaiheen luokkakaavio ajan tasalla (esim. jos
suunnitteluvaiheen aikana löytynyt uusia kohdealueluokkia tai
kohdealueeseen liittyviä attribuutteja)
- Ovatko tietohakemiston määritykset ajan tasalla?
