Ohjelmistotekniikan menetelmät Luokkamallit ohjelmiston mallintamisessa 14.11.2008 Harri Laine 1
Oliot ohjelmiston mallinnuksessa käyttötapaus käyttää Käyttämämme oliokeskeinen perusmalli ohjelmistojen toiminnasta: Käyttötapaukset hoidetaan olioiden palveluita hyödyntämällä 14.11.2008 Harri Laine 2
Useita mallitasoja Yrityksen liiketoiminta Kohdealueen liiketoiminta Ohjelmistoarkkitehtuuri Liiketoimintataso ohjelmistotekninen taso Ohjelmistototeutus Kullakin tasolla asioita voidaan mallintaa eri näkökulmista -> useita malleja 14.11.2008 Harri Laine 3
Luokkakaaviot ja mallitasot Luokkakaaviot kuvaavat oliota ja niiden välisiä yhteyksiä ja riippuvuuksia Kaavioita voi käyttää usealla tasolla eri käyttötarkoituksiin UML:ssä on mahdollista määritellä käyttötarkoituskohtaisia profiileja kaavioista Profiilissa kaaviosta voidaan määritellä erikoistapaus, jossa perusmallin käsite, esimerkiksi luokka, voidaan korvata usealla täsmällisemmällä käsitteellä ja näille voidaan määritellä jopa omat graafiset esitystavat (tällaisista pienistä täsmennyksistä huolimatta kyseessä on kuitenkin pohjimmiltaan luokkakaavio) 14.11.2008 Harri Laine 4
Luokkakaaviot ja mallitasot Erikoisluokkakaavio Luokkakaavio Profiili voi määritellä useita erikoistapauksia sekä luokkakaavioista, että myös muista myöhemmin käsiteltävistä tekniikoista 14.11.2008 Harri Laine 5
Luokkakaaviot ja mallitasot Maciaszek & Liong luvussa 6 esiintyvät kaaviotekniikat ovat 'liiketoiminta'-profiilissa määriteltyjä erikoistapauksia business use case model use case model business class diagram class diagram 14.11.2008 Harri Laine 6
Luokkakaaviot ja mallitasot Esimerkki: business use case model (kuvaa liiketoimintaprosesseja) 14.11.2008 Harri Laine 7
Luokkakaaviot ja mallitasot Esimerkki: business class diagram (kuvaa liiketoiminnan keskeisiä tekijöitä) 14.11.2008 Harri Laine 8
Luokkakaavion mahdollisuudet Olio 1 tietää Olio 3 Palvelu b Palvelu a Luokkakaavio ei kuvaa yhteistyötä Oheisesta mallista voidaan kuvata vain osa.. Olio 2 Palvelu d Käyttää apuna Olio 4 Palvelu c 14.11.2008 Harri Laine 9
Luokkakaavion mahdollisuudet Palvelu a Olio 1 tietää Olio 3 Palvelu b Luokkakaavio ei kuvaa yhteistyötä Oheisesta mallista voidaan kuvata vain rakenne Olio 2 Palvelu d Olio 4 Palvelu c 14.11.2008 Harri Laine 10
Luokkakaavio liiketoiminnan kuvaamisessa Liiketoimintaa kuvaavien mallien tarkoituksena on määritellä ohjelmiston tehtävää. Mitä tietoa ohjelmisto käsittelee ja mihin tietoja käytetään Unified process menetelmässä liiketoimintaa voidaan mallintaa kahdella tasolla yleiskuvatasolla (Business object model) liiketoimintaprosessit ja liiketoiminnan keskeiset osapuolet kohdealuetasolla (Domain object model) tehtävät ja niihin liiketoiminnan kannalta liittyvät kohteet 14.11.2008 Harri Laine 11
Luokkakaavio liiketoiminnan kuvaamisessa Tarkastellaan tarkemmin kohdealuetason liiketoimintamalleja (domain use case model ja domain object model) Malleilla kuvataan liiketoimintaa, mutta niillä on jo selkeä kytkentä haluttuihin ohjelmistopalveluihin Käyttötapausmalli tällä tasolla vastaa kurssilla jo aiemmin käsiteltyä: käyttötapauksina määritellään liiketoimintaan liittyviä tehtäviä, joita ohjelmiston on tarkoitus avustaa Luokkakaavion tarkoituksena on kuvata liiketoiminnan kannalta oleellisia kohteita (liiketoimintaolioita), joihin liittyvää tietoa järjestelmässä käsitellään muodostavat perustan ohjelmiston tietokannalle 14.11.2008 Harri Laine 12
Luokkakaavion laatiminen Kokonaisvaltainen lähestymistapa etsitään kerralla koko kohdealuetta kuvaavaa mallia hankalaa, jos kohdealue on laaja ensin karkea yleiskuva, sitten lisää yksityiskohtia JA/TAI Osista kokonaisuuteen jaetaan kokonaisuus osiin ja tehdään osakohtaisia malleja, jotka sitten yhdistetään kokonaismalliksi osa voisi olla esimerkiksi käyttötapaus yksityiskohdista yleiskuvaan 14.11.2008 Harri Laine 13
Luokkakaavion laatiminen Kartoita luokkaehdokkaita. Karsi ehdokkaita. Tunnista olioiden väliset yhteydet. Täsmennä luokkakuvauksia määrittelemällä attribuutit. Määrittele yhteyksiin liittyvät kytkentärajoitteet. (liiketoimintaolioille ei yleensä määritellä palveluita) 14.11.2008 Harri Laine 14
Ehdokkaiden kartoitus Laadi luettelo (sanasto) tarkasteltavan ilmiön kannalta keskeisistä kohteista tai ilmiöistä, jotka voisivat tulla kyseeseen luokkina tai olioina: toimintaan osallistujat toiminnan kohteet toimintaan liittyvät tapahtumat materiaalit tuotteet ja välituotteet toiminnalle edellytyksiä luovat asiat 14.11.2008 Harri Laine 15
Ehdokkaiden kartoitus Kartoituksen pohjana voi käyttää vapaa-muotoista tekstikuvausta tarkasteltavasta ilmiöstä. Käyttötapauslähtöisessä mallinnuksessa osana tekstiä olisi käyttötapauksen sisällön kuvaus. Kuvauksesta alleviivataan luokkaehdokkaita ja kerätään ne luetteloon Luokkaehdokkaat esiintyvät kuvauksessa usein subjekteina tai objekteina Verbit voivat ilmaista yhteyksiä, samoin genetiivit Alustavaa karsintaa voi tehdä sen perusteella, onko asia lainkaan oleellinen mallinnettavan ilmiön kannalta. 14.11.2008 Harri Laine 16
Ehdokkaiden kartoitus Löydetyt ehdokkaat käydään läpi ja arvioidaan, voisiko ehdokas tulla kyseeseen luokkana. Liittyykö luokan ilmentymiin tietosisältöä, joka on välttämätöntä järjestelmän kannalta (yleensä on oltava useita attribuutteja)? Tarvitaanko tietoa ilmentymien olemassaolosta? Onko asia riittävän tärkeä kohdealueen kannalta? Karsitaan synonyymit. Karsintaa ja ehdokkaiden kartoitusta voidaan joutua tekemään iteratiivisesti. Ensimmäinen karsintakierros ei välttämättä tuota lopullista tulosta. 14.11.2008 Harri Laine 17
Tunnista yhteydet Yhteyksiä (ilmentymien välillä) voi etsiä vapaamuotoisesta kuvauksesta: verbit genetiivit muut ilmaukset, jotka kuvaavat kytkentää Yhteyksienkin suhteen tulisi miettiä onko yhteys oleellinen tarkasteltavan ilmiön kannalta? onko se rakenteellinen? (vallitseva asiaintila) Asia pitäisi esittää vain kertaalleen: johdettavissa olevat yhteydet? karsitaan tai merkitään Älä piilota yhteyksiä attribuuteiksi! 14.11.2008 Harri Laine 18
Määrittele attribuutit Attribuutteja saattaa löytyä vapaamuotoisesta kuvauksesta. 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! 14.11.2008 Harri Laine 19
Määrittele kytkentärajoitteet Kytkentärajoitteiden avulla ilmaistaan rakenteellisia sääntöjä. Säännöt eivät välttämättä tule esiin vapaamuotoisessa kuvauksessa, vaan edellyttävät tarkempaa kohdealueen analysointia. 14.11.2008 Harri Laine 20
Luokkakaavion laatiminen Siirry Puutarhatonttu esimerkkiin 14.11.2008 Harri Laine 21
Käyttötapauslähtöinen mallin laadinta Lähtökohta: mitä liiketoimintaolioita käyttötapaukseen liittyy? Jokaisen käyttötapauksen perusteella laaditaankäyttötapauskohtainen näkymä Näkymät yhdistetään kokonaismalliksi (Katso materiaalin Kampaamo-esimerkki - ei käsitelty luennolla) 14.11.2008 Harri Laine 22
Käyttötapauslähtöinen mallin laadinta KT-1 KT-i KT-n Näkymä-1 Näkymä-i Näkymä-n integrointi Koottu malli 14.11.2008 Harri Laine 23
Riippuvuusmatriisit Käyttötapauksittain sisältömallia muodostettaessa saadaan ainakin periaatteessa malliin mukaan kaikki käyttötapauksen tarvitsemat tiedot. Käyttötapausmallin ja tietosisältömallin yhteensopivuuden varmistamiseksi voidaan käyttää riippuvuusmatriisia. 14.11.2008 Harri Laine 24
Riippuvuusmatriisit Riippuvuusmatriiseja: Luokat ja yhteydet / käyttötapaukset Matriisin alkiona riippuvuustieto: luo, muuttaa, poistaa, käyttää ilmentymiä Matriisit voidaan esittää myös attribuuttitasolla, jolloin näkyisi attribuuttien käsittely. Tällöin matriisit on kuitenkin syytä pilkkoa luokkakohtaisiksi. 14.11.2008 Harri Laine 25
Riippuvuusmatriisit Käyttötapaukset Uusi artikkeli Uusi artikkeliversio Tiedustelu artikkelin tilasta Lausunnonantajan valinta Lausunnon saapuminen Muistutus lausunnosta Puuttumaan jäänyt lausunto Olioluokat Article L M K K K K K K M M M M M M M K K K K K Article version L L K M K K K M M M M M K Person X X X K K K K K K K K X K Reference K L M M M M K Journal L K K K K= Käyttää, L = Luo, M= Muuttaa, P= Poistaa, X=Luo tai muuttaa Valituksen käsittely Julkaisupäätöksen kirjaus Palautus korjattavaksi Julkaistavaksi hyväksymine Hylkääminen Viimeistellyn saapuminen Oikovedoksen lähettäminen Korjausten vastaanotto Eripainosten tilaus Henkilötietojen rekisteröinti Sisällysluettelo Vuosikertatiedot www-sivut Raportit 14.11.2008 Harri Laine 26
Riippuvuusmatriisit 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 hävitetään ilmentymiä. 14.11.2008 Harri Laine 27
Riippuvuusmatriisit Jos ilmentymän tietosisältö ei ole muuttumaton, pitää löytyä käyttötapaus, jolla tietosisältöä voidaan muuttaa. Jos osapuoli voidaan irroittaa yhteydestä, täytyy tähän tarkoitukseen löytyä käyttötapaus. Toisaalta jokaisen käyttötapauksen täytyy jollain tavoin liittyä sisältöluokkiin. 14.11.2008 Harri Laine 28