softversko inŽenjerstvo vježbe 4: uvod u analizu,...

27
SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, objekti, klase Robert Manger Sveučilište u Zagrebu PMF-Matematički odsjek Akademska godina 2019/2020.

Upload: others

Post on 05-Sep-2019

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

SOFTVERSKO INŽENJERSTVO

Vježbe 4: Uvod u analizu, objekti, klase

Robert Manger

Sveučilište u Zagrebu

PMF-Matematički odsjek

Akademska godina 2019/2020.

Page 2: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 2

Sadržaj Vježbi 4

Općenito o analizi

Odnos analize i oblikovanja

Svojstva modela na razini analize

Objekti: svojstva, prikaz u UML-u

Klase: svojstva, prikaz u UML-u

Odnos objekata i klasa, doseg

Kako trebaju izgledati klase na razini analize?

Kako pronaći klase na razini analize?

Page 3: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 3

Općenito o analizi Analiza je temeljna i strateška aktivnost unutar UP. Ona

se bavi stvaranjem modela koji ocrtava osnovna svojstva

traženog sustava u skladu s postavljenim zahtjevima.

Glavni rezultati koje analiza treba stvoriti su:

Klase na razini analize (analysis clases).

Grubo se opisuju klase koje modeliraju ključne koncepte unutar

dotične poslovne domene.

Realizacija use case-ova.

Pokazuje se kako se ponašanje sustava definirano use case-

ovima može realizirati interakcijom objekata iz opisanih klasa.

Daljnji rezultati analize su:

Opis veza među klasama.

Grupiranje klasa u pakete.

Modeliranje složenijih procesa iz dotične poslovne domene.

Page 4: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 4

Odnos analize i oblikovanja UP ne postavlja jasnu granicu između analize i oblikovanja.

Teško je odrediti gdje prestaje analiza a počinje oblikovanje.

Sličnosti između analize i oblikovanja.

Obje aktivnosti bave se modeliranjem.

Obje aktivnosti služe se istim vrstama UML dijagrama.

Model stvoren u analizi dalje se profinjuje tijekom oblikovanja.

Razlike između analize i oblikovanja.

Model na razini analize je jednostavan i daje globalnu sliku sustava.

Model na razini oblikovanja je znatno kompliciraniji jer sadrži sve

detalje koji su potrebni za implementaciju.

Model na razini analize prikazuje sam problem (poslovni sustav) u

terminima dotične poslovne domene. Razumljiv je korisnicima.

Model na razini oblikovanja prikazuje rješenje problema (softverski

sustav) i služi se informatičkim pojmovima. Namijenjen je softverskim

inženjerima.

Page 5: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 5

Svojstva modela na razini analize

Izražen je poslovnim jezikom.

Opisuje predmete, osobe ili pojave koje modeliraju

poslovnu domenu.

Primjerice, ako je riječ o sustavu elektroničke trgovine,

tada se pojavljuju klase poput Kupac, Narudžba, Košarica, a

ne pojavljuju se klasa za pristup bazi podataka ili klasa

za mrežnu komunikaciju.

Ocrtava se globalna slika sustava, na što jednostavniji

način.

Svaki dijagram ističe neki važan aspekt ponašanja

sustava.

Razumljiv je i korisnicima i softverskim inženjerima.

Page 6: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 6

Općenito o objektima (1)

Objekt je cjelina koja kombinira podatke i funkcije. Ti

podaci se nazivaju atributi, a funkcije se zovu operacije.

Do vrijednosti atributa obično se može doći jedino tako

da se pozove operacija koja vraća tu vrijednost. To se

zove učahurivanje (enkapsulacija).

Svaki objekt je primjerak neke klase koja definira

zajednička svojstva (atribute i operacije) za skup sličnih

objekata.

Za vrijeme rada softverskog sustava, objekti mogu

nastajati i nestajati. Objekti unutar sustava surađuju tako

da jedan drugom šalju poruke kojima se pokreću

operacije.

Page 7: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 7

Općenito o objektima (2) Svaki objekt ima sljedeća važna svojstva.

Identitet.

Ono što ga čini drukčijim i jedinstvenim u odnosu na druge

objekte.

Stanje.

Određeno je vrijednostima atributa i vezama s drugim

objektima. Može se mijenjati od trenutka do trenutka.

Ponašanje.

Određeno je njegovim operacijama. Objekt može raditi ono i

samo ono što je sadržano u tim operacijama. Poziv operacije

može izazvati promjenu vrijednosti nekog od atributa ili

uspostaviti odnosno razvrgnuti veze s drugim objektima. Tako i

samo tako objekt mijenja stanje.

Page 8: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 8

Primjeri objekata i njihove suradnje (1) Ovaj objekt predstavlja konkretni

bankovni račun. U sredini su

vrijednosti atributa accountNumber,

owner, balance. Okolo su operacije.

Objekt predstavlja primjerak

klase svih bankovnih računa u toj

banci.

Identitet objekta određen je

vrijednošću atributa

accountNumber. Stanje je određeno

vrijednostima svih atributa,

posebno balance. Ponašanje se

svodi na izvršavanje navedenih

operacija.

Page 9: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 9

Primjeri objekata i njihove suradnje (2)

Ovdje vidimo primjer suradnje objekata. Objekt – banka

šalje poruku objektu – računu kojom se pokreće operacija

withdraw() za skidanje novaca s tog računa.

Jedini način da saznamo ime vlasnika računa je da

pozovemo operaciju getOwner(). To je enkapsulacija.

Pozivom funkcije deposit() odnosno withdraw() mijenja se

stanje računa, tj balance se povećava odnosno smanjuje.

Page 10: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 10

Prikazivanje objekata u UML-u (1)

Objekt se crta kao pravokutnik s dva odjeljka.

Gornji odjeljak sadrži ime objekta i/ili ime pripadne klase.

Donji odjeljak sadrži imena i vrijednosti atributa.

Page 11: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 11

Prikazivanje objekata u UML-u (2) Ime objekta i/ili ime klase piše se u sljedećem obliku:

imeObjekta : ImeKlase

Podcrtavanje je važno jer se na taj način vidi da

pravokutnik prikazuje objekt, a ne klasu. Bilo koje od dva

imena može nedostajati. Ime objekta je u lowerCamelCase, a

ime klase u UpperCamelCase.

Specifikacija jednog atributa piše se u sljedećem obliku.

ime : tip = vrijednost

Dozvoljeno je da neki ili čak svi atributi budu ispušteni.

Također se mogu ispustiti tipovi. Imena atributa se pišu u

lowerCamelCase. Tip može biti druga klasa ili primitivni tip

poput Integer, Unlimited number (cijeli broj između 0 i ∞).

Boolean, String ili Real.

Page 12: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 12

Općenito o klasama (1) Klasa definira strukturu (atribute, operacije) za skup sličnih

objekata. Klasa se može shvatiti kao obrazac za objekte.

Primjerice, klasa Account je obrazac za konkretne

bankovne račune.

Dva objekta iz iste klase imaju isti skup atributa te

raspolažu istim operacijama. No vrijednosti istog atributa

mogu im biti različite, pa zbog toga se oni mogu nalaziti u

drukčijim stanjima te se mogu drukčije ponašati kad nad

njima pokrenemo istu operaciju. Primjerice, operacija

withdraw(100) za skidanje novaca s računa drukčije radi kad

novaca ima odnosno nema na računu.

Isti skup objekata obično se može klasificirati na razne

načine. Pronalaženje dobre klasifikacije je ključ za

uspješnu analizu.

Page 13: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 13

Gledajući objekte na ovoj slici, padaju nam na pamet

razne klase:

Mačka, debela mačka, list, stablo, automobil, računalo, stroj.

Između klasa mogu postojati razni odnosi, npr:

Nasljeđivanje, kompozicija, agregacija.

Primjeri klasa

Page 14: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 14

Odnos se vidi na slici. Na vrhu je klasa bankovnih računa.

Ispod su tri konkretna računa. Strelice znače da su objekti

dobiveni instanciranjem (stvaranjem) iz klase.

Općenito, crtkana strelica u UML-u označava ovisnost

(dependency). Element iz kojeg strelica kreće zove se

klijent (client), a element s druge strane zove se dobavljač

(supplier). Strelica znači da klijent ovisi o dobavljaču.

Odnos objekata i klasa (1)

Page 15: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 15

Odnos objekata i klasa (2) U našem primjeru, ovisnost je dobila posebno značenje

zbog korištenja stereotipa <<instantiate>>. Taj stereotip

pretvara običnu ovisnost u ovisnost instanciranja.

Stereotipi predstavljaju općeniti mehanizam kojim se

sintaksa i semantika UML-a može prilagoditi potrebama.

Stereotip se primjenjuje na neki od postojećih elemenata

za modeliranje i njime se stvara nova varijanta tog

elementa s novom semantikom. Stereotip prepoznajemo

po <<…>>. UML-alati podržavaju stereotipe tako što

omogućuju da se uz njih vežu ograničenja u jeziku OCL.

U programskim jezicima instanciranje objekta iz klase

ostvaruje se konstruktorom. Riječ je o posebnoj operaciji

koja djeluje na klasu a ne na objekt. Obično postoje i

obratne operacije destruktori.

Page 16: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 16

Klasa se crta kao pravokutnik s tri odjeljka.

Gornji odjeljak služi za ime klase.

Srednji odjeljak sadrži atribute.

Donji odjeljak navodi operacije.

Prikazivanje klasa u UML-u (1)

Page 17: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 17

Prikazivanje klasa u UML-u (2) Koristi se isti način prikazivanja klase i u analizi i u

oblikovanju. No u analizi obično ispuštamo većinu

informacija. Jedino što je zaista obavezno je ime klase.

Ime klase piše se u UpperCamelCase. Nema podcrtavanja, na

taj način razlikujemo klasu od objekta.

Sintaksa za opis atributa izgleda ovako:

visibility name : type [multiplicity] =initialValue

Ime atributa je obavezno, piše se u lowerCamelCase.

Tipovi su isti kao kod objekata. Multiplicitet određuje je li

riječ o kolekciji vrijednosti, te jesu li dozvoljene null vrijed.

Primjeri:

Page 18: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 18

Prikazivanje klasa u UML-u (3)

Polaznu vrijednost atribut poprima u trenutku stvaranja

objekta.

Vidljivost se može primijeniti na atribute ili na operacije.

Vidljivost je oznaka tko može pristupiti dotičnom atributu

odnosno operaciji, prema tablici:

Page 19: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 19

Prikazivanje klasa u UML-u (4) Sintaksa za opis operacije izgleda ovako:

visibility name (direction parameterName : parameterType = default value, …) : returnType

Ime operacije je obavezno, piše se u lowerCamelCase.

Smjer određuje je li riječ o ulaznom ili izlaznom parametru,

može biti in, out, inout, return. Default je in. Smjer return služi

za operacije s više povratnih vrijednosti.

Ime parametra piše se u lowerCamelCase.

Default vrijednost parametra se podrazumijeva ako u

pozivu operacije nije bila zadana nikakva vrijednost.

Tipovi su opet isti kao kod objekata.

Signaturu operacije čine ime, lista parametara (niz tipova) i

tip povratne vrijednosti. Unutar iste klase svaka operacija

mora imati drukčiju signaturu.

Page 20: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 20

Doseg na razini objekta ili klase Uobičajeno je da objekti imaju svoje kopije atributa.

Također, operacije obično djeluju na pojedinim objektima.

Kažemo da ti atributi odnosno operacije imaju doseg na

razini objekta (instance scope).

No koji put nam je potreban atribut koji ima jedinstvenu

(zajedničku) vrijednost za sve objekte iz klase. Također,

postoje operacije (na primjer instanciranje) koje se

primjenjuju na samu klasu a ne na njene objekte. Tada

kažemo da ti atributi odnosno operacije imaju doseg na

razini klase (class scope).

Vrijede sljedeća pravila za pristup. Operacija s dosegom na razini objekta može pristupiti bilo kojoj

drugoj operaciji ili atributu.

Operacija s dosegom na razini klase može pristupiti samo

operacijama i atributima koje su također s dosegom na razini klase.

Page 21: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 21

Prikazivanje dosega u UML-u

Atributi i operacije s podvučenim opisima imaju doseg na

razini klase.

Ostali atributi i operacije imaju doseg na razini objekta.

Page 22: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 22

Primjeri za doseg na razini klase

Riječ je o klasi za članove nekog kluba.

Atribut numberOfMembers je brojač svih članova kluba i

vidljiv je unutar svakog objekta koji predstavlja pojedinog

člana kluba.

Operacija create() je konstruktor. Operacija create() poziva

operaciju incrementNumberOfMembers().

Page 23: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 23

Kako treba izgledati klasa na razini analize? Ona modelira jedan specifični element poslovne domene.

Njeno ime jasno odražava njen smisao.

Ona sadrži svega nekoliko najvažnijih atributa. Tipovi tih

atributa ne moraju biti određeni.

Ona sadrži svega nekoliko odgovornosti (responsibilities).

Odgovornost je skup srodnih operacija, bilježimo je kao

da je riječ o jednoj operaciji, ne navodimo parametre.

Između njenih atributa i odgovornosti postoji jaka kohezija

(high cohesion).

Između nje i drugih klasa postoji slaba povezanost (low

coupling).

Page 24: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 24

Primjer dobro modelirane klase na razini analize

Page 25: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 25

Kako pronaći klase na razini anal? (1) Analiza imenica i glagola.

Čitaju se zahtjevi, use case-ovi, projektni pojmovnik, …

U tim tekstovima se pronalaze imenice i glagoli.

Imenice su kandidati za klase ili atribute.

Glagoli su kandidati za odgovornosti.

Analiziramo skupljene kandidate te odlučujemo koji od njih će

zaista postati klase, atributi, odnosno odgovornosti.

Također odlučujemo kako ćemo atribute i odgovornosti podijeliti

po klasama (tako da postignemo visoku koheziju unutar klasa, te

slabu povezanost između klasa).

Razmatranje drugih izvora klasa.

Još jednom promatramo stvarni svijet. Uočavamo fizičke

predmete, osobe, dokumente, sučelja.

Proučavamo objavljena rješenja drugih analitičara koja se

odnose na standardne poslovne sustave (archetype patterns).

Page 26: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 26

Kako pronaći klase na razini anal? (2) CRC analiza

Timski rad, odvija se na sastanku, tim se sastoji od analitičara i

korisnika.

Stvari koje su važne za problemsku domenu zapisuju se na

ljepljivim papirićima.

Svaki papirić ima tri odjeljka (C-R-C):

Class – upisuje se ime klase

Responsibilities – upisuje se lista odgovornosti za klase

Collaborators – upisuje se lista drugih klasa s kojima dotična klasa surađuje.

Postupak se svodi na “brainstorming”.

Tražimo od članova tima da imenuju “stvari” koje djeluju ili se pojavljuju u

njihovoj poslovnoj domeni. Zapisujemo stvari na papiriće.

Tražimo od članova tima da odrede odgovornosti od “stvari”. Dopisujemo te

odgovornosti na papiriće.

Tražimo od članova tima da odrede koje “stvari” bi mogle surađivati.

Povlačimo crte na ploči između zalijepljenih papirića, te na kraju upisujemo

suradnike na papiriće.

Page 27: SOFTVERSKO INŽENJERSTVO Vježbe 4: Uvod u analizu, …web.studenti.math.pmf.unizg.hr/~manger/si/SI-vjezbe-04.pdf · Modeliranje složenijih procesa iz dotične poslovne domene. V-04

V-04 Softversko inženjerstvo 27

Kako pronaći klase na razini anal? (3)

Ako smo koristili više metoda za pronalaženje

klasa, tada je na kraju potrebna konsolidacija

rezultata.

Uspoređujemo rezultate dobivene pomoću različitih

metoda.

Razrješavamo sinonime i homonime.

Posebnu pažnju posvećujemo mjestima gdje postoje

razlike u rezultatima.

Odlučujemo se za najbolju ili kombiniranu verziju klasa, te

tako dobivamo početni popis klasa na razini analize.

Taj popis će se vjerojatno i dalje dotjerivati.