Vaihe 2 - Analyysi
Edellisessä vaiheessa on suoritettu kehitettävän järjestelmän
rajaus ja käyttötapausten kuvaus. Tämän vaiheen tavoitteena on
tuottaa ensimmäinen versio luokkakaaviosta, luokkien sanalliset
kuvaukset sekä hahmotella luokkien yhteistyötä korkean tason
yhteistoimintakaavioilla.
Tehtävät
- Piirrä analyysivaiheen luokkakaavio kohdealueen luokista (kohdealuemalli - käyttöliittymä- ja ohjainluokkia ei tässä vaiheessa tarvitse merkitä luokkakaavioon) sisältäen vähintään keskeisimmät attribuutit ja luokkien väliset suhteet.
- Piirrä jokaisesta tarkempaan mallinnukseen valitusta käyttötapauksesta korkean tason yhteistoimintakaavio (UML- tai ICONIX-tyyli), joka näyttää käyttötapauksen kulun luokkakaavioon merkittyjen luokkien kannalta. Yhteistoimintakaavion askeleita ei välttämättä tarvitse numeroida.
- Kirjoita lyhyet kuvaukset luokista ja olennaisimmista
attribuuteista tietohakemistoksi.
Vinkkejä
- Prosessi luokkien mallintamiseen (katso tarkemmin luentomonisteen luku 4.2.2):
-
- Tunnista luokat
- ota lähtökohdaksesi käyttötapauskuvaukset ja etsi sieltä potentiaalisia luokkia; tarkastele niiden soveltuvuutta
- mallinna liiketoimintaluokat - analyysivaiheen luokkakaavio on kuva liiketoiminnan alueesta jossa toimitaan
- Tunnista assosiaatiot
- mieti, millaisia rakenteellisia suhteita luokilla on toisiinsa
- esitä suhteet ensisijassa assosiaatioina
- käytä abstraktiorakenteita (yleistys, kooste, kompositio) tilanteen vaatiessa
- lisää kardinaalisuusmerkinnät
- tarkista tulos
- Tunnista attribuutit
- mieti, mistä olioiden attribuuteista ollaan kiinnostuneita, ts. mitä olioiden tulisi tietää ja olla valmis muille viestimään itsestään
- Suorita luokkien
uudelleenorganisointi
- iteroi! etsi uusia yleistysrakenteita, attribuutteja ja
metodeita. yritä yksinkertaistaa luokkakaavion rakennetta ilman,
että mitään oleellista tietoa häviää
- iteroi! etsi uusia yleistysrakenteita, attribuutteja ja
metodeita. yritä yksinkertaistaa luokkakaavion rakennetta ilman,
että mitään oleellista tietoa häviää
- Tunnista luokat
- Prosessi korkean tason yhteistoimintakaavion (huom. ICONIX-tyylisiä robustness-kaavioita voi piirtää StarUML:llä - niille ei ole suoraa tukea BOUML:ssä tai ArgoUML:ssä). Ks. moniste, luku 4.3 ja Successful Robustness Analysis-artikkeli:
-
- Valitse käyttötapaus
- Ota selvää luokkakaaviosta, minkä luokkien mukaisten olioiden toimintaa ko. käyttötapaus kuvaa ja mitkä aktorit siihen liittyvät.
- Esitä suorakulmioilla luokkia vastaavat oliot ja ulkoiset aktorit tikku-ukoilla (tai muulla symbolilla työkalusta riippuen).
- Lisää kaavioon geneerinen käyttöliittymäluokka, jonka avulla käyttäjä ja järjestelmä voivat olla vuorovaikutuksessa. Geneerinen käyttöliittymäluokka kuvaa siis kaikkia käyttöliittymään liittyviä luokkia.
- Lisää kaavioon tärkeimmät ohjausluokat; pienten järjestelmien ollessa kyseessä voidaan käyttää vain yhtä ohjausluokkaa, isommissa järjestelmissä ohjausta voi hajoittaa useammille ohjausluokille. Ohjausluokan tehtävänä on siis pitää hallussaan viitteitä järjestelmän liiketoimintaluokkiin tai niiden säiliöluokkiin ja ohjata (l. käyttää) järjestelmän liiketoimintaluokkien tarjoamia toimintoja (l. operaatioita).
- Käyttämällä lähtökohtana tekemääsi tekstimuotoista käyttötapauskuvausta mieti, millaisia viestejä ko. olioiden/aktoreiden välillä on välitettävä, jotta toiminta olisi mahdollista. Mieti toiminnan etenemistä, mitä vaiheita tarvitaan oikean olion hakemiseksi, tietojen näyttämiseksi, muuttamiseksi.
- Kuvaa viestit nuolilla ja nimeä ne kuvaavilla termeillä (verbi-muodossa).
- Kuvaa edellä osoitetulla tavalla ensin normaalitapaukset. Poikkeustapaukset ja vaihtoehtoiset toimintatavat voit kuvata normaalitapausten kanssa samassa kaaviossa, jos ne siihen sopivat, muutoin voidaan sivuttaa tässä vaiheessa. Jätä kaavioon kommentit sivuutetuista poikkeuksista.
- Tarkista, että kaikkia yhteistoimintakaaviossa esiintyviä olioita vastaavat luokat ovat luokkakaaviossa (poikkeus: ICONIX-prosessin verbeistä muodostetut ohjainluokat). Jos eivät ole, täydennä luokkakaaviota. Mieti käsiteltävien suhteita, pitääkö joitain assosiatiivisia suhteita kuvata koostesuhteina. Ovatko kaikki (erit. kohdealue-)luokat tiedossa, voiko esim. ohjausolio kutsua liiketoimintaoliota? Olio-ohjelmoinnissa oliot voivat kutsua toisiaan, mikäli ne ovat jotenkin saaneet viitteen ko. olioon (tässä vaiheessa mallinnetaan yleensä assosiaatioina), esim. ohjausluokista on usein yhdestä moneen koostesuhteita liiketoimintaluokkiin.
- Täydennä luokkakaavion luokkien operaatiolista
yhteistoimintakaavioissa esiintyvillä operaatioilla. Lisää
luokkakaavioon tarvittaessa myös muita operaatioita.
- Valitse käyttötapaus
- Yhteistoimintakaavioiden tarkkuustasosta ks. myös Robustness
Diagrams ja
Robustness Analysis.
- Merkitse tietohakemistoon vain ne luokat ja attribuutit, joiden merkitys ei käy "itsestään selvästi" (huom. sekä järjestelmän käyttäjälle että kehittäjälle) nimestä ilmi. Esim. jos käytät yleistyssuhdetta, kiinnitä erityistä huomiota luokkahierarkian ylätason (mahdollisesti abstraktien) luokkien dokumentointiin. Tarvittaessa voit määritellä myös assosiaatioita. Voit käyttää esim. seuraavaa tietohakemistopohjaa (html, doc, odt).
- Luokkakaaviota, tietohakemistoa ja yhteistoimintakaaviota
kannattaa mallintaa samanaikaisesti - varmista lopuksi, että eri
mallien tiedot ovat johdonmukaisia keskenään ja käyttötapauksiin
nähden.
