softversko inŽenjerstvo vježbe 6: paketi i njihovo...

19
SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo korištenje u analizi Robert Manger Sveučilište u Zagrebu PMF-Matematički odsjek Akademska godina 2019/2020.

Upload: others

Post on 29-Feb-2020

7 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

SOFTVERSKO INŽENJERSTVO

Vježbe 6: Paketi i njihovo korištenje u analizi

Robert Manger

Sveučilište u Zagrebu

PMF-Matematički odsjek

Akademska godina 2019/2020.

Page 2: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 2

Sadržaj Vježbi 6

Općenito o paketima

Package dijagrami

Ugniježđeni paketi

Vidljivost između paketa

Paketi i prostori imena

Ovisnosti među paketima

Generalizacija paketa

Pronalaženje paketa

Page 3: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 3

Općenito o paketima (1)

Paket (package) je UML-ov mehanizam za grupiranje

“stvari”.

Paket može služiti za:

grupiranje semantički srodnih elemenata,

definiranje “semantičke granice” u modelu,

stvaranje učahurenog prostora imena (encapsulated namespace)

unutar kojeg sva imena moraju biti jedinstvena,

odvajanje dijelova na kojima se može paralelno raditi tijekom

oblikovanja.

Paket je mehanizam za logičko grupiranje. Ne mora

značiti da će stvari unutar paketa zaista i fizički biti

implementirane kao jedna cjelina. Za fizičko grupiranje

služe nam komponente.

Page 4: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 4

Općenito o paketima (2) Svaki element modela može pripadati samo jednom

paketu. Pritom:

paketi mogu činiti hijerarhiju u smislu da mogu biti ugniježđeni

jedan u drugom,

paket na vrhu takve hijerarhije može biti označen stereotipom

<<topLevel>>,

ako drukčije nije zadano, svi elementi modela se po defaultu

smještaju u paket <<topLevel>>,

hijerarhija ugniježđenih paketa također stvara i hijerarhiju za

prostore imena.

Paketi na razini analize mogu sadržavati:

use case-ove,

klase na razini analize,

realizacije use case-ova.

Page 5: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 5

Package dijagram

Prikazuje pakete i veze među njima.

Paket se prikazuje ikonom mape (foldera).

Ime paketa može biti na njegovom tijelu ili na “uhu”.

Piše se u UpperCamelCase.

Sadržaj paketa se ucrtava u tijelo.

Veze između paketa su najčešće:

ovisnosti sa stereotipima (isprekidane strelice),

generalizacije (crtaju se kao kod klasa)

Ugniježđenost.

Ugniježđeni paketi prikazuju se:

tako da jedan paket nacrtamo unutar drugoga,

ili tako da ih nacrtamo odvojeno i povežemo vezom

ugniježđenosti.

Page 6: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 6

Primjeri package dijagrama Ova tri dijagrama predstavljaju različite načine prikaza

istog paketa, s različitim razinama detaljnosti.

Page 7: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 7

Primjeri ugniježđenih paketa Ovdje vidimo dva

načina prikazivanja

istog skupa

ugniježđenih paketa.

Page 8: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 8

Vidljivost elemenata unutar paketa

Vidljivost (visibility) određuje je li neki element koji je

smješten unutar nekog paketa vidljiv izvan tog paketa.

Zadavanjem vidljivosti možemo kontrolirati i smanjiti

povezanost (coupling) između paketa.

Postoje dvije vrste vidljivosti, koje se na dijagramu

označavaju s + i - :

+ ... javni (public). Element je vidljiv unutar svog paketa te

također i iz drugih paketa.

- … privatni (private). Element je vidljiv unutar paketa, ali je

sakriven za druge pakete.

Primjeri korištenja vidljivosti mogu se naći na

prethodnim dijagramima.

Page 9: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 9

Paketi i prostori imena (1) Paket definira učahureni prostor imena (encapsulated

namespace).

To znači da paket definira granicu unutar koje sva imena

moraju biti jedinstvena, to jest ne smiju postojati dva

elementa s istim imenom.

U dva različita prostora imena mogu postojati elementi s

istim imenom.

Ako element iz jednog prostora imena želi pristupiti

elementu iz istog prostora imena, tada on samo treba

navesti ime tog elementa.

Ako element iz jednog prostora imena želi pristupiti

elementu iz drugog prostora imena, tada on treba opisati

način kako da se obavi “navigacija” kroz te prostore.

Page 10: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 10

Paketi i prostori imena (2)

Put navigacije naziva se kvalificirano ime (qualified

name) ili ime puta (pathname) elementa.

Kvalificirano ime gradi se na sljedeći način.

Ispred imena elementa stavljaju se kao prefiksi imena

ugniježđenih paketa u kojima taj element nalazi.

Imena se razdvajaju dvostrukom dvotočkom.

Vanjski paketi se imenuju prije unutrašnjih, u redoslijedu

ugniježđenosti.

Na primjer, kvalificirano ime za klasu Librarian s

prethodnog dijagrama je:

Library::Users::Librarian.

Page 11: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 11

Imena kod ugniježđenih paketa

Iz unutrašnjeg paketa može se pristupiti svim javnim

elementima u vanjskom paketu korištenjem

nekvalificiranih imena.

Da bi se iz vanjskog paketa pristupilo javnim

elementima u unutrašnjem paketu, moraju se koristiti

kvalificirana imena.

Primjerice, na prethodnom dijagramu s ugniježđenim

paketima, element u paketu Library mora koristiti

kvalificirana imena Users::Librarian i Users::Borrower da bi

pristupio klasama unutar paketa Users.

Page 12: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 12

Ovisnosti među paketima Veza ovisnosti među paketima znači da paket-klijent na

neki način ovisi o paketu-dobavljaču.

Postoji više vrsta ovisnosti između paketa, svaka sa

svojim stereotipom i drukčijom semantikom.

Spominjemo najvažnije vrste.

<<use>> - neki element u paketu-klijentu koristi javni element u

paketu-dobavljaču.

<<import>> - javni elementi iz dobavljačevog prostora imena

dodani su kao javni elementi u klijentov prostor imena. Elementi

u klijentu zato mogu pristupiti svim javnim elementima u

dobavljaču koristeći nekvalificirana imena.

<<access>> - javni elementi iz dobavljačevog prostora imena

dodani su kao privatni elementi u klijentov prostor imena. Opet,

elementi u klijentu mogu pristupiti svim javnim elementima u

dobavljaču koristeći nekvalificirana imena.

Page 13: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 13

Primjer ovisnosti među paketima Za bilo koji paket koji je u ovisnosti s prikazanim paketom

Membership vrijedi sljedeće.

On će moći vidjeti sve javne elemente od Membership, na primjer

klase ClubMembership ili Benefits.

On će također moći

vidjeti i klasu

Member, koja je

zbog prikazane

ovisnosti <<import>>

dodana u prostor

imena od

Membership kao

javni element.

On neće moći

vidjeti privatnu

klasu JoiningRules.

Page 14: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 14

Tranzitivnost ovisnosti među paketima Tranzitivna veza je ona koja ima sljedeće svojstvo.

Ako je A u vezi s B, a B u vezi sa C, tada je i A u vezi sa C.

Lako se uvjeriti da je ovisnost <<import>> među paketima

tranzitivna, a <<access>> nije tranzitivna.

Zaista, promatrajmo primjer sa slike. Paket A ima pristup do paketa B, a B ima pristup do paketa C.

Ne-tranzitivnost ovisnosti <<access>> znači da: javni elementi iz C postaju privatni elementi u B.

samo javni elementi iz B (među kojima nema onih importiranih iz C)

postaju privatni elementi u A,

elementi u A zato ne mogu pristupiti elementima iz C.

Page 15: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 15

Generalizacija paketa Riječ je o vezi među paketima koja je analogna

istoimenoj vezi među klasama.

Generalizacija je veza između posebnijeg i općenitijeg

paketa.

Posebni paket nasljeđuje javne elemente iz općenitog

paketa.

Posebni paket može

dodati nove elemente kojih nema u općenitom paketu

redefinirati elemente iz općenitog paketa tako da definira

element s istim imenom.

Na sljedećem dijagramu, paket Product je

generalizacija paketa Hotels i CarHire.

Page 16: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 16

Primjer za generalizaciju paketa Hotels i CarHire

nasljeđuju sve

javne elemente

iz Product, na

primjer klase

Price i Market.

I Hotels i CarHire

redefiniraju klasu

Item nasljeđenu

od Product.

Hotels dodaje

nove klase Hotel i

RoomTipe, a

CarHire dodaje

klasu Car.

Page 17: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 17

Pronalaženje paketa Da bi elemente modela na razini analize što bolje

razvrstali u pakete, radimo sljedeće.

Promatramo klase na razini analize. Tražimo:

koherentne grupe usko povezanih klasa,

generalizacijske hijerarhije klasa,

klase koje su u bliskom odnosu zbog ovisnosti ili asocijacija.

Promatramo use case-ove.

grupe use case-ova koji podržavaju određeni poslovni proces ili određenog

aktera mogu sadržavati klase koje treba zapakirati zajedno.

Podešavamo model paketa u cilju maksimiziranja kohezije unutar

paketa i minimiziranja ovisnosti između paketa. Koristimo zahvate:

prebacivanje klasa između paketa,

dodavanje paketa,

uklanjanje paketa,

spajanje paketa između kojih postoje cikličke ovisnosti

izdvajanje u posebni paket onih klasa koje stvaraju cikličku ovisnost paketa.

Page 18: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 18

Primjer cjelovitog modela paketa Dijagram prikazuje kako se klase iz studijskog primjera

sustava za prodaju preko Interneta mogu na dobar način

podijeliti u pakete.

Page 19: SOFTVERSKO INŽENJERSTVO Vježbe 6: Paketi i njihovo ...web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-06.pdf · Ovisnosti među paketima Veza ovisnosti među paketima znači

V-06 Softversko inženjerstvo 19

Primjer uklanjanja cikličke ovisnosti Model sadrži dvije

međusobno ovisne

klase smještene u dva

različita paketa A i B.

Ovisnost među

klasama uzrokuje

ovisnost među

paketima A i B, dakle

cikličku ovisnost.

Jedan način

uklanjanja cikličke

ovisnosti je spajanje A

i B u jedan paket.

Drugi način je

izdvajanje spomenutih

dviju klasa u novi

paket C.