74
Univerzitet u Novom Sadu Tehnički fakultet “Mihajlo Pupin” Zrenjanin Diplomski rad Tema: Razvoj višeslojne web aplikacije uz primenu servisno-orijentisane arhitekture Development of n-tier web application with use of service-oriented architecture Mentor: Student: doc. dr Ljubica Kazi Marko Blažić IT 90/15 Zrenjanin, 2017.

Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

  • Upload
    others

  • View
    18

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Univerzitet u Novom Sadu

Tehnički fakultet “Mihajlo Pupin”

Zrenjanin

Diplomski rad

Tema: Razvoj višeslojne web aplikacije uz primenu

servisno-orijentisane arhitekture

Development of n-tier web application with use of

service-oriented architecture

Mentor: Student:

doc. dr Ljubica Kazi Marko Blažić IT 90/15

Zrenjanin, 2017.

Page 2: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

2

Sadržaj

1. UVOD ...............................................................................................Error! Bookmark not defined.

2. TEORIJSKE OSNOVE .........................................................................Error! Bookmark not defined.

2.1. Web aplikacije .........................................................................Error! Bookmark not defined.

2.2. Višeslojne aplikacije .............................................................................................................. 8

2.3. Servisno-orijentisane arhitekture SOA ................................................................................ 13

2.4. Web servisi .......................................................................................................................... 16

2.5. SOAP I RESTfull .................................................................................................................... 17

2.6. Web Hosting ........................................................................................................................ 20

3. ANALIZA SEMANTIČKE OBLASTI .................................................................................................. 21

3.1. Elektronsko poslovanje ....................................................................................................... 21

3.2. Sprotska oprema ................................................................................................................. 23

4. POSTOJEĆA REŠENJA ................................................................................................................... 25

4.1. Tehnološki primer -javno dostupni web servis ............................................................ 25

4.2. Semantički primer – online prodaja sportske opreme ................................................. 27

5. OPIS KORIŠĆENE TEHNOLOGIJE .................................................................................................. 30

6. REALIZOVAN PRIMER ......................................................................Error! Bookmark not defined.

6.1. Specifikacija zahteva ...........................................................Error! Bookmark not defined.

6.2. Modeli opšteg dizajna softvera ...........................................Error! Bookmark not defined.

6.3. Modeli implementiranog rešenja višeslojne arhitekture softveraError! Bookmark not

defined.41

6.4. Korisničko uputstvo ......................................................................................................... 46

6.5. Opis implementacije ....................................................................................................... 53

6.5.1 Plan višeslojne arhitekture za implementaciju softvera ........................................ 53

6.5.2 SQL skript i šeme baze podataka ........................................................................... 54

6.5.3 Ključni delovi koda sa objašnjenjem ...................................................................... 56

7. ZAKLJUČAK .................................................................................................................................. 73

8. Literatura..................................................................................................................................... 74

Page 3: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

3

1.Uvod

Savremeni razvoj softvera uključuje u velikoj meri razvoj web aplikacija različitih namena.

Danas je uobičajeno da se celokupan softver ne razvija u jednoj firmi, već se neki delovi

aplikacije koriste od strane drugih proizvođača i kao moduli – dinamičke biblioteke ili servisi

uključuju u nekom delu u funkcionisanje osnovne aplikacije. Jedan od motiva za izbor teme

ovog diplomskog rada je upravo teorijsko i praktično izučavanje problematike modularnog

razvoja web aplikacija kroz primenu servisno-orjentisane arhitekture.

Prilikom izrade diplomkog rada izrađena je aplikacija namenjena online prodaji fitness opreme.

Motivacija za izbor semantičke oblasti ovog diplomskog rada je veliki problem današnjice, a to

je veliki nedostatak vremena. Danas ljudi mnogo rade i jednostavno nemaju vremena da idu od

prodavnice do prodavnice da bi kupovali stvari. Ova aplikacija, kao i mnoge druge aplikacije

ovog tipa trebale bi da olakšaju korisniku da dođe do željenog proizvoda putem internet prodaje.

Glavni problem prilikom izrade ove aplikacije je bilo upoznavanje sa potrebnim funkcijama

same aplikacije i načinom implementacije. Posebno je važno analizirati profile korisnika i

funkcionalne mogućnosti u okviru svakog profila. Takođe problem je i definisati specifikaciju

zahteva i ispuniti sva očekivanja potencijalnih korisnika, uz ograničen vremenski period

realizacije softvera. Kroz ovaj rad ćemo pokušati da se upoznamo sa problemima koji su vezani

za razvoj višeslojnih aplikacija, kao što je ova, kao i prednosti i nedostatke njihovog korišćenja.

Diplomski rad se sastoji iz teorijskog istraživanja problematike razvoja web aplikacija, višeslojne

arhitekture i servisno-orijentisane arhitekture. Praktičan primer koji ilustruje primenu navedenih

koncepata realizovan je na primeru on-line prodavnice fitness opreme, pri čemu se konsultuje,

putem web servisa, dobavljač opreme kako bi u svakom trenutku on-line prodavnica imala

ažurne spiskove robe sa cenama. Na ovaj način se ilustruje primena web servisa.

Page 4: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

4

2. Teorijsko-tehnološke osnove

2.1. Web aplikacije

Web aplikacije predstavljaju računarske programe koji koriste web pretraživače u kombinaciji sa

web tehnologijama kako bi izvršili zadatke koji su im zadati putem interneta[8]. Danas mnogi

poslovi koriste internet kao oblik komunikacije prilikom svog izvršavanja. Internet omogućava

bržu razmenu informacija sa njihovim klijentima i zaposlenima sve u cilju osigruravanja posla.

Naravno da bi ovo angažovanje od strane korisnika i zaposlenih urodilo plodom mora se

omogućiti skladištenje svih podataka koji su potrebni, zatim te podatke obraditi i prezentovati ih

kao odgovor stranama.

Web aplikacije primenjuju kombinaciju server skripti kao što je ASP ili PHP kako bi se

omogućilo skladištenje primljenih podataka i obrada istih, i klijent skripte poput HTML-a i

JavaScripta, zavisi koji programski jezik se koristi, sve u cilju prezentovanja primljenih

informacija korisnicima[8]. Ova kombinacija skripti omogućava korisnicima da budu u stalnoj

komunikaciji sa zaposlenima u firmi putem online foruma, određenih menadžment sistema preko

kojih mogu da razmenjuju sadržaje. Primer razmene sadržaja bile bi korpe za naručivanje koje

predstavljaju jedan vid razmene informacija. Jedna veoma bitna stvar koja se ističe kod primene

web aplikacija i samog poslovanja preko interneta jeste ta što aplikacije pored toga što

omogućavaju kanale komunikacije, takođe daju mogućnost zaposlenima da kreiraju razna

dokumenta, dele informacije između sebe, da učestvuju zaje dnički na određenim projektima a

sve to bez obzira gde se u tom trenutku nalaze.

Slika 1.- Prikaz komunikacije web aplikacije i klijenta[8]

Page 5: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

5

Web aplikacije su obično kodirane u jeziku koji je podržan od strane internet pretraživača kao

što je HTML, ukoliko koristimo programski jezik C# (u našem slučaju) ili JavaScript. Ovi jezici

se oslanjaju na pretraživač da će program biti ispravan. Neke aplikacije su dinamičke i one

zahtevaju konstantnu komunikaciju sa serverom kako bi im se definisao izgled. Postoje druge

statičke aplikacije i njihov izgled je definisan već prilikom prve izrade.

U koliko želimo da naša web aplikacija funcioniše kako treba ona mora da sadrži sledeće

servere:

1. Web server da bi primila zahtev od strane korisnika,

2. Aplikacioni server da bi izvršavala zahteve koji su podneti i

3. Bazu podataka kako bi se sačuvali i preuzeli potrebni podaci radi izvršenja zahteva

Raspon koji raspolaže aplikacioni server ide od ASP:NET, ASP I COLDFUSION-a do PHP i

JSP.

Slika 2.- Prikaz toka komunikacije kroz servere[9]

Način na koji se odvija komunikacija između servera u aplikaciji:

Korisnik šalje zahtev web serveru putem interneta preko interfejsa naše aplikacije ili preko

pretraživača,

Web server taj zahtev šalje odgovarajućom aplikacionom serveru,

Aplikacioni server izvršava zahtev, to može da se ostvari preko upita baze podataka ili prvo

obrada informacija pa tek onda se dobijaju rezultati podataka koji su zatraženi,

Aplikacioni server zatim šalje povratnu informaciju web serveru sa informacijom koja je tražena

ili obrađenim podatkom,

Web server odgovara klijentu na zahtev tako što mu prikazuje informacije ili podatke koje je

klijent tražio, putem interfejsa.

Page 6: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

6

Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse

i automatizovanih alata koje programeri koriste za razvoj i održavanje sistema i softvera. Postoje

dve osnovne vrste metodologija razvoja softvera, a to su[11]:

1. Tradicionalne metode razvoja softvera,

2. Agilne metodologije razvoja softvera.

Kad su u pitanju tradicionalne metodologije one se zasnivaju na upravljanju ljudima. Sastoje se

prvenstveno iz skupa tehnika za predviđanje, planiranje i kontrolu aktivnosti kako bi se dobio

željeni cilj. Pre početka razvoja softvera prvo se definiše skup pravila koja se strogo poštuju,

vreme koje će biti potrebno da se kreira dat softver kao i predviđanje troškova koji će biti

potrebni da bi se aplikacija kreirala na najefikasniji način[11]. Na početku definišemo zadatak

projekta. U ovoj metodi plan je temelj same tehnogolije i mora biti prvi izrađen. Nakon ovog

koraka se počinje sa izvršavanjem aplikacije. Prilikom izrade aplikacije je potrebno nadgledati

da li se sve odvija po predviđenom planu. Poslednji korak je završavanje aplikacije. Na taj način

se pokazuje da je celokupni plan izvršen u potpunosti. Za tradicionalni pristup mora se reći da je

vrlo disciplinovan pristup i da su sve faze životnog ciklusa predvidljive. Prilikom korišćenja ove

metodologije, da bi se prešlo sa jedne faze na sledeću obavezno prethodna faza mora biti

izvršena. Najpopularnija tradicionalna metoda je metoda Vodopada.

Slika 3.- Metod Vodopada[11]

Agilne metodologije za razvoj softvera, nastale su devedesetih godina prošlog veka. Kod njih je

postupak izrade dinamičan ali je neophodan usklađen timski rad. Termin agilan je nastao kao

najverniji opis njegove osnovne karakteristike, a to je veoma izražena fleksibilnost odnosno

agilnost kad su u pitanju promene kod zahteva korisnika[12]. Ovu metodologiju definištu 12

principa i 4 pretpostavke. Principi kojima se agilnost vodi su sledeći: vizuelna kontrola, lokacija

članova tima, razvoj vođen testovima, kontrola prilagođavanja, razvoj vođen zadacima, liderstvo

i saradnja, prihod ispred cene.

Page 7: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

7

Primer agilne tehnologije je Ekstremno programiranje. Ova metodologija se vodi principom da je

klijent član tima koji radi na datoj metodologiji. Ekstremno programiranje definiše sve svoje

ciljeve koje je potrebno ostvariti u celine ali se konstantno izvršava interakcija sa ostalim

članovima tima. Jedan od razloga zašto je sve podeljeno u celine je taj što celine prestavljaju

smernicu na nešto što će se implementirati, a uspeh se meri putem razvoja. Na jednoj celini bi

trebalo da rade dva programera, tester i programer kako bi se nakon završetka svake celine kod

mogao testirati. Poželjno je da se članovi tima međusobno menjaju kako bi se poboljšala

kohezija između svih članova tima.

Slika 4.- Ekstremno programiranje[12]

Page 8: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

8

2.2 Višeslojne aplikacije

Strogo definisani zahtevi prilikom izrade web aplikacije su od strogog značaja za uspeh

realizacije date aplikacije. Dobro definisana arhitektura može nam pomoći da naš sistem

zadovolji korisnikove potrebe na polju dizajna, performansi, pouzdanosti itd. Slobodno možemo

reći da arhitektura našeg sistema, se može predstaviti kao “most” između zahteva i njihovih

implementacija. Zadatak arhitekture je deskriptivan opis našeg sistema čime se neke osobine

sistema ističu dok druge pokušavaju da se prekriju. Sa razvojem aplikacija razvijaju se i same

arhitekture, a samim tim može se i videti da ključan element u izradi aplikacija jeste odabir prave

arhitekture.

Softverska arhitektura bi se mogla definisati kao struktura koja sadrži kopmonente, konekcije,

ograničenja i njihovih obrazloženja. Komponente mogu biti manji delovi poput nekog

programskog koda ili veći delovi kao što su sistemi za upravljanje bazom podataka. U sklopu

same arhitetkure potrebno je definistati i njene interfejse kao i njihovo ponašanje koje je

predviđeno od strane programera.Višeslojna arhitektura se može podeliti u :

1. Jednoslojna arhitektura

2. Dvoslojna arhitetkura

3. Troslojna arhitetkura

4. SOA

Nastanak jednoslojne arhitekture se vezuje za proces automatizacije posla, početak unosa

centralnih računara kojima su mogli da pristupe veći broj korisnika istovremeno. Komunikacija u

ovoj tehnologiji, obavljala se preko “glupih” terminal, a sva obrada podataka se izvršavala od

stane centralnog računara. Veliki nedostatak ove arhitetkure se ogleda upravo u komunikaciji

između terminala i server. Server prati koji se terminal prati prilikom pritiska tastera, obrađuje

datu informaciju i šalje adekvatan odgovor. Ovu arhitetkuru je nasledila dvoslojna arhitetkura

zbog dva problema koju su se javljali korišćenjem ove arhitetkure a to su: nemogućnost

korišćenja istog koda više puta kao i nemogućnost izmene samo jednog dela koda.

Slika 5.- Jednoslojna arhitektura[25]

Page 9: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

9

Dvoslojna arhitektura je softverska arhitektura u kojoj je prezentacioni sloj ili interfejs prikazan

na klijentu dok je sloj za rad sa bazom podataka skladišten na server. Odvajanjem ove dve

komponente na dva različita mesta dobija dvoslojnu arhitekturu. Dodavanjem dodatnih slojeva

dobijamo multi-slojnu arhitekturu.

Autori često porede ovaj tip arhitekture sa troslojnom arhitekturom zato sto pored ova dva

navedena sloja troslojna jos sadrži i business layer koji se tačno nalazi između ova dva layera.

Ovakvom podelom aplikacije dobija se na njenoj skalabilnosti odnosno performansama, takođe

uklanja se svaka mogućnost da se počini greška koja bi mogla da se desi ukoliko bi se višeslojna

arhitektura koristila u dvoslojnoj arhitkturi. Nedostatak koji poseduje ovaj tip arhitekture je

netolerantnija na naglo povećanje korisnika gde bi se mnogo više vremena utrošilo na

upravljanje procesima nego na rešavanje zahteva[25].

Slika 6.- Dvoslojna arhitektura[27]

Troslojna arhitektura je nastala evolucijom dvoslojne arhitekture kako bi se prevazišli nedostaci

koje je imala dvoslojna. Aplikacije su podeljene u tri nivoa koja su međusobno labavo povezana

i koja međusobno komuniciraju putem interfejsa koje poseduju[26]. Prvi sloj je sloj koji je u

komunikaciji sa korisnikom odnosno prezentacioni sloj. On sadrži interfejs aplikacije preko

kojeg korisnik unosi zaheve za određenim informacijma ili podacima. Drugi sloj je sloj poslovne

logike, sadrži poslovnu logiku sistema. Klase sa popustima i drugim matematičkim algoritmima

se nalaze unutar ovog sloja. Treći sloj je sloj sa pristupom bazi podataka i unutar njega se nalaze

svi quiry i SQL upiti kojima se rešava komunikacija sa bazom podataka. Troslojna arhitetkura

koristi server apikacije kao posrednik između klijenta računara i server baze podataka.

Tehnologije koje koristi troslojna arhitetkura su SQL, MySQL, ORACLE, XML, web servisi itd.

Page 10: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

10

Slika 7.- Trosloja arhitektura[27]

Slika 8.- Prikaz svih slojeva višeslojne arhitekture[28]

Page 11: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

11

Prezentacioni sloj je prvi sloj sa kojim korisnik dolazi u dodir i to je sloj koji obrađuje podatke

unete od strane korisnika i šalje ih sloju servisa koji dalje stupa u komunikaciju sa ostalim

slojevima. Prezentacioni sloj se nadovezuje na već postojeći srednji deo aplikacije i

funkcionisanje web aplikacije bez ovog sloja ne bi bilo moguće[27]. Podelom aplikacije u

podslojeve dobija se na fleksibilnosti aplikacije i njenim performansama. Ovo se može lepo

videti prilikom izmene jednog dela koda unutar jednog sloja, proces koji će mnogo biti olakšan

zbog slabe međusobne povezanosti. Prezentacioni sloj se sastoji iz dve komponente:

1. Prezentaciona logika

2. Korisnički interfejs

Prezentaciona logika je jedna od komponenta prezentacione logike i njen zadatak je obrada

informacija koja se šalje aplikaciji od strane korisnika i njihovo prosleđivanje do srednjeg sloja

aplikacije. Zadatak korisničkog interfejsa je prikaz interfejsa korisnicima kao i prikaz odgovora

koji je dobijen od strane srednjeg sloja.

Sledeći sloj višeslojne aplikacije je sloj servisa koji se nalazi između prezentacionog sloja i sloja

poslovne logike. Zadatak ovog sloja je da omogućava komunikaciju između prezentacionog sloja

i sloja poslovne logike, obrada podataka kao i vraćanje rezultata između ova dva sloja.

Sloj posovlne logike je sloj koji je zadužen za obradu svih pristiglih informacija od sloja servisa.

Ovaj sloj sadrži svu poslovnu logiku kao i algoritme koji se koriste prilikom izvršavanja

korisničkih zahteva. Sloj poslovne logike se može razložiti na[27]:

1. Objektni model koji modeluje učesnike u poslovnom procesu

2. Poslovna pravila koja predstavljaju klijentsku politiku i zahteve

3. Servise koji implementiraju autonomne funkcionalnosti

4. Proces rada – definiše kako se vrši prenos podataka iz jednog modula u drugi

Poslednji sloj aplikacije je sloj sa pristupom podacima, njegov zadatak je komunikacija sa bazom

podataka i slanje rezultata poslovnom sloju. Komunikacija sa bazom podataka se izvršava preko

niza upita, procedura, query itd.

Slika 9.- Prikaz slojeva višeslojne aplikacije i njihova povezanost[27]

Page 12: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

12

MVC patern funkcioniše na principu dodele zadataka objektima: Model, Controller i View.

Pored dodele zadataka ovaj patern takođe definiše način na koji će komponente komunicirati.

Svaki od navedenih objekata je odvojen od objekta drugog tipa apstraktnih interfejsa, preko kojih

uspostavljaju međusobnu komunikaciju.

Slika 10.- MVC patern[6]

Korisnik preko web pretraživača gde se nalazi interfejs naše aplikacije, unosi zahtev za podacima

koji su mu potrebni. Podaci se zatim prosleđuju do Controllera koji sada prosleđuje zahtev do

modela unutar kojih se nalaze podaci koje korisnik želi. Model zato putem niza poruka vraća

odgovor u vidu informacija do Controllera koji sada ima zadatak da prosledi ove informacije do

odgovarajućeg pogleda. U ovom procesu od navedena 3 elementa jedino je View pasivan i nema

nikakvu samostalnu ulogu, nego prikazuje samo ono što mu je prosledio Controller.

Page 13: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

13

2.3. Servisno-orijentisane arhitekture SOA

S razvojem današnje tehnologije od kompanija koje se bave proizvodnjom web aplikacija,

očekuje se što veća kreativnost i kompentivnost ali pre svega da aplikacije bude u što većoj meri

fleksibilne, odnosno da se mogu menjati u skladu sa uslovima koji su postavljeni kako od strane

korisnika tako i samog tržišta. Ispunjenje datih zahteva i očekivanja u velikom broju zavisi od

fleksibilnosti date aplikacije, njena mogućnost da se menja u skladu sa zahtevima koji se nalažu,

a da pritom bude operativna[2]. Kompanijama je u interesu da koriste ono što već imaju u svom

posedu, odnosno resurse koji su im u tom trenutku na raspolaganju da se do željene promene

dođe brzo, jer vreme je novac a svaka kompanija želi da bude operativna u svakom trenutku.

Servisno orijetnisana arhitektura se najjednostavnije može opisati kao arhitetkura koja podržava

izmenu već postojećeg okruženja u skup međusobno povezanih servisa koji međusobno

komuniciraju na određenom nivou kako bi se izvršili zadaci koji su zadati[4]. Bitno je

napomenuti da su oni međusobno labavo povezani i da svaki sloj date arhitekture ima pristup

drugom sloju samo na minimalnom nivou kako bi protok informacija bio najbolji[2]. Razlog

zašto je arhitetkura podeljena je jednostavan, kad bi bili jako povezani svaki posao bi se radio

dva ili više puta. Na ovaj način je regulisano da se to ne dešava i sama arhitetkura je mnogo

preglednija i mnogo pristupačnija.

Slika 11.- Prikaz SOA arhitekture i njenih slojeva [2]

Page 14: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

14

Slika broj 11.- prikazuje SOA arhitekturu i njene slojeve. SOA sloj se sastoji iz 4 bitna sloja koji

se mogu izdvojiti i koje sam koristio prilikom izrade ove aplikacije. SOA slojevi su:

1. Sloj sa pristupom bazi podataka,

2. Sloj modela,

3. Web Servise sloj,

4. Sloj prezentacije.

Sloj za pristup bazi podataka je sloj koji omogućava pojednostavljen pristup bazi podataka.

Unutar ovog sloja se nalaze folderi sa klasama u kojima se nalaze SQL upiti preko kojih

aplikacija komunicira sa bazom podataka, odnosno preko kojih se kreiraju nove, izmenjuju već

postojeći podaci ili brišu oni koji više nisu potrebni. Takođe imamo opciju izlistavanja svih

podataka koji se nalaze u datoj tabeli koju je korisnik tražio.

Sloj modela je sloj unutar kojeg se nalaze klase koje su ispunjene objektima. Objekti imaju get i

set funckiju uz pomoć koje preuzimaju vrednost ili je postavljaju u model. Ovaj sloj je u

komunikaciji sa korisnikom.

Sloj Web servisa je sloj dosta složeniji od prethodnih. Sastoji se iz 4 segmenta:

1. Segment Poruka- u segmetnu poruka se nalaze sve poruke koje se šalju prilikom zahteva i

koje se vraćaju kao odgovor same aplikacije,

2. Segment Mappera- segment koji služi za transformaciju zahteva u odgovore

3. Segment Abstraction- segment abstraktnih klasa, predstavlja interfejs ovog sloja

Slika 12.- Web Service sloj[3]

4. Segment Implementation- segment u kojem se implementuju svi zahtevi i odgovori.

Page 15: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

15

Poslednji sloj ove arhitekture je prezentacioni sloj, odnosno sloj koji korisnik vidi kada koristi

našu aplikaciju.U ovom sloju se nalaze dva veoma bitna segmenta a to su Controller i View

(pogled). Controller je zadužen za primanje zahetava od korisnika koji stižu putem browsera, a

zatim da šalje zahteve do modela. Model odgova na zahteve pomoću određenih informacija i

šalje ih nazad Controlleru koji sada informacije koje je dobio šalje View (pogledu). Zato se ovaj

patern naziva MVC (MODEL-VIEW-CONTROLLER). Bitno je još napomenuti da je View

passivan i da on samo prikazuje informacije koje mu Controller prosledi.

Slika 13.- MVC patern[3]

Page 16: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

16

2.4 Web servisi

Web servis je aplikacija smeštena na nekom računaru odnosno serveru koja ima za zadatak da

podrži interakciju između dva računara na mreži i omogući razmenu informacija. Servisi mogu

biti privatni ali i javno dostupni.

Prednosti web servisa u odnosu na web aplikaciju je u tome što se manje troše resursi ali takođe

se i manje opterećuje sama mreža, a ovo je posledica toga što web aplikacije pored standardnog

odgovora moraju da šalju i HTML formu sa opisom kako bi odgovor trebao da izgleda. Web

servisi su više zastupljeniji na manjim uređajima kao što su telefoni.

Web servisi mogu da sarađuju sa GUI aplikacijom pa se dobija kombinacija desktop i web

aplikacije gde svako od njih daje svoj doprinos. Web aplikacija joj omogućava funkcionalnost

dok joj desktop forme daju izgled odnosno interfejs. Bitno je napomenuti da se komunikacija

između ova dva dela ostavaruje JSON ili XML formatom i da je ovakva aplikacija mnogo

fleksibilnija od web aplikacije jer sam korisnik može da je prilagodi svom desktopu.

Slika 14.- Web servis[8]

Page 17: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

17

2.5 SOAP i RESTfull

ASMX nam daje mogućnost kreiranja web servisa radi slanja poruka koristeći SOAP platformu.

SOAP platforma nije zavisna od jezika koji koristimo prilikom izrade našeg web servisa.

Prednost ove platforme je u tome što korisnik ne mora da ima nikakvo znanje o objektnom

modelu, programskom jeziku ili samoj platformi. Korisnik treba da razume princip slanja i

primanja SOAP poruka.

Kad je u pitanju sama podloga SOAP, ona je akronim od Simpe Object Access Protocola i

zasnovana je na XML protokolu za razmenu informacija između računara. SOAP poruka u XML

dokumentu sadrži sledeće elemente[6]:

Root element koji se zove Envelope, i koji služi kao identifikacija XML dokumenta

Header koji nije obavezan ali ukoliko postoji sadrži određene informacije koje mogu da

pomognu u procesu autentifikacije. Ukoliko postoji Header on mora da bude prvi element

u Envelope

Body element koji je obavezan i u kojem se nalazi sadržaj poruke za primaoca

Fault element koji takođe nije obavezan a čije je funkcija da nađe grešku u porukama,

ukoliko postoji predstavlja podelement Body elementa.

SOAP može da funkcioniše na mnoge transportne protokole poput TCP, SMTP, UDP i

HTTP[15]. Za razliku od SOAP, ASMX servis može da funkcioniše samo na HTTP protokolu.

Za opis ovih WSDL koji je napisan XML-om i sadrži informacije o protokolu koji ćemo korisiti i

adresi našeg web servera[16]. SOAP daje mogućnost da se komunicira između aplikacija čak i

ukoliko one nisu napisane istim programskim jezikom. SOAP se smatra naslednikom XML-RPC

protokola, dok je jedina razlika to što ima drugračiji izled i struktura samih poruka.

Oblasti u kojima je poželjno koristiti SOAP su:

Kad se postigne dogovor oko “Dogovorenog formata”, što znači da su se obe strane

dogovorile koji format će koristiti za pisanje poruka,

Kod operacija koje koriste stanje,

Slika 15.- SOAP

Page 18: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

18

Web servis koji se ističe pored SOAP je RESTful, koji je danas mnogo dominantniji od SOAP i

WSDL jer je mnogo jednostavniji za korišćenje. Podaci se prebacuju u JSON format ali takođe

podržava i XML i YAML[16]. RESTful je po arhitekturi zanovan na REST-u pa je zbog toga

jednostavan i vrlo fleksibilan jer se izvršava na bilo kom klijentu sa podrškom HTTP/HTTPS.

Ovi servisi imaju URL koji omogućava njihovu identifikaciju. Svaka akcija koja se izvede u

ovom servisu jednaka je jednom pozivu dok pristup do resursa je definisan HTTP-om. Prilikom

izvršavanja akcije koristi se URL ali se razlikuje HTTP od same operacije. REST koristi CRUD

sa operacijama kao što su Create, Read, Update, Delete. RESTfull je pogodan za korišćenje u

sledećim situacijama[6]:

Kod ograničenog propusnog opsega

Kod operacija koje ne koriste stanja

Kod situacija kod kojih je moguće keširanje

Prednosti REST servisa:

1. Jednostavnost

2. Fleksibilnost formata vraćenih podataka

3. Koristi postojeću mrežnu strukturu

4. Brzo se uči REST servis tehnika

Slika 16.- RESTful[16]

Page 19: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

19

SOAP REST

Protok baziran na XML porukama Koristi se stil arhitekte

Koristi WSDL za komunikaciju između

korisnika i provajdera

Koristi XML ili JSON za slanje poruka i

primanje poruka

Pozivanje servisa od strane RPC metode Jednostavno pozivanje metoda putem URL

puta

Ne vraća čitljivi rezultat Rezultat je čitljiv preko XML i JSON

Transfer se obavlja preko HTTP, SMTP, FTP Transfer je isključivo HTTP

JavaScript može da pozove SOAP, ali je teško

implementirati

Jednostavno pozivanje kroz JavaScript

Performanse nisu sjajne u poređenju sa REST Performanse su mnogo bolje u poređenju sa

SOAP, manje CPU se koristi

Slika 17.- Poređenje SOAP i REST servisa [17]

Page 20: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

20

2.6 Web hosting

Kad je u pitanju implementacija web aplikacija, ključni element korišćenja je hosting podrška

realizovanom softveru. Kad je u pitanju Web hosting za njega se može reći da predstavlja prostor

na internetu na kojem se nalazi naš web sajt. Web host vrši funkciju hostinga na našem web

serveru ili serveru web provajdera. Elementi koje možemo hostovati su sajtovi, forumi, različiti

portali itd., međutim preduslov za to je da računar koji hostuje naš sajt sve vreme bude

konektovan na internet[14]. Hosting funkcioniše tako što kad uđemo na forum ili određeni web

sajt, naš računar se konektuje na web server koji je host datog sajta.

Da bi smo posedovali i održavali jedan ili više web sajtova potrebno nam je pored jake tehničke

opreme dobar hosting, stoga mnoge firme prilikom odabira hostinga koriste nekog od internet

provajdera. Web hosting provajderi su firme koje poseduju jaku tehničku podršku u kombinaciji

sa potrebnim tehničkim obrazovanjem u cilju što bolje usluge korisnicima. Oni u svom posedu

imaju web servere koje izdaju klijentima koji žele da hostuju svoje stranice putem internet

mreže.

Slika 18.- Web hosting[]

Page 21: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

21

3.Analiza semantičke oblasti

3.1 Elektronsko poslovanje

Elektronsko poslovanje bi se najlakše moglo opisati kao obavljanje poslova putem interneta. Pod

pojmom obavljanja poslova ne mislimo samo na kupovinu i prodaju, nego i na samu organizaciju

posla i poslovanje jedne firme , organizovanje komunikacije kako među zaposlenima tako i

između firme i klijenata, i to sve putem interneta. Ovaj izraz je prvi put upotrebljen od strane

IBM-a da bi se naglasila upotreba savremenih tehnologija. Da bi mogli da uspostavljamo

elektronsko poslovanje, moramo da primenjujemo elektronske tehnologije. Primenjivanje

elektronske tehnologije znači da firme koje koriste ove tehnologije u svom poslovanju imaju

mnogo efikasniji učinak. Ovakav način poslovanja donosi dosta pozitivnih stvari a jedna od njih

je smanjenje troškova na minimum. S obzirom na činjenicu da ne mora da se putuje na svaki

sastanak pogotovo ako su u pitanju inostrani partneri dolazi do velikih novčanih ušteda kao i do

uštede vremena jer mogu da se održe internet koferencije. Veoma je bitno u svakom poslu biti

savremen i pratiti trendove, jer se time dobija prednost na tržištu.

Slika 19.- Prikaz savremenog website-a

Page 22: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

22

Elektronska trgovina (Electronic Commerce) ili E-trgovina je proces uspostavljanja

komunikacije sa klijentima i prenos proizvoda i usluga koju zahtevaju klijenti preko mreže

računara, kao prenos novčanih dobara preko digitalne komunikacije. Pored ovih funkcija

uklučuju se funkcije kao što su finansije, marketing, prodaja koje su neophodne da bi se izvršio

proces trgovine. Na ovaj način možemo da pokažemo razliku između e-trgovine i e-poslovanja.

E-trgovina bi bila samo jedan mali deo e-poslovanja pored elektronske berze, mobilnog

poslovanja, elektronskog bankarstva itd.

Kupovina preko interneta je obično najbrži vid kupovine ali i najjeftiniji, zato se sve veći broj

ljudi okreće kupovini proizvoda putem internet mreže. Kupovina je moguća u bilo kom

vremenskom periodu, nije ograničena na određenu zemlju ili region i ukoliko ste prodavac ne

zakupljujete prostor. To je veoma velika prednost jer vaš proizvod može da vidi i neko ko je

hiljadama kilometara daleko od vas. Treba napomenuti da svaki proizvod i sama prodaja ima

svoje tržište. Sa pojavom e-trgovine došlo je i do pojave novog tržišta “Online” tržišta.

Prednosti poslovanja preko interneta:

Nema skupih nekretnina

Neophodna je minimalna radna snaga

Mogućnost poslovanja sa ljudima širom sveta

Veoma brzo prilagođavanje u cenama i zahtevima kupaca

Postoji katalog koji pruža informacije korisnicima

Nedostaci poslovanja preko interneta:

Kupovina preko interneta zahteva poverenje (obostrano)

Mnogi potencijalni kupci ne koriste internet kupovinu

Problem stvarnog postojanja prodavaca na internetu

Ugrožena privatnost

Bezbednost poslovne transakcije

Slika 20.- Kupovina putem e-trgovina

Page 23: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

23

3.2 Sportska oprema

Sport je jedna od glavnih manifestacija života. Sport se proteže kroz sve sfere obrazovanja, i

sastavni je deo života svakog čoveka kako zbog zrdravlja tako i zbog zabave[7]. Sport je postao

sredstvo ličnog i opšteg razvoja. Smatra se da je sport postao svetski jezik kojim se izkazuje

poštovanje, fair-play kao i priznavanje različitosti kod drugih osoba.

Ideja o sportu javila se još u Antičkoj Grčkoj gde su fizičke aktivnosti imale velik značaj. Fizičke

aktivnosti su bile sastavni deo tadašnjeg obrazovanja[7]. Još tada se uvidela potreba da se čovek

pored mentalnog nivoa razvija i na fizičkom nivou. Poznata Juvelova poslovica kaže: ”U

zdravom telu zdrav duh”[7]. Sa razvojem fizičkih aktivnosti javila se potreba za ravojem

određene opreme kako bi se dobio što lepši doživljaj prilikom učestvovanja a takođe i da bi se

smanjio rizik od povreda. Košarka, fudbal i ostali sportovi sa loptom su se prvobitno igrali sa

predmetima koji su bili dosta teški i nepravilnog oblika što je u velikoj meri otežavalo igru.

Samim tim javlja se potreba da se ovo unapredi i igra postane čist užitak. Ostali sportovi gde se

iskazivala muška snaga su takođe imali opremu koja se koristila. Ovde možemo navesti sportove

poput bacanja koplja, kugle, rvanja, boksa, podizanje kilaže itd. Svi ovi sportovi pored svoje

lepote su nosili određene rizike. Upravo iz ovih razloga oprema se razvijala kako bi se povećao

stepen sigurnosti i na taj način dobili smo opremu kao što je poznajemo danas.

Uspešnost svakog posla koji obavljamo pored spoljnih faktora zavisi i od opreme koju koristimo.

Za opremu bi se moglo reći da je to alat koji nam pomaže da postignemo što bolje rezultate i

svedemo rizik od povreda na minimum. U zavisnosti od sporta kojim se bavimo razlikuje se i

oprema koju koristimo. Pored ovoga na naše rezultate utiče i sam kvalitet opreme, stoga sportski

stručnjaci se slažu da je za maksimalan učinak potrebno pažljivo odabrati opremu koja odgovara

našim telesnim performansama i koja zadovoljava određeni kvalitet. Kad je u pitanju fitness tu se

ubrajaju svi sportovi koji za svoje izvođenje koriste neki vid kilaže. Kako bi se potiglo što veće

opterećenje potrebno je razviti tehniku za datu vežbu ili sport. Kad sportista dođe do svojih

granica tu nastupa funckija opreme. U tim sitnim vremenskim periodima gde sportista jedino

razmišlja o podizanju zadate kilaže, oprema se ističe kao zaštitnik njegovog tela. Koliko će ta

zaštita biti pouzdana zavisi od kvaliteta marke i brenda same marke. Za fitness bitno je odabrati

dobre patike, kao deo sportske opreme jer je veoma bitna stabilnost i udobnost same obuće, bitno

je odabrati sportsku uniformu koja najviše odgovara našem telu i pored ovoga još dodatnu

opremu u zavisnosti od oblasti fintessa kojom se bavimo. U koliko je u pitanju powerlifting

moramo pažljivo odabrati kaiš koji nas štiti od povrede leđa, steznike za zglobove ruku i kolena

koja štite zglobove da ne dođe do pucanja prilikom podizanja velikih kilaža itd.

Page 24: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

24

Slika 21.- Primer fitness opreme[23]

Slika 22.- Primer 2 fintess opreme[24]

Page 25: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

25

4.Postojeća rešenja

4.1 Tehnološki primer -javno dostupni web servis

Konkretan primer web servisa (SOAP) koji je javno dostupan za korišćenje putem URL-a:

http://www.webservicex.net/globalweather.asmx

Programski kod koji opisuje način razmene podataka putem SOAP poruku za request i respond a

zatim i programski kod koji opisuje razmenu podataka putem HTTP protokola za request i

respond.

POST /globalweather.asmx HTTP/1.1

Host: www.webservicex.net

Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: http://www.webserviceX.NET/GetCitiesByCountry

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

<GetCitiesByCountry xmlns="http://www.webserviceX.NET">

<CountryName>string</CountryName>

</GetCitiesByCountry>

</soap:Body>

</soap:Envelope>

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8

Content-Length: length

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

Page 26: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

26

<GetCitiesByCountryResponse xmlns="http://www.webserviceX.NET">

<GetCitiesByCountryResult>string</GetCitiesByCountryResult>

</GetCitiesByCountryResponse>

</soap:Body>

</soap:Envelope>

Slika 23. Prikaz koda za request and resonse poruke[28]

GET /globalweather.asmx/GetCitiesByCountry?CountryName=string HTTP/1.1

Host: www.webservicex.net

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8

Content-Length: length

<?xml version="1.0" encoding="utf-8"?>

<string xmlns="http://www.webserviceX.NET">string</string>

Slika 24.- Prikaz koda za HTTP GET metodu, request i response[28]

POST /globalweather.asmx/GetCitiesByCountry HTTP/1.1

Host: www.webservicex.net

Content-Type: application/x-www-form-urlencoded

Content-Length: length

CountryName=string

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8

Content-Length: length

<?xml version="1.0" encoding="utf-8"?>

<string xmlns="http://www.webserviceX.NET">string</string>

Slika 25.- Prikaz koda za HTTP POST metodu, requst i reponse[28]

Page 27: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

27

4.2 Semantički primer – online prodaja sportske opreme

Konkretan primer web site-a koji se bavi online trgovinom sportske opreme.

https://www.pansport.rs/

Slika 26.- Prikaz početne stranice PanSport web site-a

Navedeni primer je realizovani web site firme PanSport. Navedeni sajt ima stavke glavnog

menija kao što su:

Proizvodi- deo menija u kojem su prikazani svi proizvodi kategorisani po markama

proizvoda kao i po njihovoj nameni,

Forumi- dostupni svim ulogovanim korisnicima gde je moguće postaviti bilo kakva

pitanja ili komentare vezane za proizvod, opremu ili trening,

O nama- Mesto gde se nalaze sve najbitnije informacije koje je potrebno znati u vezi

PanSport-a, poput partnera, osvojenih nagrada itd,

Kontakt- mesto gde su ostavljene informacije kako je moguće stuputi u kontakt sa

PanSport-om putem email adrese, telefona itd,

Prodavnice- dat je detaljan opis filijala PanSporta na području Srbije,

Tekstoteka- mesto gde možemo pročitati savete koji su dali stručna lista u vezi ishrane,

treninga, i često postavljenih pitanja,

Fitness Centri- ovde možemo registrovati svoj fitness cetnar ukoliko želimo, takođe

možemo da pretražimo sve poznatije fitness centre u Srbiji.

Page 28: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

28

http://www.proteini.si/rs/

Slika 27.- Prikaz početne stranice Proteini.si web site-a

U navedenom primeru je prikazan web site prodavnice Proteini.si. Na početnoj strani se nalaze

stavke menija poput:

Kategorije- mesto gde možemo pretražiti željeni proizvod po marci, nameni,

upotrebi itd,

Namera- mesto gde možemo pretraživati proizvode isključivo po njihovoj

nameni,

Proizvođači- mesto gde pretražujemo proizvode po proivođaču,

Sportovi- mesto gde opsiani sportovi, oprema i suplementacija koja se koristi pre

ili u toku treninga,

Top 50- mesto gde možemo videti koji su najprodavaniji proizvodi, koji su

nabolji itd.,

Kontakt- search bar koji nam daje mogućnost da pretražimo određenu osobu,

Tu su i opcije poput videa- gde možemo videti pravilno izvođenje formi nekih

vežbi, novosti iz sveta fitnessa, akcija itd.

Page 29: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

29

http://www.goldsgym.com/get-started/

Slika 28.- Prikaz Gold Gym web site-a

Navedeni primer je realizacija web site-a Gold Gym-a, najpoznatijeg lanca teretana na svetu,

poznati jos kao “The Mecca”. U navedenom primeru možemo videti sledeće opcija web site-a:

Get started-mesto web site na koje možemo stupiti u kontakt sa osobljem putem interneta,

Why Gold’s gym- mesto gde su nam dati razlozi zašto da odaberemo baš njih,

Locate a gym- deo web site-a koji nam pomaže da pronađemo najbližu Gold gym

teretanu u našoj okolini,

Find a class- možemo da pronađemo tip treninga koji nas interesuje poput mixed martial

arts, studio cycle itd.,

Our personal treinres- mesto gde nam je dat opis i specifikacije trenera zaposlenih u

datim teretanama,

Strength exchange- mesto gde sve navedene funkcije možemo naći zajedno u cilju

dobijanja kompletne slike datog site-a,

Page 30: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

30

5.Opis primenjene tehnologije

U diplomskom radu korišćen je program Microsoft Visual Studio 2015, dok je jezik na kojem je

aplikacija pisana C#. Pored ovoga bitno je napomenuti da se koristi i SQL server database 2015

koji omogućava rad sa bazama podataka.

Microsoft Visual Studio predstavlja okruženje koje je razvila firma Microsoft, koristi se za

izradu programa kao što su web sajtovi, web servisi, mobilne aplikacije ali takođe i desktop

aplikacije. Visual Studio koristi platforme kao što su Windows API, Forme, Store itd.

Visual Studio takođe uključuje i code editor kao i debbuger. Debugger se koristi na dva nivoa:

kao source debugger i machine debbuger. Pored ovoga u sastav Visuala se takođe može uključiti

i code profiler, form designer koji nam omogućava izradu GUI aplikacija, web designer, class

designer itd.

Visaul Studio daje podršku za 36 programskih jezika kao i code editor i debbuger. Poznati jezici

koji se mogu koristiti su C, C++, C#, VB.NET, PYTHON, RUBY, JAVA, HTML/CSS,

JAVASCRIPT itd.

Slika 29.- Prikaz prozora Home Controllera u MS Visual Studio 2015

Page 31: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

31

.NET

Visual studio.Net prestavlja jedno od okruženja koje je proizvela firma Microsoft. Sadrži veliku

biblioteku klasa (Framework Class Library). Prva značajnija verzija .Net-a potiče iz 2000. a u

saradnji sa Intel-om i HP-om su radili na standardizaciji CLI kako bi se više programskih jezika

koristili na različitim platformama.

Programi se izvršavaju kroz CLR, virtuelnu mašinu koja sadrži: memory menagment, exception

handling, garbage collector itd[19]. Korišćenjem .Net dobijamo platformu na kojoj možemo da

pišemo na 35 različitih jezika od kojih su najpoznatiji C, C#, C++ i Java.

Svaki jezik ima svoj kompajler posebno i preko njega se kompajlira u CLI. U zavisnosti od toga

koji je jezik korišćen CLR kompajlira CLI u mašinski kod, kod koji je poznat računaru. Ovo je

glavni alat i alat koji odvaja Visual Studio od drugih.

MVC

MVC ili Model-View-Controller je patern koji je kreiran sa zadatkom da reši problem kod

većine aplikacija a to je prikazivanje podataka korisniku. Ideja je bila da se sama aplikacija

podeli u 3 sloja: Model, View i Controller. Ovaj patern bi trebao da funkcioniše na jedan od dva

sledeća mišljenja:

Aplikacija bi trebala da dobije zahtev od korisnika preko web pretraživača. Controller dobija tu

poruku i zatim se obraća modelu za podatke koji su mu potrebni da bi se ispunio zahtev. Model

kao odgovor šalje podatke nazad Controlleru koji sada date podatke prosleđuje View koji je

statičan i njegova funkicija je prikazivanje prosleđenih podataka korisniku. Da bi sve ovo

funkcionisalo potrebni su nizovi poruka, mappera, interfejsa, upita za bazu itd.

Drugo mišljenje je po svemu slično prvom, razlika je u tome što se smatra da podaci ne moraju

da se kreću preko Controllera nego može da se uspostavi direktna veza između Modela i View

gde View ne bi imao nikakvu sopstvenu funkciju, već bio bi samo posrednik[20].

Slika 30.- MVC[21]

Page 32: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

32

ASP.NET

Asp.net predstavlja open-scource framework za web aplikacije koji sluzi za pravljenje

dinamičnih web stranica. Proizveden je od strane MicroSoft-a i pomoću njega pored web

aplikacije, možemo da pravimo web servise, web sajtove, mobilne aplikacije i slično.

Prva verzija je izašla na tržište januara 2002. godine sa verzijom 1.1 . NET Frameworka.

ASP(Active Server Pages) je izgrađen na bazi CLR koji omogućava programerima da koriste

bilo koji vid podrške od strane .Net-a. SOAP ekstenzija daje mogućnost programerima da u

sklopu ASP pišu SOAP poruke.

ASP.NET je naslednik ASP.Core, odnosno predstavlja implementaciju web frameworka u

kombinaciji sa više različitih frameworka poput EntiryFrameworka-a. Novonastali ASP:NET

koristi open-scource platformu :NET Compiler Platform (“Roslyn“) i paterne kao što su

ASP:NET MVC, ASP:NET ASP.NET Web Pages.

Slika 31.- ASP.NET[22]

Page 33: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

33

Web Service

Web servis je servis koji nam daje mogućnost da preko računara komuniciramo sa drugim

računarnom, putem interneta. HTTP je prvenstveno dizajniran kako bi se koristio u komunikaciji

između čoveka i računara, prerađen je i može da se koristi u sporazumevanju dva računara ili

specifičnije služi za prenos podataka koji su razumljivi računarima poput XML ili JSON. U

praksi to bi se mogli objasniti tako što ima interfejs servera baze podataka kojem se pristupa

putem nekog web servisa ili aplikacije kako bi se dobio korisnički interfejs za krajnjeg korisnika.

Slika 32. Prikaz prozora za kreiranje web servisa u MS Visual Studio 2015

Page 34: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

34

6. Realizovan primer

6.1 Specifikacija zahteva

Specifikacija zahteva za izradu online aplikacija predstavlja skup aktivnosti koje može da izvrši

korisnik ili administrator web aplikacije. U nastavku ćemo prikazati tabelarno na primeru

ONLINE PRODAVNICE FITNESS OPREME. Tabelarni prikaz je odabran radi boljeg prikaza

svih aktivnosti. Spisak specifikacija aktivnosti kupca:

POSLOVNA AKTIVNOST PLAN SOFTVERSKE PODRŠKE

Izbor proizvoda Korisniku je data mogućnost pregleda proizvoda prilikom

ulaska na sajt, zatim korisnik ima opciju odabira da li želi da

kupi dati proizvod ili pogleda dodatne informacije

Kupovina proizvoda Korisnik klikom na korpu dodaje dati proizvod u korpu,

zatim dobija dve opcija da li želi da nastavi kupovinu ili

doda još neki proizvod u korpu. Ukoliko odabere opciju

nastavi, kupac je u obavezi da unese lične podatke, dostavnu

službu kao i kod za popust

Prikaz dodatnih osobina

proizvoda

Klikom na ovu stavku, korisniku se prikazuje dodatne

informacije datog proizvoda

Prikaz lista sprava Prikazuje se lista sa spravama koju korisnik može da kupi ili

da pogleda njihove specifikacije, slično kao i za opremu

Kupovina sprava Klikom na ovo dugme korisnik ima mogućnost da doda

sprave u korpu, a zatim bira da li će da nastavi sa

kupovinom ili da završi porudžbinu

Prikaz primera ishrane Izlistava se prikaz primera obroka koji sportisti mogu da

koriste u zavisnost koji tip treniga rade.

Logovanje Korisnik ima mogućnost da se uloguje i time dobija dodatne

povlastice

Kreiranje naloga Korisnik ima mogućnost kreiranja sopstvenog naloga

Tabela 1.- Prikaz mogućnosti korisnika

Page 35: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

35

Spisak specifikacija aktivnosti administratora:

Aktivnost Detalji poslovne aktivnosti

Unos opreme Poslodavac ili administrator je u mogućnosti

da unosi novu opremu kao i izmena i brisanje

postejeće, i njeno prikazivanje na web site

Unos marke Poslodavac ima mogućnost da unese marku za

datu opremu i spravu

Unos tipa marke Poslodavac ima mogućnost da unese tip marke

za opremu i spravu kao i tip ishrane koje nudi

kao primer da bi korisnici mogli lakše da

shvate koji tip ishrane je vezan za koji trening

Unos sprava Mogućnost unosa novih sprava kao i izmena i

brisanje postojećih

Unos ishrane Mogućnost unosa ishrane sa opisom date

ishrane i načinom pripreme, kao i koji tip

predstavlja data ishrana

Unos naloga korisnika Administrator ima mogučnost kreiranja novog

naloga korisnika ukoliko korisnik ne zna, kao i

dodeljivanje statusa korisnika ili administratora

Izmena postojećih korisnika Administrator dobija mogućnost izmene

postojećih naloga kao i brisanja

Tabela 2.- Prikaz mogućnosti administratora

Page 36: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

36

6.2 Modeli opšteg dizajna softvera

6.2.1 Model poslovnih procesa

Model poslovnih procesa služi za kreiranje i upravljanje svim poslovnim procesima unutar jedne

organizacije. BPM( Business Process Modeling) ima zadatak da objedini sve procese unutar

organizacije radi lakšeg prikaza organizacije.

Slika 33.- Prikaz BMP modela[28]

Page 37: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

37

Slika 34.- Prikaz BMP modela na primeru jedne prodavnice[28]

6.2.2 Use case dijagram

U use case dijagramu su prikazani procesi is BPM modela kao i njhove funkcije. U narednoj

tabeli (preuzeto iz [28]) su podrzani softverskim funkcijama samo primitivni procesi koji se

odnose na prodavca i kupca, a deo dobavljača nije podržan jer taj deo pripada informacionom

sistemu dobavljača i izvan je domena rada. Procesi su podeljeni u dva nivoa prioriteta, prvi nivo

koji direktno podržava procese i drugi koji prestavlja proširenje datog procesa. Sledeća kolona je

kolona preduslova koja mora biti ispunjenja ukoliko želimo da koristimo funkcije softvera.

Poslednja kolona se odnosi na tip softvera koji plasiramo.

Page 38: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

38

Primitivni

poslovni

proces

Radna

uloga

izvršioca

primitivnog

poslovnog

procesa

Softverska funkcija

Preduslov

za uspešno

izvršavanje

funkcija i

prioriteta

Actor

(Profil

korisnika

softverske

funkcije)

Tip

softvera

1.prioriteta 2.prioriteta

Prijem robe Prodavac Unos podataka

o primljenoj

robi

Tabelarni

prikaz

podataka

dospele robe,

Filter

podataka

prema

datumu

dospele robe,

parametarska

štampa

Unos

narudžbenice

za

dobavljača

Dobavljač c/s

LAN,

WEB

Kreiranje

kataloga

Prodavac Unos

proizvoda za

katalog,

Štampanje

kataloga

Tabelarni

prikaz

proizvoda

koji će se

koristiti u

katalogu

Unos

podataka o

primljenoj

robi

Prodavac c/s

LAN,

WEB

Naručivanje Kupac Unos podataka

o proizvodima

za naručivanje

Tabelarni

prikaz

narudžbenice

koja sadrži

podatke o

proizvodima

i o kupcu,

Filter

podataka po

datumu

prijem i

parametarska

štampa

narudžbenice

Unos

proizvoda za

katalog

Kupac WEB

Page 39: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

39

Prijem

narudžbenica

Prodavac Tabelarni

prikaz

narudžbenica

Filter unetih

podataka

prema

rednim

brojevima

narudžbenica

Unos

podataka o

proizvodima

za

naručivanje

od kupca

Kupac c/s

LAN,

WEB

Plaćanje Kupac Unos podataka

o plaćanju

Tabelarni

prikaz

realizovanih

plaćanja

Tabelarni

prikaz

narudžbenica

WEB

Evidentiranje

uplata

Prodavac Unos podataka

o potvrdi

izvršenja uplate

kupca

(upoređivanjem

sa bankarskim

izvodom)

Tabelarni

prikaz

potvrđenih

uplata, Filter

podataka o

dospelim

uplatama

prema

datumu

plaćanja

Unos

podataka o

plaćanju od

strane kupca

Kupac c/s

LAN,

WEB

Slanje

poručene

robe

Prodavac Unos podataka

o slanju

proizvoda

Tabelarni

prikaz

podataka o

pošiljkama,

Filter

podataka o

slanju prema

broju

narudžbenice

i datumu

Unos

podataka o

proizvodima

za

naručivanje

od kupca.

Unos

podataka o

potvrdi

izvršenja

uplate kupca

Prodavac c/s

LAN,

WEB

Tabela 3.- Use case tabela [27]

Kompletan spisak softverskih funkcija koje treba da budu implementirane nastaju

kombinovanjem specifikacije zahteva i tabele preslikavanja i dat je u nastavku, prema profilima

korisnika.

Page 40: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

40

Profil korisnika Admin

Softverske funkcije:

Unos nove opreme, Unos nove marke, Unos nove sprave, Unos novog tipa, Unos nove ishrane

Unos novog korisnika, Izmena postojećeg korisnika i dodeljivanje statusa, Unos podataka o

primljenoj robi, Unos podataka za katalog, Unos podataka o izvršenjoj uplati, Unos podataka o

slajnu proizvoda

Profil korisnika Kupac

Softverske funkcije:

Pregled opreme, pregled sprava, pregled ishrane, kupovina opreme, kupovina sprava, pravljenje

naloga, Unos podataka o proizvodima za naručivanje, Unos podataka o plaćanju

Taleba 4.- Prikaz mogućnosti admina i kupca

Slika 35.- Use case dijagram

Page 41: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

41

6.3 Modeli implementiranog rešenja višeslojne arhitekture softvera

6.3.1 Dijagram komponenti

Dijagram prikazuje strukturne relacije između softverskih komponenti sistema. On ilustruje delove

softvera, ugrađene kontrolere i slično, i ima veći stepen apstrakcije od dijagrama klasa.[26

Dijagram komponenti služi za modeliranje izvornog koda, modeliranje izdanja za isporuku,

modeliranje izvršnih izdanja i okruženja, kao i modeliranje fizičkih baza podataka. Na sledećim

slikama će biti prikazan izgled dijagrama komponenti za našu aplikaciju razvrstanu po slojevima.

Slika 36.- Dijagram komponenti

Page 42: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

42

Slika 37.- Dijagram komponenti 2. deo

Page 43: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

43

6.3.2 Dijagram razmeštaja

Dijagram razmeštaja prikazuje statički pogled run-time hardverske konfiguracije i softverskih

komponenti koje se izvršavaju na tim čvorovima. Dijagram razmeštaja prikazuje hardver vašeg

sistema, softver koji je instaliran na tom sistemu i srednji sloj koji se koristi za povezivanje

međusobno razdvojenih mašina.[26]

Slika 38.- Dijagram razmeštaja

Page 44: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

44

6.3.3 Dijagram klasa

Dijagram klasa nam daje mogućnot pregleda svih klasa unutar svakog sloja pojedinačno kao i

način na koji su klase međusobno povezane.

Slika 39.- Dijagram klasa

Page 45: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

45

Slika 40.- Dijagram klasa 2 deo

Page 46: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

46

6.4 Korisničko uputstvo

Prilikom izrade seminarskog rada rađena je aplikacije za online prodaju fitness opreme.

Aplikacije je funkcionalna upostpunosti ali pored toga ima još dosta mesta za usavršavanje. Ova

aplikacija je primer stečenog znanja u pravljenju web apliakcije u programskom jeziku C# i

programu Visual Studio 2015.

Slika 41.- Prikaz početne stranice web sajta

Kad je korisnik ušao na web sajt potrebno je da se uloguje na svoj nalog kako bi bio u

mogućnosti da kupi neku od navedene opreme ili sprave. Korisnik treba da unese šifru i lozinku

svoj profila kako bi se ulogovao. Sledi proces autentifikacije i u koliko se e-mail i lozinka

poklapaju korisnik je ulogovan. Kad je ovo urađeno koisnik može da otvori bilo koju karticu iz

menija.

Page 47: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

47

Slika 42.- Prikaz kartice sa opremom

Slika 43.- Prikaz kartice sa spravama

Page 48: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

48

Slika 44.- Prikaz kartice sa ishranom

Sada kad korisnik ima uvid o opremi i spravama koje je u mogućnosti da kupi, kupovinu može

obaviti tako što pritisne na dugme Kupi, aplikacija zatim otvara korpu i dodaje opremu ili spravu

koju kupac želi. Korisnik zatim ima opciju da se vrati nazad i odabere još neku stavku za

kupovinu ili da nastavi sa kupovinom i unese svoje lične podatke.

Slika 45.- Prikaz korpe

Page 49: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

49

Kad je korisnik odabrao opciju pojavljuju mu se jedna od dva navedena prozora

Slika 46.- Prozor koji se otvara prilikom dugmeta nastavak kupovine

Slika 47.- Prozor koji se javlja kad korisnik pritisne dugme Potvrdi

Nakon ovoga sledi prozor za odabir operatora za dostavu i unos koda za popust. Krajni prozor

izgleda ovako.

Page 50: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

50

Slika 48.- Prikaz prozora sa završenom kupovinom

Page 51: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

51

U koliko se ulogujemo kao admin pored navedenim opcija, administrator ima još neke dodatne

povoljnosti kao što su kreiranja nove opreme, marke, tipa marka, sprava i ishrane. Pored ovoga

administrator ima mogućnost rada sa profilima, dodavanja novih, izmena postojećih i brisanje.

Slika 49.- Prikaz prozora kad smo ulogovani kao administrator

Slika 50.- Prikaz prozora podataka o svim spravama kad smo ulogovani kao administrator

Page 52: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

52

Slika 51.- Prikaz prozora za izmenu

Page 53: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

53

6.5 Opis implementacije

6.5.1 Plan i opis implementiranih elemenata višeslojne arhitekture

Prilikom izrade bilo je potrebno napraviti bazu podataka sa tabelama koje su vezane za pojmove

koje želimo da prikažemo kao što je oprema, sprave, ishrana i druge stvari koje su bitne za naš

sajt. Da bi baza podataka funkcionisala morali smo da napišemo SQL upite koji se nalaze u sloju

za rad sa bazom podataka. Takođe smo morali kreirati sloj modela koji će sadržati get i set

metodu čija je funkcija prikupljanje podataka i postavljanje u model. Da bi ovo sve funkcionisalo

kako treba moramo koristiti i web servis koji će nam omogućiti komunikaciju između web

aplikacije za onlajn prodaju i dobavljača. Poslednji sloj, prezentacioni sloj prikazuje ono što je

korisnik putem poruka zahtevao od aplikacije. Ovaj sloj komunicira sa ostalim slojevima kako bi

pružio što bolju uslugu korisniku.

SLOJ PODSLOJEVI PLAN IMPLMENTACIJE U

RADU

Prezentacioni sloj Korisnički interfejs Ekranska forma

Prezentaciona logika Kod je prikazan u obliku grafičkih

elemenata, sve aktivnosti su vezane

za klik na dugme

Klase iz View sloja

Sloj servisa Web servis Pristup podacima od dobavljača

Biblioteka klasa

servisa za mapiranje

Mapiranje između slojeva

Sloj poslovne logike i modela Poslovni objekti Korpa, dostava

Poslovna pravila Popust

Sloj za rad sa bazom podataka Biblioteke klasa za rad

sa bazom podataka

Klase repository

Klase modela

Baze podataka i

DBMS

Tabele i relacije baze podataka

U nastavku će biti opisani elementi implementacije po slojevima počevši od baze podataka ka

višim slojevima. Implementacija softverskog koda je realizovana na osnovu primera koji je rađen

u okviru vežbi iz predmeta Sofversko inženjerstvo 2.

Page 54: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

54

6.5.2 SQL Script i šema baze podataka

U diplomskom radu smo koristili bazu podataka koju nam nudi program Visual Studio, međutim

bilo je porebno još instalirati podršku u vidu SQL server data tools-a kako bi svaka fukincija

radila kako treba. U nastavku ćemo prikazati spisak svih tabela unutar baze podataka:

CREATE TABLE [dbo].[T_MARKA] ( [MarkaId] INT IDENTITY (1, 1) NOT NULL, [Ime] NVARCHAR (50) NOT NULL, PRIMARY KEY CLUSTERED ([MarkaId] ASC) );

CREATE TABLE [dbo].[T_TIP] ( [TipId] INT IDENTITY (1, 1) NOT NULL, [Ime] NVARCHAR (50) NOT NULL, PRIMARY KEY CLUSTERED ([TipId] ASC) );

CREATE TABLE [dbo].[T_ISHRANA] ( [IshranaId] INT IDENTITY (1, 1) NOT NULL, [Ime] NVARCHAR (50) NOT NULL, [Opis] NVARCHAR (MAX) NOT NULL, [VelicinaObroka] NVARCHAR (50) NOT NULL, [TipId] INT NOT NULL, [ImageData] VARBINARY (MAX) NOT NULL, [ImageMimeType] NVARCHAR (50) NOT NULL, PRIMARY KEY CLUSTERED ([IshranaId] ASC), CONSTRAINT [fk_T_ISHRANA_T_TIP] FOREIGN KEY ([TipId]) REFERENCES [dbo].[T_TIP] ([TipId]) ); CREATE TABLE [dbo].[T_ISHRANA_IMAGE] ( [IshranaId] INT NOT NULL, [ImageData] VARBINARY (MAX) NOT NULL, [ImageMimeType] NVARCHAR (50) NOT NULL ); CREATE TABLE [dbo].[T_OPREMA] ( [OpremaId] INT IDENTITY (1, 1) NOT NULL, [Ime] NVARCHAR (50) NOT NULL, [Opis] NVARCHAR (MAX) NOT NULL, [Cena] DECIMAL (8, 2) NOT NULL, [Boja] NVARCHAR (50) NOT NULL, [Velicina] NVARCHAR (20) NOT NULL, [MarkaId] INT NOT NULL, [TipId] INT NOT NULL, [ImageData] VARBINARY (MAX) NOT NULL, [ImageMimeType] NVARCHAR (50) NOT NULL, PRIMARY KEY CLUSTERED ([OpremaId] ASC), CONSTRAINT [fk_T_OPREMA_T_MARKA] FOREIGN KEY ([MarkaId]) REFERENCES [dbo].[T_MARKA] ([MarkaId]),

Page 55: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

55

CONSTRAINT [fk_T_OPREMA_T_TIP] FOREIGN KEY ([TipId]) REFERENCES [dbo].[T_TIP] ([TipId]) ); CREATE TABLE [dbo].[T_OPREMA_IMAGE] ( [OpremaId] INT NOT NULL, [ImageData] VARBINARY (MAX) NOT NULL, [ImageMimeType] NVARCHAR (50) NOT NULL ); CREATE TABLE [dbo].[T_SPRAVA] ( [SpravaId] INT IDENTITY (1, 1) NOT NULL, [Ime] NVARCHAR (50) NOT NULL, [Opis] NVARCHAR (MAX) NOT NULL, [Cena] DECIMAL(2, 8) NOT NULL, [Velicina] NVARCHAR (20) NOT NULL, [MarkaId] INT NOT NULL, [TipId] INT NOT NULL, [ImageData] VARBINARY (MAX) NOT NULL, [ImageMimeType] NVARCHAR (50) NOT NULL, PRIMARY KEY CLUSTERED ([SpravaId] ASC), CONSTRAINT [Fk_T_SPRAVA_T_MARKA] FOREIGN KEY ([MarkaId]) REFERENCES [dbo].[T_MARKA] ([MarkaId]), CONSTRAINT [Fk_T_SPRAVA_T_TIP] FOREIGN KEY ([TipId]) REFERENCES [dbo].[T_TIP] ([TipId]) ); CREATE TABLE [dbo].[T_SPRAVA_IMAGE] ( [SpravaId] INT NOT NULL, [ImageData] VARBINARY (MAX) NOT NULL, [ImageMimeType] NVARCHAR (50) NOT NULL ); CREATE TABLE [dbo].[T_KORISNIK] ( [KorisnikId] UNIQUEIDENTIFIER NOT NULL, [Ime] NVARCHAR (50) NOT NULL, [Šifra] NVARCHAR (50) NOT NULL, [Email] NVARCHAR (50) NOT NULL, [Uloga] NVARCHAR (20) NOT NULL, PRIMARY KEY CLUSTERED ([KorisnikId] ASC) );

Listing 1.- kod unutar tabela baze podataka

Page 56: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

56

6.5.3 Ključni delovi koda sa objašnjenjem

6.5.2.1. Klase modela

Klase modela su generisane na osnovu baze podataka korišćenjem Entity Framework. Unutar

ovog sloja se nalaze klase koje su slične kao tabele u bazi podataka, tako da imaju privatne i

javne atribute sličnog naziva kao polja u tabelama, sa get i set metodama.

using Fitness.Oprema.Model.Entities.Marka; using Fitness.Oprema.Model.Entities.Tip; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fitness.Oprema.Model.Entities.Sprave { public class Sprava { public int SpravaId { get; set; } public string Ime { get; set; } public string Opis { get; set; } public string Velicina { get; set; } public decimal Cena { get; set; } public Marka Marka { get; set; } public Tip Tip { get; set; } public SpravaImage SpravaImage { get; set; } public List<SpravaImage> SpravaImages { get; set; } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Softversko2.Oprema.Model.Entities.Sprave { public class SpravaImage { public byte[] ImageData { get; set; } public string ImageMimeType { get; set; } } }

Listing 2.- Kod koji se nalazi unutar sloja Model

Page 57: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

57

6.5.2.2. Klase repository

Klase ovog sloja sadrže mehanizme za aktivan rad sa bazom podataka kroz konekciju, SQL upite

i slično.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fitness.Oprema.Model.Entities.Sprave { public interface ISpravaRepository { List<Sprava> ReadAll(); void Update(Sprava entity); void Create(Sprava entity); void Delete(int id); } }

using Fitness.Oprema.Model.Entities.Marka; using Fitness.Oprema.Model.Entities.TIp; using Fitness.Oprema.Model.Entities.Sprave; using System; using System.Collections.Generic; using System.Configuration; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fitness.Oprema.Repository.Sprave { public class SpravaRepository : ISpravaRepository { private string _connectionString; public SpravaRepository() { _connectionString = ConfigurationManager.ConnectionStrings["OpremaConnectionString"].ConnectionString; } public List<Sprava> ReadAll() { List<Sprava> sprave = new List<Sprava>(); string queryStringSprava = "SELECT p.SpravaId, p.Ime, p.Opis, p.Velicina, p.Cena , p.ImageData, p.ImageMimeType, " + " b.MarkaId, b.Ime, " + " c.TipId, c.Ime " +

Page 58: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

58

"FROM dbo.T_SPRAVA p, dbo.T_Marka b, dbo.T_Tip c " + "WHERE p.MarkaId = b.MarkaId AND p.TipId = c.TipId"; string queryStringSpravaImages = "SELECT SpravaId, ImageData, ImageMimeType FROM dbo.T_SPRAVA_IMAGE WHERE SpravaId = @SpravaId"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryStringSprava; connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Sprava sprava; while (reader.Read()) { sprava = new Sprava(); sprava.SpravaId = Int32.Parse(reader[0].ToString()); sprava.Ime = reader[1].ToString(); sprava.Opis= reader[2].ToString(); sprava.Velicina = reader[3].ToString(); sprava.Cena = Decimal.Parse(reader[4].ToString()); sprava.SpravaImage = new SpravaImage(); sprava.SpravaImage.ImageData = string.IsNullOrEmpty(reader[5].ToString()) ? null : (byte[])reader[5]; sprava.SpravaImage.ImageMimeType = reader[6].ToString(); sprava.Marka = new Oprema(); sprava.Marka.MarkaId = Int32.Parse(reader[7].ToString()); sprava.Marka.Ime = reader[8].ToString(); sprava.Tip = new Tip(); sprava.Tip.TipId = Int32.Parse(reader[9].ToString()); sprava.Tip.Ime = reader[10].ToString(); sprave.Add(sprava); } } foreach (Sprava sprava in sprave) { sprava.SpravaImages = new List<SpravaImage>(); SqlCommand commandSpravaImage = connection.CreateCommand(); commandSpravaImage.CommandText = queryStringSpravaImages; commandSpravaImage.Parameters.Add(new SqlParameter("@SpravaId", sprava.SpravaId)); using (SqlDataReader reader = commandSpravaImage.ExecuteReader()) { while (reader.Read()) { SpravaImage spravaImage = new SpravaImage(); spravaImage.ImageData = (byte[])reader[1]; spravaImage.ImageMimeType = reader[2].ToString(); sprava.SpravaImages.Add(spravaImage); }

Page 59: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

59

} } } return sprave; } public void Update(Sprava entity) { string updateSpravaSql = "UPDATE T_SPRAVA SET Ime = @Ime, Opis = @Opis, Cena= @Cena," + "Velicina = @Velicina, MarkaId = @MarkaId, TipId = @TipId, ImageData = @ImageData, ImageMimeType = @ImageMimeType " + "WHERE SpravaId = @SpravaId;"; string deleteSpravaImageSql = "DELETE T_SPRAVA_IMAGE WHERE SpravaId = @SpravaId;"; string insertSpravaImageSql = "INSERT INTO T_SPRAVA_IMAGE (SpravaId, ImageData, ImageMimeType) " + "VALUES (@SpravaId, @ImageData, @ImageMimeType)"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand commandSprava = connection.CreateCommand(); commandSprava.CommandText = updateSpravaSql; commandSprava.Parameters.Add(new SqlParameter("@SpravaId", entity.SpravaId)); commandSprava.Parameters.Add(new SqlParameter("@Ime", entity.Ime)); commandSprava.Parameters.Add(new SqlParameter("@Opis", entity.Opis)); commandSprava.Parameters.Add(new SqlParameter("@Velicina", entity.Velicina)); commandSprava.Parameters.Add(new SqlParameter("@Cena", entity.Cena)); commandSprava.Parameters.Add(new SqlParameter("@MarkaId", entity.Marka.MarkaId)); commandSprava.Parameters.Add(new SqlParameter("@TipId", entity.Tip.TipId)); commandSprava.Parameters.Add(new SqlParameter("@ImageData", entity.SpravaImage.ImageData)); commandSprava.Parameters.Add(new SqlParameter("@ImageMimeType", entity.SpravaImage.ImageMimeType)); connection.Open(); commandSprava.ExecuteNonQuery(); SqlCommand commandDeleteSpravaImages = connection.CreateCommand(); commandDeleteSpravaImages.CommandText = deleteSpravaImageSql; commandDeleteSpravaImages.Parameters.Add(new SqlParameter("@SpravaId", entity.SpravaId)); commandDeleteSpravaImages.ExecuteNonQuery(); SqlCommand commandInsertSpravaImages = connection.CreateCommand(); commandInsertSpravaImages.CommandText = insertSpravaImageSql; foreach (SpravaImage spravaImage in entity.SpravaImages) { commandInsertSpravaImages.Parameters.Clear(); commandInsertSpravaImages.Parameters.Add(new SqlParameter("@SpravaId", entity.SpravaId)); commandInsertSpravaImages.Parameters.Add(new SqlParameter("@ImageData", spravaImage.ImageData)); commandInsertSpravaImages.Parameters.Add(new

Page 60: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

60

SqlParameter("@ImageMimeType", spravaImage.ImageMimeType)); commandInsertSpravaImages.ExecuteNonQuery(); } } } public void Create(Sprava entity) { string insertSpravaSql = "INSERT INTO T_SPRAVA (Ime, Opis, Velicina, Cena, MarkaId, TipId, ImageData, ImageMimeType) " + "VALUES (@Ime, @Opis, @Velicina, @Cena, @MarkaId, @TipId, @ImageData, @ImageMimeType); " + "SELECT CAST(SCOPE_IDENTITY() AS INT);"; string insertSpravaImageSql = "INSERT INTO T_SPRAVA_IMAGE (SpravaId, ImageData, ImageMimeType) " + "VALUES (@SpravaId, @ImageData, @ImageMimeType)"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand commandSprava = connection.CreateCommand(); commandSprava.CommandText = insertSpravaSql; commandSprava.Parameters.Add(new SqlParameter("@Ime", entity.Ime)); commandSprava.Parameters.Add(new SqlParameter("@Opis", entity.Opis)); commandSprava.Parameters.Add(new SqlParameter("@Velicina", entity.Velicina)); commandSprava.Parameters.Add(new SqlParameter("@Cena", entity.Cena)); commandSprava.Parameters.Add(new SqlParameter("@MarkaId", entity.Marka.MarkaId)); commandSprava.Parameters.Add(new SqlParameter("@TipId", entity.Tip.TipId)); commandSprava.Parameters.Add(new SqlParameter("@ImageData", entity.SpravaImage.ImageData)); commandSprava.Parameters.Add(new SqlParameter("@ImageMimeType", entity.SpravaImage.ImageMimeType)); connection.Open(); int insertedId = (int)commandSprava.ExecuteScalar(); SqlCommand commandSpravaImage = connection.CreateCommand(); commandSpravaImage.CommandText = insertSpravaImageSql; foreach (SpravaImage spravaImage in entity.SpravaImages) { commandSpravaImage.Parameters.Clear(); commandSpravaImage.Parameters.Add(new SqlParameter("@SpravaId", insertedId)); commandSpravaImage.Parameters.Add(new SqlParameter("@ImageData", spravaImage.ImageData)); commandSpravaImage.Parameters.Add(new SqlParameter("@ImageMimeType", spravaImage.ImageMimeType)); commandSpravaImage.ExecuteNonQuery(); } } } public void Delete(int id) { string deleteSql = "DELETE T_SPRAVA WHERE SpravaId = @SpravaId;" + "DELETE T_SPRAVA_IMAGE WHERE SpravaId = @SpravaId;";

Page 61: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

61

using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = deleteSql; command.Parameters.Add(new SqlParameter("@SpravaId", id)); connection.Open(); command.ExecuteNonQuery(); } } } }

Listing3.- Prikaz koda u sloju za upravljanje bazom podataka

6.5.2.3. Klasa poslovnih pravila

Klase ovog sloja sadrže poslovna pravila i matematičke metode kojima se određuje popust nekog

proizvoda.

namespace Fitness.Oprema.Model.Entities.Korpa { public class Popust : IPopust { public decimal GetTotalCostAfterApplyingDiscountTo(Popust popust) { if (popust.ComputeTotalValue() > 5000) return popust.ComputeTotalValue() - 500m; if (popust.ComputeTotalValue() > 2000) return popust.ComputeTotalValue() - 200m; else return popust.ComputeTotalValue(); } } }

Listing 4.- Kod unutar klase Popust

Page 62: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

62

6.5.2.4. Klasa poslovnih objekta

Unutar ovog sloja nalaze se klase sa klase koja se koristi za korpu i klasa operatera dobavljača.

using Fitness.Oprema.Model.Entities.Oprema; using System.Collections.Generic; using System.Linq; namespace Fitness.Oprema.Model.Entities.Korpa { public class Popust { private List<PopustLine> lineCollection = new List<PopustLine>(); private IPoputStrategija Popust; public void SetPopustStrategiju(string discountType) { Popust = PopustFaktor.GetDiscount(discountType); } public void AddItem(Oprema oprema, int quantity) { PopustLine line = lineCollection .Where(p => p.Oprema.OpremaId == oprema.OpremaId) .FirstOrDefault(); if (line == null) { lineCollection.Add(new PopustLine { Oprema = oprema, Quantity = quantity }); } else { line.Quantity += quantity; } } public void RemoveLine(Oprema oprema) { lineCollection.RemoveAll(l => l.Oprema.OpremaId == oprema.OpremaId); } public decimal ComputeTotalValue() { return lineCollection.Sum(e => e.Oprema.Price * e.Quantity); } public decimal ComputeTotalValueAfterPopust() { return Popust.GetTotalCostAfterApplyingPopustTo(this);

Page 63: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

63

} public void Clear() { lineCollection.Clear(); } public IEnumerable<Popust> get { return lineCollection; } } } public class PopustLine { public Oprema Oprema { get; set; } public int Quantity { get; set; } } }

Listing 5.- Kod unutar klase Korpa

namespace Fitness.Oprema.Model.Entities.Dostava { public class AksDelivery : IDostavaOperator { public decimal getDeliveryPrice() { return 250; } public string getDeliveryTime() { return "3 radna dana"; } } }

namespace Fitness.Oprema.Model.Entities.Dostava { public class BexDelivery : IDostavaOperator { public decimal getDeliveryPrice() { return 300M; } public string getDeliveryTime() { return "2 radna dana"; } } } namespace Fitness.Oprema.Model.Entities.Dostava

Page 64: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

64

{ public static class DostavaFaktor { public static IDostavaOperator CreateDeliveryOperator(string operatorName) { if (operatorName == "Aks") return new AksDelivery(); else return new BexDelivery(); } } } namespace Fitness.Oprema.Model.Entities.Dostava { public interface IDostavaOperator { decimal getDeliveryPrice(); string getDeliveryTime(); } }

namespace Fitness.Oprema.Model.Entities.Dostava { public class DostavaDetails { public string Address { get; set; } public string City { get; set; } public string Zip { get; set; } public string Country { get; set; } } }

Listing 6.- Kod unutar klase shipping

6.5.2.5. Biblioteka klasa servisa za mapiranje

Kod unutar klase služi za transformaciju poruka između prezentacionog sloja i sloja modela.

using Fitness.Oprema.AppService.Messages.Sprave; using Fitness.Oprema.Model.Entities.Marka; using Fitness.Oprema.Model.Entities.Tip; using Fitness.Oprema.Model.Entities.Sprave; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fitness.Oprema.AppService.Mappings.Sprave { public static class SpravaMapper { public static Sprava ConvertToSprava(this CreateSpravaRequest createRequest) {

Page 65: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

65

Sprava sprava = new Sprava(); sprava.Ime = createRequest.Ime; sprava.Opis = createRequest.Opis; sprava.Velicina = createRequest.Velicina; sprava.Marka = new Marka() { MarkaId = createRequest.MarkaId }; sprava.Tip = new Tip() { TipId = createRequest.TipId }; sprava.SpravaImage = createRequest.SpravaImage; sprava.SpravaImages = createRequest.SpravaImages; return sprava; } public static Sprava ConvertToSprava(this UpdateSpravaRequest updateRequest) { Sprava sprava = new Sprava(); sprava.SpravaId = updateRequest.SpravaId; sprava.Ime = updateRequest.Ime; sprava.Opis = updateRequest.Opis; sprava.Velicina = updateRequest.Velicina; sprava.Marka = new Marka() { MarkaId = updateRequest.MarkaId }; sprava.Tip = new Tip() { TipId = updateRequest.TipId }; sprava.SpravaImage = updateRequest.SpravaImage; sprava.SpravaImages = updateRequest.SpravaImages; return sprava; } } }

Listing 7.- Kod unutar klase Sprav.Mapper

6.5.2.6. Klase web servisa

Unutar ovih klasa se na nalazi kod koji nam daje mogućnost da se povežemo sa URL-om

dobavljača, kako bismo omogućili on-line usklađivanje podataka o robi sa web aplikacijom za

prodaju proizvoda.

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Data; namespace WebService1 { /// <summary> /// Summary description for Service1 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment

Page 66: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

66

the following line. // [System.Web.Script.Services.ScriptService] public class Service1 : System.Web.Services.WebService { // procedura koja na osnovu naziva robe vraca naziv proizvodjaca [WebMethod] public string DajNazivProizvodjaca(string NazivRobe) { string NazivProizvodjaca = ""; DataSet dsProizvodjaci = new DataSet(); dsProizvodjaci.ReadXml(Server.MapPath("~/") + "XML/Proizvodjaci.XML"); // filtriranje dataset-a DataRow[] result = dsProizvodjaci.Tables[0].Select("NazivRobe='" + NazivRobe + "'"); NazivProizvodjaca = result[0].ItemArray[0].ToString(); return NazivProizvodjaca; } // procedura koja na osnovu naziva robe vraca CENU ROBE [WebMethod] public string DajCenuRobe(string NazivRobe) { string CenaRobe = ""; DataSet dsProizvodjaci = new DataSet(); dsProizvodjaci.ReadXml(Server.MapPath("~/") + "XML/Roba.XML"); // filtriranje dataset-a DataRow[] result = dsProizvodjaci.Tables[0].Select("NazivRobe='" + NazivRobe + "'"); CenaRobe = result[0].ItemArray[2].ToString(); return CenaRobe; } // procedura koja vraca detaset sa nazivima robe [WebMethod] public DataSet DajDataSetNazivaRoba() { DataSet dsProizvodjaci = new DataSet(); dsProizvodjaci.ReadXml(Server.MapPath("~/") + "XML/Roba.XML"); return dsProizvodjaci; } [WebMethod] public DataSet DajDataSetNazivaProizvodjaca () { DataSet dsProizvodjaci = new DataSet(); dsProizvodjaci.ReadXml(Server.MapPath("~/") + "XML/Proizvodjaci.XML"); return dsProizvodjaci; }

Listing 8.- Kod unutar klase WebServise1

Page 67: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

67

6.5.2.7. Mogućnost poziva web servisa u okviru aplikacije

Web servis je zapravo on-line bibliteka klasa i koristi se putem aliasa koji se daje za URL dalje

kao da je naziv biblioteke klasa. Nadalje, instanciramo objekat klase iz web servisa i koristimo

metode. U nastavku je dat kod koji prikazuje metodu ReadAll iz sloja Repository za sprave.

public List<Sprava> ReadAll() { List<Sprava> sprave = new List<Sprava>(); string queryStringSprava = "SELECT p.SpravaId, p.Ime, p.Opis, p.Velicina , p.ImageData, p.ImageMimeType, " + " b.MarkaId, b.Ime, " + " c.TipId, c.Ime " + "FROM dbo.T_SPRAVA p, dbo.T_MARKA b, dbo.T_TIP c " + "WHERE p. MarkaId = b. MarkaId AND p.TipId = c.TipId "; string queryStringSpravaImages = "SELECT SpravaId, ImageData, ImageMimeType FROM dbo.T_SPRAVA_IMAGE WHERE SpravaId = @SpravaId"; using (SqlConnection connection = new SqlConnection(_connectionString)) { SqlCommand command = connection.CreateCommand(); command.CommandText = queryStringSprava; connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { Sprava sprava; while (reader.Read()) { sprava = new Sprava(); sprava.SpravaId = Int32.Parse(reader[0].ToString()); sprava.Ime = reader[1].ToString(); sprava.Opis= reader[2].ToString(); sprava.Velicina = reader[3].ToString(); sprava.SpravaImage = new SpravaImage(); sprava.SpravaImage.ImageData = string.IsNullOrEmpty(reader[4].ToString()) ? null : (byte[])reader[4]; sprava.SpravaImage.ImageMimeType = reader[5].ToString(); sprava.Marka = new Marka(); sprava.Marka.MarkaId = Int32.Parse(reader[6].ToString()); sprava.Marka.Ime = reader[7].ToString(); sprava.Tip = new Tip(); sprava.Tip.TipId = Int32.Parse(reader[8].ToString()); sprava.Tip.Ime = reader[9].ToString(); sprave.Add(sprava); } } foreach (Sprava sprava in sprave)

Page 68: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

68

{ sprava.SpravaImages = new List<SpravaImage>(); SqlCommand commandSpravaImage = connection.CreateCommand(); commandSpravaImage.CommandText = queryStringSpravaImages; commandSpravaImage.Parameters.Add(new SqlParameter("@SpravaId", sprava.SpravaId)); using (SqlDataReader reader = commandSpravaImage.ExecuteReader()) { while (reader.Read()) { SpravaImage spravaImage = new SpravaImage(); spravaImage.ImageData = (byte[])reader[1]; spravaImage.ImageMimeType = reader[2].ToString(); sprava.SpravaImages.Add(spravaImage); } } } } return sprave; }

Listing 9.- prikaz koda unutra klase Sprava u repoitory sloju

Izmenjeni kod kojim se prikazuje mogućnost poziva web servisa za preuzimanje podataka,

umesto iz baze podataka, dat je u nastavku.

U projektu smo dodali „Service reference“ i URL-u web servisa dodelili naziv, tj. Alias.

Slika 52. Izgled solution explorera nakon dodavanja web servisa

Page 69: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

69

U programskom kodu, pozivanje i korišćenje web servisa prikazano je u nastavku:

public List<Proizvodjac> ReadAll() { List<Proizvodjac> proizvodjac = new List< Proizvodjac >(); // Pozivanje web servisa koji obezbedjuje podatke VebServis.Service1 objVebServis = new VebServis.Service1(); System.Data.DataSet dsProizvodjaci = objVebServis.DajDataSetNazivaProizvodjaca (); Int brojzapisa = dsProizvodjaci.Tables[0].Rows.Count;

Proizvodjac objProizvodjac; For (i=0; i<=brojzapisa; i++) { objProizvodjac = new Proizvodjac (); sprava.ProizvodjacId = Int32.Parse(reader[0].ToString()); sprava.Ime = reader[1].ToString(); sprave.Add(sprava); }

Listing 10.- Prikaz koda koji se implementira za web servis

Kolekcija objekata klase Proizvodjac u formi liste je spremna za koriscenje kod punjenja combo

boxa npr. na formi za unos nove robe.

6.5.2.8. Klase i html pogledi unutar prezentacionog sloja

Unutar ovog sloja se nalaze klase koje nam omogućavaju prikaz podataka koje korisnik putem

poruka zahteva od aplikacije. Takođe, date su i klase kontrolera i html osnova pogleda.

Model klasa sadrži objekte istoimene klase unutar model sloja sa get i set metodom. Kontroler

zatim preuzima vrednosti iz datog modela na zahtev korisnika i šalje podatke pogledu koji ih

ispisuje.

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Fitness.EStore.Web.Areas.Products.Models { public class AllSpravePageViewModel { public List<SpravaViewModel> SpravaViewModels { get; set; } public bool Success { get; set; } public string ErrorMessage { get; set; } } }

Listing 11.-Kod unutar klase Model

Page 70: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

70

using Fitness.Oprema.AppService.Abstractions.Sprave; using Fitness.Oprema.AppService.Messages.Sprave; using Fitness.Oprema.Model.Entities.Sprave; using Fitness.Oprema..Web.Areas.Products.Models; using Fitness.Oprema.Web.Mappings.Sprave; using Fitness.Oprema.Web.Models.Sprave; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace Fitness.Oprema.Web.Areas.Products.Controllers { public class SpravaController : Controller { private ISpravaService spravaService; public SpravaController(ISpravaService spravaService) { this.spravaService = spravaService; } // GET: Products/Product public ActionResult Index() { FindAllSpraveResponse response = new FindAllSpraveResponse(); response = spravaService.FindAllSprave(); AllSpravePageViewModel model = new AllSpravePageViewModel(); model.SpravaViewModels = response.Sprave.ConvertToSpravaViewModelList(); model.Success = response.Success; model.ErrorMessage = response.Message; return View(model); } public FileContentResult GetImage(int spravaId) { SpravaViewModel spravaViewModel = spravaService.FindAllSprave().Sprave. Find(x => x.SpravaId == spravaId).ConvertToSpravaViewModel(); if (spravaViewModel != null) { return File(spravaViewModel.SpravaImageViewModel.ImageData, spravaViewModel.SpravaImageViewModel.ImageMimeType); } else { return null; }}}}

Listing 12.- Kod unutar klase SpravaController

@model Fitness.Oprema.Web.Areas.Products.Models.AllSpravePageViewModel

Page 71: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

71

@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Sprave</h2> <hr /> <form class="navbar-form navbar-fixed-left" role="search"> <div class="form-group"> <input type="text" class="form-control" placeholder="Search"> </div> <button type="submit" class="btn btn-default">Submit</button> </form> @if (Model.Success) { <div class="row"> <div class="col-md-12"> @foreach (var p in Model.SpravaViewModels) { <div class="col-md-4"> <div class="thumbnail"> <h4 class="text-center"><span class="label label-info">@p.BrandName</span></h4> <img src="@Url.Action("GetImage", "Sprava", new { p.SpravaId, area = "Products" })" style="height: 250px" /> <div class="caption"> <div class="row"> <div class="col-md-6"> <h3>@p.Ime </h3> </div> <div class="col-md-6 price"> </div> </div> <div class="row"> <div class="col-md-6"> <a class="btn btn-primary btn-block"><span class="glyphicon glyphicon-list"></span> Više</a> </div> </div> </div> </div> </div> } </div> </div> } else { <div class="row"> <div class="col-md-12"> <div class="alert alert-danger"> <a href="#" class="close" data-dismiss="alert" aria-

Page 72: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

72

label="close">&times;</a> <strong>Greška!</strong> @Model.ErrorMessage </div> </div> </div> }

Listing 13.- Kod unutar Index pogleda u oprema, area oprema

Page 73: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

73

7. Zaključak

Prilikom izrade ovog diplomskog rada, rađena je aplikacija za online prodaju fitness opreme.

Obuhvaćen je razvoj aplikacije od specifikacije do implementacije svakog sloja pojedinačno.

Pojedini delovi koda su dati kao mogućnost, koja ilustruje način daljeg razvoja aplikacije. Ovo je

ilustrativni primer urađene višeslojne aplikacije.

Krenuli smo od sloja za upravljanje bazom podataka gde smo ispisali SQL upite koje smo dalje

koristili kako bi komunicirali sa bazom i preuzeli podatke koji su nam potrebni. Zatim smo

kreirali sloj poslovne logike sa poslovnim objektima i pravilima (popusti, dostava itd). Sledeći

sloj je sloj web servisa u kojem smo kreirali poruke i odgovore na zahtev od strane korisnika u

sloju prezentacione logike. Takođe ovde smo koristili mappere za transformaciju odgovora,

interfejs i imprementaciju datog interfejsa. Zatim prelazimo u poslednji sloj aplikacije a to je

prezentacioni sloj. U ovom sloju se nalaze samo minimalna preuzeta svojstva od sloja modela i

ovaj sloj je interfejs koji korisnik vidi. Kreirali smo dve „area“ koje su nam dale mogućnost koji

deo će videti svi korisnici a koji samo sa dopuštenjem (personalizovano u odnosu na prijavljenog

korisnika).

Ova aplikacija ima potencijala da se proširi i da korisnicima još potpuniju uslugu. Može se

kreirati kartica koje bi povlačile slike iz kartice sprave i opreme u kombinaciji da bi se videlo

neophodno za trening određene grupe. Jedna stvar na kojoj se takođe može raditi je odvajanje

tehnologija baze podataka od samih tabela.

Za višeslojnu aplikaciju je od bitnog značaja da može da se isporuči na druge frameworke stoga

od velikog značaja je izučiti dostupne frameworke poput ReSharper-aa ili Rider-a.

Page 74: Diplomski rad - tfzr.uns.ac.rs · Diplomski rad 6 Proces razvoja softverskih proizvoda, pa tako i Web aplikacija je skup metoda, aktivnosti, prakse i automatizovanih alata koje programeri

Diplomski rad

74

8. Literatura

1. file:///C:/Users/Win7/Downloads/www2_5._soa_skraceno.pdf

2. https://www.scribd.com/document/120583811/Servisno-Orjentisana-Arhitektura-Skripta

3. https://www.tutorialspoint.com/mvc_framework/mvc_framework_introduction.htm

4. http://www.c-sharpcorner.com/blogs/principals-of-service-oriented-architecture-soa1

5. http://www.sbs.rs/servisno-orijentisana-arhitektura-soa

6. https://developer.xamarin.com/guides/xamarin-forms/cloud-services/consuming/asmx/

7. http://opusteno.rs/teretana-f163/sta-je-to-zapravo-fitnes-t22172.html

8. https://www.maxcdn.com/one/visual-glossary/web-application/

9. https://docs.oracle.com/cd/E41633_01/pt853pbh1/eng/pt/tsvt/task_ServerConfigurationO

ptions-4d7ed6.html

10. http://www.maturskiradovi.net/forum/attachment.php?aid=1167

11. http://poincare.matf.bg.ac.rs/~milena/msnr/2016/08/06_KonceptiUpravljanjaProjektimaC

erovinaZivkovic.pdf

12. http://project-management-srbija.com/project-management/dva-osnovna-principa-

upravljanja-projektima

13. http://www.sportskitrening.hr/motivacija-postavljanje-ciljeva/

14. https://mojforum.net/index.php?topic=568.0

15. https://www.webprogramiranje.org/web-servisi-osnove/

16. http://terasolunaorg.github.io/guideline/5.2.0.RELEASE/en/ArchitectureInDetail/WebSer

viceDetail/REST.html

17. http://www.rapidvaluesolutions.com/web-services-data-transfer-frameworks-for-mobile-

enabling-applications/

18. http://coddu.com/microsoft-launches-visual-studio-2015/

19. https://raf.edu.rs/citaliste/programiranje/4079-sta-je-xa-net-xa

20. https://www.tutorialspoint.com/asp.net_mvc/asp.net_mvc_pattern.htm

21. https://msdn.microsoft.com/en-us/library/hh272686%28v=vs.103%29.aspx

22. https://www.hanselman.com/blog/VisualStudio2015ReleasedPlusASPNET5Roadmap.as

px

23. http://www.bktvnews.com/zdravlje/fitnes/uvek-birajte-kvalitetnu-sportsku-obucu-i-

opremu-jer-je-to-podjednako-bitno-koliko-i-trening/73676

24. http://www.bktvnews.com/zdravlje/fitnes/uvek-birajte-kvalitetnu-sportsku-obucu-i-

opremu-jer-je-to-podjednako-bitno-koliko-i-trening/73676

25. http://www.linuxjournal.com/article/3508

26. http://www.vps.ns.ac.rs/Materijal/mat22111.pdf

27. https://www.techopedia.com/definition/467/two-tier-architecture

28. Diplomski rad, Jovana Josić ”Online prodaja cveća”, 2017.

29. http://www.webservicex.net/globalweather.asmx