Olioiden yhteistoiminta Oliojärjestelmän toiminta perustuu olioiden yhteistyöhön. Olioiden yhteistyön selvittäminen on kiinteästi sidoksissa olioiden palveluiden määrittelyyn, sillä yhteistyö toteutuu palvelujen kautta. Yhteistoimintakuvauksilla kuvataan, miten palveluja käytetään. Olioiden yhteistoiminnan kuvaaminen on ohjelmiston suunnitteluvaiheen tehtävä Yhteistyökuvauksia voidaan määrittelyvaiheessa käyttää liiketoiminnan kuvaamiseen
Yhteistyö UML esittelee kaksi tekniikkaa yhteistoiminnan kuvaamiseen. Sekvenssikaavion (yhteistyöpolut) (sequence diagram), jossa keskitytään erityisesti kuvaamaan operaatioiden tapahtumajärjestystä ja toimintaan liittyvien viestien kulkua. Sekvenssikaavion toinen ulottuvuus on aika. Yhteistyörakennekaavion (collaboration diagram), jossa keskitytään kuvaaman, sitä miten yhteistyö hyödyntää olioiden välisiä kytkentöjä
Sekvenssikaavio Sekvenssikaavio kuvaa: olion (myös järjestelmä on olio) palvelun suoritukseen liittyvän olioiden yhteistyön mitä avustavia olioita palvelun suoritukseen osallistuu ja mitä näiden palveluja käytetään missä järjestyksessä avustavien olioiden palveluita käytetään
Sekvenssikaavio aloitus viesti olio1:luokka olio2:luokka operaatio / palvelu [ehto] viesti (parametrit) nimeää käytettävän palvelun palkin pituus kuvaa palvelun kestoa paluuarvot Oman palvelun käyttö aika
Sekvenssikaavio Viestit ovat yleensä palvelujen kutsuja (palvelupyyntöjä) = pavelun nimi (parametrit) käytännössä metodikutsu oliohjelmassa ehto ei ole välttämätön palveluun liittyvä paluunuoli jätetään yleensä piirtämättä vaikka palaute saataisiinkin (kaavio tulee näin yksinkertaisemmaksi)
Sekvenssikaavio Esimerkki class A { B oliob; C olioc; D oliod; public int doit() { oliob.assist1(); olioc.assist2(oliod); } class B { E olioe; public void assist1() { olioe.dosomething(); } class C { public void assist2(d od) { od.serviced()}
Sekvenssikaavio olioa:a oliob:b olioe:e olioc:c oliod:d doit assist1() dosomething serviced assist2(oliod);
Sekvenssikaavio Luonti ja tuhoaminen create :Apuluokka use delete Ei saa aikaan esim. Rational Rosella
Sekvenssikaavio SILMUKAT Palvelua pyydetään useilta olioilta Koottua palvelujoukkoa pyydetään useilta * palvelu * koottu
Sekvenssikaavio Yhteistyöketjuja käytetään havainnollistamaan oliorakenteen toimintaa Ei kannata laatia jokaiselle palvelulle Laaditaan keskeisille palveluille ja tilanteisiin, joissa kaavioiden käyttö edistää rakenteiden ymmärtämistä Ei ole sääntöjä kuinka pitkä yhteistyöketju kaaviossa tulisi esittää, mutta 2-3 viestiä pidemmät ketjut pikemminkin sotkevat kuin havainnollistavat mitään
Sekvenssikaavio Ei kaikkea samaan kaavioon Käytettävää palvelua kuvaava erillinen kaavio
Yhteistyörakennekaavio Yhteistyörakennekaaviossa (collaboration diagram) näkyy miten, yhteistyö perustuu olioiden välisiin kytkentöihin 1: palvelu1 olio1 yhteys1 olio2 Järjestysnumero kuvaa suoritusjärjestyksen Numerointi voi olla tasoittainen 1.1: palvelu2 olio3 yhteys2 Käytettävä palvelu (viesti)
Yhteistyörakennekaavio doit OlioA:A 1:assist1() OlioB:B 2.1:serviceD 2:assist2(olioD) 1.1:doSomething OlioD:D OlioC:C OlioE:E
Palvelujen määrittely Lähdetään liikkeelle tietojärjestelmälle määritellyistä palveluista Palvelun toteutuksen tarvitaan eri tyyppisiä olioita käyttöliittymäoliot (ikkunat, valikot, napit, ) hoitavat yhteyttä käyttäjän ja sisältöolioiden välillä sisältöoliot toteuttavat reaalimaailman simulointimallin
Palvelujen määrittely Käyttöliittymäoliot Sisältöoliot
Palvelujen määrittely Sisältöolioiden ja käyttöliittymäolioiden väliseen kytkentään on monenlaisia ratkaisumalleja Yleisperiaatteena voisi pitää sitä, että sisältöolioiden pitäisi tarjota käyttöliittymästä riippumattomia palveluja sisällön käsittelyyn. Tällöin voidaan helposti rakentaa erilaisia käyttöliittymiä samaa tehtävää varten käyttöliittymän muuttaminen ei vaikuta sisältöluokkiin
Palvelujen määrittely Oliot tarjoavat ensisijaisesti oman tietosisältöönsä liittyviä palveluja. Jos oliosta on yhteys muihin olioihin, olio voi käyttää näitä apuna omissa palveluissaan ja koota yhteen tuntemiensa olioiden palveluiden tulokset Luokalle voidaan antaa vastuu jostakin asiakokonaisuudesta ja palvelut määräytyvät tämän vastuun puitteissa.
Palvelujen määrittely Palvelua määriteltäessä, on selvitettävä pystyykö luokan olio hoitamaan sen itsenäisesti ellei pysty, millaista yhteistyötä muiden olioiden kanssa tarvitaan. Kumpikin selvityksistä voi tuottaa uusia attribuutteja tai palveluja tarkasteltavalle luokalle tai avustaville luokille
Järjestelmän palvelujen määrittely Tietojärjestelmät tarjoavat tietoa sekä käyttäjille että epäsuorasti muille tahoille. Tahoja, jotka ovat järjestelmän ulkopuolella, mutta kuitenkin palvelujen kautta kytkeytyneitä järjestelmään kutsutaan järjestelmän sidosryhmiksi Tällainen taho voi toimia tiedon tuottajana järjestelmään tiedon hyväksikäyttäjänä
Järjestelmän palvelujen määrittely Järjestelmän sidosryhmät ovat tyypillisesti järjestelmän tukeman liiketoiminnan osan osapuolia organisaatioyksiköt, henkilöt, henkilöroolit tai ulkoiset järjestelmät, jotka joko toimittavat syötteitä järjestelmään tai saavat siltä tulosteita. Sidosryhmien yhteyttä järjestelmään voidaan karkeimmalla tasolla kuvata sidosryhmäkaaviolla (context diagram) Sidosryhmäkaavio rajaa järjestelmän suhteessa ympäristöönsä Sidosryhmäkaavio ei ole UML-tekniikka, vaan vanhempi
Järjestelmän palvelujen määrittely Sidosryhmäkaavio näyttää sidosryhmien lisäksi järjestelmän tärkeimmät yhteydet sidosryhmiin sidosryhmille suunnatut tai niiltä saatavat keskeiset palvelut tai palvelukokonaisuudet Tarkastellaan esimerkkiä, jossa lipunvälitys-tietojärjestelmä rakennetaan välittäjäksii asiakkaan, elokuvayhtiökohtaisten varausjärjestelmien ja pankkijärjestelmien välille
Järjestelmän palvelujen määrittely tiedustelu varaus LIPUNVÄLITYS Asiakas kysely varaus laskutus maksuilmoitus Varausjärjestelmät Pankkijärjestelmät
inquiry reservation Ticket system Customer inquiry reservation billing Payment notification Seats reservation Bank system
Järjestelmän palvelujen määrittely Sidosryhmän järjestelmään yhdistävät nuolet kuvaavat palvelukokonaisuuksia Sidosryhmiä kuvaavat symbolit vapaamuotoisia Nuolen kärki osoittaa palvelun tarjoajaan varausjärjestelmät tarjoavat lipunvälitysjärjestelmälle varaus- ja kysely-palvelut, pankkijärjestelmät tarjoavat laskutus- ja maksuilmoituspalvelut Huom. Ihmiset eivät koskaan tarjoa järjestelmälle palveluita vaan järjestelmä ihmisille. Täten ihmisiä järjestelmään yhdistävät nuolet osoittavat aina järjestelmään.
Järjestelmän palvelujen määrittely Kaavio edellyttää aina tuekseen sanallisen kuvauksen järjestelmän tehtävä selitys järjestelmän ja sidosryhmien välisistä yhteyksistä aluksi riittää lyhyt lauseen mittainen kuvaus tarkentuu myöhemmin määrittelyn kuluessa täsmälliseksi järjestelmän palvelujen kuvaukseksi
Käyttötapausmalli Tietojärjestelmä tarjoaa käyttäjilleen palveluita, jotka perustuvat järjestelmän tietosisältöön Käyttötapausmalli (use case model) on viime aikoina suosioon tullut tapa järjestelmän palvelujen määrittelyyn. (Jacobson: Object-Oriented Software Engineering: A use case driven approach, Addison-Wesley,1992) UML tarjoaa kuvaustekniikan käyttötapausmallin esittämiseen (tekniikka on kuitenkin aika turha, oleellista on käyttötapausmallin ajatus järjestelmän palvelujen määrittelystä)
Käyttötapausmalli Käyttötapauksella (use case) tarkoitetaan järjestelmän avulla suoritettavaa tavoitteellista tehtäväkokonaisuutta. Termiä käyttötapaus käytetään yleisesti sekä luokkatason käsitteenä että ilmentymätason käsitteenä. Jatkossa käyttämme mahdollisissa epäselvissä tilanteissa luokkatasolla termiä käyttötapausluokka ja ilmentymätasolla termiä käyttötapausilmentymä.
Käyttötapausluokka: Käyttötapausmalli Paikan varaaminen elokuvanäytökseen Käyttötapausilmentymä: Kalle Kenkkunen varaa paikan 308 Tennispalatsi 12:n näytökseen 20.11.1999 klo 21.
Käyttötapausmalli Käyttötapauksella on käyttäjä joka käyttötapauksessa toimii vuorovaikutteisesti järjestelmän kanssa toteuttaakseen tavoitteensa antaa syötteitä, saa palautetta usein käyttäjä on ihminen, mutta se voi olla myös ulkoinen järjestelmä Käyttötapaukseen liittyy aina tavoite = asia, jonka käyttäjä haluaa saada aikaan käyttötapauksen avulla
Käyttötapausmalli TKTL:n ilmoittautumisjärjestelmään liittyviä käyttötapauksia ovat, esim: kurssille ilmoittautuminen <-- opiskelija NN ilmoittautuu JSS/s99 kurssin harjoitusryhmään 3 ilmoittaumisen peruminen <-- opiskelija NN peruu ilmoittautumisensa JSS/s99 kurssin harjoitusryhmään 3 kurssille ilmoittautuneiden määrän selvitys <-- opettaja HL selvittää kurssille JSS/s99 ilmoittautuneiden opiskelijoiden lukumäärän
Käyttötapausmalli Lipunvälitysjärjestelmän käyttötapauksia: elokuvan tietyllä aikajaksolla olevien näytösaikojen ja paikkojen selvitys <-- asiakas NN haluaa saada selville tänään välillä 17-22 alkavien Star Wars Episode 1 näytösten ajat ja paikat Helsingissä lipun varaus <-- asiakas Kalle Kenkkunen varaa paikan 308 Tennispalatsi 12:n näytökseen 20.11.1999 klo 21.
Käyttötapausmalli Käyttötapauksia voidaan kuvata monelta eri kannalta sekä luokka että ilmentymätasolla Käyttötapauksen sisällön kuvauksessa kuvataan käyttäjän kannalta mitä käyttötapauksen avulla halutaan saada aikaan Mitä syötteitä annetaan ja mitä tuloksia saadaan Mitä sääntöjä käyttötapaukseen liittyy Mitä vaatimukset, määriä tapaukseen liittyy Kuvauksessa ei pidä ottaa kantaa mihinkään käyttöliittymäteknisiin asioihin. Se ei saisi rajoittaa toteutusmahdollisuuksia.
Käyttötapausmalli Puhtaasti sisällöllistä kuvausta voi olla vaikea muotoilla. Ajatus toimintatavasta voi ainakin piilevänä näkyä kuvauksessa. Käyttötapauksesta pitäisi määrittelyssä kuvata sen tyypillinen kulku, kuitenkin siten ettei se rajoita aiheettomasti käyttöliittymää. Käyttötapausten ei tulisi olla liian pieniä tai yksityiskohtaisia.
Käyttötapausmalli kurssille ilmoittautuminen <-- opiskelija Opiskelija antaa tunnistustietonsa ja valitsee kurssin sekä kurssin harjoitusryhmän. Opiskelija saa tiedon ilmoittautumisen onnistumisesta. Opiskelija ei voi ilmoittautua täynnä olevaan ryhmään Opiskelija ei voi ilmoittautua, jos hänelle on kirjattu osallistumiseste. 2 ruuhkahuippua vuodessa, n 1400 ilmoittautumista tunnissa, muulloin vähän
Käyttötapausmalli elokuvan tietyllä aikajaksolla olevien näytösaikojen ja paikkojen selvitys <-- asiakas Asiakas valitsee elokuvan sekä aikavälin alku- ja loppupäivät ja aika rajat näytöksen alkamisajalle. Lisäksi asiakas voi määritellä näytetäänkö tulos teattereittain vaiko alkamisaikojen perusteella järjestettynä. Tuloksena asiakas saa luettelon näytöksistä määrittelemässään järjestyksessä
Käyttötapausmalli Paikkojen varaus näytökseen Vain rekisteröitynyt asiakas voi tehdä varauksia Asiakas valitsee näytöksen ja saa tiedot vapaina olevista paikoista. Hän valitsee näistä mieleisensä (yhden tai useampia) ja antaa tunnistetietonsa. Järjestelmä vahvistaa varauksen antamalla asiakkaalle varausnumeron sekä tuottamalla laskun, jonka asiakas maksaa pankkijärjestelmänsä avulla. Lasku jää odottamaan maksamista. Kun asiakas on maksanut laskun hän tulostaa itselleen liput.
Käyttötapausmalli Edellä esitetyt kuvaukset käyttötapauksista ovat luokkatason yleiskuvauksia, esim kaikkia paikkavarauksia kuvaava. Käyttötapausten havainnollistamiseksi voidaan (ja on yleensä syytäkin) käyttää ilmentymätason esimerkkitapausten kuvauksia. Ville valitsee elokuvan X-fileet III naytöksen teatterissa Kinopalatsi 6 30.11.1999 klo 19. Vapaista paikoista hän valitsee paikat 6/8 ja 6/9. Tunnustietona hän antaa rekisteröintitunnuksensa. Hän saa varausnumeron 1234567-8 ja laskun, jonka hän maksaa Merita- Solo maksupalvelun kautta. Liput hän tulostaa omalla kirjoittimellaan.
Käyttötapausmalli Käyttötapauksilla kuvataan järjestelmän toiminnallisia vaatimuksia. Käyttötapaus on looginen kokonaisuus, jolla on lähtökohta merkityksen omaava lopputulos
Käyttötapausmalli Käyttötapauksen kuvauksessa esitetään käyttötapauksen perussisältö Käyttötapaukset eivät välttämättä toteudu aina perussisältönsä mukaisesti vaan esiintyy: virhetilanteita, poikkeuksia, vaihtoehtoisia tai valinnaisia tapoja toimia Nämä kuvataan erilisinä laajennoksina tai täydennyksinä
Käyttötapausmalli Paikkojen varaus näytökseen - esimerkkejä poikkeuksista ja virhetilanteista: Valittuun näytökseen ei ole haluttua määrää vapaita paikkoja Asiakas ei ole rekisteröitynyt Asiakas on unohtanut tunnistetietonsa Asiakkaalla ei ole käyttöoikeutta pankkitietojärjestelmään Asiakkaalla ei ole kirjoitinta Yhteys järjestelmään katkeaa (eri vaiheissa)
Käyttötapausmalli Laajoissa järjestelmissä voidaan lähteä liikkeelle käyttäjien työtehtäviin perustuvista käyttötapauksista. Käyttötapauksia analysoitaessa löydetään yhteisiä osia, jotka voidaan erottaa omiksi käyttötapauksiksi. virhe- ja poikkeustilanteita vaihtoehtoisia sisältöjä
Käyttötapausmalli Käyttötapauksen perussisältöä muuttavat tehtävät voidaan liittää käyttötapaukseen sen laajennoksina (extent). Esim: Henkilötietojen antaminen voisi olla ilmoittautumisen laajennos, joka suoritetaan siinä tapauksessa, että opiskelija ei ole aiemmin antanut henkilötietojaan.
Käyttötapausmalli Paikkojen varauksen viimeisellä osatehtävällä Lipun toimitus voisi olla kaksi vaihtoehtoa tulostus asiakkaan kirjoittimella toimitus teatterin lippupisteestä tätä käytettäisiin, jos tulostus asiakkaan kirjoittimella ei jostain syystä onnistu Toimitus teatterin lippupisteestä: Lippu kirjataan noudettavaksi teatterin lippupisteestä. Asiakkaan on lippua noutaessaan annettava varausnumeronsa. Kun asiakas on noutanut lipun se kirjataan noudetuksi.
Käyttötapausmalli Toimitus asiakkaan kirjoittimella: Järjestelmä selvittää, tarvittessa asiakkaalta kysymällä, millainen kirjoitin asiakkaalla on. Jos kirjoitin on tulostukseen soveltuva muodostetaan lippujen kuvat ja toimitetaan ne asiakkaan työasemaan. Asiakas tulostaa liput ja kuittaa tulostuksen onnistuneeksi. Poikkeuksia (näissä tilanteissa käytetään lippupisteestä toimitusta): kirjoitin ei ole tulostukseen soveltuva Tulostus ei onnistu
Käyttötapausmalli paikkojen varaus extends toimitus lippupisteestä uses extends toimitus asiakkaan kirjoittimella extends epäonnistunut toimitus
Käyttötapausmalli Käyttötapausmalli (use case model) on kattava, täydellinen luokkatason kuvaus järjestelmän käytöstä (palveluista) kaikki käyttötapaukset mukana käyttötapausten väliset yhteydet selvitetty Käyttötapausmalli esitetään kaavioina ja sanallisina kuvauksena
Käyttötapausmalli UML-tarjoaa kaaviotekniikan käyttötapausmallin esittämiseen Sanalliset kuvaukset ovat kuitenkin oleellisempia käyttötapaus käyttäjä (actor)
Käyttötapausmalli use case a käyttötapaus a hyödyntää b:tä Viivojen pitäisi olla katkoviivoja uses c laajentaa b:tä use case b extends use case c
Käyttötapausmalli student register_on_course establish_new_course cancel_registration study_ administrator change_student_data study_exam_results determine_tasks determine_grades register_task-points teacher lecturer
Käyttötapausmalli Edellä on tarkasteltu käyttötapauksen sisällön määrittelyä Käyttötapauksen toteutuksen suunnittelussa perustana on käyttöliittymän yleissuunnitelma suunnitellaan yksityiskohtaisesti käyttötapauksen läpivienti käyttöliittymän avulla määritellään käyttöliittymäolioille käyttötapauksen tarvitsemia palveluita
Käyttötapaukset ja tietosisältö Käyttötapaukset määrittelevät toiminnalliset vaatimukset järjestelmälle, mutta ne asettavat vaatimuksia myös järjestelmän tietosisällölle, koska toiminnot edellyttävät tietojen olemassaoloa Eräs tapa järjestelmän sisältöluokkien suunnitteluun onkin tehdä suunnittelu käyttötapauksittain ja sitten yhdistää käyttötapauskohtaiset mallit
Käyttötapaukset ja tietosisältö Lähtökohtana käyttötapaukset Mitä tietoja ja tietokokonaisuuksia tarvitaan käyttötapauksen hoitamiseksi? Jokaisen käyttötapauksen perusteella laaditaan käyttötapauskohtainen näkymä tarvittavista tiedoista, eli pelkästään käyttötapauksen tarpeet huomioon ottava luokkakaavio Näkymät yhdistetään sisällön kokonaismallin aikaansaamiseksi
Käyttötapaukset ja tietosisältö KT-1 KT-i KT-n Näkymä-1 Näkymä-i Näkymä-n integrointi Koottu malli
Käyttötapaukset ja tietosisältö Käyttötapauksittain sisältömallia muodostettaessa ainakin periaatteessa saadaan mallliin mukaan kaikki käyttötapauksen tarvitsemat tiedot Käyttötapausmallin ja tietosisältömallin yhteensopivuuden varmistamiseksi voi käyttää riippuvuusmatriisia
Käyttötapaukset ja tietosisältö Riippuvuusmatriiseja: Luokat ja yhteydet / käyttötapaukset Luo, muuttaa, poistaa, käyttää Matriisit voidaan esittää myös attribuuttitasolla, jolloin näkyisi attribuuttien käsittely. Tällöin matriisit on kuitenkin syytä pilkkoa luokkakohtaisiksi
Käyttötapaukset ja tietosisältö 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
Käyttötapaukset ja tietosisältö 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 ilmentymien hävitykseen Jos ilmentymän tietosisältö ei ole muuttumaton pitää löytyä käyttötapaus, jolla tietosisältöä voidaan muuttaa
Käyttötapaukset ja tietosisältö 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.