softversko inŽenjerstvo vježbe 1: uvod u uml i...

22
SOFTVERSKO INŽENJERSTVO Vježbe 1: Uvod u UML i UP Robert Manger Sveučilište u Zagrebu PMF-Matematički odsjek Akademska godina 2019/2020.

Upload: others

Post on 18-Oct-2019

19 views

Category:

Documents


1 download

TRANSCRIPT

SOFTVERSKO INŽENJERSTVO

Vježbe 1: Uvod u UML i UP

Robert Manger

Sveučilište u Zagrebu

PMF-Matematički odsjek

Akademska godina 2019/2020.

V-01 Softversko inženjerstvo 2

Sadržaj Vježbi 1

Svojstva UML

Svojstva UP

Veza između UML i UP

Povijest UML i UP

Građa UML modela

Vrste UML dijagrama

Primjeri UML dijagrama

Struktura UP

Temeljne aktivnosti u UP

Faze u UP

Podaktivnosti unutar temeljnih aktivnosti

V-01 Softversko inženjerstvo 3

Svojstva UML

Kratica znači Unified Modeling Language. Riječ je o

vizualnom jeziku za modeliranje sustava.

UML se oslanja na dijagrame sa strogo definiranom

sintaksom i semantikom.

Obično se koristi za modeliranje objektno orijentiranih

softverskih sustava, makar je primjenjiv i na druge

sustave.

Ne implicira nikakvu metodologiju za modeliranje, već

samo omogućuje da se rezultati modeliranja

dokumentiraju na razumljiv način.

V-01 Softversko inženjerstvo 4

Svojstva UP Kratica znači Unified Process. Riječ je o metodologiji koja

određuje kako se treba odvijati proces razvoja softvera.

UP zahtijeva da se softverski proces sastoji od određenih

faza, s time da se svaka faza realizira kroz simultano

izvršavanje određenih temeljnih aktivnosti.

UP propisuje rezultate koje pojedine faze odnosno

aktivnosti trebaju proizvesti, no ne određuje način kako

se ti rezultati trebaju dokumentirati.

Obično se koristi za razvoj objektno orijentiranih sustava,

makar je primjenjiv i na druge sustave.

Predstavlja labaviju “public domain” verziju komercijalne

metodologije RUP (Rational Unified Process).

V-01 Softversko inženjerstvo 5

Veza između UML i UP Makar su formalno nezavisni jedan od drugog, UML i UP

su u bliskoj vezi i skladno se nadopunjuju.

UP određuje kako će se odvijati proces razvoja softvera, a

UML omogućuje da se rezultati tog razvoja dokumentiraju.

UML i UP su zapravo nastali zajedno, u okviru istog

projekta, s namjerom da budu komplement jedan drugom.

Ono što danas zovemo UML zapravo je dio tog projekta

koji se odnosi na vizualni jezik, a ono što zovemo UP je

dio projekta koji se odnosi na proces.

Ipak, postoji jedna razlika: UML je prihvaćen kao svjetski

standard, a UP nije.

Većina softverskih inženjera doživljava UML i UP kao

cjelinu i primjenjuju ih na razvoj OO sustava.

V-01 Softversko inženjerstvo 6

Povijest UML i UP (1) Prije 1994. godine postojalo je više vizualnih jezika za

modeliranje te više metoda za razvoj OO sustava.

Ti jezici i metode su se natjecali za primat, te su imali svoje

prednosti i mane, pobornike i protivnike.

Najvažnije jezike razvili su Grady Booch odnosno James

Rumbaugh, a najozbiljniju metodu razvio je Ivar Jacobson.

1994. godine Booch, Rumbaugh i Jacobson zajedno rade

u tvrtci Rational Corporation na objedinjavanju svojih

jezika i metoda. Tako nastaju prve verzije UML i UP.

1996. godine udruga Object Management Group (OMG)

izdaje “request for proposal” za OO vizualni jezik za

modeliranje. Tvrtka Rational prijavljuje OMGu svoj UML.

1997. godine OMG prihvaća UML kao prvi otvoreni

industrijski standard za vizualno modeliranje.

V-01 Softversko inženjerstvo 7

Povijest UML i UP (2) 1999. godine Jacobson objavljuje knjigu u kojoj opisuje UP.

U isto vrijeme tvrtka Rational razvija svoju dorađenu verziju

UP pod nazivom RUP i implementira je u obliku softverskog

paketa Rational ROSE.

2000. godine donosi se standard UML 1.4 koji uvodi tzv.

semantiku za akcije. To je omogućilo da UML-modeli

postanu izvršivi, dakle da ih se može softverski simulirati.

2003. godine IBM preuzima Rational Corporation, tako da

RUP danas predstavlja IBM-ov proizvod.

2005. godine dovršava se standard UML 2.0 koji donosi

nekoliko novih tipova dijagrama, jezik OCL za specificiranje

ograničenja, te precizni UML metamodel.

Aktualni standard za UML je UML 2.5.1 iz 2017. godine.

V-01 Softversko inženjerstvo 8

Osobe vezane uz UML i UP

Grady Booch

James Rumbaugh

Ivar Jacobson

“tri amigosa”

V-01 Softversko inženjerstvo 9

Građa UML modela

Kao rezultat modeliranja nastaje UML model sustava

koji je sastavljen od sljedećih dijelova.

Stvari (things). To su elementi modela, na primjer klase,

sučelja, komponente, računalni čvorovi, …

Veze (relationships). One povezuju stvari i određuju kako se

stvari semantički odnose jedne prema drugima.

Dijagrami. To su pogledi na model. Na njima su nacrtane neke

stvari (kućice) i neke veze (spojnice). Služe za vizualizaciju

strukture ili ponašanja sustava.

Dijagram ili skup dijagrama nije isto što i model, makar

to ljudi često tako doživljavaju, te makar se model

obično implicitno stvara baš crtanjem dijagrama.

V-01 Softversko inženjerstvo 10

Vrste UML dijagrama

U UML 2 postoji 13 vrsta dijagrama – vidi sliku. Vrste koje

nisu postojale u UML 1 su osjenčane.

Dijagrami se općenito dijele na one koji prikazuju statičku

strukturu sustava, te one koji opisuju dinamičko ponašanje

sustava.

V-01 Softversko inženjerstvo 11

Primjeri UML dijagrama (1)

Use case dijagram (ponašanje, također kontekst)

V-01 Softversko inženjerstvo 12

Primjeri UML dijagrama (2)

Class dijagram (struktura)

V-01 Softversko inženjerstvo 13

Primjeri UML dijagrama (3)

Sequence dijagram (ponašanje)

V-01 Softversko inženjerstvo 14

Struktura UP (1) Proces razvoja softvera u skladu s UP prikazan je

sljedećom slikom.

V-01 Softversko inženjerstvo 15

Struktura UP (2) Dakle proces se sastoji od 4 faze (phases) koje se

realiziraju u vremenskom slijedu jedna iza druge.

Pojedina faza završava onda kad se dosegne njezin

međaš (milestone - skup uvjeta koje treba zadovoljiti),

dakle kad se postignu njezini ciljevi.

Svaka od faza realizira se kroz istovremeno i neprestano

odvijanje 5 temeljnih aktivnosti (core workflows).

Ipak, u svakoj fazi postoji jedna ili dvije aktivnosti na koje

je stavljen posebni naglasak i koje se obavljaju s

povećanim intenzitetom.

Kod manjih projekata faze možemo poistovjetiti s

odgovarajućim dominantnim aktivnostima – dobivamo

model sličan vodopadu.

V-01 Softversko inženjerstvo 16

Temeljne aktivnosti u UP

Zahtjevi (requirements). Utvrđuje se što sustav treba

raditi.

Analiza (analysis). Zahtjevi se analiziraju, profinjuju i

strukturiraju.

Oblikovanje (design). Predlaže se građa sustava koja

će omogućiti da se zahtjevi realiziraju.

Implementacija (implementation). Stvara se softver

koji realizira predloženu građu.

Testiranje (test). Provjerava se da li stvoreni softver

zaista radi onako kako bi trebao.

V-01 Softversko inženjerstvo 17

Faze u UP (1)

Inception.

Ciljevi: dokazati izvedivost i isplativost projekta, utvrditi ključne

zahtjeve da bi se vidio kontekst (doseg) sustava, prepoznati rizike.

Naglasak: zahtjevi i analiza.

Međaš: Life Cycle Objectives.

Elaboration.

Ciljevi: stvoriti izvršivu jezgru arhitekture sustava. Profiniti procjenu

rizika, definirati atribute kvalitete, evidentirati use caseove koji

pokrivaju 80% funkcionalnih zahtjeva, stvoriti detaljni plan za fazu

konstrukcije.

Naglasak: zahtjevi , analiza, oblikovanje.

Međaš: Life Cycle Architecture.

V-01 Softversko inženjerstvo 18

Faze u UP (2) Construction.

Ciljevi: dovršiti zahtjeve, analizu i oblikovanje, te dograditi jezgru

arhitekture do konačnog sustava. Pritom treba očuvati integritet

arhitekture i oduprijeti se pritiscima da se sustav dovrši na brzinu.

Obaviti beta test i pokrenuti sustav.

Naglasak: oblikovanje, implementacija.

Međaš: Initial Operational Capability.

Transition.

Ciljevi: popraviti uočene greške, prirediti sustav za rad u

korisničkoj okolini, distribuirati ga na korisnička radna mjesta,

stvoriti korisničku dokumentaciju, organizirati podršku korisnicima,

napraviti “post-project review”.

Naglasak: implementacija, test.

Međaš: Product Release.

V-01 Softversko inženjerstvo 19

Podaktivnosti unutar utvrđivanja zahtjeva

Pronađi i zapiši funkcionalne i nefunkcionalne

zahtjeve (proučavanje postojećih dokumenata,

radnih procesa, softvera, zakona i propisa; razgovori

s korisnicima).

Organiziraj zahtjeve u taksonomiju, odredi njihov

prioritet (obavezni, važni, neobavezni, … ).

Funkcionalne zahtjeve pretvori u use caseove

(nacrtaj use case dijagram, napiši detaljnu

specifikaciju svakog use casea u obliku tablice).

V-01 Softversko inženjerstvo 20

Podaktivnosti unutar analize

Prepoznaj i grubo opiši klase (gledaju se zahtjevi,

pogotovo use caseovi).

Ugrubo odredi veze među klasama (opet gledanjem

zahtjeva i use caseova).

Nacrtaj class dijagrame.

Grupiraj klase u pakete, nacrtaj package dijagrame.

Analiziraj kako se svaki pojedini use case može

realizirati interakcijom objekata iz uočenih klasa.

Nacrtaj sequence ili communication dijagrame.

Analiziraj složenije procese i nacrtaj activity

dijagrame.

V-01 Softversko inženjerstvo 21

Podaktivnosti unutar oblikovanja Detaljno oblikuj klase (tipovi atributa, signature metoda).

Precizno odredi vrstu (nasljeđivanje, agregacija,

kompozicija…) i multiplicitet (jedan-jedan, jedan-mnogo,

mnogo-jedan, mnogo-mnogo) za svaku vezu među

klasama.

Ažuriraj i profini class dijagrame.

Oblikuj sučelja i komponente, nacrtaj odgovarajuće

dijagrame.

Ažuriraj i profini sequence i communication dijagrame

koji prikazuju realizaciju pojedinih use caseova.

Modeliraj ponašanje složenijih objekata te nacrtaj

odgovarajuće state machine dijagrame.

V-01 Softversko inženjerstvo 22

Podaktivnosti unutar implementacije

Napiši programski kod u odabranom programskom

jeziku na temelju modela dobivenog oblikovanjem

(klase, sučelja, realizacija use case-ova, …).

Gdje je moguće uključi gotove komponente, uz

odgovarajuće prilagodbe koda kojeg sami pišemo.

Napravi plan rasporeda dijelova sustava po

računalima (čvorovima u mreži), nacrtaj odgovarajući

deployment dijagram.

Fizički stvori sve dijelove, rasporedi ih u skladu s

planom rasporeda, pokreni i testiraj sustav.