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
Post on 05-Sep-2019
9 Views
Preview:
Transcript
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.
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?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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)
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.
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)
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:
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:
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.
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.
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.
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().
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).
V-04 Softversko inženjerstvo 24
Primjer dobro modelirane klase na razini analize
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).
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.
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.
top related