582101 - Ohjelmistotekniikan menetelmät, sekvenssikaaviot
Vuorovaikutussuunnittelu Oliojärjestelmän toiminta perustuu olioiden vuorovaikutukseen ja yhteistyöhön Olioiden yhteistyö toteutuu operaatioiden kautta Yhteistoimintakuvauksilla kuvataan, miten operaatioita käytetään Yhteistyökuvauksia voidaan määrittelyvaiheessa käyttää liiketoimintasääntöjen kuvaamiseen Olioiden yhteistoiminnan kuvaaminen on kuitenkin lähinnä suunnitteluvaiheen tehtävä
Vuorovaikutuksen mallintaminen UML:llä Kuvataan järjestelmän osien (olioiden) välistä kommunikointia Tarkoituksena tarkistaa ja täydentää luokkamallia & tarjota esimerkkitapauksia sen dynaamisesta soveltamisesta Vuorovaikutus esitetään viesteinä olioiden (tai niiden elinkaarta esittävien elämänviivojen, lifeline) välillä Painopiste on viestisekvenssin kuvaamisessa, ei viestien tietosisällössä Vuorovaikutus voi olla synkronista tai asynkronista
Vuorovaikutuskaaviot UML:ssä Sekvenssikaavio (sequence diagram) kuvaa operaatioiden tapahtumajärjestystä ja viestien kulkua olioiden välillä olioiden lisäksi toinen ulottuvuus on aika Kommunikointikaavio (communication diagram) painottaa olioiden välisiä kytkentöjä tunnettiin ennen UML 2.0:aa nimellä yhteistyörakennekaavio (collaboration diagram)
Sekvenssikaavio Havainnollistaa oliorakenteen toimintaa Laaditaan keskeisille operaatioille ja tilanteisiin, joissa kaavioiden käyttö edistää rakenteiden ymmärtämistä Kuvaa olion (tai järjestelmän) operaation (tiettyyn) suoritukseen liittyvän olioiden yhteistyön: operaation suoritukseen osallistuvat avustavat oliot mitä näiden operaatioita kutsutaan missä järjestyksessä operaatioita kutsutaan Vältä pitkiä kaavioita (harvoin havainnollisia)
Sekvenssikaavionotaatio
Sekvenssikaavioesimerkki
Viestit ja aktivaatiot aika olio1: Luokka olio2: Luokka viesti nimeää kutsuttavan operaation [ehto] viesti (parametrit) operaation aktivaatio eli suoritus (palkin pituus kuvaa sen kestoa) paluu operaation suorituksesta (jätetään usein merkitsemättä) 8/35
Erilaiset viestityypit
Sekvenssikaavioesimerkki (1/2) public class A { private B b; private C c; private D d; ... public int doIt() { b.assist1(); c.assist2(d); } public class B { private E e; ... public void assist1() { e.doMagic(); } public class C { public void assist2(D d) { d.serviceD()
Sekvenssikaavioesimerkki (2/2) b: B e: E c: C d: D doIt assist1() doMagic assist2(d) serviceD
Sekvenssikaavio: olioiden elinkaaren merkitseminen m: MyMain tmp: MyHelper create use yksityiskohdat jätetty pois delete Huom. delete-operaatio voi olla eksplisiittinen (kuten C++:ssa) tai implisiittinen (kuten Javassa)
Sekvenssikaavio: silmukat *[ehto]palvelu * koottu koottua palvelujoukkoa pyydetään useilta
Sekvenssikaavio: jakaminen Käytettävää palvelua kuvaava erillinen alikaavio
Esimerkki: Login
Esimerkki: exit
Käytettävä operaatio (viesti) Kommunikaatiokaavio Kuvaa miten, yhteistyö perustuu olioiden välisiin kytkentöihin 1: palvelu1 olio1 olio2 yhteys1 Järjestysnumero kuvaa suoritusjärjestyksen; numerointi voi olla monitasoinen 1.1: palvelu2 yhteys2 Käytettävä operaatio (viesti) olio3
Viestit kommunikaatiokaaviossa
Kommunikaatiokaavioesimerkki 1: assist1 doIt a: A b: B 2: assist2(d) 1.1: doMagic 2.1: serviceD d: D c: C e: E