15
PREDMET SE440 RAZVOJ VELIKIH SOFTVERSKIH SISTEMA Predavanje broj 2 SE440-P02 Sekvencijalni dijagrami i o.o. dizajn Nedelja Čas Tematska jedinica Predavanja Lekcija ili aktivnost Rezultat – znanja ili veštine koje student treba da dobije 1 Sekvencijalni dijagrami i o.o. dizajn Sekvencijalni dijagrami, poruke objekata, scenariji Osobine sekvencijalnih dijagrama, notacija sekvencijalnih dijagrama 2 2 O.o. dizajn, detaljni o.o. dizajn, primena sekvencijalnih dijagrama Primena o.o. dizajna, tehnika detaljnog o.o. dizajna Copyright © 2010 – UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija, transfer, distribucija ili memorisanje nekog dela ili čitavih sadržaja ovog dokumenta., kopiranjem, snimanjem, elektronskim putem, skeniranjem ili na bilo koji drugi način. Copyright © 2010 BELGRADE METROPOLITAN UNIVERSITY. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, without the prior written permission of Belgrade Metropolitan University. Oktobar, 2013.

SE440-P02

Embed Size (px)

DESCRIPTION

Razvoj velikih softverskih sistema

Citation preview

Page 1: SE440-P02

PREDMET

SE440 RAZVOJ VELIKIH SOFTVERSKIH SISTEMA

Predavanje broj 2

SE440-P02

Sekvencijalni dijagrami i o.o. dizajn

Nedelja Čas Tematska jedinica

Predavanja Lekcija ili aktivnost

Rezultat – znanja ili veštine koje student treba da

dobije

1 Sekvencijalni dijagrami i o.o. dizajn

Sekvencijalni dijagrami, poruke objekata, scenariji

Osobine sekvencijalnih dijagrama, notacija sekvencijalnih dijagrama

2

2 O.o. dizajn, detaljni o.o. dizajn, primena sekvencijalnih dijagrama

Primena o.o. dizajna, tehnika detaljnog o.o. dizajna

Copyright © 2010 – UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija, transfer, distribucija ili memorisanje nekog dela ili čitavih sadržaja ovog dokumenta., kopiranjem, snimanjem, elektronskim putem, skeniranjem ili na bilo koji drugi način.

Copyright © 2010 BELGRADE METROPOLITAN UNIVERSITY. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, without the prior written permission of Belgrade Metropolitan University.

Oktobar, 2013.

Page 2: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

2/15

Sadržaj

Contents

Uvod ........................................................................................................................................................ 3

1] Sekvencijalni dijagrami ........................................................................................................................ 4

2] Poruke objekata................................................................................................................................... 5

3] Scenariji ............................................................................................................................................... 6

4] Primena sekvencijalnih dijagrama....................................................................................................... 7

5] O.o. dizajn ........................................................................................................................................... 8

6] Detaljni O.O. dizajn............................................................................................................................ 10

7] Identifikacija asocijacija ..................................................................................................................... 11

8] Paketska dekompozicija i klasna apstrakcija .................................................................................... 12

Zaključak................................................................................................................................................ 13

Pitanja/Zadaci ........................................................................................................................................ 14

Reference/Linkovi.................................................................................................................................. 15

Page 3: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

3/15

Predavanje br. 2

Sekvencijalni dijagrami i o.o. dizajn

Uvod

U ovom predavanju prvo ćemo detaljno prodiskutovati sekvencijalne dijagrame i njihovu primenu,

poruke objekata i scenarije upotrebe sistema. A posle toga, razmotrićemo metodologiju o.o. dizajna,

pri čemu ćemo pregledati koje su faze i koji modeli ulaz i izlaz iz o.o. dizajna. Takodje, analiziraćemo

asocijacije klasa i injihovu identifikaciju?

Ključna pitanja:

1) Kada se primenjuju sekvencijalni dijagrami?

2) Kakva je veza izmedju klasnih dijagrama i sekvencijalnih dijagrama?

3) Koji su ulazni modeli a koji izlazni modeli iz postupka o.o. dizajna?

Page 4: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

4/15

1] Sekvencijalni dijagrami

Sekvencijalni dijagrami su deo UML-a. Na ovom dijagramu vertikalne linije predstavljaju instance klasa tj. objekte. Svaka ova vertikalna linija je označena na vrhu sa imenom klase i dve tačke i onda ime objekta tj. instance te klase. Horrizontalne linije predstavljaju pozive funkcija (tj. metoda objekata). Rep strelice je na klasi koja poziva, a vrh strelice na klasi koja je pozvana (tj. na vertikalnoj liniji koja predstavlja tu klasu). Ime funkcije (metode) je na strelici. Na liniji se može postaviti vertikalni blok čija dužina predstavlja vreme izvršavanja te funkcije. Sekvencijalni dijagrami mogu da se koriste da opišu tzv. scenarije tj. nizove akcija koje su date u fazi zahteva (tzv. problemski domen,engl. problem domain).

ObjektX: KlasaXX Y:YY Z:ZZ W:WW

Slika : Sekvencijalni dijagram za scenario Y-X-W-Z

Page 5: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

5/15

2] Poruke objekata

Poruke objekata su način na koji objekti interaktuju. Poruka nekom objektu od strane nekog objekta izaziva neku operaciju. Interakcija izmedju objekata je ilustrovana na donjem dijagramu. Operacija u okviru nekog objekta proizvodi poruku koju prima drugi objekt, npr. operacija koju primi objekat „X“ ima oblik:

X.operation1(parameters),

a poruka koju primi objekat „Y“ ima oblik: Y.operation2(parameters). Prema tome, ako objekat Y zahteva operaciju operation1(parameters) objekta X, Y će poslati poruku X.operation1(parameters), a ako objekat X zahteva operaciju operation2(parameters) objekta Y, onda X će poslati poruku Y.operation2(parameters).

Slika: Poruke objekata

U toku izvršavanja nekog o.o. programa, objekti šalju poruke. Npr. u nekom bankovnom programu, objekat u klasi Account može da pošalje poruku objektu u klasi Transaction, u cilju izvršavanja neke transakcije na računu, recimo uplate novca na račun. Ovakav tip informacije je bitan za dizajnera o.o. sistema. Interakcije objekata se opisuju pomoću tzv. sekvencijalnih dijagrama. Sekvencijalni dijagram je deo UML-a. Ovaj dijagram ima vertikalne linije, koje predstavljaju objekte. Horizontalne strelice prikazuju pozivanje funkcija. Rep strelice je kod pozivajuće klase, a vrh strelice kod pozvane klase. na strelici se napiše ime funkcije. Ako kažemo da dijagrami stanja prikazuju treanzicije jednog objekta, onda sekvencijalni dijagram prikazuje tranzicije sistema kao celine. Sekvencijalni dijagrami su dragoceni za prikazivanje scenarija tj. konkretnih use-case slučajeva.

Slika : Sekvencijalni dijagram

funkcija1(..)

objeka1 objekat2 objekat3

Objekat “X” Objekat “Y”

Y.operation2(.......)

X.operation1(…..)

Page 6: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

6/15

3] Scenariji

Tzv. scenario je definisan kao opis niza tj. sekvence akcija opisanih u problemskom domenu (fazi zahteva). Odnosno, scenario je sekvena akcija koje kompletiraju tj. zaokružuje neki odredjeni korisnički zadatak. Alternativne sekvence aktivnosti se analiziraju samo ako imaju različite scenarije. Scenariji se koriste da ilustruju

• bitne sposobnosti sistema

• konkretnu upotrebu sistema

U okviru UML, sekvencijalni dijagrami (tj. interakcioni dijagrami ) se koriste da opišu scenarije. Takodje, scenariji se mogu specificirati kao lista sekvence (niza) aktivnosti. Scenariji tj. sekvence aktivnosi omogućuju da se odrede funkcije sistema, kao i objekti potrebni da podrže ove funkcije.

Primer :

Scenario 1: Aktivnost 1, aktivost 2, aktivnost 3

Scenario 2: Aktivnost 4, aktivost 5, aktivnost 6

Scenario 3: Aktivnost 7, aktivost 8

Page 7: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

7/15

4] Primena sekvencijalnih dijagrama

Postavlja se pitanje kada i kako koristiti sekvencijalne dijagrame? Sekvencijalni dijagrami se mogu koristiti u sledećim situacijama:

• za poredjenje različitih tj. alternativnih dizajn opcija

• identifikaciju uskih grla sistema (tj. objekata kroz koje prolazi mnogo poruka)

• analizu dizajn šablona (design patterns)

• elaboraciju scenarija

• analizu korisničkog interfejsa

Treba naglasiti da kod primene sekvencijalnih dijagrama

• putanje poruka na sekvencijalnom dijagramu moraju biti konzistentne sa klasnim asocijacijama

• imena klasa na sekvencijalnim dijagramima i klasnim dijagramima moraju biti konzistentna

XX YY

asocijacija

Slika: konzistentnost klasnog dijagrama I sekvencijalnog dijagrama

Sekvencijalni dijagrami se mogu koristiti na sledeće načine:

• modelovanje interakcije objekata sistema (high-level interakcija, tj. interakcija ne samo izmedju dva objekta već interakcija čitavog niza objekata)

• modelovanje interakcije podsistema („sistemski“ sekvencijalni dijagram)

• modelovanje interakcije objekata za neki use-case

• modelovanje interakcije objekata u toku neke operacije

XX YY

Page 8: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

8/15

5] O.o. dizajn

Postoji čitav niz metoda softverskog dizajna baziranih na objektima (klasama). U moderno vreme, na velikim projektima, glavnu ulogu igraju

• Naslednost klasa • Polimorfizam funkcija

OO (objektno-orijentisan) dizajn je jedan pristup softverskom dizajnu.U ovom pristupu softverski system se planira tj. projektuje kao skup objekata koji su u medjusobnoj interakciji. Rezultati tj. izlazni podaci iz OO orijentisane analize softvera predstavlja ulaz za OO dizajn. Medjutim, ova dva procesa su u povratnoj sprezi I rayvijaju se iterativno, kao što se vidi na donjoj slici. Dakle, izlazi iz OO analize nisu do kraja razvijeni kada se koriste kod OO dizajna, što znači da se OO analiza i OO dizajn obavljaju paralelno, iterativno i u medjusobnoj vezi. Problemski domen je inicijalni opis softvera (softverski zahtevi). Konstrukcija softvera (software construction) obuhvata detaljni dizajn, kodiranje, debugging, integraciju, i razvojno testiranje.

Slika : veza izmedju OO analize i OO dizajna

Sledeći su izlazi OO analize tj. ulazi OO dizajna: • Konceptualni model je rezultat OO analize i on opisuje objekte u problemskom domenu • Use-case modelovanje • Sistemski sekvencijalni dijagrami, koji za različite use-case scenarije prikazuju dogadjaje (i

redosled dogadjaja) koje spoljni akteri proizvode

Slika: artifakti OO analize i OO dizajna

OO analiza OO dizajn Problemski domen

Construction

Konceptualni model

Sekvencijalni

dijagrami

Klasni dijagram

Sekvencijalni dijagrami

Use-case model

Page 9: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

9/15

Potsetimo se osnovnih koncepata OO programiranja: klase/objekti, sakrivanje podataka, nasledje klasa, upotreba interfejsa funkcija (definisanje “potpisa” funkcije bez potrebe da se uradi implementacija funkcije), polimorfizam funkcija.

Sledeći su koncepti OO dizajna: • Kreiranje klasnog dijagrama na osnovu konceptualnog dijagrama, gde se obično vrši

mapiranje entiteta iz konceptualnog dijagrama u klase • Identifikacija atributa • Upotreba dizajn šablona (design-patterns) ako je to moguće • Definisanje aplikacionog okvira (application framework) ako je to moguće, gde je aplikacioni

okvir termin koji označava skup biblioteka ili klasa koje mogu biti upotrebljene za standardnu strukturu neke aplikacije , i to za odredjeni operativni sistem

A sledeći su izlazi (izlazni rezultati) OO dizajna: • Sekvencijalni dijagrami, gde se sistemski sekvencijalni dijagrami pretvaraju (proširuju) da bi se

dodali objekti koji upravljaju dogadjajima u sistemu (sekvencijalni dijagrami se sastoje od vertikalnih linija koje prikazuju objekte a horizontalne linije predstavljaju poruke izmedju objekata I to po redosledu po kom nastaju)

• Klasni dijagram koji prikazuje statičku strukturu sistema

Page 10: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

10/15

6] Detaljni O.O. dizajn

Detaljni dizajn (aktivnosti i modeli) obuhvata:

• Detaljna specifikacija klasa

• Detaljna specifikacija relacija klasa

• Detaljna specifikacija interakcija

Ovi modeli detaljnog dizajna treba ustvari da predstavljaju specifikaciju programa.

Tokom analize nisu bili važni

• Detalji vidljivosti klasa,

• i detalji asocijacija klasa,

• takodje detaljna specifikacija atributa,

• i detaljna specifikacija operacija

• I detaljni interakcioni dijagrami

• Dodavanje interfejs klasa, kontrolnih klasa

• i dodavanje kolekcionih klasa (klase iz biblioteke, npr. C++ biblioteke ili Java biblioteke, u zavisnosti koji implementacioni jezik je izabran )

Dakle detaljni klasni dijagram i detaljni sekvencijalni dijagram su predmet detaljnog dizajna.

Slika: aktivnosti/modeli razvoja softverskog sistema

Analiza

Dizajn sistema

Detaljni dizajn

Implermentacija

Use-case model

Page 11: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

11/15

7] Identifikacija asocijacija

Pošto se izvrši identifikacija objekata, posle toga može se pristupiti identifikaciji asocijacija izmedju objekata. Asocijacija označava relaciju/vezu/povezanost izmedju dva objekta. Postoje različiti oblici asocijacija. Asocijacija izmedju dva objekta znači da kod implementacije programa, postojaće veza izmedju objekata. Naime asocijacija će definisati kakav pristup jedan objekat ima prema drugim objektima. Ovo je od suštinske važnosti kod efikasne implementacije funkcionalnosti.

Relacija izmedju dve klase u UML-u se zove asocijacija. Na klasnom dijagramu asocijacije su predstavljene pravim linijama. Asocijacija nastaje ako su dve klase u nekoj vezi tj. nekoj povezanosti tj. Interakciji. Evo nekih primera,

• klasa Director (direktor) je u vezi sa klasom Worker (radnik) jednostavno na osnovu činjenice da direktor upravlja radnicima

• klasa Journez (put) je u vezi sa klasom Car (auto) na osnovu činjenice da avion obavlja neko putovanje

Slika: Asocijacija dve klase

Asocijacijama mogu da se daju imena u cilju eksplicitnog dokumentovanja veze izmedju dve klase. Alternativno, umesto imena asocijacije, mogu se koristiti imena uloga koje klase imaju u nekoj aocijaciji, za svaku klasu pojedinačno. Npr. klasa Univezitet i klasa Student su povezane, i klasa Univerzitet ima ulogu domaćina (Host) a klasa Student ima ulogu člana univerziteta (StudentMember). Kod dokumentovanja asocijacija, treba izabrati jedan od ova dva načina, ili koristiti imena asocijacija ili njihovih uloga, roles..

Slika : “Uloge” asocijacije

Postoje više prilaza za odredjivanje asocijacije izmedju objekata. Jedan pristup je da

• se identifikuju asocijacije koje postoje u problemskom domenu.

Drugi prilaz je da

• se identifikuju asocijacije preko identifikacije funkcionalnosti koja je potrebna. Ako jedan objekat treba da ima funkcionalnost koja zahteva pristup drugim objektima, tada jedna asocijacija, ili niz asocijacija, mora postojati izmedju dva objekta.

Da napomenemo, primenom tehnike dizajna odozgo-nadole, tj. postepenim povećavanjem nivoa detaljnosti modela objekata, može se klasni model približiti implementaciji, i pri tome optimizirati u skladu sa atributima dizajna, a to je visoka kohezija klase, tj. ugrupnjavanju sličnih funkcija, i niska povezanost izmedju klasa su poželjne osobine modela objekata, koje ga približavaju optimalnosti. Znači kreiranje klasa se obavlja imajući na umu kriterijum kohezije i povezanosti. Prema tome, identifikacija asocijacija tj veza izmedju objekata je vrlo važan deo kreiranja klasnog modela.

University Student Host

Member

Director Worker

manages

Page 12: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

12/15

8] Paketska dekompozicija i klasna apstrakcija

Veliki sistem može se podeliti na niz podsistema, i svaki podsistem predstaviti kao paket. Ovo je dole ilustrovano na slici. Na ovaj način se vrši apstrakcija celog jednog podsistema tako što se zanemaruju detalji unutar podsistema. Onda, npr. interakcija ovih podsistema može se modelovati preko „sistemskog“ sekvencijalnog dijagrama.

Slika: paketska dekompozicija

Drugi vid apstrakcije je klasna apstrakcija. Naime, pojedine klase na klasnom dijagramu se mogu apstrahovati. Na taj način imamo dva tipa klasnog dijagrama:

• high-level klasni dijagram (tj. apstraktni tj. nedetaljan klasni dijagram), gde su pojedine klase izbačene

• low-level klasni dijagram (tj. detaljni klasni dijagram), gde su sve klase uključene

Dole je dat primer detaljnog i apstraktnog klasnog dijagrama, gde vidimo da je jedna klasa izbačene iz apstraktnog klasnog dijagrama u odnosu na detaljni klasni dijagram.

Slika: detaljni (low-level) klasni dijagram

Slika: apstraktni (high-level) klasni dijagram

Podsistem1

Podsistem1

Podsistem1

Restoran Klijent

Restoran Rezervacija

Klijent

Page 13: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

13/15

Zaklju čak

- A sledeći su izlazi (izlazni rezultati) OO dizajna: • Sekvencijalni dijagrami, gde se sistemski sekvencijalni dijagrami pretvaraju (proširuju) da bi se

dodali objekti koji upravljaju dogadjajima u sistemu (sekvencijalni dijagrami se sastoje od vertikalnih linija koje prikazuju objekte a horizontalne linije predstavljaju poruke izmedju objekata I to po redosledu po kom nastaju)

• Klasni dijagram koji prikazuje statičku strukturu sistema

- Sekvencijalni dijagrami se mogu koristiti na sledeće načine:

• modelovanje interakcije objekata sistema

• modelovanje interakcije podsistema

• modelovanje interakcije objekata za neki use-case

• modelovanje interakcije objekata u toku neke operacije

Page 14: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

14/15

Pitanja/Zadaci

1. Napisati scenarije za softver apoteke?

2. Nacrtati klasni dijagram sa ucrtanim asocijacijama klasa za softver apoteke?

3. Nacrtati sekvencijalne dijagrame za softver apoteke?

4. Dati jedan primer klasne apstrakcije?

Page 15: SE440-P02

SE440 Razvoj velikih softverskih sistema Predavanje br. 2

Naziv predavanja: Sekvencijalni dijagrami i o.o. dizajn

15/15

Reference/Linkovi

1] http://www.cs.toronto.edu/~sme/CS302

2] http://en.wikipedia.org/wiki/Object_orijented_design

3] http://www.websphereusergroup.org.uk/wug/files/presentations/25/25_19_ArchitectLargeSystems.pdf