Sveučilište Jurja Dobrile u Puli Odjel za ekonomiju i turizam «Dr. Mijo Mirković» INGRID HRGA PRIMJER IZRADE PROTOTIPA WEB SJEDIŠTA Završni rad Pula, 2013. Sveučilište Jurja Dobrile u Puli Odjel za ekonomiju i turizam «Dr. Mijo Mirković» INGRID HRGA PRIMJER IZRADE PROTOTIPA WEB SJEDIŠTA Završni rad JMBAG: 0067212898, izvanredni student Studijski smjer: Poslovna informatika Predmet: Elektroničko poslovanje Mentor: izv.prof.dr.sc. Vanja Bevanda Pula, veljača 2013. Sadržaj 1. UVOD ..................................................................................................................... 4 2. WEB SJEDIŠTA, WEB APLIKACIJE .................................................................... 6 2.1. Definiranje web aplikacija................................................................................................ 6 2.2. Karakteristike web aplikacija .......................................................................................... 7 2.3. Kategorije web aplikacija prema fazama razvoja Weba .............................................. 9 2.3.1. Web 1.0 ...................................................................................................................... 10 2.3.2. Web 2.0 ...................................................................................................................... 10 2.3.3. Mobilni Web .............................................................................................................. 10 2.3.4. Semantički Web ......................................................................................................... 10 2.3. Arhitektura web aplikacija ............................................................................................ 11 2.5. Tehnologije....................................................................................................................... 12 2.5.1. HTTP .......................................................................................................................... 12 2.5.2. HTML......................................................................................................................... 13 2.5.3. CSS............................................................................................................................. 15 2.5.4. JavaScript ................................................................................................................... 16 2.5.5. AJAX.......................................................................................................................... 18 2.5.6. PHP............................................................................................................................. 20 2.5.7. Baze podataka ............................................................................................................ 21 2.5.7.1. MySQL................................................................................................................ 21 3. RAZVOJ WEB APLIKACIJA ............................................................................... 24 3.1. Planiranje i utvrđivanje zahtjeva .................................................................................. 25 3.2. Dizajn................................................................................................................................ 26 3.2.1. Upotrebljivost............................................................................................................. 26 3.2.2. Dizajn prezentacije ..................................................................................................... 27 3.2.2.1. Raspored elemenata............................................................................................. 27 3.2.2.2. Tipografija ........................................................................................................... 29 3.2.2.3. Boje ..................................................................................................................... 29 3.2.3. Dizajn navigacije........................................................................................................ 30 3.2.3.1. Kategorije navigacije........................................................................................... 30 3.2.3.2. Navigacijski mehanizmi...................................................................................... 31 3.2.4. Dizajn interakcije ....................................................................................................... 32 3.2.5. Modeliranje podataka ................................................................................................. 34 3.2.5.1. Konceptualno modeliranje .................................................................................. 34 3.2.5.2. Logičko modeliranje ........................................................................................... 35 3.2.5.3. Fizičko modeliranje............................................................................................. 36 3.3. Implementacija ................................................................................................................ 37 3.3.1. Implementacija prezentacijskog sloja ........................................................................ 37 3.3.2. Implementacija aplikacijskog sloja ............................................................................ 38 1 3.3.3. Implementacija podatkovnog sloja............................................................................. 38 3.4. Testiranje ......................................................................................................................... 38 3.4.1. Testiranje poveznica................................................................................................... 39 3.4.2. Testiranje kompatibilnosti.......................................................................................... 40 3.4.3. Testiranje upotrebljivosti............................................................................................ 40 3.4.4. Testiranje performansi................................................................................................ 40 3.4.5. Testiranje sigurnosti ................................................................................................... 41 3.5. Objavljivanje, održavanje i evolucija............................................................................ 41 3.5.1. Objavljivanje .............................................................................................................. 41 3.5.1.1. Odabir web poslužitelja i fizičkog smještaja web sjedišta .................................. 42 3.5.1.2. Registracija domene ............................................................................................ 42 3.5.2. Održavanje i evolucija................................................................................................ 43 4. UPRAVLJANJE PORTFELJEM .......................................................................... 44 4.1. Moderna portfolio teorija ............................................................................................... 44 4.2. Jednoindeksni model....................................................................................................... 46 4.3. Elton-Gruber metoda konstruiranja optimalnog portfelja......................................... 48 5. PROCES IZRADE PROTOTIPA WEB APLIKACIJE ZA UPRAVLJANJE PORTFELJEM ......................................................................................................... 50 5.1. Planiranje i utvrđivanje zahtjeva .................................................................................. 50 5.1.1. Pozadina projekta ....................................................................................................... 50 5.1.2. Opis projekta .............................................................................................................. 50 5.1.3. Poslovni model........................................................................................................... 50 5.1.4. Pokazatelji uspjeha ..................................................................................................... 50 5.1.5. Ciljni korisnici............................................................................................................ 51 5.1.7. Zahtjevi....................................................................................................................... 51 5.1.8. Arhitektura ................................................................................................................. 53 5.2. Dizajn................................................................................................................................ 53 5.2.1. Konceptualni model podataka .................................................................................... 53 5.2.2. Wireframe modeli ...................................................................................................... 55 5.2.3. Relacijski model podataka ......................................................................................... 58 5.2.4. Grafički dizajn............................................................................................................ 62 5.2.4.1. Raspored elemenata............................................................................................. 62 5.2.4.2. Tipografija ........................................................................................................... 62 5.2.4.3. Paleta boja ........................................................................................................... 63 5.2.5. Navigacija................................................................................................................... 63 5.2.6. Interakcija................................................................................................................... 65 5.3. Implementacija ................................................................................................................ 67 5.3.1. Implementacija sučelja ............................................................................................... 67 5.3.2. Implementacija funkcionalnosti "izvršiti nalog"........................................................ 70 5.4.Testiranje .......................................................................................................................... 76 2 6. PRIMJERI KORIŠTENJA PROTOTIPA WEB APLIKACIJE ZA UPRAVLJANJE PORTFELJEM ......................................................................................................... 78 6.1. Pregledavanje portfelja i otvaranje naloga................................................................... 78 6.2. Kreiranje novog portfelja ............................................................................................... 80 6.3. Izmjena portfelja ............................................................................................................. 81 6.4. Usporedba dionica ili portfelja....................................................................................... 84 6.5. Izračunavanje optimalnog portfelja .............................................................................. 85 6.6. Pregledavanje, izvršavanje ili opoziv naloga ................................................................ 88 6.7. Upravljanje računom...................................................................................................... 89 6.8. Pregledavanje dionica i podataka o trgovanju ............................................................. 89 7. ZAKLJUČAK........................................................................................................ 91 LITERATURA........................................................................................................... 92 POPIS SLIKA........................................................................................................... 94 3 1. Uvod Razvoj Interneta i sa njime povezanih tehnologija iz temelja je promijenio način kako ljudi rade, žive, komuniciraju, provode slobodno vrijeme. Otkad je 1991. stvoren1, naša ovisnost o Webu i web aplikacijama kontinuirano raste. Zamišljen kao medij za razmjenu dokumenata i lakšu komunikaciju znanstvenika u CERN-u2, Web svoj prvi procvat i početak nezaustavljivog rasta doživljava sredinom 90-ih godina 20. stoljeća kada je zbog ubrzanog razvoja i padanja cijena informatičke opreme ona postala dostupna širem krugu ljudi, a danas je već nezamisliv bilo koji segment ljudskog djelovanja bez Interneta i onoga što Internet omogućava3. Cilj ovog rada sastoji se u prikazu procesa razvoja web sjedišta kroz njegove osnovne faze i to najprije sa teorijskog aspekta a zatim kroz praktični primjer. Rad je koncipiran na način da se, nakon uvoda, kroz tri poglavlja postavlja teorijska podloga koja se zatim kroz sljedeća dva pogavlja konkretizira prikazom procesa izrade prototipa web sjedišta. Dok teorijski dio uglavnom prikazuje opće principe primjenjive u razvoju bilo kojeg web sjedišta, za praktičan dio odabrana je izrada web aplikacije za upravljanje portfeljem. Drugo poglavlje započinje obrazlaganjem razlika između pojmova web sjediša i web aplikacija, iza čega slijedi definiranje web aplikacija te navođenje njihovih ključnih karakteristika. Budući da web aplikacije objedinjuju karakteristike informacijski orijentiranih web sjedišta s jedne strane te tradicionalnih aplikacija s druge strane, to se i prikaz karakteristika vrši putem njihove međusobne usporedbe. Osim poznavanja njihovih općih karakteristika, za bolje razumijevanje web aplikacija potrebno je poznavati i tehnologije koje se primjenjuju u njihovom razvoju. Stoga se u nastavku poglavlja daje njihov kratki pregled koji je, s obzirom na njihovu brojnost i raznovrsnost, ipak ograničen samo na one doista upotrijebljene u izradi prototipa. 1 Tim Berners-Lee je 6. kolovoza 1991. publicirao sustav za dijeljenje i diseminaciju znanstevnih podataka i informacija koji je prozvao World Wide Web (skraćeno Web) (Rossi et al. 2008). 2 CERN (European Organization for Nuclear Research) jedan je od najvećih i najpriznatijih svjetskih istraživačkih laboratorija koji se bavi funamentalnom fizikom – pitanjima od čega se svemir sastoji i kako funkcionira. Nalazi se na francusko-švicarskoj granici zapadno od Ženeve. 3 Potrebno je razlikovati Internet i Web – Internet je globalna mreža koja povezuje računala i računalne mreže dok je Web jedan od servisa Interneta koji omogućava razmjenu hipertekstualnih dokumenata. 4 Treće poglavlje daje opći prikaz procesa razvoja web aplikacija prema ključnim aktivnostima koje obuhvaćaju: planiranje i utvrđivanje zahtjeva, dizajn, implementaciju, testiranje, održavanje i evoluciju. Budući da je namjena aplikacije upravljanje portfeljem, a što obuhvaća i sastavljanje optimalnog portfelja, implementirana je Elton-Gruber metoda konstruiranja optimalnog portfelja temeljena na Sharpeovom jednoindeksnom modelu. Metoda je odabrana prvenstveno zbog jednostavnosti implementacije budući da njezina primjena ne zahtijeva korištenje dodataka u vidu solvera ili sličnog softvera. No, s druge strane uključuje određene pretpostavke koje ju čine neprikladnom za korištenje u stvarnim uvjetima (poput pretpostavke o beskonačnoj djeljivosti dionice, mogućnosti kupnje ili prodaje bilo koje količine dionice u bilo kojem trenutku te zanemarivanja transakcijskih troškova). Sama metoda i osnove upravljanja portfeljem ukratko su prikazani u četvrtom poglavlju. Peto poglavlje prikazuje proces izrade prototipa web aplikacije. Cilj prikaza nije dokumentiranje gotovog rješenja već prikaz postepenih koraka od ideje do realizacije što omogućuje da se ujedno pokaže kako zapravo često postoji odstupanje teorije od prakse. Šesto poglavlje, u konačnici, prikazuje način korištenja implementiranih funkcionalnosti aplikacije. Pri izradi rada korišteni su domaći i strani izvori podataka u vidu knjiga i resursa dostupnih na Internetu (priručnici, članci te podaci o povijesnim cijenama dionica). Od znanstevnih metoda korištene su metoda analize, metoda sinteze, metoda deskripcije i metoda apstrakcije. 5 2. Web sjedišta, web aplikacije Web sjedište može se definirati kao skup međusobno logički povezanih web stranica (Kappel et al. 2006). No, ovakva je definicija preopćenita i ne govori o kompleksnosti koja se skriva iza modernih web sjedišta. Izuzetno brzo širenje broja korisnika Interneta4, povećanje brojnosti uređaja kojima se Internetu pristupa (osim PC-a danas su tu i smartphone uređaji, tablet računala, igrače konzole...), te sve izraženijim zahtjevima korisnika za što jednostavnijim, sigurnijim i prilagodljivijim web sjedištima, doveli su do velikih promjena kako u sadržajima koji se putem Interneta isporučuju tako i u pristupu njihovom razvoju koji je ubrzo postao kompleksan i prepun izazova. U svojim je počecima Web bio poiman isključivo kao informacijski medij s fokusom na samim dokumentima (Kappel et al. 2006). No, razvoj tehnologija i povećanje propusnosti mreža omogućili su najprije dodavanje multimedije, a kasnije i sve veću interaktivnost koja je sad u središte postavila korisnika, transformirajući ga od pasivnog konzumenta u aktivnog kreatora sadržaja. S obzirom da su web sjedišta koja ne uključuju neki od oblika interaktivnosti danas postala prava rijetkost, sve se više govori o web aplikacijama koje korisnicima omogućavaju obavljanje određenih transakcija. Stoga se može reći da je iz informacijskog Web evoluirao u aplikacijski medij (Kappel et al. 2006). 2.1. Definiranje web aplikacija Web aplikacija predstavlja softver baziran na tehnologijama i standardima World Wide Web Consortium-a (W3C)5 koji putem korisničkog sučelja (web preglednika) pruža resurse i servise specifične za Web (Kappel et al. 2006). Iz definicije proizlazi da web aplikaciju čine: • softver • mreža (Internet ili intranet) • tehnologije (HTTP, HTML, JavaScript, PHP,...) • web preglednik No, ono što je zapravo ključno za web aplikacije jest interakcija sa korisnikom. Statične web stranice ne smatraju se web aplikacijama. 4 Broj korisnika Interneta povećao se za 566.4% u razdoblju između 2000. i 2012. godine. World Wide Web Consortium (W3C) je najveća međunarodna organizacija koja se bavi razvojem standarda za Web a među koje spadaju preporuke za (X)HTML, CSS, DOM, SVG i brojne druge. 5 6 2.2. Karakteristike web aplikacija Budući da su web aplikacije takve aplikacije čija se funkcionalnost procesira na web poslužitelju, a zatim putem mreže isporučuje korisniku, one objedinjuju karakteristike informacijski orijentiranih web sjedišta s jedne strane i tradicionalnih aplikacija s druge strane. No, također posjeduju i određene karakteristike koje ih čine jedinstvenima. Usporedba sa informacijskim web sjedištima može se izvršiti s obzirom na (Zambonini 2011): a) ciljeve korisnika b) zahtjeve c) dizajn d) sučelje. a) Dok je kod informacijski orijentiranih web sjedišta cilj korisnika pronalaženje informacija, kod web aplikacija to je obavljanje određenog zadatka. b) Prilikom utvrđivanja zahtjeva web aplikacija naglasak se stavlja na utvrđivanje funkcionalnih zahtjeva6, dok se kod informacijskih web sjedišta naglasak stavlja na utvrđivanju zahtjeva vezanih uz sam sadržaj. c) Struktura na strani funkcionalnosti definira se primarno dizajnom interakcije koji se odnosi na uspostavljanje dijaloga između korisnika i aplikacije. S informacijskog gledišta, strukutura je određena arhitekturom informacija odnosno usklađivanjem elemenata kako bi se korisniku olakšalo razumijevanje sadržaja. d) Dizajn sučelja web aplikacija sastoji se od uspostavljanja odnosa među elementima kako bi se omogućila interakcija korisnika sa funkcionalnošću sustava, dok je kod informacijskih web sjedišta naglasak na navigaciji odnosno skupu elemenata koji omogućavaju korisniku kretanje kroz informacije. S druge strane, karakteristike koje razdvajaju web aplikacije od tradicionalnog softvera mogu se grupirati s obzirom na (Kappel et al. 2006): a) proizvod 6 O zahtjevima će još biti riječi u poglavlju 3.1. 7 b) upotrebu c) razvoj a) proizvod • sadržaj se isporučuje u različitim formatima, često se kreira i mijenja dinamički te postoje visoki zahtjevi za njegovom kvalitetom (uobičajena je krilatica: "Sadržaj je kralj!") • sučelje web aplikacija zasnovano je na hipertekstualnim dokumentima7 koje karakterizira nelinearnost - korisnici se mogu slobodno kretati kroz informacije što predstavlja izazov prilikom njihovog strukturiranja • estetika je izrazito bitna te je podložna trendovima • web aplikacije moraju biti samorazumljive, njihovo korištenje ne treba iziskivati dodatnu dokumentaciju b) upotreba • za razliku od zatvorenih intraneta ili desktop aplikacija, Internet omogućava simultani pristup informacijama i servisima mnogo većem broju nepoznatih korisnika koji se znatno razlikuju s obzirom na kulturu iz koje potječu (društveni kontekst), uređaje kojima pristupaju (tehnički kontekst), lokaciju s koje pristupaju (prirodni kontekst). Premda je ove faktore nemoguće unaprijed predvidjeti niti ih je moguće kontrolirati, izrazito je bitno kontinuirano prilagođavati aplikacije različitm situacijama njihove uporabe odnosno njihovom kontekstu. c) razvoj • razvoj web aplikacija zahtijeva raznovrsna znanja te se odvija u multidisciplinarnim timovima koji dijelove aplikacija razvijaju paralelno • zbog kompetitivnih pritisaka i čestih izmjena zahtjeva životni ciklus8 web aplikacija kraći je od onog tradicionalnog softvera • prilikom razvoja nemoguće je u potpunosti slijediti rigidni plan razvoja te je fleskibilnost prijeko potrebna 7 Osnovne elemente hipertekstualnih dokumenata čine čvorovi (eng. node), poveznice (eng. link) i sidra (eng. anchor). Čvor je jedinica informacije koja se može jedinstveno identificirati. Na Webu to može biti HTML dokument kojem se može pristupiti putem URL-a (Uniform Resource Locator). Poveznica je put od jednog čvora do drugog. Sidro je područje unutar sadržaja čvora koji je izvor ili odredište poveznice (Kappel et al. 2006). 8 Životni ciklus softvera predstavlja faze kroz koje prolazi softver tokom svog života: od začetka, preko razvoja, upotrebe, održavanja pa do povlačenja iz upotrebe. 8 • web aplikacije zahtijevaju distribuiranu, višeslojnu arhitekturu te ovise o dvije vanjske komponente – poslužitelju i web pregledniku. Dok je poslužitelja obično moguće konfigurirati prema zahtjevima programera, ne postoji način da se utječe na korisnike preglednika i njihove preference, a dodatne komplikacije stvaraju dodaci u preglednicima (eng. plug-in) koji proširuju njihovu funkcionalnost, te različite verzije preglednika, svaka sa svojom implementacijom tehnologija i standarda. • tehnologiije na kojima se baziraju web aplikacije često su nove i nezrele. Slika 1. Kompleksnost web sustava (izvor: Rossi et al. 2008) Slika 1. prikazuje tipično okruženje web sustava sa brojnim komponentama koje ga sačinjavaju. 2.3. Kategorije web aplikacija prema fazama razvoja Weba Svaku fazu razvoja Weba karakterizirala je pojava određene kategorije web aplikacije koje se međusobno razlikuju s obzirom na upotrijebljene tehnologije i razinu interaktivnosti koju omogućavaju. 9 2.3.1. Web 1.0 U počecima komercijalizacije Weba9 web sjedišta su bila primarno kolekcije statičnih web stranica koje su se ograničavale na pružanje informacija o proizvodima i uslugama. U ovoj fazi, nazvanoj "plitki Web" (eng. Shallow Web) (Rossi et al. 2008), još nema govora o web aplikacijama. Nešto kasnije Web je postao dinamički. Uvođenje obrazaca i interaktivnih kontrola omogućilo je dinamičko kreiranje stranica na temelju sadržaja pohranjenih u bazama podataka. No, premda dinamički, Web je još uvijek karakterizirala ograničena interaktivnost. U ovoj fazi, nazvanoj "duboki Web" (eng. Deep Web) (Rossi et al. 2008), pojavile su se interaktivne web aplikacije (poput portala sa vijestima) te transakcijske web aplikacije (poput e-trgovina). 2.3.2. Web 2.0 Sve intenzivnija primjena tehnologija poput AJAX –a10 i web servisa11, a koja je započela oko 2005. godine, omogućila je visoku interaktivnost te nove oblike komunikacije i suradnje među korisnicima. Ovo razdoblje karakterizira pojava društvenih mreža (Facebook, Twitter...) i kolaborativnih web aplikacija (platforme za e-učenje, Wiki) koje omogućavaju korisnicima suradnju na izradi sadržaja na nestrukturiran način, intenzivnu komunikaciju i brzu razmjenu informacija, te web baziranih aplikacija (RIA - Rich Internet Applications) koje se pokreću u web pregledniku, ne traže instalaciju softvera, ali nude mogućnosti i funkcionalnost desktop aplikacija (npr. Google mail). 2.3.3. Mobilni Web Napredak u mobilnim komunikacijama i bežične mreže te pojava novih uređaja ( smartphone uređaji, tablet računala,...) otvorili su put sveprisutnim (eng. ubiquitous) aplikacijama koje nude nove mogućnosti poput pružanja servisa ovisno o lokaciji ili kontekstu. 2.3.4. Semantički Web Daljnji razvoj usmjeren je prema semantičkom Webu koji za cilj ima prezentiranje informacija u obliku koji neće biti razumljiv samo ljudima već i računalima a što bi trebalo pridonijeti lakšem upravljanju znanjem na Webu. 9 Web je stavljen je na raspolaganje javnosti 1993. AJAX (Asynchronous JavaScript and XML) obuhvaća skup tehnologija o kojima će biti riječi u poglavlju 2.5.5. 11 Web servis – softverska komponenta koja podržava interoperabilnu interakciju između računala preko mreže. 10 10 2.3. Arhitektura web aplikacija Kvaliteta web aplikacija znatno ovisi o odabranoj arhitekturi. Loše performanse, otežano održavanje i otežana proširivost najčešće su uzrokovani lošom arhitekturom. Premda ne postoji jedinstvena definicija arhitekture, može se reći da arhitektura opisuje strukturu – opisuje statične i dinamične aspekte sustava te omogućava njegovo razumijevanje (Rossi et al. 2008). Uobičajeno je opisivanje arhitekture web aplikacija s aspekta logičkih slojeva (eng. layer) pri čemu se razdvajanje vrši s obzirom na ulogu pojedinog sloja u sustavu. Takvo strukturiranje olakšava skalabilnost sustava odnosno njegovo proširivanje dodavanjem novih komponenata u skladu sa rastućim potrebama. Najčešće se web aplikacije dijele na tri sloja i tad se govori o troslojnoj arhitekturi koju čine: • prezentacijski sloj – zadužen za prikaz rezultata zahtjeva u odgovarajućem obliku • poslovni sloj – sadrži poslovnu logiku aplikacije • podatkovni sloj – zadužen za pružanje pristupa podacima. Logički slojevi mogu se nalaziti na istom ili zasebnom fizičkom sloju (računalu). Slika 2. Višeslojna arhitektura (izvor: Kappel et al. 2006) Slika 2. prikazuje arhitekturu jedne kompleksne aplikacije kojoj je poslovni sloj podijeljen na dodatne slojeve te predstavlja primjer višeslojne arhitekture (eng. n-layer architecture). 11 2.5. Tehnologije 2.5.1. HTTP HTTP (HyperText Transfer Protocol) je temeljni protokol Weba koji omogućava dohvaćanje resursa na udaljenim računalima prema klijent-poslužitelj modelu pri čemu klijent i poslužitelj komuniciraju razmjenom HTTP poruka (slika 3.). Klijent (npr. web preglednik) šalje poslužitelju poruku zahtjeva kojom traži određeni resurs. Poslužitelj odgovara porukom odgovora koja, ako je pronađen, sadrži i zahtijevani resurs. Po ispunjenju zahtjeva klijenta, poslužitelj prekida komunikaciju. Slika 3. Razmjena HTTP poruka (izvor: Casteleyn et al. 2009) Primjer zaglavlja HTTP poruke zahtjeva: GET /prima-invest/sc/portfelji.php HTTP/1.1 User-Agent: Opera/9.80 (Windows NT 6.1; WOW64; U; en) Presto/2.10.289 Version/12.02 Host: localhost Accept-Language: en,hr-HR;q=0.9,hr;q=0.8 Accept-Encoding: gzip, deflate Referer: http://localhost/prima-invest/index.php Connection: Keep-Alive Accept: */* X-Requested-With: XMLHttpRequest Prva linija sadrži redak zahjeva sa podacima o metodi HTTP transfera (GET12), nazivu samog resursa i putanji do njega (/prima-invest/sc/portfelji.php) te verziji korištenog protokola (HTTP/1.1).Retci koji slijede predstavljaju zaglavlje poruke te sadrže podatke o klijentskoj aplikaciji (User-Agent) koja je uputila zahtjev i dodatne podatke o zahtjevu (poput preferencija u pogledu jezika (Accept-Language) i formata dokumenta (Accept) odgovora). 12 GET metoda uobičajeno se koristi za dohvaćanje podataka, dok se za slanje podataka na obradu, npr. putem obrazaca, koristi POST metoda. Moguće je slati i manje količine podataka GET metodom, no tad su vidljivi u nastavku adrese iza znaka upitnika. Npr. http://www.prima-invest.com/sc/portfelji.php?id=1. Ostale metode su: HEAD, PUT, DELETE. 12 Primjer HTTP poruke odgovora: HTTP/1.1 200 OK Date: Fri, 23 Nov 2012 18:49:23 GMT Server: Apache/2.2.21 (Win32) PHP/5.2.17 X-Powered-By: PHP/5.2.17 Keep-Alive: timeout=5, max=95 Connection: Keep-Alive Content-Type: application/json; charset=utf-8 {"data":[{"id_portfelj":"336","naziv":"temp_OPT_1353256683","opis":"temp", "datum_start":"2011-07-01","datum_izmjena":"2011-0701","broj_dionica":"0", .... Prva linija poruke odgovora sadrži statusni redak koji uključuje podatke o verziji korištenog protokola (HTTP/1.1) te statusni kod i frazu odgovora 13 (200 OK). Nakon toge slijede zaglavlje i tijelo poruke unutar kojega se nalazi zahtijevani resurs (u primjeru prikazan u JSON14 formatu). 2.5.2. HTML HTML (Hypertext Markup Language) je jezik za opisivanje strukture hipertekstualnih dokumenata koji je od svog nastanka 1989. godine prošao kroz nekoliko verzija. Prva formalna specifikacija izdana je 1992. godine, dok se verzija 4.01 iz 1999. godine, kao glavni jezik Weba, zadržala više od desetljeća (Sikos 2011). 2000. godine predstavljena je prva specifikacija XHTML-a kao reformulacije HTML-a u XML-u15 umjesto SGML-u16 uvodeći time određena stroža pravila poput zahtjeva za dobro oblikovanim dokumentima (eng. wellformedness)17 . 13 Neki najčešći statusni kodovi i fraze: 200 OK - traženi resurs je pronađen 301 moved permanently – resurs je trajno premješten 404 not found – resurs nije pronađen 500 internal server error – greška poslužitelja. 14 JSON (JavaScript Object Notation) je format za razmjenu podataka kod kojega se objekti navode u vitičastim zagradama i sastoje se od parova ključ - vrijednost razdvojenih zarezom npr. {"ime": "Ana", "prezime":"Anić"}. Format je zbog svoje jednostavnosti u širokoj upotrebi pogotovo sa AJAX tehnologijama. 15 XML (Extensible Markup Language) – je metajezik napisan u SGML-u koji, za razliku od HTML-a, nema predefinirane elemente. Stvoren je s ciljem jednostavne izrade i razmjene dokumenata putem Interneta neovisno o korištenim tehnologijama. 16 SGML (Standard Generalized Markup Language) je meta jezik za opisivanje jezika za označavanje (eng. markup language). Npr. HTML je jezik za označavanje napisan u SGML-u. 17 Kako bi se uklonili problemi prilikom interpretacije uzrokovani pretjeranom tolerantnošću HTML-a na greške, XHTML postavlja zahtjev za dobro oblikovanim dokumentima (eng. well-formedness) koji se odnosi na opća pravila sintakse poput: • svaki otvoreni tag mora biti zatvoren (npr. <p> i </p>) • prazni elementi (bez završnog taga) moraju također biti zatvoreni na odgovrajući način (npr. <br />) • umetnuti tagovi se ne smiju preklapati (pravilno: <div><p>Nekakav tekst</p></div>, pogrešno: <div><p>Nekakav tekst</div></p>) (Sikos 2011). 13 HTML jezik sastoji se od tagova kojima se označavaju dijelovi sadržaja dokumenta poput naslova, paragrafa, tablice i sl. Većina18 html elemenata sastoji se od početnog i završnog taga unutar zagrada (npr. tagovi <p> </p> označavaju paragraf) koji dodatno mogu sadržavati atribute u obliku atribut="vrijednost" ( npr. <p id="prvi"></p> znači da paragraf ima atribut id vrijednosti "prvi"19). Osnovne elemente web stranice čine: • doctype deklaracija • html • title • head • body kojima se definira osnovna strutrura HTML dokumenta poput: <!DOCTYPE html> <html> <head> <title>Naslov stranice</title> </head> <body> <p>Sadržaj stranice</p> </body> </html> Slika 4. prikazuje rezultat gornjeg primjera u web pregledniku. Slika 4. Rezultat HTML primjera u web pregledniku (izvor: izradila autorica) 18 Neki elementi imaju samo početni tag kao npr. <br /> element koji označava prijelaz u novi red (eng. break). Na svakoj stranici može postojati samo jedan elemet određene vrijednosti id atributa stoga on omogućava jednoznačnu identifikaciju elemenata na stranici. 19 14 Doctype (Document Type Definition) deklaracija mora biti prvi element stranice. Govori web pregledniku u kojoj je verziji HTML-a pisana stranica a preglednik na temelju toga odlučuje kako će prikazati stranicu. Verzija HTML 5 koristi deklaraciju iz primjera. Tagovi <html></html> govore web pregledniku da se radi o html dokumentu. Sav se sadržaj dokumenta, osim doctype deklaracije, mora nalaziti unutar ovih tagova. Unutar html elementa dokument se dijeli na 2 dijela: "zaglavlje" i "tijelo" (head i body). Unutar head elementa navode se podaci o stranici koji se ne prikazuju na samoj stranici. Npr. title element (<title></title>), kojim se određuje naslov stranice, ne prikazuje se na samoj stranici već na dijelu preglednika predviđenom za naslov (eng. titlebar). Unutar body elementa smješta se sadržaj stranice koji će biti prikazan. U primjeru je to samo jedan element <p> koji označava rečenicu "Sadržaj stranice" kao paragraf. 2.5.3. CSS CSS (Cascading Style Sheets) je jezik za opisivanje prezentacije web stranica: tipografije, boja i pozadina, te rasporeda elemenata na stranici. Razdvajanje strukture dokumenta (definirane npr. HTML-om) od njegove prezentacije (definirane CSS-om) omogućava lakše održavanje stranica, dijeljenje stilova među stranicama te prilagodbu stranica različitim okruženjima. Prva specifikacija CSS-a Level 1 izdana je 1996. kao preporuka W3C-a. Tom su verzijom uvedeni stilovi za tipografiju, boje, tablice, poravnanje, margine, obrube i pozicioniranje. Specifikacija Level 2 proširena je novim mogućnostima, a njena revizija 2.1 već je dugo glavni izbor za stiliziranje web dokumenata. Premda je razvoj CSS3 (CSS Level 3) započeo 2005., web preglednici još uvijek nemaju punu podršku za brojne novine koje donosi. Osnovne elemente CSS-a čine pravila koja se sastoje od: • selektora - određuju na koji će se element primijeniti određeni stil, • deklaracije - navode se unutar vitičastih zagrada a sastoje od svojstava i njihovih vrijednosti odvojenih dvotočkom. Primjer CSS pravila: 15 body { background-color: black; color: white; } U gornjem primjeru selektor je body što znači da će se stil primijeniti na čitavo "tijelo" dokumenta, a unutar vitičastih zagrada nalazi se deklaracija stila koja određuje da će pozadina (background-color) biti crna, a boja teksta (color) bijela. CSS pravila mogu se direktno umetati u HTML kod (što nije preporučljivo) ili se mogu nalaziti u zasebnoj datoteci koja se zatim uključuje u HTML dokument referenciranjem unutar <head> taga (što predstavlja preporučljiv način korištenja budući da doprinosi razdvajanju strukture od prezentacije). 2.5.4. JavaScript JavaScript (u daljnjem tekstu JS) je objektno-orijentirani skriptni jezik za klijentsko programiranje (eng. client-side). Kod pisan u JS-u interpretira se i izvršava u web pregledniku nakon učitavanja stranice ili kao reakcija na događaj potaknut od strane korisnika. JS omogućava dinamički HTML (poput dinamičke izmjene prezentacije web stranica) ili izvršavanje dijelova poslovne logike na strani klijenta (poput validacije inputa) pri čemu JS predstvalja aktivni dio dok HTML predstavlja statični dio koji je predmetom modificiranja od strane skripne logike. JS kod može se umetati u HTML dokumente unutar <script> taga ili se može nalaziti u zasebnoj datoteci koja se uključuje referenciranjem unutar <head> taga. Primjer JS funkcije: <script> function mijenjajPrikaz(id) { var element = document.getElementById(id); var atribut = ""; if (element.currentStyle){ //ako je Internet Explorer atribut = element.currentStyle['display']; } else if (window.getComputedStyle) { //ostali preglednici atribut = window.getComputedStyle(element, null).display; } if (atribut == "none") { element.style.display = "block"; } else { 16 element.style.display = "none"; } } </script> U HTML-u se dodaje: <div id="div1"><p>Sadržaj</p></div> <input type="button" value="Promijeni" onclick=" mijenjajPrikaz('div1');"/> U primjeru je dana JS funkcija koja prikazuje ili skriva određeni element na stranici postavljanjem vrijednosti css svojstva display. Elemet koji se želi prikazati/sakriti ima specificiran id atribut koji se proslijeđuje funkciji. Funkcija se poziva klikom na gumb (onclick=" mijenjajPrikaz ('div1');"). Premda JS podržava većina web preglednika, postoje određene razlike u njegovoj implementaciji tako da je uobičajen način za postizanje ujednačenog ponašanja u različitim verzijama preglednika (eng. cross-browser compatibility) korištenje JavaScript biblioteka poput jQuery. jQuery biblioteka pruža sloj apstrakcije koji uklanja razlike u implementaciji različitih web preglednika te time ujednačava njihovo ponašanje i pojednostavljuje pisanje koda. U gornjem primjeru vidljivo je da se dio koda odnosi na slučaj ako je web preglednik u kojem se prikazuje stranica Internet Explorer, a dio ako je to neki drugi preglednik. U donjem primjeru dana je funkcija iste namjene, ali uz upotrebu jQuery bibilioteke. jQuery; <script> $(".gumb").click(function (e) { var id = $(this).attr("name"); var atribut = $("#" + id).css('display'); if (atribut == "none") { $("#" + id).css('display', 'block'); } else { $("#" + id).css('display', 'none'); } }); </script> U HTML-u se dodaje: 17 <div id="div1"><p>Sadržaj</p></div> <input type="button" class="gumb" name="div1" value="Promijeni" /> Gumbu je dodan class atribut koji omogućava da se za više elemenata na stranici definira jednak izgled ili ponašanje (u ovom slučaju je to mijenjanje prikaza), te mu je dodan name atribut vrijednosti jednake kao i id atribut elementa kojeg želimo mijenjati. Uklonjen je poziv funkcije iz HTML koda te je on sad povezan sa klikom na bilo koji gumb klase "gumb". Ovakvo razdvajanje HTML-a i ostalog koda olakšava održavanje stranica i njihove izmjene. Budući da je gornji primjer prilično jednostavan, razlika nije toliko izražena, no kod složenijih situacija upotreba jQuery biblioteke znatno smanjuje potrebne linije koda. 2.5.5. AJAX Naziv AJAX (Asynchronous JavaScript and XML) nastao je 2005. i predstavlja skup tehnologija koje omogućavaju asinhronu komunikaciju odnosno parcijalno učitavanje i manipulaciju sadržajem web stranica bez ponovnog učitavanja čitave stranice. AJAX čine: • na prezentacijskom sloju: HTML ili XHTML, CSS i JavaScript • razmjena podataka vrši se u formatu: XML, JSON, HTML ili kao običan tekst • za asinhronu komunikaciju zadužen je JavaScritp XMLHttpRequest objekt. Slika 5. Tradicionalni web model (izvor: MacIntyre, Danchilla & Gogala 2011) U tradicionalnom web modelu (slika 5.) web preglednik šalje HTTP zahtjev poslužitelju te od njega prima odgovor. Korisnik za vrijeme čekanja na odgovor ne može na stranici obavljati nikakav koristan rad, a po pristizanju odgovora, čitava se stranica ponovno učitava, neovisno o veličini promjene na njoj. 18 Slika 6. Ajax model (izvor: MacIntyre, Danchilla & Gogala 2011) U Ajax modelu (slika 6.) kao posrednik između klijenta i poslužitelja javlja se AJAX engine (XMLHttpRequest objekt). Klijent sad šalje zahtjeve AJAX engineu koji zatim ili samo vrši izmjene na prezentacijskom sloju ili šalje asinhroni zahtjev poslužitelju koji vraća odgovor AJAX engineu. Korisnik, za vrijeme čekanja na odgovor, može nastaviti koristiti aplikaciju. Premda AJAX omogućava kreiranje visokointeraktivnih i responzivnih web aplikacija, ima i određene nedostatke: • nemogućnost ili neujednačen rezultat korištenja gumba web preglednika za povratak na prethodnu stranicu ili postavljanje stranice u zabilješke (eng. bookmark) • pretraživači ne mogu indeksirati dijelove AJAX aplikacija • korisnik može isključiti podršku za JavaScript te u tom slučaju aplikacija prestaje biti funkcionalna. Kao i u slučaju JavaScripta, jQuery bibiloteka olakšava primjenu AJAX-a uklanjajući kompleksnost XMLHttpRequest objekta. AJAX (jQuery) $(".portfelj").click(function (e) { $("#performanse").load("portfelj_performanse.php"); }); 19 U HTML-u se dodaje: <input type="button" class="portfelj" value="Prikaži performanse" /> <div id="performanse"></div> U najjednostavnijem obliku .load() funkcija omogućava injektiranje dodatnog sadržaja u stranicu bez da se čitava stranica ponovno učita. U primjeru se klikom na gumb klase portfelj poziva php skripta portfelj_performanse.php čiji se rezultat učitava u prazan <div> element sa vrijednošću id atributa performanse. 2.5.6. PHP PHP (PHP: Hypertext Preprocessor) jedan je od najpopularnijih server-side skriptnih jezika koji je popularnost stekao zbog toga što je besplatan, otvorenog koda, sa velikom podrškom zajednice i dostupan za sve važnije platforme i web poslužitelje. Kreiran je 1995. godine s ciljem izrade dinamičkih web stranica a trenutno je u verziji 5.4. PHP se razlikuje od clientside skriptnih jezika (poput JavaScripta) po tome što se kod izvršava na serveru a korisniku se šalje samo rezultat njegovog izvršavanja. Uobičajena primjena server-side jezika, poput PHP-a, je dinamičko kreiranje stranica na temelju podataka smještenima u bazama podataka. Korisnik na web stranici ispunjava obrazac čijim se slanjem poziva PHP skripta te se na temelju podataka iz obrasca vrši upit na bazi i generira rezultat. PHP kod može se direktno umetati u HTML dokumente između tagova <?php i ?>20 ili se nalaziti u zasebnim datotekama sa uobičajenom ekstenzijom .php. <!DOCTYPE html> <html> <head> <title>Naslov stranice</title> </head> <body> <p><?php echo "Sadržaj stranice."; ?><p> <p>"Sadržaj stranice."<p> </body> </html> 20 Moguće je koristiti i skraćenu verziju php oznaka <? ?> no to nije preporučljivo jer takve oznake koriste XML dokumenti. 20 U gornjem primjeru php kod je ubačen unutar HTML-a između prvog para <p> tagova i daje jednak rezultat kao i drugi par <p> tagova : ispisuje se rečenica "Sadržaj stranice". 2.5.7. Baze podataka Baze podataka omogućavaju skladištenje podataka na strukturirani način te su neizostavna komponenta većine web aplikacija. Relacijske baze podataka, koje pohranjuju podatke u obliku relacija (stupaca i redaka) i koriste SQL21 jezik za manipulaciju podacima, predstavljaju već niz godina najpopularnije rješenje za skladištenje podataka. Kao jedan od najčešćih odabira među sustavima za upravljanje bazom podataka22 (SUBP) u kombinaciji sa PHP-om ističe se MySQL. 2.5.7.1. MySQL MySQL je SUBP otvorenog koda čija je prva verzija izdana 1995. godine, a trenutno se nalazi u verziji 5.5. Posebnost MySQL-a je arhitektura strojeva za skladištenje (eng. storage engine) koja razdvaja procesiranje upita i ostalih poslužiteljskih poslova od skladištenja i dohvaćanja podataka. Takvo rješenje omogućava, osim odabira načina skladištenja podataka, također i prilagodbu performansi te odabir ostalih mogućnosti i karakteristika (Schwartz et al. 2008). Slika 7. prikazuje logičku arhitekturu MySQL-a. Gornji sloj sadrži servise uobičajene za većinu mrežnih alata i poslužitelja (poput upravljanja konekcijom, autentikacijom i sl). 21 SQL (Structured Query Language) - jezik za rad sa relacijskom bazom podataka. Sadrži podjezike: DDL (Data Definition Language) - jezik za definiranje strukture baze (naredbe CREATE, ALTER, DROP…) DML (Data Manipulation Language) – jezik za upravljanje podacima (naredbe SELECT, INSERT, UPDATE, DELETE…) DCL (Data Control Language) – jezik za kontrolu pristupa podacima (naredbe GRANT, REVOKE) TCL (Transaction Control Language) – jezik za upravaljanje transakcijama (naredbe COMMIT, SAVEPOINT, ROLLBACK..) 22 Sustav za upravljanje bazom podataka (SUBP) - programska podrška koja omogućava definiranje baze podataka (eng. Database Definition) i rad s podacima (eng. Data Management). Osim toga omogućava kontrolu istovremenog pristupa podacima, zaštitu od neovlaštenog korištenja, izradu sigurnosnih kopija, obnovu u slučaju "pada" itd. 21 Slika 7. Arhitektura MySQL SUBP-a (izvor: Schwartz et al. 2008) Srednji sloj predstavlja "mozak" MySQL-a. U njemu je smješten kod za procesiranje upita, njihovu analizu, optimizaciju, ugrađene funkcije itd. Sve funkcionalnosti koje su na raspolaganju strojevima za skladištenje smještene su u srednjem sloju (npr. uskladištene procedure23, okidači24, pogledi25). U trećem sloju smješteni su strojevi za skladištenje koji su zaduženi za skladištenje i dohvaćanje podataka. MySQL podržava 10 različith26 stojeva za skladištenje, a odabir ovisi o namjeni te zahtijevanim karakteristikama i performansama. Premda je standardni stroj za skladištenje MyISAM, InnoDB predstavlja optimalni odabir za 23 Uskladištene procedure (eng. Stored Procedures) – vrsta uskladištenog koda koji koristi proširenje SQL jezika proceduralnim strukturama poput petlji, grananja i sl. 24 Okidač (eng. Trigger) – je vrsta pohranjenog koda koji se automatski pokreće prilikom izvršavanja DDL ili DML naredbe ili nekog događaja vezanog za bazu. 25 Pogled (eng. View) - pohranjeni upit koji kao rezultat daje virtualnu tablicu. Omogućava jednostavnije korištenje rezultata kompleksnih upita ili prilagodbu rezultata različitim korisnicima. 26 Podržani strojevi za skladištenje su: MyISAM, InnoDB, Memory, Merge, Archive, Federated, NDBCLUSTER, CSV, Blackhole, Example. 22 većinu situacija budući da podržava transakcije27, "hot" online backup28 , crash-recovery29, zaključavanje na razini retka30 te vanjske ključeve31 (Schwartz et al. 2008). MySQL od verzije 5.0 omogućava pohranjivanje koda u bazi nazvanog uskladištene rutine (eng. stored routines) koji može biti u obliku procedura (eng. stored procedures), funkcija (eng. stored functions), okidača (eng. triggers) ili periodičnih poslova – događaja (eng. events). Svi ovi tipovi pohranjenog koda koriste proširenje SQL-a proceduralnim konstruktima poput petlji ili grananja a osnovnu razliku među njima čini to što procedure i funkcije mogu primati argumente i vraćati rezultate dok okidači i događaji to ne mogu (Schwartz et al. 2008). Postoje podijeljena mišljenja o njihovoj korisnosti i upotrebi, no općenito se kao prednosti korištenja pohranjenog koda mogu navesti (Schwartz et al. 2008): • smanjuje se latencija i potrebna propusnost mreže budući da se kod izvršava na mjestu gdje su smješteni podaci • omogućava ponovnu iskoristivost koda te centralizaciju poslovnih pravila čime se osnažuje konzistentno ponašanje sustava • može doprinijeti većoj sigurnosti time što se korisniku može dopustiti izvršavanje procedure bez da mu se dopusti pravo pristupa tablicama nad kojima se unutar procedure vrše izmjene. Neke negativnosti pohranjenog koda (Schwartz et al. 2008): • jezik je spor i primitivan u odnosu na (moderne) objektno orijentirane jezike • smještanje koda u bazu povećava opterećenje poslužitelja baze podataka koji je manje skalabilan i skuplji od aplikacijskog ili web poslužitelja • MySQL implementacija pohranjenih rutina je prilično ograničena • stvara ovisnost o proizvođaču SUBP-a . 27 Transakcija je upit ili skupina upita koji moraju biti izvršeni u cijelosti ili uopće ne biti izvršeni. 28 "Hot" online backup podrazumijeva izradu kopija podataka dok su podaci raspoloživi korisnicima i nad njima se vrše izmjene. 29 MyISAM tablice podložnije su greškama i teže se oporavljaju u slučaju problema od InnoDB tablica. Upravo je to najčešći razlog odabira InnoDB stroja za skladištenje u situacijama kada nisu potrebne transakcije. 30 Zaključavanje na razini retka (eng. row-level locking) odnosi se na način povećanja mogućnosti konkurentnog korištenja resursa. Umjesto zaključavanja cijele tablice prilikom izmjene podataka, zaključava se samo redak nad kojim se vrši izmjena. 31 Vanjski ključ – služi za održavanje referencijalnog integriteta. Ako u tablici postoji vanjski ključ, svaka vrijednost vanjskog ključa mora odgovarati vrijednosti primarnog ključa tablice s kojom je vanjskim ključem povezana ili biti jednaka nul-vrijednosti. 23 3. Razvoj web aplikacija Premda je u praksi dugo bio prisutan ad hoc pristup razvoju web sjedišta, s vremenom, kako je taj razvoj postajao sve zahtjevniji, stvorio je potrebu slijeđenja određene metodologije ili razvojnog procesa. Od 1998. godine počinje se govoriti o web inženjerstvu kao disciplini koja preuzima metode i tehnike softverskog inženjerstva i projektnog menadžmenta te ih prilagođava novim uvjetima (Rossi et al. 2008). U tu su svrhu razvijeni različiti procesni modeli32 koji se međusobno razlikuju prema načinu dekompozicije procesa razvoja na njegove osnovne aktivnosti te utvrđivanju optimalnog redoslijeda i tranzicije među njima. No, unatoč određenim razlikama među njima, kao zajednička karakteristika ističe se iterativost. Izrazita dinamičnost okruženja koja dovodi do čestih izmjena zahtjeva onemogućava definiranje potpunog rješenja unaprijed već se problem dijeli na manje dijelove koji se dalje rješavaju u višestrukim kraćim ciklusima uz progresivna poboljšavanja. Za razliku od razvoja tradicionalnog softevra u kojem se aplikacija izdaje samo jednom po udovoljavanju svim zahtjevima, kod web aplikacija uobičajena je praksa publiciranja prije realizacije svih zahtjeva. Što ranija povratna informacija izrazito je važna pa uobičajenu dokumentaciju često zamjenjuju prototipi. No, neovisno o odabranom procesnom modelu, kao osnovne aktivnosti razvoja web aplikacija izdvajaju se (Casteleyn et al. 2009): • utvrđivanje zahtjeva – cilj je shvaćanje problema • dizajn - planiranje rješenja problema • implementacija – prevođenje plana u aplikacijski kod • testiranje i evaluacija – cilj je identificiranje grešaka ili neusklađenosti između zahtjeva i njihove implementacije • objavljivanje - predaje se rješenje klijentu • održavanje – monitoring sustava u radu i održavanje njegovog "zdravlja" • evolucija – poboljšavanje razvijenog rješenja u skladu sa izmijenjenim potrebama i novim zahtjevima. 32 Neke od razvojnih metoda web inženjerstva: WebML, WSDM, OOHDM (Casteleyn et al. 2009) 24 3.1. Planiranje i utvrđivanje zahtjeva Prva faza životnog ciklusa aplikacije započinje poslovnim planiranjem kojim se jasno definira problem koji je projektom potrebno riješiti zanemarujući pritom detalje rješenja. Rezultat poslovnog planiranja treba biti jasna izjava o tome što naručitelj doista treba i očekuje od projekta a što će predstavljati okvir za čitav projekt. Nadalje, budući da se projekti pokreću kao odgovor na potrebe poslovanja, a s ciljem stvaranja dodatne vrijednosti, potrebno je jasno definirati poslovni model33 te kriterije uspjeha, kako s obzirom na poslovne ciljeve, tako i s obzirom na ciljeve samog projekta. Sljedeći korak sastoji se u identificiranju ključnih stakeholdera34, među kojima su svakako najvažniji korisnici, a o čijem interesu ovisi i uspjeh samog projekta. Premda kod web aplikacija korisnici nisu unaprijed poznati, razvijene su brojne metode kojima se olakšava identificiranje njihovih temeljnih karakteristika među kojima je najpopularnija personas.35 Individualni ciljevi i očekivanja utvrđenih stakeholdera početna su točka kod iznalaženja zahtjeva. Zahtjev predstavlja svojstvo koje treba postići ili servis koji sustav treba pružiti. Uobičajeno se dijele na funkcionalne i nefunkcionalne. Funkcionalni zahtjevi ondose se na ono što sustav treba raditi, koje servise pružati i na koje ulazne podatke reagirati a kod web aplikacija mogu se dodatno podijeliti na (Casteleyn et al. 2009): • organizacijske zahtjeve • zahjeve vezane uz domenu aplikacije odnosno njezin sadržaj • zahtjeve vezane uz navigaciju • zahtjve vezane uz interakciju. 33 Poslovni model daje odgovor na pitanje kako poduzeće stvara vrijednost. Stakeholderi su osobe ili organizacije koje imaju direktni ili indirektni utjecaj na zahtjeve sustava koji se razvija. 35 Personas su detaljni opisi tipičnog ciljnog korisnika u kojima se kao nužan minimum navode ime, dob, lokacija, zanimanje, fotografija i biografija. Pomažu kod utvrđivanja tko i kako koristi aplikaciju i olakšavaju donošenje odluka vezanih uz dizajn određenog aspekta projekta davanjem odgovora na pitanja poput: kako bi (ovaj korisnik) ostavrio (ovaj zadatak)? Što bi (ovaj korisnik) tražio u (ovoj situaciji)? 34 25 Nefunkcionalni zahtjevi odnose se na ograničenja funkcionalnosti poput vremenskih ograničenja, standarda i sl. a kod web aplikacija mogu obuhvaćati npr.odabir poslužitelja i njegovih performasni, ciljne web preglednike i rezolucije, korištene tehnologije, strategiju implementacije i sl. Karakteristike web aplikacija navedene u poglavlju 2.2. čine utvrđivanje zahjeva posebno izazovnim. Stoga ga je bitno provoditi iterativno i uz aktivno sudjelovanje svih ključnih stakeholdera, s posebnom pažnjom usmjerenom na razumijevanje konteksta aplikacije i arhitekture sustava (Casteleyn et al. 2009). 3.2. Dizajn Dizajn aplikacije odnosi se na aktivnosti kojima se na temelju prethodno definiranog problema i utvrđenih zahtjeva izrađuje konceptualni prijedlog rješenja. Faza dizajna uobičajeno započinje izradom skica (mockup36 ili wireframe37) ili nefunkcionalnih prototipa u uskoj suradnji sa korisnicima kako bi se utvrdile karakteristike aplikacije (npr. izgled i ponašanje komponenata poput tražilice, obrazaca i sl.) i što ranije dobila povratna informacija. Odobrene skice i/ili prototipi predstavljaju temelj za razradu dizajna prezentacije, navigacije, interakcije i modela podataka. 3.2.1. Upotrebljivost Govoreći o dizajnu neizostavno se mora spomenuti pojam odnosno atribut kvalitete koji često presuđuje hoće li proizvod biti prihvaćen od strane korisnika ili neće. Upotrebljivost (eng. usability) odnosi se na lakoću kojom korisnici koriste aplikaciju prilikom postizanja svojih ciljeva (Sharp, Rogers & Preece 2002). Premda se upotrebljivost web aplikacija primarno spominje u kontekstu dizajna prezentacije, odluke vezane uz dizajn ostalih aspekata aplikacije reflektiraju se u konačnici i na samog korisnika, te je o upotrebljivosti potrebno voditi računa u svim fazama dizajna. Upotrebljivost se postiže realizacijom sljedećih ciljeva (Sharp, Rogers & Preece 2002): 36 Mockup – slika koja prikazuje izgled gotove stranice ili sučelja aplikacije. Uključujue elemente poput logotipa, boja, tipografije, stilova i uzorak sadržaja. 37 Wireframe – prikazuje strukturu i odnose elemenata na stranici, ali bez elemenata dizajna poput boja, slika i sl. 26 • efektivnost – daje odgovor na pitanje u kojoj mjeri sustav odgovara namjeni • efikasnost – kaže u kojoj mjeri sustav omogućava korisnicima da budu produktivni. Sustav je potrebno dizajnirati na način da se određeni zadatak može obaviti sa što manje radnji. Npr. uputno je koristiti predefinirane postavke koje korisnici mogu prema potrebi lako mijenjati. • sigurnost – odnosi se na zaštitu korisnika od opasnih i nepoželjnih situacija. Ovdje se postavlja pitanje sprječava li sustav korisnika da napravi grešku, te ako ju ipak napravi, omogućava li sustav oporavak. Npr. sprječavanje nepoželjnog brisanja na način da se zatražiti potvrda korisnika. • korisnost – odnosi se na to pruža li sustav prikladan skup funkcija kako bi omogućio korisniku da izvrši sve zadatke onako kako on to želi • jednostavnost učenja – odnosi se na to koliko je jednostvno naučiti korsititi sustav po mogućnosti bez dodatne dokumentacije • lakoća pamćenja – jednom kad korisnik shvati kako koristiti sustav, postavlja se pitanje koliko je to jednostavno i zapamtiti, odnosno kakvu pomoć korisnicima pruža sučelje da bi zapamtili što trebaju napraviti. 3.2.2. Dizajn prezentacije Dizajn prezentacije odnosi se na sveukupan izgled aplikacije (sktrukturiranje sadržaja, odabir boja, slika i ostale multimedije, te tipografiju) u skladu sa nefunkcionalnim zahtjevima i korporativnim identitetom naručitelja. Upravo prezentacija predstavlja ključni faktor za stjecanje kredibiliteta38, a također je bitna i s obzirom na upotrebljivost te samu atraktivnost. Kao što je već spomenuto, web aplikacije su izrazito podložne trendovima, a u visokokompetitivnim uvjetima potrebno je istaknuti se, biti drugačiji od drugih. 3.2.2.1. Raspored elemenata Raspored elemenata uglavnom se vrši prema pravilima preuzetima iz grafičkog dizaja koji se prilikom strukturiranja sadržaja oslanja na mrežu vertikalnih i horizontalnih osi. Najčešći odabir prilikom rasporeda elemenata web stranica predstavlja podjela sadržaja na zaglavlje, podnožje te nekoliko stupaca između (slika 8.). 38 Studija je pokazala da je izgled web stranica najzaslužniji za stjecanje povjerenja korisnika. Korisnici jednostavno ne vjeruju amaterski dizajniranim stranicama neovisno o njihovom sadržaju (Tidwell 2011). 27 Slika 8. Uobičajeni raspored elemenata web stranice (izvor: izradila autorica) Ovakvo rješenje uobičajeno je kod informacijski orijentiranih web sjedišta. No, kako se web aplikacije prema namjeni znatno međusobno razlikuju, to su i njihova sučelja puno raznovrsnija, a često oponašaju izgled desktop aplikacija. Neovisno o namjeni aplikacije, prilikom raspoređivanja elemenata potrebno je obratiti pažnju na (Tidwell 2011): hijerarhiju – treba jasno ukazivati na relativnu važnost pojedinih elemenata i njihovu međusobnu povezanost ravnotežu – potrebno je omogućiti nesmetani tok informacija te spriječiti da nesklad ili nered odvlače pažnju korisnika gustoću informacija - pretjerana količina teksta, slika i ostale multimedije djeluje odbojno i zamorno tako da često vrijedi "manje je više" težište - potrebno je odrediti centralnu točku koja će korisniku omogućiti lakše snalaženje među sadržajem pri čemu može pomoći i pametna upotreba praznog prostora dosljednost – odabrani izgled sučelja treba biti dosljedan kroz sve stranice. 28 3.2.2.2. Tipografija Tipografija se odnosi na odabir fonta39 i njegove organizacije kako bi se postigla čitljivost tekstualnih sadržaja i pridonijelo njihovoj estetici. Uobičajeno se vrši podjela fontova na serif i sans-serif na temelju horizontalnog ili vertikalnog dodatka (serif) na krajevima slova. Na slici 9. je kao primjer serif fonta prikazan "Times New Roman" a kao primjer sans-serif fonta "Arial". Vidljivo je da "Times New Roman" posjeduje dodatak, dok ga "Arial" nema. Za razliku od web sjedišta koja se temelje prvenstveno na pružanju informacija kroz veće količine teksta, kod web aplikacija tekst se uglavnom nalazi na malim oznakama ili je dan u kraćim rečenicama tako da je prilikom donošenja odluka o tipografiji web aplikacija potrebno voditi računa o čitljivosti pojedinih znakova, a ne blokova teksta. Slika 9. Serif i sans-serif font (izvor: izradila autorica) Općenito je uvriježeno da su serif fontovi čitljiviji na razini pojedinog znaka te su pogodniji pri manjim veličinama, dok kod čitanja veće količine teksta dovode do zamora te su u tom slučaju pogodniji serif fontovi (Zambonini 2011). 3.2.2.3. Boje Boje su općenito najzaslužnije za prvi dojam koji korisnici stječu i opći ugođaj web stranica. Premda njihov odbir treba odražavati brend i poruku koja se korisnicima želi uputiti, posebnu pažnju treba pridati tome kako se njihovo kombiniranje odražava na čitljivost. Budući da oko 10% populacije ima određenih poteškoća sa raspoznavanjem boja (Tidwell 2011), potrebno je izbjegavati problematične kombinacije poput crvene i zelene, zelene i smeđe, plave i ljubičaste te komplementarne boje koje puno brže dovode do zamora prilikom čitanja (slika 10.). S druge strane, kombinacije koje pridonose boljoj čitljivosti sastoje se općenito od svijetle podloge i tamnog teksta ili svijetlog teksta na tamnoj podlozi. 39 Font - skup slovnih, brojčanih i ostalih znakova koji po izgledu pripadaju istoj vrsti. 29 Slika 10. Kombinacije boja: komplementarne, analogne, triadne (izvor: Zambonini 2011) Prilikom odabira boja također je uputno obratiti pažnju na kulturno uvjetovane razlike u tumačenju njihovog značenja, posebno ako je aplikacija namijenjena međunarodnom tržištu. Npr. dok je u zapadnim kulturama crvena boja čest odabir kojim se sugerira smanjenje (poput pada cijena dionica na burzi), u istočnim se kulturama crvena boja tumači kao povećanje (Zambonini 2011). 3.2.3. Dizajn navigacije Dizajn navigacije odnosi na povezivanje stranica i elemenata sadržaja utvrđivanjem smislenih veza među njima. Navigacija (Kalbach 2007): 1. pruža pristup informacijama 2. prikazuje lokaciju - korisnici trebaju znati: a) gdje se nalaze b) što tu mogu pronaći c) gdje mogu otići 3. odražava dubinu sadržaja – npr. broj kategorija unutar izbornika daje korisniku informaciju o širini nečije ponude 4. odražava brend - raspored navigacijskih elemenata, ton i stil na oznakama upotpunjuju dojam o brendu. 3.2.3.1. Kategorije navigacije Navigacija se može podijeliti na sljedeće kategorije (slika 11.) (Kalbach 2007): 30 Slika 11. Kategorije navigacije (izvor: izradila autorica) 1. strukturnu – koja se dalje dijeli na: a. primarnu - uobičajeno je smještena na vrhu stranice te zadržava ujednačeni izgled kroz sve stranice. Omogućava kretanje između glavnih kategorija. b. sekundarnu (lokalnu) – omogućava kretanje među podkategorijama, može biti manje ujednačenog izgleda. 2. asocijativnu – povezuje sadržaj kroz različite hijerarhijske razine. Omogućuje korisniku da čitajući o jednoj temi pristupi sličnoj temi ili dodatnom sadržaju (npr. quick links, kontekstualna navigacija ("desni klik"), navigacija u podnožju). 3. pomoćnu – povezuje alate i mogućnosti koje pomažu korisniku prilikom ostvarivanja određenih zadataka npr. prijava, pretraga i sl. 3.2.3.2. Navigacijski mehanizmi Navigacija se realizira pomoću različitih navigacijskih mehanizama kao grupa poveznica koje dijele sličan izgled i ponašanje (Kalbach 2007). Neki od najčešće korištenih navigacijskih mehanizama jesu: • horizontalni40 i vertikalni izbornici41 40 Horizontalni izbornik - jedan je od najpopularnijih oblika navigacijskog mehanizma. Najčešće se koristi za primanru navigaciju te se uglavnom nalazi neposredno iznad ili ispod zaglavlja svake stranice. Osnovni nedostatak predstavlja organičeni broj elemenata koji se mogu smjestiti (optimalno 5-12) pa se često kombinira sa dinamičkim izbornikom. 31 • dinamički izbornici (eng. pull-down)42 • tabovi43 • mape web sjedišta44 • mehanizmi za straničenje (eng. paging)45 • stablasti mehanizmi (eng. tree)46 • direktoriji47 • oblaci oznaka (eng. tag clouds)48. Rezultat dizajna navigacije čine: 1. elementi koji su dostupni korisniku 2. navigacijska struktura koja predstavlja puteve koje korisnik može slijediti da bi istražio sadržaje ili ostvario svoje zadatke. 3.2.4. Dizajn interakcije Interakcija se može promatrati kroz 5 dimenzija (Silver 2007): 1D – riječi, 2D – vizualni prikaz – čine ga elementi sučelja poput tipografije, dijagrama, ikona i ostalih grafičkih elemenata s kojima korisnik dolazi u interakciju, 3D - fizički objekti ili prostor - unutar kojih se ostvaruje interakcija, 4D – vrijeme – unutar kojeg se odvija interakcija – npr. određeni se sadržaji (poput zvuka, videa ili animacije) mijenjaju s protekom vremena, 5D – ponašanje – uključuje akcije i reakcije korisnika na sučelje. Prve 3 dimenzije omogućavaju interakciju dok vrijeme i ponašanje definiraju interakciju. 41 Vertikalni izbornik fleksibilniji je od horizontalne navigacije budući da se elementi lako mogu dodavati prema dolje. Uglavnom se smješta sa lijeve strane. 42 Dinamički izbornik (eng. pull-down) – da bi se prikazao sadržaj izbornika, potrebna je određena radnja korisnika (klik ili prelazak pokazivačem iznad elementa). Osnovna prednost sastoji se u tome što omogućava smještanje većeg broja kategorja budući da zauzima manje prostora. 43 Tabovi - najčeće imaju zaobljene uglove a od horizontanih izbornika razlikuju se samo po izgledu, dok im je funkcionalnost jednaka. Imaju pozitivan psihološki efekt jer asociraju na arhiviranje. 44 Mapa web sjedišta – koristi se za prikazivanje strukture web sjedišta. 45 Straničenje (eng. paging) kao navigacijski mehanizam često se koristi kod prikazivanja rezulta pretrage kako bi se pokazao broj pronađenih elemenata. 46 Stablasti (eng. tree) navigacijski mehanizam služi za prikazivanje hijerarhijskih struktura. 47 Direktoriji (kao navigacijski mehanizam) omogućavaju pristup stranicama sortiranim prema temama. 48 Oblaci oznaka (eng. tag clouds) - poveznice su dane abecednim redom a veličinom slova odražavaju učestalost pojave ili važnost određenog pojma. 32 Dizajn interakcije kombinira razne vizualne, dinamičke, funkcionalne i tehničke elemente s ciljem stvaranja interaktivnih proizvoda koji će korisnika poduprijeti u obavljanju zadataka pomažući mu da bude što produktivniji. Ranije navedeni ciljevi lakoće korištenja predstavljaju jednu stranu dizajna interakcije koja se nadopunjava ciljevima orijentiranim na postizanje pozitivnog iskustva korištenja (eng. user experience) poput estetike, kreativnosti, zabave, motivacije, emocionalnog ispunjenja (Sharp, Rogers & Preece 2002). Dizajn interakcije mora biti takav da omogući fluidan tijek odvijanja dijaloga između korisnika i aplikacije - korisnik ne smije dugo čekati na odgovor, komponente sučelja moraju biti usklađene sa očekivanim i pozantim te se korisnika ne smije dovoditi u situacije nejasnoće oko korištenja aplikacije. Premda visokointeraktivne aplikacije pružaju korisniku bolji doživljaj i veće zadovoljstvo korištenja, postoji određeni trade-off između lakoće održavanja i ponovne iskoristivosti koda s jedne strane te interaktivnsoti i responzivnosti s druge strane (slika 12.) Slika 12. Usporedba tehnologija za izradu sučelja (izvor: Kappel et al. 2006) Web aplikacije s atraktivnim i viskoko interaktivnim sučeljima baziranim na AJAX tehnologijama često imaju čvrsto povezanu prezentaciju, podatke i logiku (Kappel et al. 2006) što stvara probleme prilikom održavanja i nadogradnje te je i to potrebno uzeti u obzir prilikom odluke koju razinu interaktivnosti pružiti. 33 3.2.5. Modeliranje podataka Modeliranje podataka provodi se kroz tri faze: 1. konceptualno modeliranje 2. logičko modeliranje 3. fizičko modeliranje. 3.2.5.1. Konceptualno modeliranje Konceptualno modeliranje koristi postupke apstrakcije zahtjeva identificiraju entiteti50, njihovi 49 atributi51 kojima se na temelju specifikacije i međusobne veze52. Rezultat konceptualnog modeliranja je konceptualni model podataka neovisan o implementaciji. Uobičajeno se prikazuje dijagramom entiteti-veze (eng. Entity-Relationship Diagram) koji je zbog svoje jednostavnosti razumljiv i korisnicima te je pogodan za komunikaciju između različitih stakeholdera. Slika 13. Entiteti i osnovni tipovi veza (izvor: izradila autorica) Slika 13. prikazuje entitete i osnovne tipove veza u Martinovoj notaciji. Entiteti su prikazani pravokutnikom a veze linijom. Uloga eniteta na lijevoj strani navedena je iznad linije dok je 49 Postupci apstrakcije– mentalni procesi kojima se vrši odabir bitnih karakteristika objekata, a zanemaruju one nebitne. 50 Entitet – stvaran ili apstraktan predmet ili događaj o kojem se prikupljaju podaci (Varga 1994). 51 Atribut - svojstvo entiteta koje je bitno za sustav. 52 Veza – agregacija dvaju ili više entiteta u novi entitet (Varga 1994). Broj entiteta koji sudjeluju u vezi predstavlja stupanj veze : 1 entitet - unarna (rekurzivna, involucijska), 2 entiteta - binarna, 3 entiteta – ternarna, .., n-entiteta - n-arna. Osnovni tipovi veza s obzirom na broj entiteta jednog tipa koji sudjeluje u vezi s entitetom drugog tipa : 1:1 (jedan entitet jednog tipa sudjeluje u vezi sa jednim entitetom drugog tipa), 1:M (jedan entitet jednog tipa sudjeluje u vezi sa više entiteta drugog tipa), M:M (više entiteta jednog tipa sudjeluje u vezi sa više entiteta drugog tipa). 34 uloga entiteta na desnoj strani navedena ispod linije. Na liniji veze nalaze se oznake53 donje i gornje granice sudjelovanja entiteta u vezi npr. portfelj mora sadržavati jednu ili više dionica, dionica se može nalaziti u više portfelja (ne mora niti u jednom). 3.2.5.2. Logičko modeliranje Logičkim modeliranjem prevodi se konceptualni model u opis strukture baze podataka koji može procesirati i implementirati SUBP. Premda logički model ne ovisi o SUBP-u, on ovisi o odabranom modelu podataka (hijerarhijskom, mrežnom, relacijskom...). Relacijski model podataka danas je najčešće korišteni model čije je osnove postavio matematičar E.F.Codd 1970. godine (Varga 1994). To je formalni model utemeljen na matematičkom pojmu relacije koja se u modelu prikazuje kao tablica sa stupcima i retcima (slika 14.). Za pronalaženje bilo kojeg podatka u relacijskoj bazi podataka dovoljni su naziv tablice, naziv stupca i primarni ključ54 (pravilo garantiranog pristupa)55. Slika 14. Relacija "Dionica" (izvor: izradila autorica) Sama pretvorba konceptualnog modela u relacijski model sastoji se od nekoliko koraka (Varga 1994): • pretvorbe entiteta u relacije 53 Oznaka bliža entiteu označava gornju granicu sudjelovanja u vezi dok druga oznaka označava donju granicu (opcionalnost). Kružić označava 0, crtica 1, > ili < označavaju M. 54 Primarni ključ – atribut ili skup atributa koji služi za jednoznačnu identifikaciju svake n-torke relacije. Mora udovoljiti zahtjevima: • jedinstvenosti – u relaciji ne smije postojati n-torka sa jednakom vrijednošću primarnog ključa • minimalnosti – ako se sastoji od više atributa, niti jedan njegov dio ne može se ukloniti a da se ne naruši pravilo jedinstvenosti • pravilo entitetskog integriteta – niti jedan dio primarnog ključa ne smije imati nul-vrijednost. 55 Codd –ovo pravilo broj 2. E.F.Codd je 1985. godine objavio 12 pravila (kriterija) kojima potpuno relacijska baza podataka mora udovoljavati . 35 • protvorbe veza uvođenjem primarnog ključa jedne relacije kao vanjski ključ druge ili uvođenjem dodatne relacije • pretvorbe atributa u stupce uz opisivanje ograničenja (jedinstvenosti56, obveznosti57, referencijalnog integriteta58, ograničenja uz provjeru59). Dobro dizajnirana baza podataka sadrži podatke koji su konzistentni60, bez redundancije61 i ne pokazuju anomalije prilikom unosa, izmjene ili brisanja62 (Varga 1994). Ove anomalije moguće je izbjeći svođenjem relacije na prikladnu normalnu formu pri čemu svaka normalna forma predstavlja strože pravilo ograničenja podataka u relacijama. Od 6 normalnih formi63 koje se koriste u praksi, obično se smatra dostatnim da se relacija nalazi u trećoj (3NF) što obuhvaća da se ujedno nalazi i u 1NF64 i 2NF65 te da: "svaki neključni atribut ovisi o ključu, cijelom ključu i ni o čemu osim o ključu"(Varga 1994). 3.2.5.3. Fizičko modeliranje Fizičkim modeliranjem određuje se fizička struktura smještaja i metoda pristupa podacima na sekundarnim memorijama. Uključuje odabir indeksa66, particioniranje67, grupiranje podataka u klastere68 te selektivnu materijalizaciju69 podataka. 56 Ograničenje jedinstvenosti znači da u tablici ne smije postojati redak sa jednakom vrijednošću određenog atributa (ili skupine atributa). UNIQUE ograničenjem može se postaviti zahtjev jedinstvenosti i na neključne atribute. 57 Atributima koji moraju imati neku vrijednost postavlja se ograničenje NOT NULL. 58 Referencijalni integritet - vidi pod 31. 59 CHECK ograničenjem vrši se provjera odgovara li podatak zadanom intervalu vrijednosti ili određenim uvjetima. 60 Konzistentnost podataka – znači da među podacima nema proturječnosti. 61 Redundancija (zalihost) označava nepotrebno ponavljanje podataka. 62 Anomalija prilikom unosa javlja se kad je nemoguć unos podatka jer nedostaje dio primarnog ključa (primarni ključ ne smije sadržavati nul-vrijednost). Anomalija prilikom brisanja nastaje kad dio primarnog ključa ili retka poprima nul-vrijednost te traži brisanje čitavog retka što rezultira gubitkom podataka. Anomalija prilkom izmjene javlja se kad je izmjena otežana zbog dupliciranih (redundantnih) podataka te predstavlja opasnost da dođe do nekonzistentnosti u bazi. 63 Normalne forme koje se koriste u praksi: 1NF, 2NF, 3NF, BCNF (Boyce-Codd Normal Form), 4NF, 5NF. Postoje dodatne normalne forme, ali više teorijskog značaja poput: RFNF(Redundancy Free Normal Form), SKNF (Superkey Normal Form), 6NF. 64 1NF - relacija se nalazi u prvoj normalnoj formi ako su svi neključni atributi funkcijski zavisni o ključu relacije (Varga 1994). 65 2NF – relacija se nalazi u drugoj normalnoj formi ako su svi neključni atributi potpuno funkcijski zavisni o bilo kojem (mogućem) ključu relacije (Varga 1994). 66 Indeksi – objekti baze podataka koji služe za ubrzavanje pronalaženja podataka u bazi. Najčešće korištena struktura indeksa je B-TREE (binarno stablo). 67 Particioniranje – odnosi se na podjelu većih tablica na manje kako bi se smanjila količina podataka koja se vraća kao rezulata upita. Postoje dvije vrste particioniranja: horizontalno i vertikalno. Kod horizontalnog particioniranja tablica se dijeli na tablice jednake strukture s time da svaka sadrži samo dio redaka originalne tablice. Kod vertikalnog particioniranja tablica se dijeli na manje od kojih svaka sadrži samo dio stupaca. 68 Klastering - suprotno od particioniranja. Omogućava ubrzavanje rada sa podacima tako što se podaci kojima se često zajedno pristupa smještaju blizu na disku čime se smanjuje broj potrebnih čitanja ili pisanja na disk. 36 Cilj fizičkog modeliranja je maksimizacija performansi baze podataka. Kriteriji kojima se pri tome vodi obuhvaćaju: • vrijeme potrebno za izvršavanje upita • upotrebu prostora na disku • broj transkacija koje je moguće izvršiti u jedinici vremena. Rezultat modeliranja podataka predstavljaju DDL naredbe SQL jezika kojima se kreira baza podataka. 3.3. Implementacija Faza dizajna proizvodi niz konceptualnih rješenja koja se u fazi implementacije prevode u aplikacijski kod upotrebom različitih tehnologija i programskih jezika. Sam odabir tehnologija trebao bi se temeljiti na mogućnosti jednostavnog i brzog razvoja kako bi se aplikacija mogla što ranije prezentirati potencijalnim korisnicima te time utvrditi u kojoj mjeri ona zadovoljava njihove potrebe. Uobičajeno je (i poželjno) izbjegavanje razvoja aplikacije "od nule" jer je takav pristup dugotrajan i podložan greškama, već je uputno koristiti već gotov i testirani kod u obliku predložaka, bibiloteka70, frameworka71 ili web servisa (Zambonini 2011). 3.3.1. Implementacija prezentacijskog sloja Kod implementacije sučelja javlja se pitanje kako tretirati korisnike čiji preglednici ne podržavaju tehnologije odabrane za izradu aplikacije. U vezi toga postoji nekoliko pristupa među kojima se ističu "graciozna degradacija" (eng. graceful degradation) i "postepena poboljšavanja" (eng. progressive enhancement). Prvi pristup temelji se na principu da će dijelovi kompleksnog sustava otkazati te pokušava pružiti alternativna rješenja koja, premda i dalje funkcionalna, pružaju nešto siromašniji doživljaj (Parker et al. 2010). Takav se pristup realizira na način da se sučelje dizajnira i kodira s namjerom iskorištavanja najmodernijih tehnologija i mogućnosti preglednika, a 69 Materijalizirani pogledi – za razliku od pogleda koji predstavljaju virtualne tablice kod kojih se pohranjuje upit, ali ne i rezultat upita, rezultati materijaliziranih pogleda pohranjuju se kao bilo koja druga tablica. 70 Biblioteka - predstavlja kolekciju funkcija određene namjene (npr. za upravljanje konekcijom sa bazom, enkripciju itd.).Upotreba bibiloteka je jednostavna te se svodi se na uključivanje bibiloteke u aplikaciju te pozivanje pojedinih funkcija prema potrebi. 71 Framework – platforma za razvoj aplikacija koja pruža već gotove komponente i funkcionalnosti. Znatno ubrzava razvoj budući da omogućava programerima da prilagode kod svojim potrebama umjesto da ga nanovo pišu. Jedan od najpoznatijih je Microsoftov .NET framework za razvoj desktop i web aplikacija. 37 korisnicima preglednika ograničene funkcionalnosti pruža se alternativna verzija. Primjer takvog pristupa je korištenje <noscript> HTML taga unutar kojega je moguće smjestiti alternativni sadržaj za korisnike čiji preglednici ne podržavaju JavaScript (ili su tu podršku sami isključili). No, umjesto alternativnog sadržaja, u praksi se to se često svodilo samo na rečenicu "Vaš preglednik ne podržava JavaScript". Zbog očitog nedostatka - isključivanja korisnika, a što nikome nije cilj jer dovodi do smanjenja potencijalne zarade - ovaj se pristup se sve više napušta u korist drugog. Pojam "progressive enhancement" prvi se put javlja 2003. godine (Parker et al. 2010), a polazi od pretpostavke da se svaki sustav može svesti na jednostavan i funkcionalan temeljni kod koji će svugdje raditi (Parker et al. 2010). Realizira se tako da se tehnologije dodaju u slojevima. Započinje se sa sadržajem koji predstavlja temelj nad kojim se slažu ostali slojevi: • prvi sloj čini HTML • drugi sloj čini CSS – dodaju se stilovi za tipografiju, zatim za pozicioniranje i na kraju boje i pozadine • treći sloj čini JavaScript • nakon toga idu ostale slabije podržane tehnologije. Ovakvim se pristupom osigurava da će sav sadržaj i ključna fukcionalnost biti uvijek dostupni korisniku bez obzira podržava li njegov preglednik najnovije tehnologije ili ne. 3.3.2. Implementacija aplikacijskog sloja Budući da su za implementaciju aplikacijskog sloja na raspolaganju brojne tehnologije, ovdje se zbog opširnosti neće posebno objašnajvati, već će u drugom dijelu rada biti prikazana implementacija jedne funkcionalnosti. 3.3.3. Implementacija podatkovnog sloja Implementacija podatkovnog sloja realizira se izradom baze podataka upotrebom SQL DDL naredbi, punjenjem (testnim) podacima, izradom indeksa i određivanjem ograničenja referencijalnog integriteta, pisanjem i (optimizacijom) upita i pohranjenog koda itd. Nakon što je baza podataka izrađena i napunjena podacima, moguće ju je testirati. 3.4. Testiranje Testiranje predstavlja aktivnost procjene kvalitete proizvoda kako bi se pronalaskom i uklanjanjem defekata i problema povećala njegova kvaliteta (Kappel et al. 2006). 38 Premda se osnovni principi testiranja softvera mogu primijeniti i na web aplikacije, zbog karakteristika navedenih u poglavlju 2.2. postoje dodatne okolnosti koje je potrebno uzeti u obzir (Kappel et al. 2006): • pojedine greške u sadržaju moguće je pronaći tek ručnim metodama budući da alati za automatiziranu provjeru (npr. pravopisa) prepoznaju samo određene vrste grešaka • neke je zahtjeve vezane uz prezentaciju, poput estetike sučelja koja je podložna subjektivnosti, teško specificirati a samim time i testirati • zahtjev da aplikacija bude funkcionalna na različitim uređajima i konfiguracijama također znači i potrebu da se testiranje provede za svaku od mogućih kombinacija. No, budući da je to praktički nemoguće, u tu se svrhu koriste simulatori koji su i sami podložni greškama. • zbog globalne dostupnosti potrebno je voditi računa o kulturnim razlikama i njima uvjetovanim postavkama (npr. razlike u smjeru čitanja traže različite pristupe navigaciji) • web aplikacije sastoje se od brojnih softverskih komponenata što često dovodi do grešaka uzrokovanih njihovom nekompatibilnošću, pogrešnim konfiguriranjem ili nezrelošću primijenjenih tehnologija • brze izmjene otežavaju testiranje i čine ga kompleksnijim od onog tradicionalnog softvera. Zbog prethodno navedenih karakteristika testiranje web aplikacija, osim provjere usklađenosti sa specifikacijama i funkcionalnim zahtjevima, a koja je temelj testiranja tradicionalnog softvera, potrebno je proširiti testiranjem (Kappel et al. 2006): 1. poveznica 2. kompatibilnosti 3. upotrebljivosti 4. performansi 5. sigurnosti. 3.4.1. Testiranje poveznica Stranice moraju biti ispravno povezane i to na način da im je moguće pristupiti putem određene poveznice, a također moraju sadržavati i poveznicu za povratak. Testiranje se može provoditi ručno izradom mape web sjedišta ili pomoću tzv. Link Checker-a. Cilj testiranja je 39 pronalaženje poveznica koje upućuju na nepostojeće stranice (eng. broken link), stranica koje ne sadrže poveznicu za povratak (eng. orphaned page) ili one koje uopće nisu povezane. 3.4.2. Testiranje kompatibilnosti Cilj testiranja kompatibilnosti je pronalaženje grešaka (nekonzistentnosti u prikazu ili smanjenje funkcionalnosti) uzrokovanih razlikama u web preglednicima i operativnim sustavima. Testiranjem je potrebno utvrditi kako se aplikacija ponaša u preglednicima različitih proizvođača, njihovim različitm verzijama, na različitim rezolucijama, konfiguracijama (kako hardverskim tako i softverskim), te utvrditi ostaje li aplikacija funkcionalna u slučaju da korisnik onemogući cookies72, podršku za JavaScript, CSS ili neki od dodataka (eng. plug-in) koje aplikacija koristi. U testiranju kompatibilnosti pomažu validacijski servisi koji provjeravaju uskađenost sa standardima (HTML-a, CSS-a...) te razni simulatori. 3.4.3. Testiranje upotrebljivosti Testiranje upotrebljivosti testira lakoću korištenja različith verzija dizajna, navigacijskih odluka i opće strukture aplikacije. Formalna testiranja provode se u laboratorijskim uvjetima uz sudjelovanje reprezentativnog uzorka korisnika pri čemu se snima njihovo ponašanje prilikom korištenja aplikacije. Također obuhvaća i provjeru prikladnosti aplikacije za osobe sa određenim teškoćama (vizualnim, auditivnim, kognitivnim). 3.4.4. Testiranje performansi Testiranje performansi uključuje: a) testove opterećenja – kojima se provjerava ponašanje aplikacije pod različitim razinama opterećenja te se mjeri vrijeme odaziva, propusnost, iskorištenost memorije, procesora itd. b) stres testove – koji mjere kako aplikacija reagira na stresne situacije poput opterećenja iznad specificiranog maksimuma ili prilikom velikih fluktuacija u opterećenju c) testove pouzdanosti – sustav se prati kroz produženo vrijeme rada kako bi se utvrdili problemi koji se manifestiraju s odgodom poput curenja memorije, nezatvorenih konekcija prema bazi i sl. 72 Cookies (kolačići) su tekstualne datoteke smještene na računalu korisnika u koje web stranice zapisuju određene podatke (npr. odabrane postavke korisnika). Budući da predstavljaju svojevrsni sigurnosni rizik, web preglednici omogućavaju isključivanje podrške za kolačiće. 40 Za potrebe testiranja koriste se generatori opterećenja koji simuliraju konkurentne zahtjeve većeg broja klijenata. 3.4.5. Testiranje sigurnosti Sigurnost web aplikacija izrazito je kompleksna tema koja nadilazi okvire ovog rada, no također predstavlja i kritični faktor, naročito za aplikacije koje uključuju novčane transakcije. Konstantna izloženost web aplikacija najrazličitijim rizicima i prijetnjama traži sustavni pristup njezinom ostvarivanju. Općenito se tehnike testiranja sigurnosti mogu podijeliti na (OWASP 2008): a) manualne provjere - odnose se na provjere ljudi, politika i procesa, ali mogu uključivati i provjere različitih tehničkih odluka poput onih vezanih uz arhitekturu sustava. Uobičajeno se provode analizom dokumenata ili provođenjem intervjua sa dizajnerima ili vlasnicima sustava. b) modeliranje prijetnji - odnosi se na identificiranje mogućih prijetnji i napada čime se omogućava razvijanje strategija ublažavanja potencijalnih ranjivosti te usmjeravanje pažnje na dijelove sustava kojima je ona najpotrebnija. Preporučuje se za sve aplikacije razviti i dokumentirati model prijetnji. c) provjere koda – predstavlja proces manualne provjere izvornog koda s ciljem pronalaženja sigurnosnih propusta. Mnoge nenamjerne, ali važne sigurnosne probleme jako je teško otkriti drugim oblicima analize ili testiranja, što čini provjeru izvornog koda najboljom tehnikom testiranja. Sve se informacije za otkivanje sigurnosnih problema nalaze negdje u kodu. Pregledom izvornog koda tester može precizno utvrditi što se gdje događa (ili što bi se trebalo događati). d) penetracijsko testiranje - odnosi se na testiranje aplikacije bez znanja o načinu njezinog internog funkcioniranja. Tester, pristupajući aplikaciji kao regularni korisnik, pokušava izvršiti određene napade te pronaći i iskoristiti slabosti. 3.5. Objavljivanje, održavanje i evolucija 3.5.1. Objavljivanje Nakon implementacije web aplikacije postoje dvije ključne odluke koje treba donijeti prije njezinog konačnog objavljivanja. Jedna se odnosi na odabir web poslužitelja i fizičkog smještaja, a druga na odbir domene. 41 3.5.1.1. Odabir web poslužitelja i fizičkog smještaja web sjedišta Ovisno o odlukama za vrijeme faze implementacije u vidu odabranih programskih jezika, framework-a ili razvojnih alata, razlikuje se i stupanj slobode kod odabira web poslužitelja pri čemu se poslužitelj odnosi kako na hardver, odnosno fizičko računalo na kojem se pokreće aplikacija, tako i na softver zadužen za primanje HTTP zahtjeva i odgovore na njih. Npr. uobičajeni web poslužitelj u kombinaciji sa PHP skriptnim jezikom i MySQL SUBP-om je Apache HTTP Server. Što se tiče odabira fizičke lokacije smještaja web sjedišta, uobičajene opcije su: • dijeljeni hosting - pružatelj usluga smještaja web sjedišta stavlja korisniku na raspolaganje određeni diskovni prostor koji dijeli sa drugim korisnicima. Predstavlja najjeftinije rješenje prikladno za manje aplikacije ili osobne stranice. • VPS (Virtual Private Severs) - premda korisnici i dalje dijele isti hardver, svakome je stavljena na raspoloaganje virtualna mašina što omogućava izolaciju od ostalih korisnika budući da svatko ima instaliran svoj operativni sustav i drugi softver. Ovakvo rješenje pogodno je za većinu web aplikacija. • dedicirani ili kolocirani poslužitelj – korisnik u prvom slučaju unajmljuje, a u drugom slučaju smješta vlastiti poslužitelj kod pružatelja usluge što može, ali i ne mora, obuhvaćati i usluge održavanja. Predstavlja najskuplju varijantu jer korisnik u potonjem slučaju mora, osim vlastitog hardvera i softvera, posjedovati i sva potrebna znanja za njihovo održavanje. • hosting u oblaku (eng. Cloud hosting) – zadnjih godina sve popularnije rješenje pogodno za aplikacije koje su pod visokim, ali neujednačenim, opterećenjem. Korisnici imaju na raspolaganju virtualne poslužitelje iza kojih stoji mreža fizičkih poslužitelja. Time je omogućena visoka skalabilnost sustava pri čemu korisnici plaćaju samo prema količini upotrijebljenih resursa. 3.5.1.2. Registracija domene Od trenutka kad je web poslužitelj fizički spojen na Web i web softver pokrenut na poslužitelju, resursi koji se na njemu nalaze postaju dostupni korisnicima. No, da bi korisnik doista mogao pristupiti sadržajima, trebao bi poznavati IP adresu73 web poslužitelja. Budući 73 IP adresa je jedinstvena brojčana oznaka koja služi za identificiranje pojedinog računala u mreži. U okviru verzije IP protokola IPv4, IP adrese se prezentiraju kao četiri decimalna broja u rasponu 0-255 odvojena točkom. Npr. 93.137.197.252 42 da su IP adrese teško pamtljive, moguće je registrirati lako pamtljivu simboličku adresu – domenu koja se putem DNS 74 poslužitelja povezuje sa fizičkom IP adresom. Registracija domene vrši se putem registrara odnosno institucije ili kompanije kojoj je dodijeljeno pravo obavljanja poslova registracije, aktivacije, deaktivacije i brisanja domena75 pri čemu korisnik ne postaje vlasnik domene već samo ostvaruje pravo na njezino korištenje kroz određeno razdoblje. Prilikom odabira domene treba dobro razmilisti o nazivu. Naziv domene treba biti lako pamtljiv i jedank ili što sličniji nazivu poduzeća, proizvoda, imenu osobe odnosno onoga što čini glavni sadržaj web sjedišta jer će upravo po tim pojmovima korisnici vršiti pretraživanje. Također je potrebno razmisliti o najčešćim pogreškama prilikom upisivanja pa je dobro registrirati različite kombinacije koje će upućivati na isto web sjedište (npr. primainvest.com, prima-invest.com, prima-invest.net itd.). 3.5.2. Održavanje i evolucija Objavljivanjem web aplikacija ne prestaje njihov životni ciklus već se on nastavlja kroz daljnje održavanje i evoluciju. Održavanje se odnosi na osiguranje ispravnog rada postojeće web aplikacije bez izmjene njezinih bitnih karakteristika. Evolucija, s druge strane, predstavlja kontinuirani proces izmjene određenih karakteristika u skladu sa novim ili izmijenjenim zahtjevima. Neki od tipičnih razloga za evoluciju (Kappel et al. 2006): • neadekvatnost postojećeg rješenja – tek se kod stvarnog korištenja može u potpunosti utvrditi odgovara li aplikacija potrebama korisnika • promjene poslovnih pravila • pojava novih tehnologija • izmjene dizajna radi povećanja atraktivnosti • poboljšanje koda radi povećanja skalabilnosti • postizanje interoperabilnosti odnosno integracija sa postojećim aplikacijama. 74 DNS (Domain Name System) – je strogo hijerarhijski distribuirani sustav u kojem se nalaze informacije o IP adresama i domenskim imenima.Vrši preslikavanje domenskog imena u jednu ili više IP adresa i obrnuto, preslikavanje jedne ili više IP adrese u jedno domensko ime. Klijentima DNS informacije pružaju DNS poslužitelji. 75 Upravljanje globalnim imeničkim (domenskim) Internet prostorom ostvaruje se kroz nezavisnu organizaciju Internet Corporation for Assigned Names and Numbers (ICANN), dok su za upravljanje nacionalnim vršnim domenama zadužene ustanove unutar pojedinih država. Od 1993. godine za upravljenjm vršnom .hr domenom zadužen je CARNet (Hrvatska akademska i istraživačka mreža). 43 4. Upravljanje portfeljem Ako se portfelj definira kao skup financijske imovine u vlasništvu jednog investitora, onda se upravljanje portfeljem odnosi na konstruiranje takvog portfelja koji će kroz vrijeme evoluirati prema ciljnom prinosu postavljenom od strane investitora (Amenc & Sourd 2003). Metode koje investitoru pritom stoje na raspolaganju nalaze se u rasponu od tradicionalnih metoda financijske analize pa do kvantitativnih metoda utemeljenih na Markowitzevoj Modernoj portfolio teoriji. Budući da su kvantitativne metode danas u najširoj upotrebi, a i sama aplikacija razvijena za potrebe ovog rada implementira jednu od njih, u nastavku će o tome biti riječ. 4.1. Moderna portfolio teorija Moderna portfolio teorija (u daljnjem tekstu MPT) predstavlja jedan od prvih ozbiljnijih pokušaja opisivanja tržišta konzistentnim matematičkim modelom. Osnovne postavke teorije Markowitz je predstavio u članku iz 1952. godine, a 1990. godine je zajedno sa Sharpe i Millerom dobio Nobelovu nagradu za ekonomiju (Amenc & Sourd 2003). MPT teorija daje odgovor na pitanje kako racionalni investitor, suočen sa neizvjesnom budućnošću, donosi odluke o izboru portfelja. Za razliku od situacije kad je ostvarivanje određene stope prinosa sasvim izvjesna, pa je to ujedno i glavni kriterij kojim se investitor vodi, u slučaju neizvjesne budućnosti investitor mora uzeti u obzir i rizik kao mogućnost da investirana sredstva prinesu manju dobit od očekivane ili čak ostvare gubitak. Markowitz je bio prvi koji je kvantificirao odnos između prinosa i rizika portfelja (Amenc & Sourd 2003). Upravo je pronalaženje njihove ravnoteže te konstruiranje takvog portfelja koji će za danu razinu prinosa imati minimalni rizik, odnosno za danu razinu rizika imati maksimalni prinos, osnovna ideja MPT teorije. Markowitz je takav portfelj nazvao efikasnim, a skup svih efikasnih portfelja efikasnom granicom. Slika 15. stavlja u odnos očekvani prinos s jedne strane i standardnu devijaciju portfelja kao mjeru rizika s druge strane. Skup svih mogućih portfelja na slici je prikazan sivom površinom. Efikasna granica nalazi se na liniji između točaka A i B pri čemu točka A označava ujedno i portfelj minimalne varijance. 44 Slika 15. Efikasna granica (izvor: izradila autorica prema Elton et al 2003) Očekivani prinos portfelja izražava se kao: N R P = ∑ X i Ri (4.1.) i =1 varijanca portfelja: N N i =1 i =1 σ P2 = ∑ X i2σ i2 + ∑ N ∑X j =1 i X jσ iσ j ρ ij (4.2.) pri čemu je: X i - udio pojedine dionice i u portfelju Ri - očekivani prinos dionice i σ i - standardna devijacija dionice i σ j - standardna devijacija dionice j ρ ij - koeficijent korelacije. Za razliku od prinosa portfelja koji predstavlja jednostavnu aritmetičku sredinu prinosa pojedinih dionica ponderiranih njihovim udjelima, rizik portfelja je kompleksniji. Rizik ovisi o tome jesu li, i u kojoj mjeri, prinosi dionica međusobno korelirani. Smanjenje rizika dobije se kad se drži portfelj čije dionice nisu perfektno korelirane. Ono što predstavlja glavnu ideju diverzifikacije prema MPT, ujedno je i glavni problem za implementaciju budući da zahtijeva brojene ulazne parametre i izračune. Potrebne ulazne parametre čine: očekivani prinosi dionica, varijance dionica te korelacije svih mogućih parova 45 dionica u portfelju. Dok varijanci ima koliko i dionica u portfelju, za koeficijente korelacije potrebno je N(N-1)/2 izračuna (N - broj dionica u portfelju)76. To je potaknulo razvoj modela koji pokušavaju opisati i predvidjeti korelacijsku strukturu među dionicama. Jedan od takvih modela je i jednoindeksni model. 4.2. Jednoindeksni model Kako bi se omogućila praktična primjena MPT modela, krenulo se u analizu odnosa prinosa pojedinačnih dionica u portfelju i tržišnog portfelja. Sharpe je 1963. osmislio pojednostavljenje izračuna uočivši da varijacije u prinosima dionica imaju linearnu ovisnost o faktoru zajedničkom cijelom tržištu i faktorima jedinstvenima za svaku pojedinačnu dionicu. Faktor zajednički cijelom tržištu predstavlja se tržišnim indeksom. Otuda i naziv Sharpeov jednoindeksni model odnosno empirijski tržišni model (Amenc & Sourd 2003). Prinos dionce prema jednoindeksnom modelu izražava se kao: Ri = α i + β iRm + ei (4.3) pri čemu je: Ri - prinos dionice i β i - konstanta koja mjeri očekivanu promjenu Ri povezanu sa 1% promjene Rm Rm - prinos tržišnog indeksa α i i ei - čine dio prinosa dionice neovisan o tržištu α i - očekivana vrijednost ei - slučajna (neočekivana) vrijednost – specifični prinos. Beta koeficijent izražava se kao: β i= σ im σ m2 (4.4.) pri čemu je: β i - beta koeficijent dionice i σ im - kovarijanca dionice i i tržišnog indeksa 76 Za portfelj od 50 dionica, što se smatra dobro diverzificiranim portfeljem, potrebno je 50*49/2 koeficijenata korelacije = 1225 izračuna. 46 σ m2 - varijanca tržišnog indeksa. Očekivani prinos dionice: R i = α i + β iRm (4.5.) pri čemu je: Rm - očekivani prinos tržišnog indeksa. Varijanca dionice: σ i2 = β i2σ m2 + σ ei2 (4.6.) pri čemu je: σ ei2 - rezidualni rizik koji je moguće diverzificirati. Kovarijanca dionica i i j: σ ij = βi β jσ m2 i≠ j (4.7.) Osnovna pretpostavka modela sastoji se u tome da je rezidual ei nezavisan od e j za svaku vrijednost i i j što implicira da je jedini razlog zbog kojeg se dionice kreću zajedno, njihovo zajedničko kretanje sa tržištem. Za razliku od očekivanog prinosa i varijance dionice koji se sastoje od dijela ovisnog o tržištu i drugog, jedinstvenog za svaku dionicu, kovarijanca ovisi samo o tržišnom riziku (Elton et al 2003). Ovom pretpostavkom omogućeno je pojednostavljenje izračuna. Uvrštavanjem (4.5.) u (4.1.) očekivani prinos portfelja može se izraziti kao: N N i =1 i =1 R p = ∑ X i α i + ∑ X i β i Rm (4.8.) Uvrštavanjem (4.6.) i (4.7.) u (4.2.) varijanca portfelja može se izraziti kao: N N i =1 i =1 σ P2 = ∑ X i2 β i2σ m2 + ∑ N N j =1 i =1 ∑ X i X jσ iσ j βi β jσ m2 + ∑ X i2σ ei2 47 (4.9.) Iz gornjeg je vidljivo drastično pojednostavljenje izračuna varijance portfelja budući da je sad on moguć sa samo 3N+1 izračuna (očekivani prinos svake dionice, varijanca svake dionice, beta koeficijent svake dionice i varijanca prinosa tržišta). Beta koeficijent portfelja može se izraziti kao: N β p = ∑ X i βi (4.10.) i =1 alfa portfelja: N α p = ∑ X iα i (4.11.) i =1 tad se (4.8) može napisati kao: R p = α p + β p Rm (4.12.) a nakon sređivanja (4.9.) dobije se: N σ p2 = β p2σ m2 + ∑ X i2σ ei2 (4.13.) i =1 4.3. Elton-Gruber metoda konstruiranja optimalnog portfelja Elton i Gruber predložili su metodu konstruiranja optimalnog portfelja koja za bazu koristi jednoindeksni model dajući rezultat jednak kvadratnom programiranju (Elton et al 2003). Metoda se sastoji od rangiranja dionica prema određenom kriteriju, utvrđivanja granice koja razdvaja dionice koje će biti uključene u portfelj i one koje to neće biti, te utvrđivanja udjela odabranih dionica u optimalnom portfelju. Kriterij prema kojem se vrši rangiranje dionica predstavljen je viškom prinosa iznad bezrizičnog po jedinici sistemskog rizika, odnosno: Ri − RF (4.14.) βi 48 pri čemu je: Ri - očekivani prinos dionice i RF - prinos bezrizičnog vrijednosnog papria βi - beta koeficijent dionice i. Omjer se računa za sve dionice koje su investitoru raspoložive za odabir. Razultati se rangiraju od najvećeg prema najmanjem – što je omjer veći to je poželjniji. Kao rezultat toga, ako se neka dionica drži u portfelju, onda se i sve rangirane iznad nje također drže u portfelju. * Granica C za odabir dionica koje će sačinjavati optimalni portfelj određuje se prema formuli: i σ m2 ∑ Ci = ( R j − RF ) β j σ ej2 i β2 2 1 + σ m ∑ 2j j =1 σ ej j =1 (4.15.) Dionice se prestaju dodavati u portfelj kada je omjer (4.14.) kandidat dionice niži od Ci . (Ovo vrijedi za slučaj kad nije dopuštena kratka prodaja77. U slučaju da je dopuštena kratka prodaja, postupak se ponešto razlikuje.) Udjeli se određuju prema: Xi = Zi ∑Z j∈ P (4.16.) j gdje je: Zi = βi Ri − RF ( − C* ) 2 σ ei βi (4.17.) 77 Kratka prodaja je špekulativna operacija kojom investitor, u očekivanju pada cijene, posuđuje dionice ili neki drugi vrijednosni papir koje prodaje sada a kasnije ponovno otkupljuje s namjerom da ih vrati. Ako je u međuvremenu doista došlo do očekivanog pada cijene, investitor je zaradio na razlici u cijeni. 49 5. Proces izrade prototipa web aplikacije za upravljanje portfeljem 5.1. Planiranje i utvrđivanje zahtjeva 5.1.1. Pozadina projekta PrimaInvest je imaginarna brokerska kuća koja s ciljem povećanja zadovoljstva svojih klijenata namjerava uvesti novu uslugu samostalnog upravljanja portfeljem vrijednosnih papira. Analizom tržišta ustanovljeno je da postoji znatan broj potencijalnih malih investitora koji se zbog nedovoljne upućenosti u funkcioniranje financijskih tržišta suzdržavaju od investiranja na tržištima kapitala smatrajući to prevelikim rizikom. 5.1.2. Opis projekta U vidu realizacije nove usluge uspostavit će se web sjedište putem kojega će korisnicima biti dostupna aplikacija za upravljanje portfeljem. Aplikacija će korisnicima omogućiti uvid u trgovanje vrijednosnim papirima, kreiranje portfelja, praćenje performansi te izdavanje naloga za kupnju ili prodaju dionica. Također će pružati pomoć prilikom sastavljanja optimalnog portfelja. Realizacija projekta trebala bi pridonijeti kako privlačenju novih, tako i povećanju aktivnosti postojećih korisnika. 5.1.3. Poslovni model Usluga će biti dostupna registriranim korinicima uz mjesečnu naknadu, te će se nuditi u nekoliko modaliteta pretplate. 5.1.4. Pokazatelji uspjeha Pokazatelji poslovnog uspjeha • povećanje broja malih investitora za 15% u roku 12 mjeseci • povećanje broja transkacija za 30% u roku 12 mjeseci • povećanje prosječne vrijednosti transkakcije za 10% u roku 6 mjeseci Pokazatelji uspjeha projekta • broj registriranih korisnika nakon 6 mjeseci min. 500 • rast broja registriranih korinika za 3% mjesečno narednih godinu dana 50 • broj pretplaćenih korisnika nakon 6 mjeseci min. 150 • rast broja pretplaćenih korisnika za 2% mjesečno narednih godinu dana • broj izdanih naloga putem aplikacije u roku 6 mjeseci izosi 15% nasptam ostalih naloga 5.1.5. Ciljni korisnici • pojednicni zainteresirani za ulaganja na tržištima kapitala • korisnici modernih tehnologija i dinamičnog životnog stila • osobe nesklone riziku koje žele imati potpunu kontrolu nad svojim ulaganjima Slika 16. Primjer opisa tipičnog korisnika - personas (izvor: izradila autorica) 5.1.7. Zahtjevi Kao pomoć prilikom utvrđivanja funkcionalnih zahtjeva s aspekta korisnika izrađeni su UML dijagrami slučajeva korištenja78 (eng. Use Case Diagram). Web aplikacija predviđa tri tipa korisnika (registrirani korisnik, pretplatnik, administrator) te se zahtjevi aplikacije mogu grupirati na: 78 • upravljanje korisnicima • upravljanje portfeljem UML slučaj korištenja (eng. use case) je skup scenarija povezanih jednim ciljem korisnika. 51 • administraciju. Slika 17. Dijagram slučajeva korištenja pretplatnika (izvor: izradila autorica) Budući da prototip implemenitra samo dio povezan sa upravljanjem portfeljem, to osnovne zahtjeve čine: 1. pregledavanje podataka o trgovanju dionica 2. kreiranje/brisanje portfelja 3. dodavanje/brisanje/izmjenu dionica u portfelju 4. izračunavanje pokazatelja performasni portfelja i donica 5. izračunavanje optimalnog portfelja 6. grafički prikaz kretanja cijena dionica, strukture portfelja, usporedbe pokazatelja 7. otvaranje/zatvaranje računa 8. uplatu/isplatu na/sa računa 52 9. otvaranje/izvršavanje/opoziv naloga za kupnju/prodaju dionica 10. otvaranje/izvršavanje/opoziv naloga za podešavanje strukture portfelja 11. usporedba portfelja 12. usporedba dionica. Na slici 17. prikazan je UML dijagram slučajeva korištenja koji prikazuje ponašanje i funkcionalnost sustava sa stajališta pretplatnika (nakon izvršene prijeve na sustav). Detaljan opis korištenja aplikacije dan je u 6. poglavlju pa se ovdje neće dodatno opisivati. 5.1.8. Arhitektura Aplikacija implementira troslojnu arhitekturu koja se, gledano s aspekta logičkih slojeva, sastoji od: • Prezentacijskog sloja temeljenog na klijenstkim tehnologijama – HTML, CSS, JavaScript te korištenju KendoUI frameworka i jQuery biblioteke. • Aplikacijskog sloja koji ima funkcionalnost ograničenu na preuzimanje zahtjeva prezentacijskog sloja, validaciju inputa, autorizaciju te vraćanje rezultata u odgovarajućem formatu. Srednji sloj koristi PHP jezik za server-side programiranje. • Podatkovnog sloja koji koristi MySQL SUBP i uskladištene procedure za pristup podacima. 5.2. Dizajn 5.2.1. Konceptualni model podataka Na temelju zahtjeva identificirani su osnovni entiteti te je izrađen početni model entiteti-veze prikazan na slici 18. Posjetitelj se može registrirati i tad postaje KORISNIK. KORISNIK može biti OBIČNI (to su svi registrirani posjetitelji) ili ADMINISTRATOR (osoba zadužena za održavanje aplikacije) – ekskluzivna specijalizacija KORISNIKA. OBIČNI KORISNIK može se pretplatiti i tad postaje PRETPLATNIK. PRETPLATNIK mora imati barem jednu PRETPLATU (ali može ih imati više jer će se u sustavu čuvati podaci i o 53 proteklim pretplatama). Svaka se PRETPLATA odnosi na točno određenog PRETPLATNIKA. Slika 18. Početni model eniteti-veze (izvor: izradila autorica) PRETPLATNIK može kreirati PORTFELJE, a svaki PORTFELJ priprada točno određenom PRETPLATNIKU. PORTFELJ može biti prazan ili sadržavati DIONICE a svaka se DIONICA može nalaziti u više PORTFELJA. Ovdje se radi o vezi M:M koja je razriješena dodatnim entitetom PORTFELJ_DIONICA. PRETPLATNIK za svaku PORTFELJ_DIONICU može izdati više NALOGA koji mogu biti za KUPNJU ili PRODAJU (ekskluzivna specijalizacija). Svaki izvršeni NALOG registrira se dodatno kao TRANSAKCIJA budući da se NALOG odonosi na promjene količine PORTFELJ_DIONICE a TRANSKACIJE na promjene stanja RAČUNA. PRETPLATNIK može otvoriti RAČUN. PRETPLATNIK može imati samo jedan RAČUN a svaki RAČUN pripada samo jednom PRETPLATNIKU. Za svaki RAČUN registriraju se 54 TRANSKACIJE koje mogu biti UPLATA, ISPLATA ili NALOG_IZVRŠAVANJE (ekskkluzivna specijalizacija). Za svaku DIONICU registrira se PROMET. Svaki podatak o trgovanju odnosi se na točno određenu DIONICU. Svaka DIONICA pripada određenom SEKTORU, ali SEKTOR ne mora sadržavati DIONICE. 5.2.2. Wireframe modeli Kao pomoć prilikom razrade modela podataka, te strukturiranja informacija, dizajna navigacije i interakcije izrađeni su wireframe modeli. Na slici 19. prikazan je primjer početnog prikaza (eng. screen) aplikacije korisnika koji već ima kreirane portfelje sa detaljnim prikazom sastava jednog potrfelja. Iz modela je vidljivo da su informacije strukturirane kroz nekoliko razina pri čemu osnovnu podjelu čini razlikovanje grafičkih i tekstualnih informacija, dok daljnju razradu predstavlja podjela na one koje će biti dostupne korisniku odmah pri pokretanju aplikacije i one koje će se prikazivati na zahtjev. Budući da je većina financijskih informacija zapravo numeričkog karaktera, takve se informacije najbolje razumijevaju pomoću vizualizacija. Zbog toga je odlučeno da grafovi zauzmu dominantnu poziciju u prikazu. Što se tiče ostalih informacija, pretpostavka je da će korisnika najviše zanimati stanje kreiranih portfelja na određen dan, te će se upravo takve informacije prikazivati prilikom pokretanja aplikacije. Informacije o performansama portfelja predstavljaju ujedno i potrebne atribute79 za entitet PORTFELJ: 79 Zajedno sa atributima utvrđene su i njihove derivacijske formule: Portfelj: količina dionica = suma količine svih dionica u portfelju ulog = suma uloga u sve dionice u portfelju vrijednost portfelja = suma umnoška zadnje cijene i količine svih dionica u portfelju promjena = (vrijednost portfelja – ulog)/ulog*100 očekivani prinos = vidi (4.1.) beta = vidi (4.10.) varijanca = vidi (4.13.) standardna devijacija = var Portfelj_dionica: ulog = količina * prosječna kupovna cijena prosječna kupovna cijena = P1 * Q1 + P2 * Q2 + .... + Pn * Qn Q1 + Q2 + ... + Qn 55 Slika 19. Wireframe model (izvor: izradila autorica) 1. naziv, opis, datum kreiranja, datum izmjene, broj dionica u portfelju, ukupna količina dionica, ulog, vrijednost, promjena, očekivani prinos, beta, varijanca, standardna devijacija80 Sljedeću razinu predstavljaju informacije o sastavu portfelja odnosno o svakoj pojedinačnoj PORTFELJ_DIONICI te se one prikazuju na zahtjev korisnika: 2. simbol, ulog, količina, prosječna kupovna cijena, stavrni udio, ciljni udio, datum dodavanja, datum izmjene. pri čemu je P = kupovna cijena Q = kupovna količina stvarni udio = (zadnja cijena * količina ) / vrijednost portfelja *100 ciljni udio postavlja korisnik proizvoljno ili aplikacija prilikom izračunavanja optimalnog portfelja prema jednoindeksnom modelu 80 Kurzivom su označeni atributi koji se zapravo ne pohranjuju u bazi već se samo izračunavaju i prikazuju. 56 Treću razinu predstavljaju opće informacije o DIONICI kojima je moguće pristupiti tek po prikazivanju prethodnih informacija. Atribute DIONICE čine: 3. simbol, izdavatelj, broj izdanih, datum uvrštenja, nominala, sektor. Što se tiče grafova, u početnom prikazu vidljivo je kretanje indeksa Crobex (za prikaz općeg trenda na burzi), a na zahtjev korisnika prikazuju se grafovi strukture portfelja i/ili kretanja cijena dionica. Ostale informacije (o nalozima, računu, transakcijama) dostupne su putem izbornika. Slika 20. Izgled gotovog sučelja (izvor: izradila autorica) Slika 20. prikazuje izgled gotove stranice izrađene prema prethodnom wireframe modelu. 57 5.2.3. Relacijski model podataka Nakon razrade wireframe modela i početnog modela eniteti-veze, izrađen je logički model podataka koji je prikazan na slici 21. Model je izrađen alatom "MySQL Workbench" koji omogućava direktnu implementaciju (opcija "Forward Engineer"). U odnosu na početni model entiteti-veze, ovdje su razriješene specijalizacije/generalizacije, veze M:M, određeni su tipovi podataka za atribute i njihove domene, postavljena su NOT NULL ograničenja (plava oznaka) na obavezne atribute i ograničenja UNIQUE na atribute ili kombinacije atributa za koje se traži jedinstvenost (a koji nisu odabrani za primarni ključ), određeni su primarni ključevi (žuta boja) i vanjski ključevi (crvena boja) te je model najprije normaliziran u 3NF a zatim i denormaliziran. Također su dodana i ograničenja održavanja referencijalnog integriteta vanjskih ključeva kod izmjene/brisanja, te su određeni početni indeksi. Slijedi opis razrade modela: U konačnom modelu specijalizacija korisnika riješena je dodatnom tablicom. Premda u slučaju specijalizacije običnog korisnika na pretplatnika to nije bilo nužno, već se moglo riješiti smještanjem svih atributa odnosno stupaca u jednu tablicu, zbog pretpostavke da će ipak biti znatno više korisnika od pretplatnika, a da bi se izbjegle brojne nul vrijednosti do kojih bi došlo jer se za pretplatnika bilježe dodatni podaci, ipak je uvedena nova tablica pretplatnik. Tablica nalog_izvršeni također je uvedena radi izbjegavanja nul vrijednosti. Kako je potrebno zadržati vezu između transakcije i naloga čije se izvršavanje registrira kao transakcija, to se moglo realizirati dodatnim stupcem (id_nalog) u tablici transakcija. No kako svaka transakcija nije izvršavanje naloga, to bi dovelo do pojave nul vrijednosti koje je bolje izbjegavati. Osim toga, ovakvo rješenje omogućava dodatnu evidenciju specifičnu samo za izvršene naloge. 58 Slika 21. Relacijski model podataka (izvor: izradila autorica) 59 Atributima su određeni tipovi podataka i domene, postavljena su ograničenja NOT NULL na gotovo sve atribute, a ujedno su im određene pretpostavljene ili standardne vrijednosti (default) tamo gdje je to imalo smisla. Problem određivanja pretpostavljenih vrijednosti predstavljaju npr. numerički podaci koji mogu poprimiti vrijednost od minus beskonačno do plus beskonačno (prinos može biti negativan, 0 ili pozitivan). U takvom bi se slučaju moglo signalizirati da nedostaje podatak nekom pretjeranom i teško mogućom vrijednošću poput -99999999, međutim preporuka (Schwartz et al. 2008) je da se izbjegavaju takvi besmisleni podaci jer mogu stvoriti više problema nego koristi. Kod određivanja tipa podataka potrebno je uzeti u obzir i namjenu aplikacije. Budući da je kod financijskih aplikacija izuzetno važna preciznost, za podatke koji predstavljaju realne brojeve potrebno je koristiti tip DECIMAL (koji spada u precizne tipove podataka za koje se primjenjuje računanje sa fiksnim zarezom) a nikako aproksimativne tipove poput FLOAT ili DOUBLE za koje se primjenjuje računanje sa pomičnim zarezom dajući nepredvidive rezultate (npr. dok kod tipa DECIMAL 0.1+0.2 daju uvijek rezultat 0.3, kod tipa FLOAT 0.1+0.2 daje rezultat 0.30000000149011613). Stupcima ili kombinacijama stupaca čije vrijednosti moraju biti jedinstvene na razini tablice dodano je ograničenje UNIQUE. Npr. e-mail adresa mora biti jedinstvena na razini tablice korisnik jer će poslužiti za idetifikaciju korisnika, dok naziv portfelja mora biti jedinstven na razini jednog korisnika te je ograničenje UNIQUE postavljeno na kombinaciju id_korisnik i naziv u tablici portfelj. Tablicama su određeni primarni ključevi, pri čemu je donesena odluka o korištenju surogat ključeva (nazvanih id_imetablice) u kombinaciji sa mogućnošću koju nudi SUBP da se za jedan stupac tablice odredi tip INT (integer) sa svojstvom AUTO_INCREMENT. To znači da se, počevši od 1, njegova vrijednost povećava za 1 pri svakom unosu novog retka. Time se osigurava jednoznačna identifikacija svakog retka, a kako ujedno nema nikakvog dodatnog značenja, nije podložan eventualnim izmjenana kao što je to slučaj kod korištenja prirodnih ključeva81. Korištenje surogat ključeva također olakšava i primjenu indeksa budući da su takvi 81 Prirodni ključevi – npr. JMBG ili OIB jednoznačno identificiraju osobu pa se mogu koristiti kao primarni ključevi (premda to nije preporučljivo). 60 indeksi manji nego u slučaju kompozitnih ključeva82 (u indeks je uključen čitav primarni ključ) a također olakšava i primjenu vanjskih ključeva. Radi održavanja referencijalnog integriteta u tablice su uvedeni vanjski ključevi (u protivnom bi to trebalo osigurati putem aplikacije) na način da su u vezama 1:M primarni ključevi tablica na strani 1 uvedeni kao strani ključevi u tablice na strani M (npr. primarni ključ tablice korisnik_tip id_korisnik_tip uveden je kao vanjski ključ u tablicu korisnik). U vezama 0:1 vanjski ključ je uveden u tablicu na strani 0 (npr. id_korisnik je uveden u tablicu racun kao vanjski ključ). Uz vanjske ključeve određene su i akcije koje će primijeniti prilikom brisanja ili izmjene "roditelja" ili "djeteta": za slučaj brisanja postavljeno je ograničenje ON DELETE RESTRICT što znači da se ne može obrisati "roditelj" prije nego se obrišu sva "djeca" (odbija se brisanje sve dok potoji n-torka koja ima vanjski ključ sa tom vrijednošću) a za slučaj izmjene ON UPDATE CASCADE što znači da izmjena "roditelja" dovodi do kaskadnog mijenjaja"djece" (mijenja se n-torka sa primarnim ključem i sve n-torke koje imaju strani ključ sa tom vrijednošću). Shema je najprije normalizirana u 3NF, a zatim i denormalizirana uvođenjem deriviranih atributa83. Kod utvrđivanja atributa bilo je potrebno odlučiti da li će se i koji će se derivirani atributi doista pohranjivati u bazi, a što će se izračunavati za potrebe prikaza na zahtjev korisnika. Premda u potpuno normaliziranoj shemi nema deriviranih atributa jer to predstavlja redundanciju te odstupanje od 3NF uvođenjem funkcijskih zavisnosti84 , ovdje je u nekoliko slučajeva odstupljeno do tog pravila jer bi neki izračuni znatno usporili aplikaciju. Tako su uvedene tablice dionica_izracun i indeks_izracun te je tablici racun dodan stupac saldo jer je pretpostavka da će tablica transakcija biti jako prometna, te bi konstantno preračunavanje predstavljalo nepotrebno opterećenje za aplikaciju (iako bi se zapravo opravdanost ovakve odluke mogla utvrditi tek po izračunavanju troška izmjene dodatne tablice i troška preračunavanja prilikom stvarnog korištenja baze). 82 Kompozitni ključevi – sastoje se od dva ili više stupaca koji su i sami ključevi (npr. id_nalog i id_transakcija u tablici nalog_izvrseni), za razliku od složenih ključeva koji se sastoje od dva ili više stupaca koji nisu ključevi (npr. ime i prezime iako to ne bi bio dobar primarni ključ). 83 Derivirani (izvedeni) atributi izračunavaju se na temelju podataka u stupacima iste ili neke druge tablice. 84 Ako su X i Y skupovi atributa relacije R, relacija R zadovoljava uvjete funkcijske zavisnosti X Y ako u svakom trenutku za svaku X-vrijednost x postoji samo jedna Y-vrijednost y (Varga 1994). 61 Premda se optimalni indeksi mogu utvrditi tek nakon određenog vremena korišenja baze u stvarnim uvjetima, za početak su kreirani indeksi koje alat automatski generira i to indeksi za primarne ključeve, vanjske ključeve i UNIQUE indeksi. Primjer SQL DDL naredbe za kreiranje tablice portfelj: CREATE TABLE `portfelj` ( `id_portfelj` int(10) unsigned NOT NULL AUTO_INCREMENT, `naziv` varchar(20) COLLATE utf8_slovenian_ci NOT NULL DEFAULT 'Portfelj_01', `datum_start` datetime NOT NULL, `datum_izmjena` datetime NOT NULL, `opis` varchar(200) COLLATE utf8_slovenian_ci DEFAULT NULL, `id_korisnik` int(10) unsigned NOT NULL, PRIMARY KEY (`id_portfelj`), UNIQUE KEY `id_korisnik_naziv_UNIQUE` (`naziv`,`id_korisnik`), KEY `fk_portfelj_pretplatnik1` (`id_korisnik`), CONSTRAINT `fk_portfelj_pretplatnik1` FOREIGN KEY (`id_korisnik`) REFERENCES `pretplatnik` (`id_korisnik`) ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_slovenian_ci Kreiranje tablice započinje naredbom CREATE TABLE iza koje se navodi ime tablice (`portfelj`) te nazivi stupaca zajedno sa tipom podataka i eventualnim NOT NULL ograničenjem i pretpostavljenom vrijednošću. Za stupce znakovnog tipa ( u primjeru varchar) navedeno je i po kojem će se pravilu vršiti usporedba znakova (utf8_slovenian_ci) što je bitno prilikom sortiranja. Nakon navođenja stupaca, određeni su primarni, jedinstveni i vanjski ključevi, te je odabran stroj za skladištenje (InnoDB). 5.2.4. Grafički dizajn 5.2.4.1. Raspored elemenata S obzirom na namjenu aplikacije, primijenjen je tradicionalni linearni raspored elemenata. U gornjem dijelu nalazi se logotip zajedno sa primarnom navigacijom koji zadržavaju jednaku poziciju na svim stranicama i unutar aplikacije. Srednji dio namijenjen je za grafičke prikaze dok se preostali sadržaj nalazi u donjem dijelu. 5.2.4.2. Tipografija Odabrani su sans-serif fontovi budući da su čitljiviji i djeluju neutralnije. 62 5.2.4.3. Paleta boja Budući da logo sadrži jake boje na bijeloj podlozi, kao kontrast je odabrana tamna podloga u sivim tonovima kako bi aplikacija djelovala suzdržanije i ozbiljnije, te kako suvišno šarenilo ne bi odvlačilo korisnike od ispunjavanja osnovnih zadataka. Za akcente su odabrane boje iz logotipa tvrtke ili one sličnog intenziteta. Fotografije i ostala multimedija su izbjegnuti, premda bi se u razradi dizajna mogle uvrstiti ikone koje bi korisnicima sugerirale radnje i zadatke koje mogu izvršiti pomoću aplikacije. 5.2.5. Navigacija Navigacija web sjedišta podijeljena je na primarnu i sekundarnu (lokalnu) te je korišteno nekoliko različitih navigacijskih mehanizama. Primarnu navigaciju čini izbornik na vrhu stranice (slika 22.) kojim je omogućeno kretanje između različitih tematskih stranica (Početna, O nama, Upravljanje portfeljem, Pretplata, Kontakt). Lokalnu navigaciju (slika 23.) čini navigacija unutar aplikacije za odabir različitih grupa opcija upravljanja portfeljem (Portfelji, Napravi novi, Izmijeni, Usporedi, Izračunaj optimalni, Nalozi, Račun, Dionice). Za oba tipa navigacije odabrana je horizontalna orijentacija zbog zahtjeva da aplikacija bude "rastezljiva" odnosno da se prilagođava različitim rezolucijama. U slučaju vertikalne navigacije dio širine otpadao bi na izbornike te bi se smanjila mogućnost korištenja na manjim rezolucijama (iako je i to moguće prilagoditi pomoću CSS-a). Aktivni elementi istaknuti su različitom bojom kako bi signalizirali korisniku gdje se nalazi. Kod primarne navigacije je to učinjeno svijetlo sivom pozadinom (za razliku od neaktivnih elemenata sa tamno sivom pozadinom) dok su kod sekundarne navigacije aktivni elementi istaknuti bijelim slovima (za razliku od neaktivnih sivih). 63 Slika 22. Primarna navigacija i logotip kao navigacijski element (izvor: izradila autorica) Slika 23. Lokalna navigacija (izvor: izradila autorica) Temeljne navigacijske mehanizme korištene u aplikaciji čine: 1. horizonatlni izbornik za primarnu navigaciju (slika 22.). 2. tabovi za lokalnu navigaciju unutar aplikacije (slika 23.) 3. stablasti kod tablica za prikazivanje hijerarhije (slika 24. i slika 25.) 4. straničenje u kombinaciji sa "premotavanjem" i direktnim pristupom odabranoj stranici (slika 26.). Slika 24. Stablasti navigacijski mehanizam - zatvoren (izvor: izradila autorica) 64 Slika 25. Stablasti navigacijski mehanizam - otvoren (izvor: izradila autorica) Slika 26. Straničenje sa premotavanjem i direktnim pristupom stranici (izvor: izradila autorica) 5.2.6. Interakcija Na primjeru procesa "kupiti dionicu", odnosno njegovog dijela "izvršiti nalog", bit će objašnjeni principi dizajna interakcije: 65 Cilj korisnika je izvršiti otvoreni nalog. Korisnik pronalazi naloge na tabu "Nalozi" čime je definiran prostor unutar kojeg će se odvijati interakcija. Gumbi pored svakog naloga omogućavaju korisniku da izvrši određenu akciju – izvršavanje naloga ili njegov opoziv – te oni predstavljaju element koji omogućava interakciju. Klikom na gumb "Izvrši nalog" otvara se prozor kojim se najprije provjerava je li korisnik doista zatražio izvršavanje (što je ujedno i u skladu sa zahtjevom upotrebljivosti za sigurnošću). Nakon potvrde korisnika pokreće se proces izvršavanja naloga na strani aplikacije. Slika 27. Uspostavljanje dijaloga sa korisnikom (izvor: izradila autorica) Aplikacija prije samog izvršavanja naloga obavlja niz provjera pri čemu je bitno pružiti korisniku povratnu informaciju o uspjehu ili neuspjehu izvršavanja određene akcije te razloga eventualnog neuspjeha. U slučaju nastupanja bilo kakve okolnosti koja skreće normalni tijek izvođenja, potrebno je korisnika upozoriti te mu ostaviti mogućnost odluke o nastavku tijeka. Ovakvom razmjenom poruka ostvaruje se dijalog između korisnika i sustava što je temeljni cilj interakcije. Loš primjer bio bi izvršavanje naloga bez ikakve povratne poruke. Premda bi u ovakvom slučaju temeljna funkcionalnost i dalje bila omogućena, iskustvo korisnika s takvom aplikacijom bilo bi prilično frustruirajuće. Osim uspostavljanja dijaloga, važan element interakcije čini i vrijeme, odnosno responzivnost aplikacije. Premda se kraće vrijeme između pojedine akcije korisnika i odgovora aplikacije postiže upotrebom AJAX tehnologija, nerealno je očekivati da će to biti trenutno, tako da je korisniku potrebno pružiti vizulani i/ili auditivni signal napretka i završetka operacije (slika 28.). 66 Slika 28. Signaliziranje napretka izvršavanja određene akcije (izvor: izradila autorica) 5.3. Implementacija Implementacija aplikacije bit će prikazana u dva dijela. Najprije će se na primjeru izrade horizontalnog izbornika prikazati kako se slojevitom primjenom klijentskih tehnologija (CSSa i JavaScript-a) strukturni elementi HTML dokumenta transformiraju u dijelove sučelja, a zatim će biti prikazana implementacija jedne funkcionalnosti kroz sva tri sloja na primjeru izvršavanja naloga (premda u ponešto pojednostavljenom obliku). 5.3.1. Implementacija sučelja Na slici 29. prikazana je temeljna struktura jedne stranice definirana samo upotrebom HTMLa. Unutar crvenog okvira nalazi se lista koja će se uz pomoć CSS-a pretvoriti u horizontalni izbornik. HTML kod kojim se definira lista poveznica: <ul id="menu"> <li><a href="index.php">Početna</a></li> <li><a href="info.php">O nama</a></li> <li class="selected"><a href="portfelji.php">Upravljanje portfeljem</a></li> <li><a href="pretplata.php">Pretplata</a></li> <li><a href="kontakt.php">Kontakt<a/></li> </ul> 67 <ul> tag označava listu (eng. unordered list), čiji se pojedini elementi označavaju sa <li> tagom (eng. list item). Unutar svakog elementa liste nalazi se poveznica (definirana <a> tagom) na određenu stranicu i tekst koji se prikazuje kao kategorija izbornika. Slika 29. Temeljna struktura stranice (izvor: izradila autorica) Na slici 30. prikazana je ista stranica kao u gornjem primjeru, ali sa primijenjenim stilovima za tipografiju i pozicioniranje, dok je na sljedećoj slici 31. prikazana gotova stranica sa dodatnim stilovima za boje i pozadine. 68 Slika 30. Izgled stranice nakon primjene stilova za tipografiju i pozicioniranje (izvor: izradila autorica) Slika 31. Izgled gotovog sučelja (izvor: izradila autorica) 69 Na slici 30. vidljivo je da je lista pretvorena u horizontalni izbornik. Najosnovniji oblik CSS koda za takvu transformaciju je: ul{ list-style-type:none; } li{ float:left; } Najprije se uklanjaju kružići ispred elemenata liste, a zatim se elementi slažu horizontalno. Primjenom dodatnih stilova moguće je precizno definirati izgled izbornika. Budući da je za izradu sučelja korišten KendoUI framework, transformacija je zapravo izvršena malo drugačije. Framework nudi već predefinirane stilove pa je za pretvaranje liste u gotov izbornik bila dovoljna samo jedna linija koda kojim se element sa vrijednošću id atributa menu pretvara se u izbornik. $("#menu").kendoMenu(); 5.3.2. Implementacija funkcionalnosti "izvršiti nalog" U donjem primjeru dana je ponešto skraćena verzija koda kojim se u KendoUI framework-u određeni HTML element pretvara u tablicu. U ovom slučaju to je element vrijednosti id atributa otvoreni_nalozi u kojem se prikazuju nalozi koje je moguće izvršiti (ili opozvati). Tablica se puni podacima o nalozima definiranim u izvoru podataka (dataSource) nalozi_o. Jedan stupac tablice sadrži gumbe (command) za izvršavanje naloga. Sa svakim gumbom u tom stupcu povezana je funkcija izvrsi. KendoUI $("#otvoreni_nalozi").kendoGrid({ dataSource: nalozi_o, columns: [ { field: "broj_naloga", title: "Broj naloga"}, { field: "tip_naziv",title: "Tip"}, { field: "simbol",title: "Dionica"}, { field: "portfelj_naziv", title: "Portfelj"}, { field: "cijena",title: "Cijena"}, 70 { field: "kolicina", title: "Količina"}, { field: "datum_start", title: "Datum otvranja"}, { command: [{name:"izvrsi", text: "Izvrši nalog", click:izvrsi }],title: ""}, { command: [{name:"opozovi", text: "Opozovi nalog", click:opozovi}], title: ""} ] }); HTML <div id="otvoreni_nalozi"></div> <div id="win_nalog_i"></div> Slika 32. Otvoreni nalozi (izvor: izradila autorica) Klikom na gumb "Izvrši nalog" (slika 32.) poziva se funkcija izvrsi koja pronalazi redak tablice u kojoj se nalazi upravo kliknuti gumb, uzima vrijednost stupca id_nalog u tom retku te upućuje AJAX zahtjev kojim se poziva php skripta proslijeđuje vrijednost id_nalog korištenjem POST izvrsi_nalog.php. metode. Rezultat ovog poziva prikazuje se u novom prozoru koji ima vrijednost id atributa win_nalog_i. function izvrsi(e) { e.preventDefault(); var dataItem = this.dataItem($(e.currentTarget).closest("tr")); var wnd = $("#win_nalog_i").kendoWindow({ title: "Nalog", modal: false, visible: false, resizable: true, width: 275, content: { url: "inc/izvrsi_nalog.php", data: { id_nalog: dataItem.id_nalog }, type: "POST", } 71 Skripti se }).data("kendoWindow"); wnd.center().open(); } PHP U php skriptu izvrsi_nalog.php najprije se uključuju dodatne skripte za upravljanje greškama i sa parametrima konekcije. Nakon provjere metode kojom je upućen zahtjev (if($_SERVER['REQUEST_METHOD'] == 'POST')) vrši se provjera ima li proslijeđena varijabla ($_POST['id_nalog']) postavljenu vrijednost . Ako ima, vrijednost varijable se sanitizira kako bi se smanjila mogućnost ubacivanja malicioznog koda i izvršavanja SQL injekcije85. Nakon toga se uspostavlja konekcija sa bazom i priprema se SQL upit kojim se poziva (CALL) porcedura izvrsi_nalog. U primjeru se koristi prepared statement86 kao dodatna zaštita87 kojim se na pripremljeni predložak upita veže varijabla $id_n. Rezultat izvršavanja procedure dohvaća se drugim upitom, te se ovisno o vrijednosti statusne varijable ispisuje poruka korisniku (slika 33.). <?php require_once('error_handler.php'); require_once('db_config.php'); if($_SERVER['REQUEST_METHOD'] == 'POST'){ if(isset($_POST['id_nalog'])){ $id_n=filter_var(trim($_POST['id_nalog']), FILTER_SANITIZE_NUMBER_INT); $link= new mysqli('DB_HOST','DB_USER','DB_PASSWORD', 'DB_DATABASE'); $link->query("SET CHARACTER SET utf8"); $query="CALL izvrsi_nalog(?,@status)"; $stmt=$link->prepare($query); $stmt->bind_param("i", $id_n); 85 SQL injekcija je tehnika napada koja se sastoji od ubacivanja SQL naredbi i izvršavanja neautoriziranih SQL upita iskorištavajući neprovjeravanje unosa korisnika. 86 Prepared statements – predstavljaju svojevrsne predloške upita koji se zatim nadopunjuju promjenjivim parametrima. Glavne prednosti njihove upotrebe sastoje se od : • ubrzavanja rada - upit je potrebno samo jednom pripemiti a zatim se može izvršavati više puta sa istim ili različitim parametrim što može znatno ubrzati rad u slučaju kompleksnih upita (izbjegava se ponavljanje ciklusa analiza/kompajliranje/optimiziranje upita sa svakom promjenom parametra) • zaštite od SQL injekcije (premda pod određenim okolnostima i dalje ostaje moguća). 87 U ovom slučaju to i nije bilo nužno jer sama procedura predstavlja zaštitu od SQL injekcije budući da se vrši striktna provjera tipa ulaznog parametra te se sam upit ne mijenja unutar procedure. 72 $stmt->execute(); $stmt->close(); $result=$link->query("SELECT @status AS status"); $row=$result->fetch_object(); $status=$row->status; $link->close(); $msg=""; if($status==1){ $msg="Transakcija je uspješno izvršena."; }elseif($status==-1){ $msg="Transakcija nije izvršena."; }else{ $msg="Greška."; } echo "<p><strong>Status: </strong>".$msg."</p>"; } } ?> Slika 33. Poruka o izvršenoj transakciji (izvor: izradila autorica) MySQL procedura SET sql_mode=STRICT_TRANS_TABLES; DROP PROCEDURE IF EXISTS `izvrsi_nalog`; delimiter $$ CREATE PROCEDURE `izvrsi_nalog`(IN nalog_id INT UNSIGNED, OUT status INT) MODIFIES SQL DATA 73 BEGIN DECLARE racun_id INT UNSIGNED; DECLARE nalog_broj INT UNSIGNED; DECLARE nalog_cijena DECIMAL(10,2); DECLARE nalog_kolicina DECIMAL(12,6); DECLARE nalog_tip CHAR(1); DECLARE nalog_dionica_id INT UNSIGNED; DECLARE transakc_id_max INT UNSIGNED; DECLARE transakc_id INT UNSIGNED; DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; SET status=-1; END; ###################################### SELECT n.broj_naloga, n.cijena, n.kolicina, n.id_nalog_tip, n.id_portfelj_dionica, r.id_racun INTO nalog_broj,nalog_cijena, nalog_kolicina, nalog_tip, nalog_dionica_id, racun_id FROM nalog AS n INNER JOIN portfelj_dionica AS pd ON n.id_portfelj_dionica = pd.id_portfelj_dionica INNER JOIN portfelj AS p ON pd.id_portfelj=p.id_portfelj INNER JOIN racun AS r ON p.id_korisnik=r.id_korisnik WHERE n.id_nalog=nalog_id; START TRANSACTION; SELECT MAX(id_transakcija) INTO transakc_id_max FROM transakcija; INSERT INTO transakcija (broj_transakcije, datum_start, iznos, opis, id_transakcija_tip, id_racun) VALUES (COALESCE(transakc_id_max,0)+100001, NOW(), nalog_cijena*nalog_kolicina, CONCAT('izvršenje naloga broj ', nalog_broj), 'n', racun_id); SET transakc_id=LAST_INSERT_ID(); INSERT INTO nalog_izvrseni (id_nalog, id_transakcija, datum_kraj) VALUES (nalog_id, transakc_id, NOW()); 74 CASE nalog_tip WHEN 'k' THEN #ako je nalog za kupnju UPDATE racun SET stanje=stanje-nalog_cijena*nalog_kolicina, datum_izmjena=NOW() WHERE id_racun=racun_id; UPDATE portfelj_dionica SET ulog=ulog+nalog_cijena*nalog_kolicina, kolicina_ulog=kolicina_ulog+nalog_kolicina, datum_izmjena=NOW() WHERE id_portfelj_dionica=nalog_dionica_id; WHEN 'p' THEN #ako je nalog za prodaju UPDATE racun SET stanje=stanje+nalog_cijena*nalog_kolicina, datum_izmjena=NOW() WHERE id_racun=racun_id; UPDATE portfelj_dionica SET ulog=ulog*(1-nalog_kolicina/kolicina_ulog), kolicina_ulog=kolicina_ulog-nalog_kolicina, datum_izmjena=NOW() WHERE id_portfelj_dionica=nalog_dionica_id; END CASE; COMMIT; SET status=1; END$$ Najprije se sa sql_mode=STRICT_TRANS_TABLES postavlja zahtjev striktne provjere tipa podataka prilikom izvršavanja procedure. Procedura se kreira sa primjeru je to CREATE PROCEDURE `izvrsi_nalog`) naredbom iza koje se navodi naziv procedure (u te ulazni88 (u primjeru je to nalog_id), izlazni89 (u primjeru je to status) ili ulazno/izlazni90 (u primjeru nema takvih) parametri.Unutar procedure deklariraju se lokalne varijable91. Iza deklaracije lokalnih varijabli deklariran i način postupanja u slučaju da dođe do bilo kakve greške (DECLARE EXIT HANDLER FOR SQLEXCEPTION) kojim je određeno da se u tom slučaju prekida izvođenje procedure te se izvršava kod unutar bloka (ROLLBACK; 88 SET Ulazni parametri – omogućavaju pozivajućem programu proslijeđivanje vrijednosti proceduri, ali izmjene učinjene u samoj proceduri ne vraćaju se pozivajućem programu. Ispred naziva parametra navodi se oznaka IN koja se može i izostaviti budući da je to pretpostavljeni (default) način. 89 Izlazni parametri - omogućavaju vraćanje vrijednosti pozivajućem programu. Ispred naziva parametra navodi se oznaka OUT. 90 Ulazno-izlazni parametri – omogućavaju da se vrijednost proslijedi proceduri, ali i vrati nazad pozivajućem programu. Ispred naziva parametra navodi se oznaka INOUT. 91 Lokalne varijable – deklariraju se unutar procedure i vidljive su samo unutar bloka unutar kojeg su deklarirane. 75 status=-1;). Tim se kodom poništavaju sve izmjene nad tablicama i ujedno se postavlja vrijednost izlaznog parametra na –1 čime se signalizira pozivajućoj aplikaciji da transakcija nije uspjela. Prvim SELECT upitom pronalaze se svi podaci potrebni za izvršavanje naloga na temelju vrijednosti ulaznog parametra nalog_id te se spremaju u lokalne varijable. Budući da procedura vrši izmjene nad nekoliko tablica, a za koje je bitno da one budu ili u potpunosti izvršene ili, u slučaju bilo kakve greške, u potpunosti poništene, skupina upita kojom se vrše izmjene tretira se kao jedna tansakcija92. U standardnom režimu rada MySQL-a svaki se pojedinačni upit odmah potvrđuje, a da bi se omogućilo ovakvo tretitanje skupine upita, potrebno je postaviti svojstvo autocommit na 0 (SET AUTOCOMMIT=0 ) ili eksplicitno navesti početak transakcije sa START TRANSACTION, te na kraju transakciju i potvrditi sa COMMIT93 ili poništiti sa ROLLBACK. Unutar transakcije vrše se izmjene ovisno o tome radi li se o nalogu za kupnju ili prodaju i to nad nekoliko tablica. U slučaju uspješno izvršene transakcije, izmjene se potvrđuju te se postavlja vrijednost izlaznog parametra na 1. Ako je transakcija uspješno izvršena, izvršeni nalog nalazit će se sad na popisu izvršenih naloga. 5.4.Testiranje Na važnost testiranja ukazat će se kroz primjer testiranja kompatibilnosti web preglednika. Prikaz apliakcije u web pregledniku Internet Explorer 6 (slika 34.) predstavlja primjer ekstremne nekompatibilnosti korištenih tehnologija i web preglednika. Budući da KendoUI 92 Transakcija je upit ili skupina upita koji se tretiraju kao nedjeljiva cjelina. Za njih poslužitelj baze podataka garantira da će biti izvršeni u potpunosti ili uopće neće biti izvršeni. U slučaju bilo kakve greške, izmjene se poništitavaju kako bi baza ostala u konzistentnom stanju. Transakcije same po sebi nisu dovolje već je nužno da susatv udovolji ACID testu: Atomicity (cjelovitost) – transakcija mora funkcionirati kao nedjeljiva cjelina tako da se izvršava u potpunosti ili se uopće ne izvršava. Consistency (konzistentnost) – baza podatka mora se uvijek nalaziti u kozistentnom stanju (prelaziti iz jednog konzistentnog stanja u drugo). Isolation (izolacija) – rezultati transakcije nisu vidljivi izvan transakcije sve dok se ona ne potvrdi. Durability (trajnost) – nakon što je transakcija potvrđena, izmjene su trajne. 93 Ovo je tzv. eksplicitni COMMIT za razliku od implicitnog kojim se potvrđuje transakcija bez izdavanja COMMIT naredbe ( npr. izdavanjem DDL naredbe ili ponovnim navođenjem START TRANSACTION potvrdit će se transakcija koja je bila u tijeku). 76 framework ne podržava ovu verziju preglednika, elementi sučelja uopće se ne prikazuju tako da aplikaciju nije moguće koristiti. U produkcijskoj verziji ovakva situacija ne bi bila prihvatljiva te bi alternativnim pristupom trebalo osigurati barem minimum funkcionalnosti za korisnike starijih preglednika. Slika 34. Izgled stranice u web pregledniku Internet Explorer 6 (izvor: izradila autorica) Slika 35. Izgled stranice u web pregledniku Opera 9 (izvor: izradila autorica) Manje ekstreman primjer predstavlja prikaz u pregledniku Opera 9 (slika 35.) koji također nije podržan. U ovom slučaju aplikacija ostaje funkcionalna, ali temeljni problem čini narušeni izgled sučelja zbog nepodržavanja određenih CSS svojstava, što također nije prihvatljivo te bi trebalo korigirati primjenom jednog od pristupa navedenih u poglavlju 3.3.1. 77 6. Primjeri korištenja prototipa web aplikacije za upravljanje portfeljem 6.1. Pregledavanje portfelja i otvaranje naloga Slika 36. Prikaz portfelja i otvaranja naloga (izvor: izradila autorica) Slika 36. prikazuje početni prikaz aplikacije korisnika koji već ima kreirane portfelje. Pregledavanja portfelja omogućeno je na tabu "Portfelji" (1). Za svaki portfelj prikazuju se osnovni pokazatelji (2), dok su dodatne informacije i podaci o dionicama u sastavu portfelja dostupni klikom na strelicu (7). Klikom na "Prikaži graf" (3) prikazuje se graf strukture portfelja i kretanja cijena dionica (4) u njegovom sastavu za 60 tjedana unazad (to je period za koji se izračunavaju određeni pokazatelji). Moguće je otvoriti nalog za kupnju/prodaju/podešavanje strukture portfelja klikom na "Otvori nalog" (5), te se tad u zasebnom prozoru otvara obrazac za otvaranje naloga (6). Korisniku se prikazuju aktualni podaci o trgovanju (8). Na slici 37. prikazani su dodatni podaci o portfelju. Korisniku su na raspolaganju opći podaci (1) i podaci o dionicama u sastavu portfelja (2). Za svaku dionicu prikazuju se određeni pokazatelji (3), a klikom na "Info" (4) prikazuju se opći podaci o dionici u zasebnom prozoru 78 (5) ili klikom na "Prikaži graf" (6) prikazuje se graf kretanja cijene odabrane dionice (7). Za svaku dionicu moguće je otvoriti nalog klikom na "Otvori nalog" (8) pri čemu se otvara obrazac u zasebnom prozoru (9). Slika 37. Prikaz dionica u portfelju, dodatnih informacija i otvaranja naloga (izvor: izradila autorica) Slika 38. Prikaz izbornika za odabir načina sortiranja i odabira stupaca (izvor: izradila autorica) 79 Slika 38. prikazuje izbornik koji je dostupan na gotovo svim tablicama. Klikom na strelicu (1) pored naziva stupca prikazuje se izbornik kojim je omogućen odabir načina sortiranja (2) te odabir stupaca za prikaz (3). Pravila: 1. Portfelj ne mora sadržavati dionice. 2. Portfelj može sadržavati kupljene i virtualne dionice94. 3. Otvoriti nalog za portfelj moguće je samo ako porftelj sadrži dionice (bilo kupljene ili virtualne). 4. Otvaranjem naloga za kupnju/prodaju portfelja, te odabirom raspoređivanja iznosa prema stvarnim/ciljnim udjelima, otvaraju se pojedinačni nalozi za kupnju/prodaju dionica uz zadržavanje odabrane strukture portfelja. 5. Otvoriti nalog za prodaju moguće je samo ako postoje doista kupljene dionice u portfelju (nije dozvoljena kratka prodaja). 6. Otvaranjem naloga za podrešavanje strukture portfelja otvaraju se pojedinačni nalozi za kupnju/prodaju dionica u sastvau portfelja kako bi se stvarna struktura podesila pema ciljnoj uz zadržavanje vrijednosti portfelja. 7. Otvoriti nalog za podešavanje strukture portfelja moguće je samo ako postoje doista kupljene dionice u portfelju. 8. Ako su prilikom otvaranja naloga za podešavanje sturkture portfelja svi ciljni udjeli postavljeni na nulu, otvorit će se nalozi za prodaju svih dionica iz portfelja. 6.2. Kreiranje novog portfelja Slika 39. prikazuje opcije za kreiranje novog portfelja koje su dostupne na tabu "Napravi novi portfelj" (1). Korisnik odabire naziv portfelja (2) i opis (3), te može odmah dodati dionice (4) (to može i naknadno učitinit opcijama za izmjenu strukture portfelja). Korisniku su na raspolaganju dodatne informacije o pojedinoj dionici (na slici 39. prikazane u zasebnom prozoru) klikom na gumb "Info" (5) ili prikaz grafa kretanja cijena dionica klikom na gumb "Prikaži graf" (6). 94 Kako bi se omogućilo praćenje učinka izmjene strukture portfelja, dopušteno je držanje dionica koje su doista kupljene (s ulogom) i virtualne (bez uloga). Zbog toga se pravi i razlika u računanju udjela pojedine dionice u portfelju. Stvarni udjeli računaju se na temelju udjela dionice u vrijednosti portfelja, a ciljni udio korisnik sam postavlja ili se izračunava kod računanja optimalnog portfelja. Izdavanjem naloga za podešavanje strukture portfelja moguće je stvarnu strukturu podesiti prema ciljnim udjelima. 80 Slika 39. Kreiranje novog portfelja (izvor: izradila autorica) Pravila: 1. Naziv je obavezan, mora sadržavati minimalno 2, a maksimalno 20 znakova i može se sastojati samo od slova, brojeva i znaka podcrtavanja. 2. Opis nije obavezan, može sadržavati maksimalno 200 znakova. 3. Portfelj ne mora sadržavati dionice. 6.3. Izmjena portfelja Slika 40. prikazuje opcije izmjene portfelja koje su dostupne na tabu "Izmijeni portfelj" (1). U gornjem dijelu nalazi se popis svih portfelja korisnika (2). Korisnik može obrisati odabrani portfelj(3), može izmijeniti naziv i/ili opis (4) ili strukturu portfelja (5). Klik na (4) ili (5) otvara pristup opcijama za izmjenu. Slika 40. Izmjena portfelja (izvor: izradila autorica) 81 a) Izmjena naziva i/ili opisa Slika 41. prikazuje opcije za izmjenu naziva i/ili opisa portfelja. Odabranom portfelju (1) naziv (2) i opis (3) mijenjaju se uz ista pravila koja vrijede kao i kod kreiranja portfelja. Slika 41. Izmjena naziva/opisa portfelja (izvor: izradila autorica) b) Izmjena strukture portfelja Slika 42. prikazuje opcije izmjene strukture portfelja. Za odabrani portfelj (1) prikazuju se pokazatelji u dva odjeljka (2) i (3) kako bi se mogao pratiti utjecaj izmjena na performanse portfelja. Portfelju je moguće mijenjati strukturu dodavanjem (12) ili uklanjanjem (9) dionica. Na raspolaganju su dodatne informacije o dionicama klikom na "Info" (10) i (13) i grafički prikazi kretanja cijena klikom na "Prikaži graf" (11) i (14). Moguće je mijenjati i ciljne udjele (7). Izmijenjeni udjeli označeni su crvenom oznakom (8). Nakon učinjenih izmjena moguće je preračunati (4) pokazatelje da bi se vidio učinak izmjena na performanse portfela. U odjeljku (2) prikazuju se performanse prije izmjene a u (3) nakon izmjene. Izmjene je moguće pohraniti (6) ili poništiti (5). 82 Slika 42. Izmjena strukture portfelja (izvor: izradila autorica) Pravila: 1. Moguće je obrisati samo prazan portfelj ili onaj koji sadrži samo virtualne dionice. Brisanje portfelja koji sadrži kupljene dionice moguće je tek nakon prodaje svih dionica iz portfelja. 2. Iz portfelja moguće je ukloniti samo virtualne dionice (uklanjanje kupljenih obavlja se prodajom). 3. Zbroj ciljnih udjela mora biti 0 ili 100. 4. Pokazatelji se u odjeljku (2) računaju na temelju kupljenih dionica (ako ih ima) i stvarnih udjela, a ako se u portfelju nalaze samo virtualne, na temelju ciljnih udjela. U odjeljku (3) pokazatelji se računaju na temelju ciljnih udjela. 5. U portfelju se dionica može pojaviti samo jednom (nije moguć višestruki prikaz iste dionice). 83 6.4. Usporedba dionica ili portfelja Slika 43. Usporedba portfelja (izvor: izradila autorica) Slika 43. prikazuje opcije za usporedbu portfelja. Na tabu "Usporedi" (1) dane su opcije za usporednu odabranih portfelja (2) ili dionica (3). a) Usporedba portfelja Za odabrane portfelje (4) prikazuje se tablica sa pokazateljima a moguć je i prkaz grafa prinos/rizik (5) ili graf cijena i udjela (8) pojedinačnog portfelja. Na grafu (5) dodatno se prikazuje Crobex indeks (7). b) Usporedba dionica Usporedba dionica (prikazana na slici 44.) vrši se jednako kao i usporedba portfelja osim što je omogućen odabir prikaza 2 vrste grafa (1): očekivani prinos i beta ili standardna devijacija. 84 Moguće je prikazivanje dodatnih informacija o pojedinoj dionici klikom na "Info" (2) te grafa kretanja cijena pojedine dionice klikom na "Prikaži graf" (3). Slika 44. Usporedba dionica (izvor: izradila autorica) Prvila: 1. Za prikaz mora biti odabran barem 1 portfelj ili dionica. 6.5. Izračunavanje optimalnog portfelja Opcije za izračunavanje optimalnog portfelja (slika 45.) dostupne su na tabu "Izračunaj optimalni portfelj" (1). Najprije se određuju parametri za izračun na tabu "Izračun" (2) a rezultat se prikazuje na tabu "Rezultat" (3). Korisnik može postaviti kriterij likvidnosti (4) ako želi isključiti dionice slabije likvidnosti. Daljnja restrikcija dionica koje ulaze u izračun omogućena je odabirom sektora (5). Opis sektora dostupan je klikom na "Prikaži opis sektora" (7) koji se prikazuje u zasebnom prozoru (8) ili kao tooltip (6). 85 Dionice koje udovoljavaju postavljenim kriterijima prikazuju se u tablici (9) te je korisniku ostavljena mogućnost da isključi određene dionice iz izračuna (10). Klikom na "Info" (11) dostupne su dodatne informacije o dionici u zasebno prozoru ili klikom na "Prikaži graf" (12) graf kretanja cijene dionice. Klikom na "Izračujaj optimalni portfelj" (13) vrši se izračun i prikazuje rezultat. Slika 45. Izračunavanje optimalnog portfelja (izvor: izradila autorica) Na tabu "Rezultat" (Slika 46.) prikazuje se rezultat izračuna (1) i to usporedno za optimalni portfelj i indeks Crobex. Struktura optimalnog portfelja prikazuje se u tablici (2). Omogućeno je prikazivanje dvije vrste grafova (3): strukture optimalnog portfelja i kretanja cijena dionica u njegovom sastavu za razdoblje izračuna (prikazano na slici 46.) te graf usporedbe prinosa i rizika za optimalni portfelj i indeks Crobex (prikazano na slici 47.). Optimalni portfelj moguće je spremiti klikom na "Spremi portfelj" (4). Moguće je dobiti i dodatne informacije o dionici klikom n "Info" (5) ili grafički prikaz kretanja cijene dionice klikom na "Prikaži graf" (6). 86 Slika 46. Rezultat izračuna optimalnog portfelja (izvor: izradila autorica) Slika 47. Graf prinos/rizik (izvor: izradila autorica) Pravila: 1. Kriterij likvidnosti u rasponu od 0 do 100 računa se na temelju broje dana trgovanja određenom dionicom u odnosu na ukupan broj dana trgovanja u razdoblju od 60 87 tjedana unazad od dana na koji se vrši izračun. Kriterij likvidnosti postavljen na 0 znači da će u izračun biti uključene sve dionice, a 100 znači da će biti uključene samo one kojima je broj dana trgovanja jednak ukupnom broju dana tgovanja (izračun ne uzima u obzir količinu protrgovanih dionica). 2. Mora biti odabran barem jedan sektor. 3. U izračun mora biti uključena barem jedna dionica. 6.6. Pregledavanje, izvršavanje ili opoziv naloga Slika 48. Nalozi (izvor: izradila autorica) Slika 48. prikazuje naloge koji su dostupni na tabu "Nalozi" (1) i to u odvojenom prikazu otvorenih (2) i izvršenih (3). Otvorene naloge moguće je izvršiti (4) ili opozvati (5). Pravila: 1. Da bi se izvršio ili opozvao, nalog mora biti otvoren. 2. Za izvršavanje naloga korisnik mora imati otvoreni račun. 3. U slučaju kupnje, saldo na računu mora biti veći ili jednak iznosu naloga. 4. U slučaju prodaje, količina dionice mora biti veća ili jednaka količini na nalogu (nije dozvoljena kratka prodaja). 88 6.7. Upravljanje računom Slika 49. prikazuje opcije upravljanja računom omogućene na tabu "Račun" (1). Korisnik ima na raspolaganju opcije za otvaranje računa (2), zatvaranje (3), uplate na račun (4) i (5), te isplate sa računa (6) i (7). Prikazuju se osnovne informacije o računu (8) i zadnjoj transakciji (9), te popis svih transakcija po računu (10). Slika 49. Upravljanje računom (izvor: izradila autorica) Pravila: 1. Korisnik može imati samo jedan otvoreni račun. 2. Prilikom zatvaranja računa saldo mora biti jedank nuli. Ako je saldo veći od nule, potrebno je prije zatvaranja računa izvršiti isplatu. 3. Račun ne može imati negativan saldo. 6.8. Pregledavanje dionica i podataka o trgovanju Na tabu "Dionice" (1) omogućeno je pregledavanje podataka o dionicama (slika 50.) i to određenih pokazatelja (2), općih podataka (3) i podataka o trgovanju (4). Moguć je prikaz grafa kretanja cijena određene dionice klikom na "Prikaži graf" (5). 89 Slika 50. Prikaz dionica i podataka o trgovanju (izvor: izradila autorica) 90 7. Zaključak U ovom radu prikazan je proces izrade web sjedišta s posebnim naglaskom na web aplikacije. Zahtjevnost korisnika s jedne strane te sve brži razvoj i zastarijevanje tehnologija s druge strane, učinili su web sustave izrazito heterogenim i dinamičnim tvorevinama koje svoju kompleksnost često skrivaju iza atraktivnih sučelja pružajući samo iluziju jednostavnosti. Upravo usklađivanje svih komponenata jednog takvog sustava kako bi se korisniku omogućio jedinstveni doživljaj, a koji će biti razlogom da se on iznova vraća, predstavlja pravi izazov razvoja. Pri tome se kao jedan od imperativa nameće postizanje odgovarajuće razine upotrebljivosti koju potpomaže primjena Ajax tehnologija. Premda se u radu nastojalo dati prikaz razvoja web aplikacija kao jednog zaokruženog procesa, stvarnost nameće potrebu sagledavanja i nekih dodatnih aspekata koji zbog ograničenog prostora nisu mogli biti obuhvaćeni ovim radom. Posebno se to odnosi na sigurnost aplikacija koje uključuju novčane transakcije. Osim teorijskog dijela, rad je pratila i izrada prototipa web aplikacije za upravljanje portfeljem koji je, osim za prikaz procesa razvoja, poslužio i za postavljanje određenih temelja s obzirom da je intencija autorice nastavak razvoja aplikacije. Tijekom rada stečena su nova znanja vezana uz korištene tehnologije te su utvrđene i određene mane učinjenog odabira. Daljnji razvoj išao bi u smjeru implementacije dodatnih metoda konstruiranja optimalnog portfelja čije bi pretpostvake bile bliže stvarnosti od primijenjene metode temeljene na jednoindeksnom modelu. No, to bi podrazumijevalo i složenije izračune što bi posljedično, zbog neprikladnosti PHP-a i ostalih skriptnih jezika za takvu namjenu, značilo promjenu implementiranih tehnologija. Dodatna bi poboljšanja mogla predstavljati korištenje web servisa za preuzimanje aktualnih podataka o trgovanju dionicama, povećanje interaktivnosti te jednostavosti i ugodnosti korištenja putem omogućavanja drag&drop dodavanja dionica u portfelj, te samostalnog odabira i slaganja elemenata sučelja, a svakako bi trebalo tu uključiti i bolju podršku za starije web preglednike te prilagodbu aplikacije za mobilne uređaje. 91 Literatura Knjige: 1. Amenc, N, Sourd, LV 2003, Portfolio Theory and Performance Analysis, John Wiley & Sons Ltd, West Sussex 2. Casteleyn, S, Daniel, F, Dolog, P, Matera, M 2009, Engineering Web Applications, Springer-Verlag , Berlin 3. Elton, EJ, Gruber, MJ, Brown, SJ, Goetzmann, WN 2003, Modern Portfolio Theory and Investment Analysis, Sixth Edition, John Wiley & Sons Ltd, West Sussex 4. Kalbach, J 2007, Designing Web Navigation, O’Reilly Media, Sebastopol 5. Kappel, G, Proll, B, Reich, S, Retschitzegger, W 2006, Web Engineering The Discipline of Systematic Development of Web Applications, John Wiley & Sons Ltd, 6. Parker, T, Toland, P, Jehl, S, Wachs, MC 2010, Designing with Progressive Enhancement: Building the Web that Works for Everyone, New Riders, Berkeley 7. MacIntyre, P, Danchilla, B, Gogala, M 2011, Pro PHP Programming, Apress, New York 8. Rossi, G, Pastor, O, Schwabe, D, Olsina, L 2008, Web Engineering: Modelling and Implementing Web Applications, Springer-Verlag, London 9. Schwartz, B, Zaitsev, P, Tkachenko,V, Zawodny, JD, Lentz, A, Balling, DJ 2008, High Performance MySQL, Second Edition, O’Reilly Media, Sebastopol 10. Sharp, H, Rogers, Y, Preece, J 2002, Interaction Design: Beyond Human-Computer Interaction, John Wiley & Sons Ltd, West Sussex 11. Sikos, LF 2011, Web Standards - Mastering HTML5, CSS3, and XML, Apress, New York 12. Tidwell, J 2011, Designing Interfaces, O’Reilly Media, Sebastopol 13. Varga, M 1994, Baze podataka, DRIP, Zagreb 14. Zambonini, D 2011, A Practical Guide to Web App Success, Five Simple Steps, Penarth Ostalo: 1. Internet World Stats, pristupljeno 20.10.2012. http://www.internetworldstats.com/stats.htm 2. Interoute, What is Cloud Hosting?, pristupljeno 13.12.2012. http://www.interoute.com/vdc/what-is-cloud-hosting 92 3. Korunić, D 2008, DNS priručnik, pristupljeno 13.12.2012. http://sistemac-portal.carnet.hr/system/files/DNS-prirucnik-1_5.pdf 4. OWASP 2008, OWASP Testing Guide, pristupljeno 15.01.2013. http://www.owasp.org/images/5/56/OWASP_Testing_Guide_v3.pdf 5. Pravilnik o ustrojstvu i upravljanju vršnom nacionalnom internetskom domenom, pristupljeno 13.12.2012. http://www.dns.hr/pravilnik 6. Silver, A 2007, What Puts the Design in Interaction Design, pristupljeno 28.11.2012. http://www.uxmatters.com/mt/archives/2007/07/what-puts-the-design-in-interactiondesign.php 7. World Wide Web Consortium, pristupljeno 03.12.2012.http://www.w3c.com 8. Zagrebačka burza, pristupljeno 05.11.2012.http://www.zse.hr 93 Popis slika Slika 1. Kompleksnost web sustava ........................................................................................... 9 Slika 2. Višeslojna arhitektura.................................................................................................. 11 Slika 3. Razmjena HTTP poruka.............................................................................................. 12 Slika 4. Rezultat HTML primjera u web pregledniku.............................................................. 14 Slika 5. Tradicionalni web model ............................................................................................ 18 Slika 6. Ajax model.................................................................................................................. 19 Slika 7. Arhitektura MySQL SUBP-a ...................................................................................... 22 Slika 8. Uobičajeni raspored elemenata web stranice .............................................................. 28 Slika 9. Serif i sans-serif font ................................................................................................... 29 Slika 10. Kombinacije boja: komplementarne, analogne, triadne............................................ 30 Slika 11. Kategorije navigacije ................................................................................................ 31 Slika 12. Usporedba tehnologija za izradu sučelja................................................................... 33 Slika 13. Entiteti i osnovni tipovi veza .................................................................................... 34 Slika 14. Relacija "Dionica"..................................................................................................... 35 Slika 15. Efikasna granica ........................................................................................................ 45 Slika 16. Primjer opisa tipičnog korisnika - personas ............................................................. 51 Slika 17. Dijagram slučajeva korištenja pretplatnika............................................................... 52 Slika 18. Početni model eniteti-veze ........................................................................................ 54 Slika 19. Wireframe model ...................................................................................................... 56 Slika 20. Izgled gotovog sučelja .............................................................................................. 57 Slika 21. Relacijski model podataka ........................................................................................ 59 Slika 22. Primarna navigacija i logotip kao navigacijski element ........................................... 64 Slika 23. Lokalna navigacija .................................................................................................... 64 Slika 24. Stablasti navigacijski mehanizam - zatvoren ............................................................ 64 Slika 25. Stablasti navigacijski mehanizam - otvoren.............................................................. 65 Slika 26. Straničenje sa premotavanjem i direktnim pristupom stranici.................................. 65 Slika 27. Uspostavljanje dijaloga sa korisnikom ..................................................................... 66 Slika 28. Signaliziranje napretka izvršavanja određene akcije ................................................ 67 Slika 29. Temeljna struktura stranice ....................................................................................... 68 Slika 30. Izgled stranice nakon primjene stilova za tipografiju i pozicioniranje ..................... 69 Slika 31. Izgled gotovog sučelja .............................................................................................. 69 Slika 32. Otvoreni nalozi.......................................................................................................... 71 Slika 33. Poruka o izvršenoj transakciji ................................................................................... 73 Slika 34. Izgled stranice u web pregledniku Internet Explorer 6 ............................................. 77 Slika 35. Izgled stranice u web pregledniku Opera 9............................................................... 77 Slika 36. Prikaz portfelja i otvaranja naloga ............................................................................ 78 Slika 37. Prikaz dionica u portfelju, dodatnih informacija i otvaranja naloga......................... 79 Slika 38. Prikaz izbornika za odabir načina sortiranja i odabira stupaca ................................. 79 Slika 39. Kreiranje novog portfelja .......................................................................................... 81 Slika 40. Izmjena portfelja ....................................................................................................... 81 Slika 41. Izmjena naziva/opisa portfelja .................................................................................. 82 Slika 42. Izmjena strukture portfelja ........................................................................................ 83 Slika 43. Usporedba portfelja................................................................................................... 84 Slika 44. Usporedba dionica..................................................................................................... 85 Slika 45. Izračunavanje optimalnog portfelja........................................................................... 86 Slika 46. Rezultat izračuna optimalnog portfelja ..................................................................... 87 Slika 47. Graf prinos/rizik ........................................................................................................ 87 Slika 48. Nalozi ........................................................................................................................ 88 94 Slika 49. Upravljanje računom................................................................................................. 89 Slika 50. Prikaz dionica i podataka o trgovanju....................................................................... 90 95 Sažetak S obzirom na današnju neupitnu važnost prisutnosti na Webu, jednom kad se donese odluka o uspostavljanju web sjedišta ili redizajniranju postojećeg, postavlja se pitanje koji su to koraci potrebni u njegovom razvoju. Cilj rada sastoji se u prikazu razvoja web sjedišta kroz ključne aktivnosti i to najprije teorijski a zatim kroz praktičan primjer. Budući da gotovo i nema web sjedišta koje ne uključuje određenu razinu interaktivnosti, to je za primjer odabrana izrada web aplikacije. U radu se najprije vrši prikaz ključnih karakteristika web aplikacija i to putem njihove usporedbe sa informacijski orijentiranim web sjedištima s jedne strane te tradicionalnim aplikacijama s druge strane, nakon čega slijedi pregled tehnologija koje stoje na raspolaganju prilikom razvoja, no ograničen na one doista korištene u izradi samog prototipa. U nastavku se daje prikaz procesa razvoja koji obuhvaća: planiranje i utvrđivanje zahtjeva, dizajn, implementaciju, testiranje, održavanje i evoluciju. Drugi dio rada posvećen je izradi prototipa web aplikacije za upravljanje portfeljem dionica. Budući da aplikacija omogućava izračunavanje optimalnog portfelja, za izračun je implementirana Elton-Gruber metoda konstruiranja optimalnog portfelja temeljena na Sharpeovom jednoindeksnom modelu. U radu je dan i kratki prikaz implementirane metode. Ključne riječi: web aplikacije, proces razvoja, optimalni portfelj.
© Copyright 2024 Paperzz