You are on page 1of 29

Arhitektura i projektovanje

softvera
Studijski progam Računarstvo i informatika

- Uvod u arhitekturu i
projektovanje softvera -
Katedra za računarstvo
Elektronski fakultet u Nišu

Arhitektura i projektovanje softvera


Prof. dr Dragan Stojanović Računarstvo i informatika
Softver arhitekta
100 Best Jobs in America
CNNMoney/PayScale.com's
top 100 careers with big
growth, great pay and
satisfying work
http://money.cnn.com/pf/best
-jobs/
Software Architect (1) –
2015
2013 -3
2012 –3
2011 – 2 (SW Dev)
2010 –1

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 2
Software Architect - CNNMoney
What do they do all day?
Software architects play a pivotal role as bridge-builders between
technical teams and management. More than just great software
engineers, they understand how to solve business problems with
technology and are responsible for designing a system that fulfills
those needs.
How to get the job?
Good architects are big-picture thinkers who understand how an
organization's software system works as a whole, so it helps to be
familiar with help desk, data center or other IT operations beyond
software development.
What's great? What's not?
Architects make vital decisions that drive a business technologically,
so it's a high-pressure job. On the plus side, since software is an
integral part of nearly every industry these days, architects who stay
sharp technically have the opportunity to work in practically any
sector in the worldUvod u arhitekturu i projektovanje softvera
Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 3
Faze u procesu razvoja softvera
Analiza i specifikacija zahteva (inženjerstvo zahteva –
requirement engineering)
Analiza zahteva i razvoj konceptualnog modela sistema bez uzimanja
u obzir tehnologije na kojima će se zasnivati konačna implementacija
Proces određivanja i definisanja preciznih očekivanja korisnika od
predloženog softverskog sistema
Definisanje funkcionalnih i nefunkcionalnih zahteva
Projektovanje (dizajn, design)
Nalaženje rešenja i razvoj modela softverskog sistema uzimajući u
obzir tehnologije za konačnu implementaciju
Implementacija softvera
Testiranje i validacija softvera
Održavanje i evolucija softvera
...
Uvod u arhitekturu i projektovanje softvera
Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 4
Angažovanje softverskih inženjera

Na osnovu analize angažovanja


softverskih inženjera na velikim
softverskim projektima

Razvoj (40%)

Održavanje (60%)
Uvod u arhitekturu i projektovanje softvera
Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 5
Modeli procesa razvoja softvera
Build-and-fix model
Model vodopada (Waterfall)
Brzi prototipski model (Rapid prototyping)
Spiralni model
Inkrementalni model
Evolutivni (iterativni) model

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 6
Procesi razvoja softvera (1)
Različite karakteristike metoda
“Super teški” metodi
• Visoko struktuirani i orijentisani ka dokumentaciji
• Obično generišu ogromne količine grafičke dokumentacije
Agilni metodi
• Brzi i fokusirani na pisanje koda koji implementira korisnikove
potrebe i zahteve (bez suvišne dokumentacije) – pogodni za male
timove i projekte
Agilni, na modelima zasnovani metodi
• Objedinjuju dobra svojstva obe vrste metoda
• Još su u ranoj fazi razvoja

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 7
Procesi razvoja softvera (2)

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 8
RUP (Rational Unified Process)
Iterativan i inkrementalan
Zasnovan na slučajevima korišćenja softvera (use-case
driven)
Orijentisan ka arhitekturi softvera (architecture-centric)
Koristi UML kao notaciju za modeliranje različitih aspekata
sistema
RUP je definisan kao framework
Sadrži obiman skup šablona dokumenata, šablona za radne tokove
(workflow) odnosno aktivnosti procesa, kao i uputstva i smernice za
primenu procesa
Distribuira se od strane IBM/Rational

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 9
RUP (Rational Unified Process)

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 10
Agilni (Agile) razvoj softvera
Agilni razvoj softvera je metodologija u razvoju softvera
zasnovana na iterativnom i inkrementalnom razvoju –
“Manifesto for Agile Software Development" (2001)
Prioritet je na brzoj i kontinualnoj isporuci funkcionalnog
softvera na zadovoljstvo klijenta
Karakteriše ga često izdavanje (release) funkcionalnog
softvera (nedeljno, a ne mesečno)
Dozvoljava promene u zahtevima tokom kasnijih faza
procesa razvoja softvera
Zajednički rad i neprekidna saradnja sa klijentima i
domenskim ekspertima
Funkcionalni softver je primarno merilo napretka u razvoju
konačnog proizvoda; smanjena obimna dokumentacija

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 11
Agilni procesi razvoja softvera
XP (eXtreme Programming)
Scrum (gužva za loptu u ragbiju) - iterativni/inkrementalni
framework
Lean
Kanban
Agile Unified Process (AUP) – pojednostavljena agilna
verzija IBM Rational Unified Process (RUP)
Open Unified Process (OUP) – deo Eclipse Process
Framework - light-weight open source process framework

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 12
XP (eXtreme Programming)
Iterativni i evolutivni prilaz
Uključuje skup 12 “najboljih
rešenja” (best practices) u
razvoju softvera
Fokus na programskom kodu
koji implementira zahteve
korisnika (pre nego na
pratećim dokumentima)
Testiranje je ključni element
procesa (test-driven)
Fokus je na fleksibilnosti i
efikasnosti procesa
Namenjen za male timove
(<10 članova)

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 13
SCRUM
Tri uloge: ScrumMaster - ProductOwner – Team (~7)
Dnevni sastanci (Scrum) od 15 minuta
Šta je urađeno od juče; šta će biti urađeno do sutra; da li postoje neki
problemi u ostvarenju cilja
Sprint
Sprint sastanak planiranja -
plan za narednih 15-30 dana
(maksimalno 8 sati);
identifikovanje onoga što
treba uraditi u ovom periodu
(sprintu) – Sprint Backlog -
detaljni plan rada
Sprint pregledni (review)
sastanak - pregled onoga šta
je urađeno, a šta nije i
prezentovanje demo softvera
klijentima (maksimalno 4 sata)
Uvod u arhitekturu i projektovanje softvera
Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 14
SEMAT - Software Engineering
Method And Theory
Postavljanje softverskog inženjerstva na čvrstim teoretskim
osnovama, dokazanim principima i najboljima praksama
http://www.semat.org
Ivar Jacobson, Bertrand Meyer, Richard Soley
Prvi Semat workshop je održan u Cirihu 17-18, marta 2010
Softversko inženjerstvo je opterećeno različitim pristupima i
praksom:
Preovladava privremena moda u odnosu na karakteristike
inženjerske discipline
Nedostatak jasnih, široko prihvaćenih teoretskih osnova
Veliki broj metoda i varijanti metoda, čije su međusobne razlike
slabo razumljive i veštački formirane
Nedostatak pouzdane eksperimentalne evaluacije i validacije
Jaz između industrijske prakse i akademskih istraživanja

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 15
SEMAT (Call for Action)
Semat seeks to develop a rigorous, theoretically sound basis
for software engineering practice, and its wide adoption by
industry and academia.
We support a process to refound software engineering
based on a solid theory, proven principles and best practices
that:
Include a kernel of widely-agreed elements, extensible for specific
uses
Addresses both technology and people issues
Are supported by industry, academia, researchers and users
Support extension in the face of changing requirements and
technology

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 16
Inženjerstvo zahteva
Inženjerstvo zahteva treba da da odgovor na pitanje ŠTA
softverski sistem treba da radi (koje su mu funkcije)
Aktivnosti inženjerstva zahteva su orijentisane ka problemu
Fokus je na šta, a ne na kako
Zasniva se na dobroj komunikaciji između softverskih inženjera i
korisnika
Korisnik često ne shvata dobro šta u stvari želi
Greške nastale u fazi inženjerstva zahteva je veoma teško i
skupo otkloniti kasnije
Zahtevi se menjaju sa vremenom, tako da je za inženjerstvo
zahteva neophodan iterativni (evolutivni) prilaz
Dve vrste zahteva
Funkcionalni – Precizni zadaci i funkcije koje sistem treba da obavi
Nefunkcionalni - Definišu kakav sistem treba da bude -
performanse, sigurnost, reupotrebljivost, memorijski zahtevi,
korišćeni model procesa, mogućnost održavanja (maintainability),
skalabilnost, proširljivost, portabilnost, testabilnost, itd.
Uvod u arhitekturu i projektovanje softvera
Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 17
Projektovanje softvera
Projektovanje softvera definiše i opisuje KAKO softverski
sistem treba da obavi svoje funkcije
obezbeđuje dekompoziciju sistema
omogućuje podelu rada na timove softverskih inženjera
postavlja osnovu za postizanje nefunkcionalnih zahteva
(performanse, lako i efikasno održavanje, reupotrebljivost, itd.)
uzima u obzir ciljne tehnologije za implementaciju (npr., razvojno
okruženje i programski jezik, tip i karakteristike middleware-a, baze
podataka, itd.)
Projektovanje softvera je najkreativnija aktivnost u
procesu razvoja softvera, zahteva iskustvo, znanje i
kreativnost softverskog inženjera (software architect)

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 18
Nivoi projektovanja
Arhitekturno projektovanje (projektovanje visokog nivoa)
arhitektura – sveobuhvatna struktura sistema: glavni moduli i
komponente i njihove veze
projektovanje koje pokriva glavne slučajeve korišćenja (use-case)
sistema
uzima u obzir glavne nefunkcionalne zahteve (performanse, lako i
efikasno održavanje, reupotrebljivost, pouzdanost, itd.)
Detaljno projektovanje (projektovanje niskog nivoa)
Definiše unutrašnju struktura glavnih modula, algoritme i strukture
podataka
Može uzeti u obzir i ciljni programski jezik i integrisano razvojno
okruženje (IDE) kojim će biti izvedena implementacija
Dizajn je dovoljno detaljan da bi bio implementiran u određenom
programskom jeziku

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 19
Proces projektovanja softvera

[Sommerville, Software Engineering, 8th edition]

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 20
Faze u procesu projektovanja
Arhitekturno projektovanje (Architectural design) - identifikacija
podsistema.
Apstraktna specifikacija (Abstract specification) - specifikacija
podsistema.
Projektovanje interfejsa (Interface design) - opis interfejsa
podsistema.
Projektovanje komponenti (Component design) - rastavljanje
podsistema na komponente
Projektovanje struktura podataka (Data structure design) -
projektovanje struktura podataka za smeštanje podataka nad kojima se
vrši obrada
Projektovanje algoritama (Algorithm design) - projektovanje
algoritama za funkcije koje služe za rešavanje problema

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 21
Aktivnosti u procesu projektovanja
Izučavanje i razumevanje softverskog sistema sa različitih gledišta
(viewpoint):
Struktura (structural viewpoint) – statičke karakteristike i svojstva softvera
Funkcija (functional viewpoint) – koje zadatke/funkcije obavlja softverski
sistem
Ponašanje (behavioral viewpoint) – uzorci i posledice prilikom funkcionisanja
softverskog sistema
Modeliranje podataka (data modeling viewpoint) – podaci i strukture
podataka koji se koriste i obrađuju u softverskom sistemu
Identifikacija potencijalnih rešenja i njihova evaluacija
Zasniva se na iskustvu u projektovanju, reupotrebljivosti postojećih
komponenti i rešenja, jednostavnosti rešenja
Poznatim rešenjima se daje prednost jer su prednosti i nedostaci takvih
rešenja poznati (možda nije i najbolje rešenje)
U projektovanju je neophodno pravljenje kompromisa
Razvoj različitih modela sistema na različitim nivoima apstrakcije i iz
različitih perspektiva/gledišta izborom odgovarajuće notacije

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 22
Pristupi u projektovanju
Top-Down (Od-vrha-ka-dnu)
Rekurzivno podeliti problem na manje pod-probleme
Nastaviti sve dok se ne definišu konkretne komponente sistema
U svom osnovnom obliku nije primenljivo za velike sisteme
Bottom-Up (Od-dna-ka-vrhu)
Sklopiti, prilagoditi i proširiti postojeće komponente da bi se dobila
željena funkcionalnost
U praksi je zastupljena kombinacija oba pristupa
Rastaviti velike probleme na manje, uz korišćenje znanja iz
prethodnih projektovanja
Koristiti postojeće komponente (COTS – Commercial- Off-The-Shelf),
biblioteke i prethodne verzije istog sistema (reupotrebljivost)

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 23
Objektno-orijentisano
projektovanje (OOD)
Metode objektno-orijentisanog projektovanja (OOD)
stavljaju naglasak na korišćenje notacija za projektovanje
To je dobro za potrebe specifikacije i dokumentacije
Ali OOD je više od “crtanja” različitih dijagrama
Dobri tehnički crtači nisu i dobri projektanti softvera
Projektanti OO softvera se oslanjaju na prethodno bogato
iskustvo
Značajnije od poznavanja sintakse metode projektovanja
Najmoćnija reupotrebljivost je reupotrebljivost dizajna
Treba prepoznati problem i njegovo rešenje uklopiti/prilagoditi sa
prethodno stečenim, sopstvenim ili tuđim, projektnim iskustvom i
znanjem – arhitekturni i projektni obrasci

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 24
Kvalitet projektovanja
Teško je oceniti kvalitet softverskog dizajna i odrediti
objektivnu meru i ocenu dobrog dizajna
Zavisno od prioriteta softverske kompanije i klijenata
softverski dizajn treba da:
Najbrže vodi do implementacije
Bude najlakši za implementaciju
Bude najlakši za kasnije održavanje, evoluciju i portovanje softvera
na različite hardversko/softverske platforme
Vodi ka naj-efikasnijem/pouzdanijem/robustnijem softverskom
proizvodu
...

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 25
Da bi postali ekspert u
projektovanju softvera
Prvo, morate naučiti pravila:
Algoritmi
Strukture podataka
Programski jezici
Zatim, morate naučiti principe:
Strukturno programiranje
Modularno programiranje
OO programiranje
Konačno, morate da proučite dizajn softvera drugih
softverskih projektanata - eksperata:
Treba da shvatite, memorišete i primenite arhitekturne i
projektne obrasce

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 26
Razvoj softvera

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 27
Pročitati
Leaders of Tomorrow on the Future of
Software Engineering: A Roundtable,
Felienne Hermans, Janet Siegmund, Thomas Fritz, Gabriele Bavota,
Meiyappan Nagappan, Abram Hindle, Yasutaka Kamei, …
IEEE Software (Volume: 33, Issue: 2, Mar.-Apr. 2016 )
https://www.computer.org/csdl/mags/so/2016/02/mso2016020099.pdf

Discover the Essence of Software Engineering


- Ivar Jacobson, CSI Communications, July 2011
http://blog.paluno.uni-due.de/semat.org/wp-
content/uploads/2012/03/Technical_Trends_3.pdf

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 28
Pitanja i komentari

Uvod u arhitekturu i projektovanje softvera


Prof. dr Dragan Stojanović Arhitektura i projektovanje softvera 29

You might also like