Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio
Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä: Arkkitehtuurin mallintaminen, Staattinen mallintaminen, Dynaaminen mallintaminen, Käyttöliittymän suunnittelu.
Muokkaa käyttötapauksia Muokkaa dynaamisia malleja Tarkasta: - Onko kaikki eri tavat suorittaa käyttötapaus löydetty ja mallinnettu? - Onko tunnistettu olioluokkiin kuuluvat tarpeelliset tiedot ja toiminnot? - Onko tunnistettu kaikki toiminnallisuuteen liittyvät vuorovaikutus olioiden välillä? Muokkaa kohdealueen mallia Analyysia tehdään iteratiivisesti (Rosenberg & Stephens, 2007)
Staattinen mallintaminen Tarkoituksena on rakentaa ymmärrettävä kuvaus niistä rakenteellisista ilmiöistä, joita vaatimusmäärittelyt koskevat. Lähtökohtina toimivat vaatimusmäärittelyt, käyttötapausmalli sekä sovellusaluetta ja sen ympäristöä koskeva asiantuntemus, Tuloksena luokkakaavio (kohdealuemalli)
Kohdealueen malli = Luokkakaavio, jossa esitetään kohdealueen tietoja ja lainalaisuuksia. Kohdealueen malliin tulee pääsääntöisesti vain liiketoimintaluokkia.
Staattisen mallintamisen kaksi kaaviota (mihin niitä voi käyttää?) Oliokaaviot (object diagrams) kuvaavat yksittäisiä olioita ja niiden välisiä rakenteellisia suhteita. Näitä käytetään lähinnä monimutkaisten tietorakenteiden havainnollistamiseen. Luokkakaavio (class diagram) kuvaa olioluokat ja niiden väliset suhteet. Luokkakaaviota voidaan pitää eräänlaisena kaavana tai mallina, joka määrittää, millaiset ajonai- kaiset oliorakenteet ovat mahdollisia.
Luokkakaavio (mitä elementtejä siihen kuuluu?)
Toiminnot eli käyttäytyminen Tieto eli rakenteelliset ominaisuudet Olio (ks. määritelmä): rajattavissa ja yksilöitävissä oleva asia tai käsite, joka on merkityksellinen käsillä olevan tarkastelun kannalta ja joka kattaa sekä rakenteen(tilan) että käyttäytymisen.
-luo uusi -lisää korkeutta -muuta x-koord. -muuta y-koord. Koodi: OH414 Korkeus: 1500 jalkaa X-koord: 145 Y-koord: 346 Koodi: BA315 Korkeus: 3000 jalkaa X-koord: 176 Y-koord: 567 Luokka (olioluokka) kuvaa joukkoa rakenteeltaan ja käyttäytymiseltään samanlaisia olioita.
Olio OH414: Lentokone Lentokone koodi korkeus x-koord y-koord OH414 1500 jalkaa 145 346 koodi korkeus x-koord y-koord lentokone() lisääkorkeutta() vähennäkorkeutta() muutaxkoord() muutaykoord() lentokone() lisääkorkeutta() vähennäkorkeutta() muutaxkoord() muutaykoord() Olioluokka
Lentokone + koodi: string - korkeus: double = 0 - x-koord: int - y-koord: int lentokone() lisääkorkeutta() vähennäkorkeutta() muutaxkoord() muutaykoord() Nimi Attribuuttilista Operaatiolista Attribuutti kuvaa luokkaan kuuluvien olioiden rakenteellista ominaisuutta.
+ koodi: string Lentokone + paikka_ref[]:paikka Paikka + paikan numero + tyyppi + hinta lentokone().... paikka() varaa_paikka().. Arvona voi olla myös osoitin tai viite olioon (viitearvoinen) tai kokoelma viitteitä.
Lentokone palautustyyppi parametri + koodi: string - korkeus: double = 0 - x-koord: int - y-koord: int void lisääkorkeutta(int uusikorkeus) { korkeus = korkeus + uusikorkeus; } lentokone() lisääkorkeutta(int uusikorkeus): void vähennäkorkeutta() muutaxkoord() muutaykoord() double haekorkeus() { return korkeus; } Operaatio on olioon kohdistuva tai olion suorittaman toimenpiteen määritys. Kuvaus palvelusta jonka olio tarjoaa. Metodi on tietyn luokan olioihin sovitettu operaation toteutus.
Työntekijä * töissä 1 Yritys Assosiaatio on kahden tai useamman luokan välinen pysyväisluonteinen ja rakenteellinen (eli tietoon liittyvä) suhde (esim. Töissä). Kardinaalisuus eli kertautuminen ilmaisee, kuinka monta oliota vähintään/enintään kustakin olioluokasta osallistuu kerrallaan assosiaatioon; assosiaatioviivan päiden yhteydessä merkinnöillä 0..1 (yksi tai ei yhtään), 0..* (ei yhtään, yksi tai monta), 1..* (yksi tai monta), * (ei yhtään, yksi tai monta) ja 1 (täsmälleen yksi); voidaan käyttää myös tarkempia numeerisia merkintöjä (esim. 3..5).
Roolit ja assosiaatioluokka (Rumbaugh ym, 1999 s. 159)
Kooste ja kompositio(rumbaugh ym, 1999)
Yleistys ja erikostaminen(rumbaugh ym, 1999)
Yleistys ja erikostaminen Kohdealuetta mallinnettaessa yleistyshierarkian tärkein motiivi on kuvausvaivan säästäminen ja erilaisten sääntöjen täsmällinen esittäminen. Jos usealla luokalla on samoja attribuutteja ja luokille voidaan määritellä yhteinen yliluokka, voidaan yhteiset attribuutit liittää yliluokkaan ja määritellä ne vain kertaalleen. Analyysivaiheessa lähtökohtana ovat kohdemaailman ilmiöiden väliset suhteet. Myöhemmin suunnittelun kuluessa määritellään yleistyssuhteita toteutusratkaisujen näkökulmasta.
Miten luokkakaavio laaditaan? Suppea esitys: 1. Tunnista luokat. 2. Tunnista assosiaatiot. 3. Tunnista attribuutit. 4. Iteroi.
Luokkakaavio (miten sellainen laaditaan?) Lähtökohtana toimivat vaatimusmäärittelyt, käyttötapaukset ja keskustelut käyttäjien kanssa. Aloita luokkien tunnistamisella. Kiinnitä huomiota erityisesti usein toistuviin substantiiveihin. Kerää niistä lista. Karsi listalta kohdealueen malliin kuulumattomat luokat. Aloita liiketoimintaluokista ja vältä toteutukseen liittyviä seikkoja. Poista päällekkäiset, samaa asiaa kuvaavat luokat. Poista epämääräiset luokat. Ovatko luokat pikemminkin attribuutteja tai operaatioita?
Luokkakaavio (miten sellainen laaditaan?) Lähtökohtana toimivat vaatimusmäärittelyt, käyttötapaukset ja keskustelut käyttäjien kanssa. Jatka assosiaation tunnistamisella. Mikä tahansa kytkentä tai riippuvuus luokkien välillä on potentiaalinen assosiaatio. Etsi tekstistä verbejä. Kiinnitä huomioita ilmiöihin, jotka kuvaavat sidosta, toimintaa, yhteydenpitoa, omistusta, jne. Mallinna assosiaatiot luokkien välillä. Käytä sopivia assosiaationimiä. Lisää kardinaalisuusmerkinnät.
Luokkakaavio (miten sellainen laaditaan?) Lähtökohtana toimivat vaatimusmäärittelyt, käyttötapaukset ja keskustelut käyttäjien kanssa. Jatka attribuuttien tunnistamisella. Attribuutit kuvaavat luokkaan kuuluvien olioiden rakenteellisia ominaisuuksia. Löytyvät harvemmin tavoitemäärittelystä, tarvitaan lisänä yleistietämystä. Esiintyvät usein substantiiveina, ovat alisteisia luokille. Adjektiivit ilmaisevat yksittäisiä attribuuttiarvoja. Iteroi: Tarkenna luokkien määritystä ja assosiaatioita.
Luokkakaavio (Esimerkki) Yksikössä on koulutukseltaan kahdenlaisia poliiseja: konstaapelit ja rikostutkijat. Poliisit tunnistetaan heidän virkamerkkinsä numeron mukaan ja lisäksi järjestelmään on kirjattu heidän sosiaaliturvatunnuksensa (SOTU), nimi sekä numero kotipuhelimeen. Rikostutkija toimii tutkimusten ajan esimiehenä konstaapeleille. Poliisit tutkivat rikoksia, jotka on ryhmitelty henkirikoksiin, petoksiin jne. Rikoksista rekisteröidään myös tapahtuma- ja ratkaisupäivämäärä sekä tutkimuksen tila - joko ratkaistu tai toistaiseksi ratkaisematon. Rikokseen liittyy epäiltyjä, joiden tiedoista poliisi kirjaa järjestelmään SOTUn ja nimen lisäksi tärkeimmät yhteystiedot mahdollisten yhteydenottojen ja tarkkailun varalta. Tutkimusten ratkettua rikollisten tiedot (samat kuin epäillyillä) lisätään järjestelmään poliisin toimesta. Rikolliselle luodaan samalla rikosrekisteri, jos tätä ei vielä entuudestaan ole. Rikosrekisteri sisältää järjestelmään jo aiemmin kirjattuja rikoksia, joten rekisterin tehtävänä onkin yhdistää rikolliset rikoksiin. Järjestelmän tulee sisältää seuraavat toiminnot: rikosten kirjaaminen ja niiden tilan muuttaminen, epäiltyjen ja rikollisten tietojen kirjaaminen sekä rikoksen lisääminen rikosrekisteriin.
Luokkakaavio (Esimerkki)