Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Ohjelmistojen mallintaminen, sekvenssikaaviot

Samankaltaiset esitykset


Esitys aiheesta: "Ohjelmistojen mallintaminen, sekvenssikaaviot"— Esityksen transkriptio:

1 582104 - Ohjelmistojen mallintaminen, sekvenssikaaviot

2 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ä

3 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

4 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)

5 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)

6 Sekvenssikaavionotaatio

7 Sekvenssikaavion elämänpolku
Tehtävän suoritukseen osallistuvat oliot kuvataan elämänpolkuna (lifeline) Oliolle ei tarvitse, mutta voi antaa nimen Luokan nimi yleensä mukana class Tulostin { public void sanoo(String sanoma) { System.out.println(sanoma); }

8 Uusien olioiden luominen
Uusia olioita luodaan (instantioidaan) lähettämällä viesti konstruktorille

9 Metodien aktivointi Palvelun suoritus kuvataan elämänpolun päälle sijoitettavalla suorakaiteella. Suorakaiteen korkeus kuvaa palvelun kestoa. Suorakaiteet kerrostuvat, jos palvelun suorituksessa käytetään avuksi jotain suorittavan olion omaa palvelua

10 Paluukutsut Kerrostumista esiintyy myös, jos avustava palvelu tekee ns. paluukutsun (callback) Viestit ovat synkronisia, lähettäjä siis odottaa, kunnes pyyntö on palveltu

11 Oliot ovat vuorovaikutuksessa viestien avulla
Viesti voi olla synkroninen (esim. metodikutsu) tai asynkroninen (esim. säikeiden kautta). Synkroninen: kontrolli palaa kun palvelu päättyy paluuviestiä ei yleensä esitetä) Asynkroninen: Lähettäjä jatkaa toimintaansa jos lähettäjää informoidaan valmistumisesta tarvitaan, erillinen paluuviesti Viesti voi toteutua metodikutsuna, etäkutsuna, sanomanlähetyksenä, tapahtuman generointina

12 Sekvenssikaavioesimerkki

13 Käytössä oleva pinta-ala rajoittava tekijä
Sekvenssikaaviota käytetään havainnollistamaan oliorakenteen toimintaa. Ei kannata laatia jokaiselle toiminnolle. 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 3-4 viestiä pidemmät ketjut pikemminkin sotkevat kuin havainnollistavat mitään.

14 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ä) 14/35

15 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()

16 Sekvenssikaavioesimerkki (2/2)
b: B e: E c: C d: D doIt assist1() doMagic assist2(d) serviceD

17 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)

18 Sekvenssikaavio: silmukat (laajennos)
*[ehto]palvelu * koottu koottua palvelujoukkoa pyydetään useilta

19 Sekvenssikaavio: jakaminen
Käytettävää palvelua kuvaava erillinen alikaavio

20 Sekvenssikaavioesimerkki
public class Tulostin { private String nimi; public Tulostin(String nimi) { this.nimi = nimi; } public void sanoo(String str) { System.out.println(nimi + ” sanoo: ” + str);

21 Osakaavio: metodi sanoo(String)

22 Pääohjelma public static void main(String args[]) {
Tulostin kana, gorilla; kana = new Tulostin(”kana”); gorilla = new Tulostin(”gorilla”); kana.sanoo(”kot kot kot”); gorilla.sanoo(”bundolo”); }

23 Alikaavioiden käyttäminen

24 Asynkroniset metodikutsut – mitä tulostaa?

25 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

26 Kommunikaatiokaavioesimerkki
1: assist1 doIt a: A b: B 2: assist2(d) 1.1: doMagic 2.1: serviceD d: D c: C e: E


Lataa ppt "Ohjelmistojen mallintaminen, sekvenssikaaviot"

Samankaltaiset esitykset


Iklan oleh Google