uvod u softverski inženjering

26
Softverski Softverski in in ženjering ženjering Oliver Popović [email protected]

Upload: jovana-popovic

Post on 13-Jan-2016

100 views

Category:

Documents


2 download

DESCRIPTION

Uvod i osnove softverskog inženjeringa, UML-a, ...

TRANSCRIPT

Page 1: Uvod u softverski inženjering

Softverski inSoftverski inženjeringženjering

Oliver Popović

[email protected]

Page 2: Uvod u softverski inženjering

UvodUvod

Page 3: Uvod u softverski inženjering

UML osnoveUML osnove

Unified Modeling Language (UML) je vizuelni jezik

za modeliranje koji se koristi za specificiranje,

vizuelizaciju, konstrukciju i dokumentovanje

softverskih sistema.

Omogućava donošenje odluka i razumevanje

sistemima koji se mogu konstruisati.

Koristi se za analizu, dizajn, pretragu, konfigurisanje,

održavanje i kontrolu informacija o takvim sistemima.

Page 4: Uvod u softverski inženjering

Da prikažemo strukturu i ponašanje sistemaDa pokažemo kako se elementi sistema

uklapajuOdržimo konzistentnost dizajna i

implementacijeDa prema potrebi prikažemo ili sakrijemo

detaljeObezbedimo nedvosmislenu komunikaciju

Zašto modeliramo vizuelno?Zašto modeliramo vizuelno?

Page 5: Uvod u softverski inženjering

UML osnoveUML osnove

UML kombinuje najbolje iz:

Koncepta “Data Modeling” (Entity Relationships Diagrams)

Poslovnog modelovanja (work flow) Objektnog i komponentnog modelovanja

Page 6: Uvod u softverski inženjering

UML obuhvata informacije o statičkoj strukturi i dinamičkom

ponašanju sistema. Sistem se modelira kao kolekcija diskretnih

objekata koji su u interakciji.

Statičke strukture definišu vrste objekata važne za sistem i

njihovu implementaciju, isto kao i veze između objekata.

Dinamičko ponašanje definiše istoriju objekata u vremenu i

komunikaciju između objekata da bi se postigli određeni ciljevi.

Modeliranje sistema sa različitih ali povezanih pogleda

omogućava da sistem bude razumnjiv za različite namene.

UML osnoveUML osnove

Page 7: Uvod u softverski inženjering

UML nije u osnovi programski jezik. Neki alati omogućavaju generisanje

koda iz UML-a u različitim programskim jezicima, isto kao i 'reverse-

enginereed' modele iz postojećih programa u UML dijagrame.

UML je diskretan jezik za modeliranje koji nije namenjen za modeliranje

kontinuiranih sistema koji se nalaze u inženjeringu i fizici.

Namena UML je da bude univerzalni jezik modeliranja za diskretne

sisteme – softverske sisteme, organizacijske ili npr. sisteme koji sadrže

digitalnu logiku. UML omogućava konstruisanje šema koje modeliraju sistem opisujući:

konceptualne stvari (npr. proces poslovanja i funkcije sistema) konkretne stvari (npr. tipove klasa, šeme baza podataka, softverske komponente)

UML osnoveUML osnove

Page 8: Uvod u softverski inženjering

UML osnoveUML osnove

UML je projektovan kao vrlo fleksibilan i prilagodiv jezik, koji omogućava vrlo različite vrste modelovanja, uključujući: modele koji olakšavaju razumevanje poslovnih procesa, odvijanja tokova događaja, sekvenci upita, aplikacija, baza podataka, arhitektura i dr.

Page 9: Uvod u softverski inženjering

Istorija UML-aIstorija UML-a

UML je razvijen kao pokušaj pojednostavljenja i konsolidacije velikog broja objektno-orijentisanih metoda razvoja koje su našle svoju primenu u praksi usled nagle popularizacije objektno orijentisanih programskih jezika.

Jezici za OO modeliranje se pojavljuju još od sredine 70ih (uzrok njihove pojave je pojava nove generacije OO jezika i povećana kompleksnost softverskih sistema)

Iako se prvim objektno orijentisanim (OO) jezikom smatra Simula-67 (jezik nastao 1967.godine), ekspanzija OO metoda za razvoj softvera se desila u osamdesetim godinama prošlog veka, nakon pojave jezika kao što su Smalltalk i nešto kasnije, C++ (U periodu 1989-1994 broj OO metoda je porastao sa manje od 10 na više od 50).

Page 10: Uvod u softverski inženjering

Neke od OO metoda koje su postale jako popularne u ranim

devedesetim godinama bile su:

Booch metoda (autor Grady Booch),

OMT – Object Modeling Technique (James Rambaugh),

OOSE/Objectory (Ivar Jacobson),

Fusion (D. Coleman) i

Coad/Yourdan.

Svaki od navedenih autora je predvodio grupu praktičara kojima su se

dopadale njihove ideje.

Istorija UML-aIstorija UML-a

Page 11: Uvod u softverski inženjering

Međutim, najveći problem je bio to što su metode bilo

veoma slične, a ipak su obuhvatale izvestan broj razlika.

Svaka od metoda je imala sopstvenu notaciju (simbole za

grafičku prezentaciju OO modela), procese i alate (CASE

alate za podršku notacije i procesa).

Tokom tog perioda istovremeno se govorilo i o

standardizaciji, ali bez nekog prevelikog uspeha.

Istorija UML-aIstorija UML-a

Page 12: Uvod u softverski inženjering

Ključni detalj u stvaranju UML-a se desio kada je Jim Rambaugh napustio

kompaniju General Electric i pridružio se Grady Boochu u kompaniji

Rational, koja je sada deo IBM-a.

Grady i Jim su najavili kraj tzv. „rata metoda” i vrlo brzo pripremili prvi

javni opis svog objedinjenog razvojnog postupka: to je bila verzija 0.8

dokumenta UM (Unified Method).

Još značajnije je bilo to što su objavili da je kompanija Rational Software

kupila firmu Objectory i da će se Ivar Jacobson pridružiti timu

(1995.godina).

Istorija UML-aIstorija UML-a

Page 13: Uvod u softverski inženjering

Proizvođači raznih CASE alata, uplašeni da će standard kojim upravlja

Rational pružiti alatima ove firme nepravednu prednost na tržištu, su digli

veliku buku u pogledu standardizacije metode, i kao rezultat toga

angažovana je Grupa za upravljanje objektima (engl. Object

Management Group – OMG).

Usledili su brojni pregovori između velikog broja kompanija i konačno, u

novembru 1997.godine, UML je zvanično postao standard čijim daljim

razvojem upravlja OMG (Rational je objavio verziju 1.0, dok se verzija

1.1 smatra zvaničnim, originalnim standardom).

Istorija UML-aIstorija UML-a

Page 14: Uvod u softverski inženjering

Uglavnom se smatra da su Grady Booch, Ivar Jacobson i Jim

Rambaugh tvorci jezika UML. Iako se oni smatraju najzaslužnijim za

razvoj ovog jezika, treba napomenuti da su zaista veliki deo posla uradili i

još uvek rade timovi grupe OMG.

Nakon više godina iskustva u korišćenju UML-a, OMG je izdao predlog

za nadogradnju (upgrade) UML-a, za fiksiranje problema koji su se otkrili

i proširenje UML dodatnim kapacitetima kako bi bio primenjiv u više

aplikacijskih domena. Zahtevi po predlogu su se razvijali od novembra

2000 do jula 2003, sa specifikacijom UML verzije 2.0. Poslednja verzija mart 2011. – UML verzija 2.4

Istorija UML-aIstorija UML-a

Page 15: Uvod u softverski inženjering

Istorija UML-aIstorija UML-a

Dakle, kompanija Rational Software objedinila je tri vodeće metode objektno orijentisanog modelovanja: OOAD (Object-Oriented Analysis and Design) koju je razvio

Grady Booch, OOSE (Object-Oriented Software Engineering) koju je razvio

Ivar Jacobson. OMT (Object Modeling Technique) koju je razvio Jim

Rambaugh i

Grady Booch Ivar Jacobson James Rumbaugh

Page 16: Uvod u softverski inženjering

Šta znači unified?Šta znači unified?

Unified ima sledeća relevantna značenja za UML:

Kroz istorijske metode i notacije – UML kombinuje

zajedničke prihvaćene koncepte iz mnogih objektno-

orijentisanih metoda, selektujući jasne definicije za svaki

koncept, isto kao i notaciju i terminologiju.

Kroz razvojni ciklus – isti set koncepata i notacija može

se koristiti u različitim stanjima razvoja i spajati ga unutar

jednog modela.

Page 17: Uvod u softverski inženjering

Kroz aplikacijske domene - UML je namenjen za modeliranje većine

aplikacijskih domena, uključujući velike, kompleksne, real-time,

distribuirane sisteme.

Kroz implementacione jezike i platforme - UML teži da bude koristan

za sisteme implementirane u različitim jezicima i platformama, uključujući

programske jezike, baze, organizacijsku dokumentaciju.

Kroz razvojne procese – UML je jezik modeliranja, nije opis detaljnog

razvojnog procesa. On teži da bude koristan kao jezik modeliranja i da

podrži iterativno inkrementalni model razvoja.

Šta znači unified?Šta znači unified?

Page 18: Uvod u softverski inženjering

Osnovne idejeOsnovne ideje UML-a UML-a

Uhvatiti i opisati poslovne procese

Poboljšati komunikaciju

Projektant(poslovanje)

Programer(tehnologija)

????

?? ??

Page 19: Uvod u softverski inženjering

Osnovne idejeOsnovne ideje UML-a UML-aPomoć u borbi sa kompleksnošću

Definisanje logičke arhitekture sistema

Baza podatakaC++ & SQL

Poslovna logikaC++, Java

Korisničko okruženjeVisual Basic, Java

Page 20: Uvod u softverski inženjering

Osnovne idejeOsnovne ideje UML-a UML-a

Ponovno korišćenje već gotovih komponenti

Projekt DProjekt CProjekt A Projekt B

Page 21: Uvod u softverski inženjering

Kategorije korisnikaKategorije korisnika

UML koriste sledeće kategorije korisnika: Sistem analitičari i krajnji korisnici – specifikacija

zahtevane strukture i ponašanje sistema Arhitekte sistema – projektanti sistema koji će

zadovoljiti zahteve Razvojni inženjeri (developers) – transformišu

arhitekturu u izvršni kod Kontrolori kvaliteta – provera strukture i ponašanje

sistema Rukovodioci projekta (managers) – vode i usmeravaju kadrove

i resurse

Page 22: Uvod u softverski inženjering

PoglediPoglediObjektno-orijentisani sistemi zahtevaju sledeće poglede/modele:

pogled zahteva za sistem (prikazuje korisničke zahteve),

pogled dizajna (obuhvata vokabular prostora problema i prostora

rešenja problema),

pogled interakcije (prikazuje interakciju između pojedinih delova

sistema i okruženja),

pogled implementacije (odnosi se na fizičku realizaciju sistema), i

pogled razvoja (fokusira se na sistemski inženjering).

Svaki od ovih pogleda može sadržavati i strukturu i ponašanje sistema.

Zajedno, ovi pogledi predstavljaju nacrt softvera.

Page 23: Uvod u softverski inženjering

Arhitektura softverskih sistemaArhitektura softverskih sistema

Page 24: Uvod u softverski inženjering

RRazumevanjeazumevanje UMLUML--aa

Potrebno je formirati konceptualan model jezika i to

zahteva učenje tri glavna elementa:

osnovni gradivni blokovi UML-a,

pravila koja diktiraju kako koristiti i slagati te

blokove i

opšti mehanizmi koji se primenjuju kroz UML.

Page 25: Uvod u softverski inženjering

Rečnik UML-aRečnik UML-a

Rečnik UML-a obuhvata tri tipa gradivnih blokova:

Elementi, stvari (things)

Relacije

Dijagrami

Elementi su apstrakcije i one su glavni delovi UML-a.

Relacije povezuju te iste elemente, a

Dijagrami grupišu interesantne kolekcije tih elemenata.

Page 26: Uvod u softverski inženjering

Elementi u UML-uElementi u UML-u

Postoje četiri vrste elementa u UML-u:

Strukturalni elementi (eng. structural things)

Elementi ponašanja (eng. behavioral things)

Grupišući elementi (eng. grouping things)

Elementi označavanja (eng. annotational things)