582101 - Ohjelmistotekniikan menetelmät, luokkamallin laatiminen 1
Lähestymistapoja Kokonaisvaltainen lähestymistapa (top-down) etsitään kerralla koko kohdealuetta kuvaavaa mallia hankalaa, jos kohdealue on laaja ensin karkea yleiskuva, sitten lisää yksityiskohtia JA/TAI Osista kokonaisuuteen (bottom-up) jaetaan kokonaisuus osiin ja tehdään osakohtaisia malleja, jotka sitten yhdistetään kokonaismalliksi osa voisi olla esimerkiksi käyttötapaus yksityiskohdista yleiskuvaan 2
Luokkamallin laatimisen yleisohje Laadi kohdealueen perussanasto Muodosta alustava luokkakaavio Tunnista luokkien ilmentymien väliset yhteydet Täsmennä mallia määrittelemällä attribuutit Määrittele yhteyksien moniarvoisuusmääreet Liitä luokkiin operaatiot ja lisää tarvittaessa uusia luokkia käyttötapausten perusteella Varmista käyttötapausten ja luokkamallin yhteensopivuus 3
Perussanaston laatiminen (harjoitus 1) Etsi kohdealueen potentiaaliset luokat ja oliot esim. keskeiset toimijat, toiminnan kohteet, ilmiöt, tapahtumat, materiaalit, tuotteet, käsitteet, termit, Lähtökohtana esim. vapaamuotoinen tekstikuvaus Kerää luokkaehdokkaat perussanastoksi luokkaehdokkaat tekstissä usein subjekteja tai objekteja verbit voivat ilmaista yhteyksiä, samoin genetiivit 4
Turhien ehdokkaiden karsiminen perussanastosta Luokka oleellinen mallinnettavan ilmiön kannalta? Luokalla (useita) ilmentymiä? Ilmentymillä järjestelmän kannalta välttämätöntä tietosisältöä (yleensä oltava useita attribuutteja)? Poista synonyymit Karsiminen tyypillisesti iteratiivista 5
Yhteyksien tunnistaminen Etsi yhteyksiä sanastosta (ja muista kuvauksista) Käy läpi verbit ja genetiivit sekä muut ilmaukset, jotka kuvaavat kytkentää Onko yhteys oleellinen tarkasteltavan ilmiön kannalta? Onko se rakenteellinen? (vallitseva asiaintila) Esitä kukin asia vain kertaalleen Karsi tai merkitse johdettavissa olevat yhteydet Älä piilota yhteyksiä attribuuteiksi! Työntekijä osastonnimi Osasto nimi Työntekijä osasto nimi Osasto 6
Attribuuttien tunnistaminen Attribuutteja saattaa löytyä sanastosta Yleensä niiden löytäminen edellyttää lisäselvityksiä kohdealueesta, esimerkiksi toiminnan osapuolten haastatteluja Attribuuttien kohdalla pitäisi myös selvittää, mihin niitä tarvitaan Ja uudelleen: älä piilota yhteyksiä attribuutteihin! 7
Moniarvoisuusmääreet Moniarvoisuusmääreiden eli osallistumisrajoitteiden avulla ilmaistaan rakenteellisia sääntöjä Säännöt eivät välttämättä tule esiin sanastossa, vaan edellyttävät tarkempaa kohdealueen analysointia 8
Käyttötapausten rooli operaatioiden ja luokkien tunnistamisessa Käydään läpi kukin käyttötapaus ja sen määrittelemät toiminnalliset vaatimukset esimerkiksi taulukkomuodossa (ks. Maciaszek & Liong, Ch. 11.1, s. 332-339) Määritellään yksi (tai useampi) pääluokka, joka vastaa toiminnallisuuden toteuttamisesta Määritellään yksi tai useampia operaatioita, jotka vastaavat toiminnallisuuden toteuttamisesta Määritellään tarvittaessa apuluokkia, joita pääluokka käyttää hyväksi 9
Käyttötapausten ja luokkamallin yhteensopivuus Käyttötapausmallin ja tietosisältömallin yhteensopivuuden varmistamiseksi voidaan käyttää riippuvuusmatriisia luokat ja yhteydet vs. käyttötapaukset alkiona riippuvuustieto: luo, muuttaa, poistaa, käyttää matriisit voidaan esittää myös attribuuttitasolla, jolloin kuvataan kunkin attribuutin käsittely (tällä tasolla matriisit on kuitenkin syytä pilkkoa luokkakohtaisiksi) 10
Riippuvuusmatriisi 11
Riippuvuusmatriisin käyttö Jokaiselle luokalle ja yhteydelle täytyisi löytyä käyttötapaus, jolla voidaan luoda luokan ilmentymiä ja kytkeä olioita ko. yhteyteen Jokaiselle luokalle ja yhteydelle täytyisi löytyä käyttötapaus, joka hyödyntää luokan tietoja ja yhteyksiä Jos ilmentymät eivät ole ikuisia, pitää löytyä käyttötapaus, jolla poistetaan ilmentymiä Jos ilmentymän tietosisältö ei ole muuttumaton, pitää löytyä käyttötapaus, jolla tietosisältöä voidaan muuttaa Jos osapuoli voidaan irrottaa yhteydestä, täytyy tähän tarkoitukseen löytyä käyttötapaus Lisäksi: jokaisen käyttötapauksen täytyy jollain tavoin liittyä sisältöluokkiin 12