Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
FAKULTETA ZA INFORMACIJSKE ŠTUDIJE
V NOVEM MESTU
D I P L O M S K A N A L O G A
UNIVERZITETNEGA ŠTUDIJSKEGA PROGRAMA PRVE STOPNJE
PETER GRILJ
FAKULTETA ZA INFORMACIJSKE ŠTUDIJE
V NOVEM MESTU
DIPLOMSKA NALOGA
SPLETNA GALERIJA »galx«
Mentor: doc. dr. Blaž Rodič
Novo mesto, september 2010 Peter Grilj
IZJAVA O AVTORSTVU
Podpisani Peter Grilj, študent FIŠ Novo mesto, v skladu z določili statuta FIŠ izjavljam:
da sem diplomsko nalogo pripravljal samostojno na podlagi virov, ki so navedeni v diplomski nalogi,
da dovoljujem objavo diplomske naloge v polnem tekstu, v prostem dostopu, na spletni strani FIŠ oz. v digitalni knjižnici FIŠ (obkroži odločitev):
o takoj, o po preteku 12 mesecev po uspešnem zagovoru, o ne dovoljujem objave na spletni strani oz. v elektronski knjižnici FIŠ zaradi
prepovedi organizacije, v sklopu katere je bil pripravljen empirični del naloge. da je diplomska naloga, ki sem jo oddal v elektronski obliki identična tiskani verziji, da je diplomska naloga lektorirana.
V Novem mestu, 30.9.2010 Podpis avtorja ______________________
ZAHVALA
Zahvaljujem se mentorju doc. dr. Blažu Rodiču za strokovno pomoč in nasvete pri izdelavi diplomske naloge.
Zahvala gre tudi moji družini in vsem ostalim, ki so mi bili tekom študija v podporo in pomoč.
POVZETEK
Diplomska naloga zajema opis orodij in tehnologij ter razvoj spletne galerije »galx«. Povod
za razvoj aplikacije je vedno večja potreba različnih vrst umetnikov po samopredstavitvi na
spletu. Namen diplomske naloge je razviti specifični CMS (»Content Management System«)
sistem s primarno funkcionalnostjo spletne galerije, ki bo stremela k čim boljšem pokritju
uporabniških zahtev in preprostosti uporabe. Kot sekundarne funkcionalnosti pa bo rešitev
vsebovala še ostale ključne elemente, ki jih mora vsebovati vsaka predstavitvena stran na
spletu: blog, komentarje, povezave, statične strani z dodatnimi informacijami itn. Dodana
vrednost te rešitve za uporabnika je možnost enostavnega ustvarjanja in urejanja vsebin ter
prilagajanja oblike spletne strani lastnim potrebam. Ciljni uporabniki sistema »galx« so
predvsem različni tipi umetniško usmerjenih podjetij ali posameznikov in tisti, ki bi se želeli
na spletu predstaviti z zbirkami slik.
KLJUČNE BESEDE: spletna stran, galerija, slike, komentarji, blog, povezave, teme,
iskanje, administracija, CMS sistem.
ABSTRACT
The thesis contains a brief description of tools and technologies, as well as the development
of “galx” web gallery. The catalyst to develop this application is the increased need of
different types of artists for self presentation on the web. The purpose of the thesis is to
develop a specific CMS with web gallery as its primary functionality, which is going to try
covering user demands and include an intuitive user interface. Its secondary functionalities are
the other usual key elements of any self presentation website: blog, comments, links, static
pages, etc. The advantages of such an application for the user are the possibilities to easily
create and edit content and the adaptation of the page's design to personal needs. The target
users of the “galx” system are mainly different types of businesses or individuals who would
like to present themselves with collections of images.
KEY WORDS: web gallery, web page, images, comments, links, themes, search,
administration, CMS
KAZALO
1 UVOD ................................................................................................................................. 1
2 PREGLED PODOBNIH REŠITEV ................................................................................... 2
2.1 Galerije z uporabo odprtokodnih CMS sistemov ........................................................ 2
2.2 Gallerycms ................................................................................................................... 3
2.3 Gullery ......................................................................................................................... 3
2.4 GrokPhoto .................................................................................................................... 3
2.5 Gallery ......................................................................................................................... 4
2.6 Coppermine gallery ...................................................................................................... 4
2.7 Zenphoto ...................................................................................................................... 4
3 METODOLOGIJA ............................................................................................................. 5
3.1 Agilna metoda razvoja aplikacij .................................................................................. 6
3.1.1 Posamezniki in komunikacija so pomembnejši kot sam proces in orodja ............ 7
3.1.2 Delujoča programska oprema je pomembnejša kot popolna dokumentacija....... 7
3.1.3 Vključevanje uporabnika je pomembnejše kot pogajanje na osnovi pogodb ....... 7
3.1.4 Upoštevanje sprememb je pomembnejše od sledenja planu. ................................ 8
3.1.5 Priporočila pri gradnji in vrednotenju metodologij ............................................. 8
3.1.6 Model XP .............................................................................................................. 9
3.1.7 Model SCRUM .................................................................................................... 10
3.1.8 Model FDD ......................................................................................................... 11
3.1.9 Model ASD .......................................................................................................... 12
3.1.10 Agilna metodologija in Ruby on Rails ................................................................ 13
4 OPIS PROGRAMSKEGA OKOLJA APLOKACIJE ...................................................... 14
4.1 Programski jezik Ruby ............................................................................................... 14
4.2 Platforma Ruby on Rails ............................................................................................ 15
4.2.1 Komponente Ruby on Rails................................................................................. 18
4.3 jQuery ........................................................................................................................ 19
4.4 Podatkovna baza MySQL .......................................................................................... 19
4.5 Strežnik Nginx ........................................................................................................... 20
4.5.1 Phusion Passenger ............................................................................................. 21
4.6 Sphinx ........................................................................................................................ 21
4.7 ImageMagick ............................................................................................................. 21
5 NAČRTOVANJE APLIKACIJE ..................................................................................... 21
5.1 Analiza zahtev ............................................................................................................ 22
5.2 Definiranje funkcionalnosti aplikacije ....................................................................... 23
5.2.1 Primeri uporabe ................................................................................................. 23
5.2.2 Podatkovni model ............................................................................................... 25
5.2.3 Koncept uporabniškega vmesnika ...................................................................... 28
5.3 Časovni načrt ............................................................................................................. 33
6 IMPLEMENTACIJA ....................................................................................................... 34
6.1 Priprava sistema ......................................................................................................... 34
6.1.1 Compass ............................................................................................................. 35
6.1.2 Haml/Sass ........................................................................................................... 35
6.1.3 Haml-scaffold ..................................................................................................... 35
6.1.4 Will_paginate ..................................................................................................... 35
6.1.5 Mocha ................................................................................................................. 35
6.1.6 FCKeditor ........................................................................................................... 35
6.1.7 Paperclip ............................................................................................................ 35
6.2 Implementacija galerije .............................................................................................. 36
6.3 Implementacija slik .................................................................................................... 36
6.4 Implementacija bloga ................................................................................................. 37
6.4.1 Acts-as-taggable-on ............................................................................................ 37
6.5 Implementacija komentarjev ...................................................................................... 37
6.5.1 RedCloth ............................................................................................................. 37
6.6 Implementacija statičnih strani .................................................................................. 37
6.7 Implementacija povezav ............................................................................................ 38
6.8 Implementacija indeksne strani.................................................................................. 38
6.8.1 Implementacija glave .......................................................................................... 38
6.8.2 Implementacija noge........................................................................................... 38
6.9 Implementacija nadzorne plošče ................................................................................ 38
6.9.1 Simple navigation ............................................................................................... 39
6.9.2 Rails-settings ...................................................................................................... 39
6.10 Implementacija tem ................................................................................................ 39
6.11 Implementacija zaščite ........................................................................................... 39
6.11.1 Authlogic ............................................................................................................. 40
6.12 Implementacija iskanja ........................................................................................... 40
7 TESTIRANJE ................................................................................................................... 40
7.1 Testiranje enot ............................................................................................................ 41
7.2 Funkcionalno testiranje .............................................................................................. 42
7.3 Testiranje integracije .................................................................................................. 43
7.4 Sistemsko testiranje ................................................................................................... 44
8 REZULTAT RAZVOJA .................................................................................................. 46
8.1 Namestitev ................................................................................................................. 46
8.2 Uporaba ...................................................................................................................... 47
8.2.1 Predstavitveni del ............................................................................................... 47
8.2.2 Administratorski del ........................................................................................... 54
9 ZAKLJUČEK ................................................................................................................... 60
10 LITERATURA ................................................................................................................. 63
11 VIRI .................................................................................................................................. 65
KAZALO SLIK
Slika 3.1: Model XP ................................................................................................................. 10
Slika 3.2: Model SCRUM ........................................................................................................ 11
Slika 3.3: Model FDD .............................................................................................................. 12
Slika 4.1: Hierarhija razredov Ruby 1.9 ................................................................................... 15
Slika 4.2: Rails Model View-Controler-arhitektura ................................................................. 17
Slika 5.1: Primer uporabe: administrator .................................................................................. 24
Slika 5.2: Primer uporabe: obiskovalec .................................................................................... 25
Slika 5.3: Podatkovni model ..................................................................................................... 26
Slika 5.4: Koncept indeksne strani ........................................................................................... 29
Slika 5.5: Koncept zbirke galerij .............................................................................................. 29
Slika 5.6: Koncept prikaza galerije........................................................................................... 30
Slika 5.7: Koncept urejanja in kreiranja vsebin ........................................................................ 30
Slika 5.8: Koncept prikaza posamezne slike ............................................................................ 31
Slika 5.9: Koncept prikaza članka na blog-u ............................................................................ 31
Slika 5.10: Koncept komentiranja vsebin ................................................................................. 32
Slika 5.11: Koncept prijavnega obrazca ................................................................................... 32
Slika 5.12: Koncept nadzorne plošče ....................................................................................... 33
Slika 5.13: Časovni načrt .......................................................................................................... 34
Slika 8.1: Indeksna stran ........................................................................................................... 48
Slika 8.2: Seznam galerij .......................................................................................................... 49
Slika 8.3: Galerija ..................................................................................................................... 49
Slika 8.4: Slika .......................................................................................................................... 50
Slika 8.5: Blog .......................................................................................................................... 51
Slika 8.6: Etikete ...................................................................................................................... 51
Slika 8.7: Seznam komentarjev ................................................................................................ 52
Slika 8.8: Obrazec za oddajo komentarja ................................................................................. 52
Slika 8.9: Statična stran »About« ............................................................................................. 53
Slika 8.10: Povezave ................................................................................................................ 53
Slika 8.11: Iskanje .................................................................................................................... 54
Slika 8.12: Obrazec za priajvo .................................................................................................. 55
Slika 8.13: Glava ...................................................................................................................... 55
Slika 8.14: Glava galerij in slik ................................................................................................ 55
Slika 8.15: Možnosti galerije .................................................................................................... 56
Slika 8.16: Sortiranje slik v galeriji .......................................................................................... 56
Slika 8.17: Obrazec za urejanje vsebin ..................................................................................... 57
Slika 8.18: Nastavitve ............................................................................................................... 57
Slika 8.19: Nastavitve statičnih strani ...................................................................................... 58
Slika 8.20: Administracija komentarjev ................................................................................... 58
Slika 8.21: Teme ....................................................................................................................... 59
Slika 8.22: Nastavitve uporabnika ............................................................................................ 59
Slika 8.23: Nastavitve uporabnikov ......................................................................................... 60
KAZALO TABEL
Tabela 5.1: Specifikacija zahtev ............................................................................................... 22
Tabela 5.2: Tabela aktivnosti.................................................................................................... 33
1
1 UVOD Samopredstavitev na spletu je dandanes ključnega pomena na malodane vseh področjih.
Umetnost oz. posel ustvarjanja vizualnih vsebin ni izjema. Vedno več je umetnikov, ki na
spletu predstavljajo svoja dela, bodisi z željo po večji prodaji izdelkov, pridobitvi novih strank
ali zaposlitve. Potrebe po predstavitvi svojega portfelja pa nimajo samo umetniki, sem
spadajo tudi razvijalci informacijskih sistemov, razvijalci video iger, obrtniki itn. Obstaja
torej potreba po celoviti rešitvi, ki bi bila enostavna za uporabo in bi pokrila vse potrebe ciljne
skupine uporabnikov.
Veliko podjetij ponuja svojim strankam rešitve v obliki CMS1 sistemov. Ti se v večini delijo
na osnovne predstavitvene sisteme, ki omogočajo objavo novic in spreminjanje ostalih
statičnih vsebin na strani in tako imenovane e-poslovne CMS sisteme, ki omogočajo spletno
trgovanje z izdelki. CMS sistemi, ki bi se osredotočali na galerije slik, so zelo redki. Za
izpolnitev teh potreb se v večini primerov odločajo za predelavo osnovnih CMS sistemov ali
izdelavo strani od začetka po željah stranke, ker je lahko za slednje zelo drago.
Namen diplomske naloge je razviti specifični CMS sistem s primarno funkcijo spletne galerije
imenovane »galx«. Sistem bo služil kot predstavitvena spletna stran posameznika ali podjetja
s poudarkom na slikovnih vsebinah. Primarna funkcionalnost bo ustvarjanje in urejanje galerij
slik in njim pripadajočih atributov, kot so npr. naslov, opis, datum objave, avtor itn.
Sekundarne funkcionalnosti bodo: blog, povezave, statične strani z dodatnimi informacijami
itn. Obiskovalec spletne strani bo lahko svoje mnenje o posamezni vsebini izrazil z oddajo
komentarja. Dodana vrednost, ki jo bo za uporabnika uvedla predlagana rešitev, je možnost
enostavnega ustvarjanja in urejanja vsebin ter prilagajanja oblike spletne stani lastnim
potrebam.
Cilj diplomske naloge je izdelati spletno aplikacijo, ki bo stremela k čim boljšem pokritju
uporabniških zahtev in preprostosti uporabe. Fleksibilnost produkta omogoča pokritost
segmenta predstavitvenih spletnih strani in ogrodje za nadaljnjo izdelavo morebitnih
kompleksnejših rešitev.
1 CMS (ang. Content management system) je sistem, ki omogoča urejanje in vzdrževanje vsebine spletne strani
brez znanja programiranja v HTML. Urednik spletne strani lahko samostojno ureja vsebino spletne strani brez
pomoči podjetja ali osebe, ki je stran izdelalo.
2
Ciljni uporabniki sistema »galx« so predvsem različni tipi umetniško usmerjenih podjetij ali
posameznikov (oblikovalci, fotografi, slikarji, kiparji,…) in tisti, ki bi se želeli na spletu
predstaviti z zbirkami slik. Takšna spletna stran bi služila predvsem kot neke vrste spletni
portfolio ali spletni katalog. Dodatne funkcionalnosti bloga in komentarjev bi lastnikom strani
omogočale neposredni stik z njihovo ciljno publiko. Obenem pa je to tudi enostaven način
pridobivanja povratnih informacij, kako svoj produkt še izboljšati.
Pričakovani rezultat je delujoča spletna aplikacija, ki bo postavljena na splet kot praktična
predstavitev funkcionalnosti sistema morebitnim bodočim uporabnikom oz. kupcem. Zaradi
svoje fleksibilnosti in enostavnosti uporabe bo aplikacija predstavljala veliko poslovno
priložnost tako iz vidika stranke kot ponudnika storitve. Slednjemu ne bo potrebno vsakič
ponovno začeti razvijati spletne strani, kar bo posledično drastično znižalo ceno produkta.
2 PREGLED PODOBNIH REŠITEV Galerije slik so eden od ključnih elementov sodobnih internetnih strani. Malodane vsaka stran
v neki meri predstavlja določen del svoje vsebine preko zbirk slik. Večina teh je specifično
implementiranih le za dotično stran. Gre bodisi za predelave obstoječih rešitev ali specifični
razvoj po meri. V obeh primerih ne gre za galerijo kot primarno funkcionalnost spletne strani,
temveč le za dopolnilo k vsebini. Celovite rešitve, ki bi ponujale galerije kot primarno
funkcionalnost, so redke. V večini primerov gre za rešitve po naročilu ali predelave z uporabo
vtičnikov (ang. »plugins«) v velikih odprtokodnih CMS sistemih. Vtičniki so bodisi specifični
za obstoječe CMS sisteme (predvsem odprtokodne) ali »prosti«, ki jih lahko vstavimo kar v
html kodo. Ti so običajno spisani bodisi v JavaScript2-u ali Adobe Flash3-u in je njihova
dodana vrednost predvsem estetske narave.
2.1 Galerije z uporabo odprtokodnih CMS sistemov V zadnjih letih se na spletu pojavlja vedno več odprtokodnih CMS sistemov. Ti imajo v
večini primarno funkcionalnost objavljanja novic ali blogov. Najbolj znani so: WordPress,
Joomla, Drupal, SilverStripe, modx itn. Ti so v večini napisani v zelo razširjenem
2 JavaScript je objektni programski jezik, vgrajen v brskalnike.
3 Adobe Flash je multimedijska platforma za dodajanje animacij, videa in interaktivnosti spletnim stranem.
3
programskem jeziku PHP4. Skupni imenovalci vseh so možnost prilagoditve videza z uporabo
tem, odprtost kode, ki omogoča, da se platformo povsem priredi lastnim potrebam in vtičniki.
Slednji omogočajo na enostaven način spletni strani dodati kakršnokoli funkcionalnost.
Uporabnik lahko sam razvije svojega ali izbere med kopico obstoječih rešitev, ki so lahko
bodisi plačljive bodisi odprtokodne.
2.2 Gallerycms Gallerycms je brezplačen CMS sistem za upravljanje z galerijami slik. Spisan je v PHP
platformi Codelgiter. Zbirka galerij je zelo preprosta, vsaka galerija vsebuje naslov in opis ter
vsebujoče slike. Tako galerije kot posamezne slike v njih je možno urejati, brisati in jim
določiti vrstni red ter velikost. Gallerycms je načrtovan kot zgolj CMS sistem, ki galerije
generira v xml5 formatu, na katerem se lahko zgradi galerijo v Adobe Falsh-u. (Gallerycms)
2.3 Gullery Gullery je zelo preprosta odprtokodna galerija slik spisana v Ruby on Rails. Namenjena je
ustvarjanju manjših galerij ali portfoliov. Omogoča preprosto urejanje galerij slik in njihovih
atributov. Vsaka galerija ima poleg naslova še opis. Vmesnik je zelo preprost, vse operacije se
izvajajo na isti strani. Slike se lahko poljubno sortira in tudi obrača. Urejanje izgleda je možno
z CSS6 kodo. Slikam, ki so dodane v galerije, se avtomatsko prilagodi velikost s programom
ImageMagick, ki ga je potrebno namestiti na strežnik poleg galerije. (Gullery Photo Gallery,
2010)
2.4 GrokPhoto Gorkphoto je profesionalna CMS galerija, namenjena predvsem fotografom. Fotografu
omogoča ustvarjanje lastnega portfolia, razstavljanje galerij slik in direkten kontakt s
strankami. Poleg običajnih galerij, ki so vidne vsem obiskovalcem strani, lahko administrator
v svoji nadzorni plošči ustvari uporabnika tipa stranka, ki preko prijave dostopa do lastne
galerije ali več njih. V tem oddelku lahko stranka tudi odda komentar pod slikami in se tako
ustvari direktna komunikacija z avtorjem. Administrator lahko ustvari poleg galerije še
4 PHP Ang. Hypertext Preprocessor ali v preteklosti Personal Home Page Tools je odprtokodni programski jezik
za razvoj strežniško baziranih aplikacij.
5 Xml (ang. extensible markup language) je razširljiv označevalni jezik, ki omogoča format za opisovanje
strukturiranih podatkov.
6 CSS (ang. cascading style sheets) so predloge, ki določajo izgled spletnih strani.
4
poljubno število statičnih strani z različnimi dodatnimi informacijami, ki jih želi posredovati
obiskovalcem. Za zaščito slik pred zlorabami aplikacija omogoča avtomatsko vključitev
poljubnega vodnega žiga na slike. Aplikacija je v celoti implementirana s platformo Ruby on
Rails. Za obdelavo fotografij uporablja program ImageMagick. (GrokPhoto)
2.5 Gallery Gallery je odprtokodni projekt, katerega cilj je razvoj in podpora vodilne aplikacije za
deljenje slik na spletu. Aplikacijo že nekaj let razvija večja skupina razvijalcev in je trenutno
tik pred izidom tretje različice. Razvita je v spletnem jeziku v php, za obdelovanje slik pa
potrebuje ImageMagick ali NetPBM. Kot je zapisano na njihovi spletni strani gre za najbolj
razširjeno spletno aplikacijo tega tipa. Gallery omogoča intuitivno rešitev za upravljanje s
slikami na manjših ali večjih spletnih straneh. Aplikacija sama skrbi zgolj za upravljanje s
slikami, medtem ko za vse ostale funkcionalnosti, ki jih imajo običajne aplikacije, mora
uporabnik poskrbeti sam. (Gallery menalto)
2.6 Coppermine gallery Coppermine je odprtokodna, večnamenska, multifunkcijska spletna galerija, spisana v PHP-
ju. Gre za kompleten CMS sistem za upravljanje z galerijami slik, ki vsebuje dovršen sistem
administracije z veščimi tipi uporabnikov. Le-tem je možno po meri nastavljati pravice
dostopa do določenih vsebin in nastavitev. Slike lahko prijavljeni uporabniki komentirajo in
ocenijo. Stran beleži statistke uporabnikov in tako lahko posreduje najbolj priljubljene slike,
najbolj gledane slike ipd. Galerija ima več različnih vrst pogleda, katere je moč preko
nastavitev in tem preoblikovati v končni produkt. Dodatne funkcionalnosti, ko so novice
(blog), statične strani, forum ipd., je potrebno posebej implementirati. (Coppermine gallery)
2.7 Zenphoto Zenphoto je brezplačna spletna CMS galerija s filozofijo »preprosto je najboljše«. Aplikacijo,
spisano v PHP-ju, avtorji razvijajo že od leta 2005. Kljub motu, ki strmi k preprostosti, gre za
zelo dovršen produkt, ki ponuja vse potrebne funkcionalnosti za upravljanje z slikovnimi
vsebinami. Poleg slik pa podpira tudi video in avdio vsebine ter vse potrebne elemente za
kreiranje celotne spletne strani, vključno z novicami, komentarji in poljubnimi statičnimi
stranmi. Slikam lahko obiskovalci dajo tudi oceno. Videz galerije je možno spremeniti s
temami, nekaj jih je možno prenesti iz uradne strani, kjer so tudi navodila, kako ustvariti
svoje. Funkcionalnosti aplikacije je možno še dodatno razširiti z dodatki, ki so prav tako
5
dostopni na uradni strani skupaj z navodili kako ustvariti svoje. Dotična aplikacija se najbolj
približa »galx« tako po filozofiji razvoja kot po funkcionalnostih. (Zenphoto)
3 METODOLOGIJA Za razvoj aplikacij oz. informacijskih sistemov, kamor spadajo tudi spletne aplikacije, se
uporabljajo različne metodologije. Metodologijo lahko v splošnem opredelimo kot skupek
postopkov, tehnik, orodij in pripomočkov za dokumentiranje, ki koristijo razvijalcem sistema
pri implementaciji informacijskega sistema. Sestavljajo jo faze, ki so same sestavljene iz
podfaz in ki vodijo razvijalce sistema pri izbiri tehnik, ki so primerne v vsaki fazi projekta ter
jim pomagajo načrtovati, upravljati, kontrolirati in ocenjevati projekte razvoja informacijskih
sistemov. Metodologija je dejansko še več kot le skupek njenih sestavin. Metodologije se
razlikujejo v posameznih tehnikah, ki jih priporočajo, v postopkih, ki jih predpisujejo ali v
vsebini posamezne faze, včasih gre celo za bolj osnovne razlike. (Avison in Fitzgerald, 2006:
347-352)
Pogosto, ko govorimo o metodologijah, pravzaprav ne vemo dobro, kaj metodologija sploh je.
Ni res, da številna podjetja pri svojem delu ne uporabljajo nobene metodologije, saj je ta v
neki obliki prisotna praktično pri vsakem organiziranem delu. Metodologija zajema vse, kar
redno počnemo, da bi dosegli želen rezultat, torej izdelek ali storitev, ki je cilj našega dela. V
primeru razvoja programske opreme to ne pomeni zgolj postopkov, ki so neposredno
povezani z razvojem, temveč zajema tudi podporne postopke, načine komunikacije med
sodelujočimi, pravila odločanja itd. V tem oziru lahko metodologijo opredelimo tudi kot
množico dogovorov (konvencij), s katerimi se projektna skupina oz. organizacija strinja.
(Bajec in Krisper, 2003)
Metodologija je kot taka prežeta s filozofijo, načeli, idejami in pogledi organizacije in njenih
članov, kar še posebej poudarja njeno sociološko komponento. Metodologija namreč ni nekaj,
kar lahko nastane neodvisno od ljudi, katerim je namenjena. Čeprav obstajajo številne
formalne metodologije, ki temeljijo na preizkušenih postopkih, ki so se v praksi izkazali kot
dobri, si jih organizacije, ko jih privzamejo, vedno prilagodijo po svoji meri, tako da ustrezajo
njihovemu načinu dela ter percepciji domene, za katero so vzpostavljene. Z uporabo
metodologije se uporabniki učijo in pridobivajo nove izkušnje, s čimer se posledično bogati
tudi metodologija sama. (Bajec in Krisper, 2003)
Najuspešnejše metodologije razvoja spletnih aplikacij so:
6
• Modeli tradicionalnih metodologij:
o Model od zgoraj navzdol
o Model od spodaj navzgor
o Kaskadni model
o Inkrementalni model
• Modeli evolucijske metodologije:
o Spiralni model
o Prototipni model
o Ciklični in inkrementalni model
• Agilne metodologije:
o XP - Ekstremno programiranje
o SCRUM
o FDD - Funkcionalno usmerjen razvoj programskih rešitev
o DSDM - Dinamični sistemski model razvoja programskih rešitev
o ASD - Prilagodljivi razvoj programskih rešitev
(Bauer, 2005)
3.1 Agilna metoda razvoja aplikacij Temelji agilnih metodologij so bili postavljeni decembra 2001, ko se je sestala skupina
sedemnajstih gurujev, tako ali drugače znanih s področja lahkih metodologij (Adaptive
Software Development, XP-Extreme Programming, Feature-Driven Development, Crystal,
Scrum, Dynamic System Development Method idr.). Namen sestanka je bil ugotoviti, kaj
imajo »njihove« metodologije skupnega in na osnovi tega postaviti skupne metodološke
osnove. Tokrat so pod drobnogledom lahke metodologije, katerih število je v zadnjih letih
močno naraslo. Njihova temeljna lastnost je učinkovitost in prilagodljivost, s čimer je skupina
sedemnajstih, združena v zvezo Agile Alliance, opisala tudi nov trend agilnih metodologij. V
skupni izjavi so člani zveze kot njihov cilj zapisali »iskanje boljših pristopov razvoja
programske opreme, tako da pri tem sami sodelujejo in pomagajo drugim.« Iz tega so izpeljali
štiri načela:
• posamezniki in njihova komunikacija so pomembnejši kot sam proces in orodja,
• delujoča programska oprema je pomembnejša kot popolna dokumentacija,
• vključevanje (sodelovanje) uporabnika je pomembnejše kot pogajanje na osnovi
pogodb in
7
• upoštevanje sprememb je pomembnejše od sledenja planu.
(Agilemanifesto)
Najbolj priljubljeni modeli razvoja programskih rešitev na področju agilnih metodologij so
model XP, model SCRUM, model FDD, model DSDM in prilagodljiv razvoj programske
opreme.
3.1.1 Posamezniki in komunikacija so pomembnejši kot sam proces in orodja Prvo načelo izhaja iz mnenja, da se je potrebno v večji meri posvetiti individualnim članom
projekta, njihovemu znanju in tudi željam. Toga porazdelitev vlog, ki jih proces določa med
člane projekta ni smiselna, če nimamo ustreznih ljudi, ki bi te vloge uspešno opravljali. Poleg
upoštevanja posameznikov načelo poudarja pomen komunikacije. Dobra komunikacija je
namreč ključna za uspešnost projekta. Boljše rezultate dosežemo, če je komunikacija in
sodelovanje članov projekta dobro, pa čeprav se ne držijo nobenega predpisanega procesa, kot
pa v primeru, ko je proces predpisan, komunikacija med njimi pa slaba. (Bajec in Krisper,
2003)
3.1.2 Delujoča programska oprema je pomembnejša kot popolna dokumentacija
Delujoč program je največ, kar lahko končni uporabnik dobi. Dokumentirane zahteve, model
statičnih elementov sistema, model interakcij in druga dokumentacija o problemski domeni in
samem sistemu so vsekakor koristni, vendar vseeno sekundarnega pomena. Naročnik ne bo
zadovoljen s kupom dokumentacije, če ne bo najprej videl delujočega sistema. Ena večjih
kritik slapovnega procesa je ravno v tem, da naročnik praktično vse do konca projekta čaka na
sleherno komponento programske opreme. Vse, kar lahko medtem dobi, je dokumentacija. Po
drugi strani pa je dokumentacija temeljnega pomena, saj olajša vzdrževanje sistema,
komunikacijo med izvajalcem in naročnikom, proučevanje kakovosti dela projektne skupine
itd. Zato je pomembno, da dokumentacijo izdelujemo, vendar s poudarkom na »ravno
dovolj«. Vsak kos dokumentacije mora biti utemeljen. (Bajec in Krisper, 2003)
3.1.3 Vključevanje uporabnika je pomembnejše kot pogajanje na osnovi pogodb
S tretjim načelom je pozornost posvečena odnosu med naročnikom in izvajalcem. Ta je v
mnogih primerih preveč formalen in strog. Za uspešnost projekta je ključnega pomena, da se
8
naročnik in izvajalec dobro ujameta. Poleg tega naročnik najbolje ve, kaj potrebuje, čeprav
tega pogosto ne zna razložiti. V agilno usmerjenih metodologijah je zato vloga naročnika
postavljena na pomembno mesto. Medtem ko lahko dober odnos med naročnikom in
izvajalcem v veliki meri olajša še tako tehnološko zahteven projekt, lahko strog pogodbeni
odnos in nerazumevanje med naročnikom in izvajalcem zamaje tudi enostavne projekte.
(Bajec in Krisper, 2003)
3.1.4 Upoštevanje sprememb je pomembnejše od sledenja planu. Spremembe so eden od razlogov, ki ga pogosto povezujemo z neuspešnimi projekti. Številni
avtorji ugotavljajo pomen obvladovanja sprememb in temu sledijo tudi moderne
metodologije. Dinamika poslovnih okolij botruje številnim spremembam, zato je naivno
pričakovati, da bomo lahko v začetnih fazah projekta zajeli vse zahteve. Projektni plani so
koristen element, vendar morajo omogočati spremembe, vsaj v smislu preureditve prioritet
znotraj dogovorjenega okvirja. Poudariti velja, da je planiranje in sledenje planu koristno,
vendar le do stanja, ko se to ne razlikuje preveč od dejanskega. Najslabše je slediti planu, ki je
zastarel. (Bajec in Krisper, 2003)
3.1.5 Priporočila pri gradnji in vrednotenju metodologij Iz načel, ki veljajo kot osnova agilnih metodologij, so izpeljana številna priporočila, ki so v
pomoč pri gradnji in vrednotenju metodologij. Vse metodologije, ki se upravičeno deklarirajo
kot agilne, jih upoštevajo.
• Najvišja prioriteta je zadovoljstvo stranke, zato je priporočeno zgodnje in pogosto
izdajanje komponent preizkušene in delujoče programske opreme. To je temelj
prilagodljivega razvoja, saj na osnovi medprojektnih izdaj pridobimo koristne
povratne informacije, tveganje, da bo izdelek neustrezen, pa zmanjšamo.
• Delujoče komponente programske opreme je potrebno izdajati pogosto, v ciklu, ki ni
daljši od štirih mesecev. Če je naročnik zmožen sprejemati izdelke v krajših razmikih
in je tudi razvojna ekipa sposobna upoštevati vse sprotne spremembe, potem so krajši
cikli še boljši. Iterativni pristop je praktično nujen.
• Spremembe v zahtevah naj bodo dobrodošle tudi v poznih fazah razvoja. Eno izmed
načel agilnih pristopov je dober odnos med naročnikom in izvajalcem. Spremembe, ki
nastanejo med projektom in smo jih pripravljeni upoštevati, lahko prinesejo naročniku
pomembno konkurenčno prednost, zato se jih ne smemo otepati. Iterativni pristop se
tudi na tem mestu izkaže kot primeren.
9
• Projekti naj vključujejo motivirane posameznike. Omogočeno naj jim bo ustrezno
delovno okolje ter vse, kar pri svojem delu potrebujejo. Zaupati jim je potrebno, da
bodo delo opravili dobro. Nedvomno so na projektu koristnejši motivirani
posamezniki, ki med seboj dobro komunicirajo, čeprav ne sledijo predpisanemu
procesu, kot pa nemotivirani ljudje. Posamezniki lahko s svojim odnosom do dela v
veliki meri vplivajo na uspeh oziroma neuspeh projekta.
• Najboljši način prenosa informacij do in med člani projekta je komunikacija »iz oči v
oči«. Metodologija XP je ena prvih, ki je priporočala, da morajo člani projekta sedeti v
isti sobi, saj je s tem omogočeno pogosto in učinkovito komuniciranje. Vsaka druga
vrsta komunikacije (elektronska pošta, video sestanki, telefonski razgovori) je manj
učinkovita. Če med člane vključimo tudi predstavnike naročnika, potem je čas, ki ga
potrebujemo, da dobimo odgovor, praktično minimalen.
• Kakovost programske kode in arhitekture je potrebno stalno preverjati in izboljševati,
saj s tem povečamo prilagodljivost. Pristop, kjer najprej izpeljemo poglobljeno
analizo, izdelamo dober načrt in nato razvijemo programsko kodo, je priporočljiv,
vendar si ga pogosto ne moremo privoščiti. Zaradi potrebe po hitrih rezultatih je
kakovost velikokrat zapostavljena, zato je pomembno, da v vsakem ciklu stremimo k
izboljšavam.
• Enostavnost procesa je ključ do uspeha. Kako razviti kakovostno programsko opremo,
pri tem pa opraviti čim manj stranskih nalog in izdelkov? Proces mora biti ravno
dovolj zahteven. Raje malo manj kot pa preveč. To nikakor ne pomeni, da moramo
aktivnosti izvajati površno ali pomanjkljivo. Nasprotno, naše delo mora biti opravljeno
kvalitetno, paziti pa moramo, da ni po nepotrebnem komplicirano. Pot do enostavnosti
je v resnici težka, saj je včasih preprosteje pustiti stvari kompleksne, kot pa jih
poenostaviti.
• Po vsakem intervalu moramo preveriti proces, ki smo ga uporabljali, kjer ugotavljamo,
kaj je bilo pri tem dobrega in kaj odveč. Glede na ugotovitve proces prilagodimo in
izboljšamo za naslednje iteracije.
(Agilemanifesto)
3.1.6 Model XP Najbolj znani agilni model razvoja programskih rešitev je ekstremno programiranje ali model
XP (ang. »Extreme Programming«). Model XP se je razvil iz težav daljšega cikla razvoja
10
programskih rešitev, ki so jih povzročale klasične metodologije razvoja programskih rešitev.
Model XP je mogoče označiti s kratkimi razvojni cikli, primarnim načrtovanjem, stalne
povratne informacije in komunikacijo. Z vsemi navedenimi lastnostmi se XP programerji
odzivajo na spreminjajoče se okolje z veliko več poguma. Člani skupine XP porabijo skupaj
dnevno nekaj minut za programiranje, nekaj minut za upravljanje projekta, nekaj minut pri
oblikovanju, nekaj minut za povratne informacije in nekaj minut za oblikovanje in grajenje
timskih odnosov. Ena od temeljnih idej modela XP je, da ne obstaja ena metodologija razvoja
programskih rešitev, ki bi bila uporabna v vsakem projektu, ampak obstajajo prakse, ki bi
morale biti prilagojene potrebam posameznih projektov (Beck, 1999).
Slika 3.1: Model XP
Vir: Beck, 1999: 132.
3.1.7 Model SCRUM Model Scrum izvira iz hitre izdelave prototipov, ki naj bi podpirali okolje, v katerem so bile
zahteve na začetku nepopolne in so se lahko tudi zelo hitro spreminjale. Za razliko od modela
XP model SCRUM na prvo mesto vključuje vodstveni in ne razvojni proces, ki naj bi
nasprotno od težkih metodologij dramatično povečal produktivnost v timu. Model SCRUM je
empirična tehnika vodenja, za katero je realnost pomembnejša od načrtov, potrebno je
nenehno sodelovanje, zaupanje v ljudi in napredek. SCRUM temelji na samoorganizaciji, v
kateri se tim odloči, kaj storiti, medtem ko vodstvo vodi in odpravlja težave. Združuje vse
11
ključne lastnosti agilnih metodologij razvoja programskih rešitev, njena posebnost pa je
organizacija ter izvajanje vodenja in hkrati obvladovanje projektnega tima. Uporaba modela
SCRUM temelji na realizaciji realno mogočega, dnevnega preverjanja napredka in pogostih
korektur. Bistvo so majhni projektni timi (do deset ljudi), serija »sprintov« (eden do štirje
tedni), vidne in uporabne nadgradnje ter časovno omejevanje. Razvoj programske rešitve se
zaključi, ko je uporabnik zadovoljen z napredkom in ustreznostjo programske rešitve. Po
končani programski rešitvi nato tim izvede testiranje in usposabljanje ter napiše potrebno
dokumentacijo, ki je potrebna za sprostitev programske rešitve. (Abrahamsson in drugi, 2002:
27-36)
Slika 3.2: Model SCRUM
Vir: Abrahamsson in drugi, 2002: 28.
3.1.8 Model FDD Funkcionalno usmerjen razvoj programskih rešitev ali model FDD (ang. »Feature Driven
Development«) za razliko od drugih modelov ne zajema celotne programske rešitve
razvojnega procesa, temveč se osredotoča na načrtovanje in gradbene faze. Model FDD
pooseblja iterativni razvoj z najboljšimi praksami, ki se je izkazal za učinkovito metodo
predvsem v industrijski dejavnosti. Poudari vidike kakovosti v celotnem procesu in vključuje
pogoste in opredmetene dobave programskih rešitev, skupaj z natančnim spremljanjem
12
napredka projekta. Za razliko od nekaterih drugih agilnih modelov je model FDD primeren
tudi za razvoj kritičnih sistemov (Palmer in Felsing, 2002).
Slika 3.3: Model FDD
Vir: Palmer in Felsing, 2002: 57.
Model DSDM
Dinamični sistemski model razvoja programskih rešitev ali model DSDM (ang. »Dynamic
System Development Method«) je bil razvit v Veliki Britaniji v sredini leta 1990. Temeljna
zamisel modela DSDM je določiti čas in sredstva in nato prilagodi funkcionalnost programske
rešitve. Model DSDM je sestavljen iz petih faz:
• študija izvedljivosti,
• študija poslovanja,
• funkcionalni model,
• načrtovanje in izgradnja ter
• implementacija.
Prvi dve fazi sta zaporedni in se opravita samo enkrat. Zadnje tri faze, med katerimi je
dejansko razvojno delo, se ponavljajo do zaključitve projekta. Čas trajanja projekta je vnaprej
določen. V modelu DSDM je tipično obdobje trajanja projektnega cikla nekaj dni do nekaj
tednov (Stapleton, 1997).
3.1.9 Model ASD Prilagodljivi razvoj programskih rešitev ali model ASD (ang. »Adaptive Software
Development«) je razvil Jim Highsmith leta 2000. Model ASD ponuja prilagojen pristop k
13
razvoju programskih rešitev v projektih z velikimi in hitrimi spremembami. V hitro
napredujočem in nepredvidljivem poslovnem okolju ni mogoče uspešno načrtovati projekta,
tako da je v modelu ASD statični plan zamenjan z dinamičnim, špekulativnim in učečim se
življenjskim ciklom razvoja programske rešitve. Model ASD je sestavljen iz treh nelinearnih
in prekrivajočih se faz:
• špekulacija - za določitev poslanstva projekta se je potrebno zavedati, kaj je v projektu
nejasno in neznano,
• sodelovanje - poudarja pomen timskega dela v projektih z velikimi in hitrimi
spremembami in
• učenje - ta faza poudarja, da je potrebno priznati in se odzvati na napake ter da se
lahko zahteve tudi spremenijo med razvojem programske rešitve.
(Highsmith, 2000)
3.1.10 Agilna metodologija in Ruby on Rails Izbira agilne metode za razvoj spletne galerije »galx« je tako tekoč obvezna, kajti le-ta gre z
roko v roki s platformo Ruby on Rails. Agilnost je dejansko vključena v samo Rails
platformo.
Rails je usmerjen v posameznike in njihovo komunikacijo. Nima zapletenih orodij, ne
kompleksnih nastavitev, ne elaboriranih procesov. So le majhne skupine razvijalcev, njihovi
priljubljeni urejevalniki besedil in obilo Ruby kode. To vodi k popolni transparentnosti - kar
razvijalec naredi, se instantno prelevi v to, kar stranka vidi. Gre za resnično interaktiven
proces (Ruby in drugi, 2008: 16).
Rails ne zanemarja dokumentacije, temveč naredi trivialno enostavno ustvarjanje HTML
dokumentacije celotne kode. Toda proces razvoja z Ruby on Rails ni dokumentno usmerjen.
Programi tako ne vsebujejo več stranskih specifikacij, temveč uporabniki in razvijalci že od
začetka združijo moči pri iskanju rešitve. Platforma je tako sposobna servirati delujočo rešitev
že v zgodnjih fazah razvoja. Ta je še precej okorna in nedovršena, a ponuja uporabniku
možnost videti delček tega, kar bo na koncu nastalo (Ruby in drugi, 2008: 16).
Na ta način Rails izpodbuja sodelovanje z strankami. Ko stranke vidijo, kako hitro se Rails
projekt lahko odzove na spremembe, začnejo zaupati, da lahko razvijalski tim naredi to, kar je
14
potrebno in ne samo, kar je zahtevano. Tako se navadno pogajalski sestanki spremenijo v
»Kaj če« sestanke (Ruby in drugi, 2008: 17).
Vse to je tesno povezano z idejo sposobnosti hitrega odziva na spremembe. Močno, skoraj
obsesivno strmenje Rails-a k DRY principu programiranja pomeni, da je za vsako spremembo
potrebno spremeniti bistveno manj kode kot z uporabo kakšne druge platforme (Ruby in
drugi, 2008: 17).
4 OPIS PROGRAMSKEGA OKOLJA APLOKACIJE Spletna galerija »galx« je v celoti izdelana s spletno platformo Ruby on Rails, strežnikom
Nginx in podatkovno bazo MySQL. Za popolno delovanje aplikacije sta potrebna še programa
ImageMagick in Sphinx.
4.1 Programski jezik Ruby Ruby je objektno orientiran, dinamičen programski jezik z bogatim in močnim API7-jem.
Izhaja iz programskih jezikov Perl, Lisp in Smalltalk, toda s sintakso, ki je lahko razumljiva C
in Java programerjem. Je popolnoma objektno orientiran jezik, lahko pa se uporablja tudi za
funkcijsko in proceduralno programiranje (Flanagan in Matsumoto, 2008: 1-24).
V začetku devetdesetih let ga je ustvaril Japonec Yukihiro Matsumoto, v angleško govoreči
razvijalski skupnosti poznan pod vzdevkom Matz. Od svojih najpriljubljenejših programskih
jezikov je pobral tisto, kar se mu je zdelo najboljše, in ustvaril nov jezik, ki je ravnovesje med
funkcionalnim in imperativnim programiranjem (Ruby).
Prva stabilna verzija Ruby-ja je bila izdana decembra leta 1995. 25. decembra leta 1996 je
izšla različica 1.0. Trenutna stabilna različica Ruby-ja je 1.9.1. Ker jezik nima specifikacije,
velja MRI (Matz Ruby Interpreter), ki je napisan v jeziku C, za de facto referenco. Obstaja
več implementacij interpreterja, napisanih v različnih programskih jezikih, najbolj razširjena
pa je javanska implementacija jRuby (Matsumoto, 2001: 1-4).
Filozofija jezika predpostavlja, da so ljudje "gospodarji", računalniki (stroji na splošno) pa
njihovi "sužnji". Ruby je torej jezik, ki v ospredje postavlja programerje, njihovo
produktivnost. Kot pravi njegov avtor jezika: »Med razvojem jezika sem se osredotočal na
7 API (ang. application programming interface) je vmesnik, implementiran znotraj nekega programa, ki mu
omogoča komunikacijo z drugimi programi.
15
enostavno in hitro programiranje. Vse značilnosti so narejene in delajo točno tako, kot
programerji pričakujejo. Programerjem so elegantne, enostavne rešitve všeč in naredijo
programiranje zabavnejše.« (Matsumoto, 2001: 5-35).
Ker je Ruby v celoti objektno orientiran jezik, je vsaka vrednost v njem objekt. Celo kosom
informacij in kode je možno dodeliti lastnosti in metode.
RubyGems je Ruby knjižnica, ki omogoča razširitev programskega jezika z dodatnimi
zmogljivostmi. Gre za standardni format distribuiranja Ruby aplikacij in knjižnic. Orodje je
namenjeno enostavnemu načinu instalacije gem-ov in njihovo serversko distribucijo (podobno
kot EasyInstall pri jeziku Python). RubyGems je sedaj del standardnih knjižnic v Ruby 1.9.
Vse operacije nad gem-i se izvajajo preko konzolnega ukaza gem (oz. ruby gem v Windows
okolju). Eden od najpopularnejših gem-ov je »Rails«, ki Ruby-ju doda platformo za razvoj
spletnih aplikacij, ki je bistveno pripomogel k popularnosti jezika samega (Flanagan in
Matsumoto, 2008: 36-109).
4.2 Platforma Ruby on Rails Rails je odprtokodna platforma, namenjena izdelavi spletnih aplikacij, napisana v skriptnem
jeziku Ruby. Zasnovana je tako, da naredi programiranje spletnih aplikacij lažje z
Slika 4.1: Hierarhija razredov Ruby 1.9
Vir: Ruby Class Hierarchy.
16
ustvarjanjem določenih predpostavk o tem, kaj vse razvijalec potrebuje, da bi začel. Narediti
je možno več z bistveno manj kode kot pri kateremkoli drugem spletnem programskem jeziku
ali platformi. Platforma Ruby on Rails predpostavlja, da obstaja najboljši način izdelovanja
nečesa in je zasnovana tako, da vzpodbuja razvijalca, da izbere najboljšo pot. Ko razvijalec
enkrat osvoji »rails način«, se njegova produktivnost bistveno poveča (Tate in Hibbs, 2006: 1-
17).
Ustvaril jo je danski programer David Heinemeier Hansson iz podjetja 37signals. Izvira iz
spletne aplikacije imenovane Basecamp, iz katere ga je Heinemeier Hansson izpeljal. Za
razliko od jezika, na katerem sloni, avtor ni imel namena ustvariti platformo. Želel je iz
obstoječe aplikacije izluščiti ogrodje, da bi ga uporabljali za razvoj drugih aplikacij. Svoje
delo si je hotel olajšati tako, da je izluščil pogoste funkcionalnosti, kot so abstrakcije
podatkovne baze in predloge v to, kar je kasneje postalo prva javna različica Ruby on Rails.
Prva beta verzija je izšla julija 2004, verzija 1.0 je izšla 13. decembra 2005. To, da je Rails
izluščen iz Basecamp-a, se šteje v skupnosti Rails razvijalcev kot ena izmed velikih prednosti
platforme, kajti reševala je realne probleme že ob izidu. Ruby on Rails torej ni nastala iz nič,
temveč se je že izkazala kot uporabna in celovita platforma. David Heinemeier Hansson še
vedno vodi razvoj Rails-a, največja ugodnost za platformo je bila njena izdaja kot odprta
koda. S časom so razvijalci, ki delajo z Rails-om, objavili na stotine dodatkov in popravkov v
razvojno Rails skladišče (ang. »Rails development repository«). Vodi ga okoli dvanajst
visoko usposobljenih profesionalnih razvijalcev, ki jih vodi Heinemeier Hansson (Lenz, 2007:
1-16). Trenutna stabilna različica je 2.3, ki jo bo v kratkem zamenjala 3.0, ki je že v končnih
fazah testiranja.
Temeljni principi platforme Ruby on Rails so:
• MVC (Model-View-Controller) arhitektura. Koda je Rails-u organizirana v treh
plasteh (slika 4.2).
o Modeli skrbijo za shranjevanje in obdelavo podatkov. Rails pole tega vključuje
tudi podporo ORM (Object-relational mapping) tehniki, ki opravlja
komunikacijo s podatkovno bazo na nivoju objektov. Programerju torej ni
potrebno znati specifik posameznih implementacij SQL baz, saj za poizvedbe
na podatkovno bazo skrbi ActiveRecord, Rails implementacija ORM, ki je za
programerja transparentna, saj podatke vidi na nivoju objekta.
17
o Predstavitvena plast (View) predstavlja vmesnik med uporabnikom in
aplikacijo. Običajno so to HTML datoteke in delčki Ruby kode (podobno kot
pri PHP-ju). Naloga teh datotek je predstavitev podatkov uporabniku
aplikacije.
o Kontrolerji (Controller) so kot "lepilo" med modeli in predstavitveno plastjo.
Skrbijo za prihajajoče zahtevke in posredovanje podatkov v predstavitveno
plast.
• DRY (ang. »Don't repeat yourself«) narekuje, da se ne sme dvakrat napisati kodo, ki
naredi enako stvar. Raje se napiše generično.
• Konvencija namesto konfiguracije: predpostavlja, da programer ve, na kakšen način se
določeno stvar naredi namesto da se to zapisuje v konfiguracijske datoteke.
• REST (ang. representational State Transfer) je arhitektura aplikacij, katere glavni
principi so:
o vse naj ima svoj ID,
o vse mora biti povezano z povezavami,
o uporaba standardnih metod,
o viri naj imajo več predstavništev in
o komunikacija brez stanj.
(Railsguides)
Slika 4.2: Rails Model View-Controler-arhitektura
Vir: Intermediate Rails: Understanding Models, Views and Controllers.
http://betterexplained.com/articles/intermediate-rails-understanding-models-views-and-controllers/
18
Da Rails deluje, je poleg jezika Ruby potrebno imeti tudi spletni in podatkovni strežnik,
katerih je na voljo pestra izbira. Večina spletnih strežnikov za Rails je baziranih na spletnem
strežniku Apache. V zadnjih letih pa postaja vedno bolj priljubljen spletni strežnik Nginx v
navezi z modulom za izvajanje Rails aplikacij Passenger, ki porabi bistveno manj strežniških
resursov. Za razvojno okolje je najboljše če se uporablja privzeti strežnik Webrick, ki je
vključen v Ruby on Rails gem. Podatkovno bazo je moč izbrati med: MySQL, PostgreSQL,
SQLite, Oracle, SQL Server, DB2, CouchDB, Firebird ali privzeti SqLite strežnikih. Skoraj
katerikoli sistem zadostuje za razvoj in testiranje, a za produkcijsko okolje je priporočen Unix
tip operacijskega sistema (Rubyonrails).
4.2.1 Komponente Ruby on Rails Rails vsebuje številne komponente, ki omogočajo kreiranje spletnih aplikacij.
4.2.1.1 Action Controller
Action Controller je komponenta, ki upravlja kontrolerje v Rails aplikaciji. Sprejema zahteve
Rails aplikacije in namenjeni akciji posreduje ustrezne parametre. Action Controller-jeve
funkcije so upravljanje s sejami, generiranje predlog in preusmerjanje (Railsguides).
4.2.1.2 Action View
Action View upravlja s predstavitveno plastjo Rails aplikacije. Privzeto lahko generira HTML
in XML kodo. Upravlja tudi prikazovanje predlog (vključno z ugnezdenimi in delnimi
predlogami) in vključuje vgrajeno AJAX8 podporo (Railsguides).
4.2.1.3 Active Record
Active Record je osnova za modele v Rails aplikaciji. Zagotavlja neodvisnost od podatkovne
baze, osnovne CRUD9 funkcionalnosti (Railsguides).
4.2.1.4 Action Mailer
Action Mailer je platforma za kreiranje e-poštnih storitev znotraj Rails aplikacije. Uporabi se
lahko za pošiljanje e-pošte na fleksibilnih predlogah ali za prejemanje in procesiranje prejete
e-pošte (Railsguides).
8 AJAX (ang. Asynchronous JavaScript and XML) je skupina medsebojno povezanih spletnih razvojnih tehnik,
uporabljenih za ustvarjanje interaktivnih spletnih aplikacij.
9 CRUD (ang. Create, Read, Update and Delete) so osnovne funkcije za delo z objekti, hranjenimi v podatkovni
bazi.
http://mysql.com/http://www.enterprisedb.com/http://www.sqlite.org/http://www.oracle.com/index.htmlhttp://www.microsoft.com/sqlserver/http://www-01.ibm.com/software/data/db2/http://couchdb.apache.org/http://www.firebirdsql.org/
19
4.2.1.5 Active Resource
Active Resource prinese platformo za upravljanje z povezavo med poslovnimi objekti in
RESTful spletnimi storitvami. Implementira pot za mapiranje spletno osnovanih resursov v
lokalne objekte z CRUD semantiko (Railsguides).
4.2.1.6 Railties
Railties je jedro Rails kode, ki gradi nove Rails aplikacije in združuje različne paltforme
skupaj v vsaki Rails aplikaciji (Railsguides).
4.2.1.7 Active Support
Active Support je obsežna zbirka razredov in standardnih Ruby knjižnic, ki poganjajo tako
Rails kot tudi v njem napisane aplikacije (Railsguides).
4.3 jQuery jQuery je hitra in zgoščena izpeljanka JavaScript knjižnice. Omogoča hitrejšo in lažjo
uporabo knjižnic pri izgradnji spletnih strani. Zgrajen je s ciljem spremeniti način pisanja
JavaScript kode, in sicer z motom »Napiši manj, naredi več!«. Gre za eno izmed
najpopularnejših Javascript knjižnic na spletu, poganja pa zelo širok spekter različnih spletnih
strani; od medijsko bogatih, interaktivnih in efektov polnih strani, do poslovno kritičnih
aplikacij z naprednimi vmesniki. Pripravil jo je John Resig, prvič pa je bila objavljena
Januarja 2006 na BarCamp NYC (jQuery).
4.4 Podatkovna baza MySQL Privzeto podatkovno bazo SQLite je bilo tekom razvoja potrebno zamenjati z MySQL zaradi
implementacije iskanja s programom za indeksiranje Sphinks.
SQLite je odprtokodna podatkovna baza z izjemno majhno porabo resursov. Za razliko od
običajnih SQL podatkovnih baz, SQLite za svoje delovanje ne potrebuje ločenega procesa na
strežniku, saj bere in piše neposredno v običajno datoteko na disku. Tako je celotna zbirka s
tabelami, indeksi in pogledi shranjena v eno datoteko na disku. Je izjemno kompaktna baza,
saj z vsemi vključenimi funkcijami zasede okrog 300kB. Z izklopom posameznih funkcij pa
se lahko ta velikost še manjša (SQLite).
MySQL je sistem za upravljanje z relacijskimi podatkovnimi bazami. Gre za odprtokodno
implementacijo podatkovne baze, ki za delo s podatki uporablja jezik SQL10. Deluje na
10 SQL (ang. Structured Query Language) je strukturirani povpraševalni jezik za delo s podatkovnimi bazami.
20
principu odjemalec – strežnik, pri čemer lahko strežnik namestimo kot sistem, porazdeljen na
več strežnikov. Obstaja veliko število odjemalcev, zbirk ukazov in programskih vmesnikov za
dostop do podatkovne baze MySQL. Glavne značilnosti podatkovnega strežnika MySQL so
deklarativnost (povemo kaj in ne kako), relacijski model (množice), funkcionalna preprostost,
enostaven nabor ukazov, zmogljivost in brezplačnost. Napisan je v programskem jeziku C in
C++ in deluje na različnih platformah (Linux, Mac OS X, Windows,...). Knjižnice za dostop
do podatkovne baze MySQL so na voljo v vseh večjih programskih jezikih, preko tako
imenovanih vmesnikov API. MySQL je sposoben izkoriščati toliko centralnih procesnih enot,
kolikor jih je na voljo. Najbolj popularen je pri izdelavi spletnih strani in deluje kot
podatkovna zbirka tako imenovane LAMP11 in WAMP12 platforme. Njegova popularnost pri
uporabi spletnih aplikacij je tesno povezana s priljubljenostjo jezika PHP. Zaradi
zmogljivosti, ki jih ponuja, se vedno bolj uporablja tudi v navezi z platformo Ruby on Rails.
Predvsem gre tu za večje projekte, kjer osnovne funkcionalnosti, ki jih ponuja SQLite, ne
zadostujejo več (MySQL).
4.5 Strežnik Nginx Nginx, ki se izgovarja »Engine X«, je lahek, visoko zmogljiv in brezplačen spletni strežnik.
Deluje na vseh najbolj razširjenih operacijskih sistemih UNIX, Linux, Mac OS X, Solaris in
Microsoft Windows. Poznan je predvsem kot zmogljiv, stabilen, poln funkcij, preprost za
nastaviti in predvsem z nizko porabo resursov. Nastal je, da bi izpolnil potrebe večjih spletnih
strani v lasti ruskega podjetja Rambler, med katerimi velja izpostaviti največji istoimenski
ruski spletni portal, ki ima opravka z več kot 500 milijoni zahtevki na dan. Nginx je eden
rekih strežnikov, pisanih za reševanje problema C10K13. Za razliko od običajnih strežnikov
Nginx ne bazira zahtevkov na nitih. Namesto tega uporablja veliko bolj prilagodljivo
dogodkovno vodeno arhitekturo. Ta arhitektura porabi majhne, in kar je najpomembneje,
predvidljive količine pomnilnika pod obremenitvijo. Tudi, če stran ne potrebuje tako velikih
zmogljivosti, lahko še vedno pridobi veliko od Nginx-ove zmogljivosti in majhne porabe
resursov (Nginx).
11 LAMP - Linux, Apache, MySQL, PHP/Perl/Python
12 WAMP - Windows, Apache, MySQL, PHP/Perl/Python
13 C10K je čas, ki ga strežnik porabi za istočasno upravljanje z deset tisoč klienti.
21
4.5.1 Phusion Passenger Phusion Passenger je modul za izvajanje Rails aplikacij na strežnikih Apache in Nginx. Gre
za stabilen, zmogljiv in varen sistem, za katerega ni potrebna nobena dodatna konfiguracija. V
kombinaciji z Ruby Enterprise Edition 14je zmožen zmanjšati porabo spomina za kar 33% in
obenem povečati zmogljivost (Passenger).
4.6 Sphinx Sphinx je odprtokodni strežnik za iskanje nizov, ki indeksira vsebino podatkovne baze. Razvit
je bil od spodaj navzgor s cilji zmogljivosti, relevantnosti (kvaliteta iskanih zadetkov) in
enostavnosti integracije Indeksirane podatke lahko hrani v SQL in NoSQL podatkovni bazi ali
kar v datotekah v XML formatu. Na Rails platformi deluje v navezi z gem-om Thinking
Sphinx, ki poveže ActiveRecord z Sphinx-om in tako omogoči iskanje znotraj spletne
aplikacije (Sphinx, Thinking Sphinx).
4.7 ImageMagick ImageMagick je zastonjska zbirka programov za ustvarjanje, urejanje in sestavljanje bitnih
slik. Sposoben je delati s preko 100 različnih slikovnih formatov vključno z DPX, EXR, GIF,
JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG in TIFF. Nad slikami je možno
izvesti naslednje operacije: pretvorbe, obračanja, preslikave, pomanjšanja, popravljaje barv in
dodajane različnih posebnih učinkov (ImageMagick).
5 NAČRTOVANJE APLIKACIJE Izbrana agilna metodologija narekuje, da je načrtovanje kratko in jedrnato, da se čim prej
preide v fazo implementacije. Potrebno se je osredotočiti na to, da bodo modeli čim bolj
preprosti in da so zajete vse osnovne zahteve. Prednost uporabe platforme Ruby on Rails
pride do izraza že pri načrtovanju, kjer je potrebno definirati le funkcionalnosti aplikacije. Vsi
ostali aspekti so že predefinirani in vgrajeni v platformo samo.
Zaradi lažjega dela s platformo Ruby on Rails bo spletna galerija »galx« tako z vidika kode
kot uporabniškega vmesnika spisana v angleškem jeziku.
14 Ruby Enterprise Edition je serverjem namenjena verzija Ruby-ja, z več izboljšavami, ki ga je razvilo podjetje
Phusion.
22
5.1 Analiza zahtev Glavne zahteve spletne galerije »galx« so:
Tabela 5.1: Specifikacija zahtev
Zahteva Opis
Kreiranje in urejanje
galerij slik
Administrator (oz. lastnik) strani lahko kreira galerije slik,
katerim doda želene atribute, kot so: naslov, opis in naslovna
slika. Naslov naj bo obvezen atribut, ostali so le opcijski.
Ustvarjene galerije in njihove atribute lahko poljubno ureja in
po potrebi tudi odstrani.
Nalaganje in urejanje
slik v galeriji
Administrator lahko v posamezno galerijo nalaga slike, katerim
doda naslov in po želji tudi opis. Slike in njihove atribute lahko
po želji ureja in odstranjuje. Slike naj bo moč tudi sortirati v
poljubnem vrstnem redu.
Kreiranje in urejanje
novic (bloga)
Administrator lahko na spletni strani objavlja članke v obliki
bloga. Le-te lahko ureja in briše. Vsaki objavi naj se pripiše tudi
ime avtorja.
Možnost komentiranja
galerij, slik in
objavljenih novic na
blogu
Obiskovalci spletne strani lahko komentirajo galerije, slike in
bloge. Možnost oddaje komentarja naj bo na dnu vsake od
vsebin. Administrator naj ima možnost izklopa komentiranja pri
posamezni vsebini ali kar globalno pri vseh komentarjih.
Etiketiranje objav na
blogu.
Članke bloga naj je moč etiketirati (ang. »tagging«). Vse etikete
naj bodo zbrane v posebnem oblačku etiket (ang »tag cloud«).
Pregled in
administracija nad
oddanimi komentarji
Administrator naj ima pregled nad zadnjimi oddanimi
komentarji na enem mestu. Komentarje naj ureja in po potrebi
tudi briše.
Dodajanje in urejanje
statičnih strani
Administrator lahko poljubno dodaja, ureja in odstranjuje
statične strani na strani. Povezava do teh naj se doda v glavnem
meniju.
Kreiranje in urejanje
povezav
Administrator lahko dodaja, ureja in odstranjuje povezave na
temu posebej namenjeni podstrani. Stran s povezavami lahko
tudi izklopi.
23
Upravljanje z
nastavitvami spletne
strani
Administrator naj ima popoln nadzor nad spletno stranjo v temu
posebej namenjeni podstrani, kjer naj bodo zbrane vse
nastavitve na enem mestu, sortirane po kategorijah.
Dostop do funkcij preko
prijave
Dostop do administratorskih funkcionalnosti naj bo zaščiten s
prijavo. Administrator mora vnesti svoje uporabniško ime in
geslo.
Dodajanje in urejanje
uporabnikov
(administratorjev) strani
Administrator ali več njih lahko urejajo svoje podatke in
kreirajo ter odstranjujejo druge uporabnike. Tip prijavljenih
uporabnikov naj bo eden administrator.
Možnost urejanje videza
spletne strani
Posebna sekcija nastavitev spletnih strani naj bodo teme, ki
omogočajo nastavitev in urejanje videza celotne spletne strani.
Uporabnik lahko ustvari poljubno število tem. Le-te lahko ureja
in po potrebi tudi odstrani.
Uporaben, enostaven in
intuitiven uporabniški
vmesnik
Uporabniški vmesnik mora biti zanimiv za pogled in prilagojen
za čim hitrejše delo.
Stran naj ima le en glavni meni v glavi. Ob prijavi naj se
pojavijo dodatne administrativne možnosti.
Urejanje vsebin spletne strani naj poteka preko vmesnika,
podobnega priljubljenim namiznim pisarniškim programskim
paketom kot je Microsoft Word.
Hitro in varno delovanje
aplikacije
Stran se mora nalagati hitro in pravilno v vseh podprtih
brskalnikih. Varnost podatkov naj bo zagotovljena z hranjenjem
le-teh v podatkovni bazi in s kriptiranjem gesel.
Podpora za vse najbolj
priljubljene spletne
brskalnike
Stran naj podpira vse najpriljubljenejše spletne brskalnike:
Firefox, Opera, Safari, Chorme in Internet Explorer 8.
Vir: Lastni prikaz, 2010.
5.2 Definiranje funkcionalnosti aplikacije
5.2.1 Primeri uporabe Akterji:
• Uporabnik (obiskovalec)
• Administrator
24
5.2.1.1 Administrator
Administrator je edini uporabniški tip, ki zahteva prijavo v sistem. Ima popoln nadzor nad
celotnim sistemom. Slika 5.1 prikazuje diagram primere uporabe za subjekt administrator.
Slika 5.1: Primer uporabe: administrator
Indeksna stran
Administrator
Prijava
Odjava
Gallerije
novice
Nastavitve strani
Nastavitve uporabnikov
statične strani
povezave
slika
splošne nastavitve
nastavitve statičih strani
administracija komentarjev
teme
nova galerija
uredi galerijosortiraj slike
galerija
nove slike
nova slika
briši galerijo
uredi sliko
briši sliko
nastavitve uporabnika
nastavitve uporabnikov
novica
nova novica
uredi novico
briši novico
komentiraj
nova povezava
briši povezavo
uredi povezavo
nova statična stran
uredi statično stranbriši statično stran
uredi komentar
briši komentar
nova tema
uredi temo
sortiraj statične strani
briši temo
uredi uporabnika briši uporabnika
nov uporabnik
Vir: Lastni prikaz, 2010.
5.2.1.2 Obiskovalec
Obiskovalec je osnovni tip uporabnika »galx«. Vpogled ima nad vsemi statičnimi in
dinamičnimi vsebinami spletne strani kot je prikazano na diagramu uporabe (slika 5.2).
Oddaja komentarjev je edini način, ki ga ima obiskovalec, da pripomore k vsebini.
25
Slika 5.2: Primer uporabe: obiskovalec
Indeksna stran
Obiskovalec
Gallerije
novice
statične strani
povezave
slikagalerija
novica
komentiraj
Vir: Lastni prikaz, 2010.
5.2.2 Podatkovni model Slika 5.3 prikazuje podatkovni model spletne galerije »galx«. Sestavlja ga enajst entitet:
galerija, slika, članek, komentar, tema, uporabnik, statična stran, povezava, uporabniška seja,
stran in pošta. Prikazuje, kakšne atribute imajo entitete in v kakšni relaciji je ena entiteta z
drugo.
26
Slika 5.3: Podatkovni model
Vir: Lastni prikaz, 2010.
Vsaka entiteta vsebuje standardne atribute, ki jih avtomatsko generira Ralis: created_at –
datum vnosa v bazo, updated_at – čas zadnje spremembe vnosa v bazo. Entitete Image,
Gallery in Post vsebujejo atribut delta, ki ga zahteva program za indeksiranje Sphinx. Gallery,
Static, Image, Theme in Post imajo atribut permalink, ki predstavlja alternativo ID-ju in se
uporablja v poti do dotične podstrani. Atribut position pri entitetah Image in Static predstavlja
pozicijo v vrstnem redu posameznega vnosa.
5.2.2.1 Galerija
Galerija (»Gallery«) je podatkovna struktura galerij slik. Njeni atributi so: id (primarni ključ
galerije), title (naslov galerije), content (vsebina oz. opis galerije), commenton (vklop/izklop
komentarjev galerije), front_file_name (ime datoteke naslovne slike), front_content_type (tip
datoteke), front_file_site (velikost datoteke) in front_updated_at (čas zadnje spremembe
datoteke).
comments
+id: integer+commenter: string+body: text+post_id: integer+gallery_id: integer+image_id: integer+created_at: datetime+updated_at: datetime
statics
+id: integer+name: string+permalink: string+content: text+created_at: datetime+updated_at: datetime+position: integer
galleries
+id: integer+title: string+permalink: string+content: text+commenton: boolean+created_at: datetime+updated_at: datetime+front_file_name: string+front_content_type: string+front_file_size: integer+front_updated_at: datetime+delta: boolean
images
+id: integer+title: string+permalink: string+content: text+commenton: boolean+gallery_id: integer+created_at: datetime+updated_at: datetime+photo_file_name: string+photo_content_type: string+photo_file_size: integer+photo_updated_at: datetime+position: integer+delta: boolean
settings
+id: integer+var: string+value: text+created_at: datetime+updated_at: datetime
links
+id: integer+name: string+link: string+description: text+created_at: datetime+updated_at: datetime
users
+id: integer+username: string+email: string+crypted_password: string+password_salt: string+persistence_token: string+created_at: datetime+updated_at: datetime
posts
+id: integer+title: string+content: text+commenton: boolean+author: string+created_at: datetime+updated_at: datetime+delta: boolean+permalink: string
user_sessions
+id: integer+username: string+password: string+created_at: datetime+updated_at: datetime
themes
+id: integer+name: string+permalink: string+created_at: datetime+updated_at: datetime+head_file_name: string+head_content_type: string+head_file_size: integer+head_updated_at: datetime+footer_file_name: string+footer_content_type: string+footer_file_size: integer+footer_updated_at: datetime+background_file_name: string+background_content_type: string+background_file_size: integer+background_updated_at: datetime+background_color: string+head_color: string+footer_color: string+links_color: string+text_color: string+head_links_color: string+footer_text_color: string+h1_color: string+h2_color: string+frames_color: string+headon: boolean+backgroundon: boolean+footeron: boolean+detail_color: string+page_title_color: string+page_title_image_file_name: string+page_title_image_content_type: string+page_title_image_file_size: integer+page_title_image_updated_at: datetime+pagetitleon: boolean
1..*
1..*1..*
1..*
27
5.2.2.2 Slika
Slika (»Image«) je podatkovna struktura slik, ki so del galerij. Njeni atributi so: id (primarni
ključ slike), tittle (naslov slike), content (vsebina oz. opis slike), commenton (vklop/izklop
komentarjev slike), gallery_id (tuji ključ galerije kateri pripada slika), photo_file_name (ime
datoteke, tj. slike), photo_content_type (tip detoteke), photo_file_size (velikost slike) in
photo_updated_at (čas zadnje spremembe pripete slike).
5.2.2.3 Članek
Članek (»Post«) je podatkovna struktura členkov bloga oz. novic. Vsebuje atribute: id
(primarni ključ članka), title (naslov članka), commenton (vklop/izklop komentarjev članka)
in author (avtor članka).
5.2.2.4 Komentar
Komentar je podatkovna struktura, ki predstavlja oddane komentarje obiskovalcev spletne
strani. Vsebuje atribute: id (primarni ključ komentarja), commenter (komentator oz. avtor
komentarja), body (vsebina komentarja), post_id (tuji ključ komentiranega članka), image_id
(tuji ključ komentirane slike) in gallery_id (tuji ključ komentirane galerije).
5.2.2.5 Tema
Tema (»Theme«) je podatkovna struktura, ki hrani vse podatke o izgledu spletne strani.
Osnovni atributi tem so: id (primarni ključ teme), name (ime teme), headon (vklop/izklop
ozadja glave), backgroundon (vklop/izklop ozadja spletne strani), footeron (vklop/izklop
ozadja noge) in pagetitleon (vklop/izklop prikaza logotipa spletne strani). Atributi, ki določajo
barve posameznih delov spletne strani so naslednji: background_color (barva ozadja),
head_color (barva ozadja glave), footer_color (barva ozadja noge), links_color (barva
povezav), text_color (barva besedila), head_links_color (barva povezav v glavi),
footer_text_color (barva besedil v nogi), h1_color (barva naslovov tipa h1), h2_color (barva
naslovov tipa h2), frames_color (barva okvirjev in obrob), detail_color (barva detajlov) in
page_title_color (barva naslova spletne strani). Ozadja glave (head), logo strani
(page_title_image), noge (footer) in celotne spletne (background) strani pa imajo atribute:
file_name (ime datoteke, tj. slike), content_type (tip datoteke), file_size (velikost datoteke) in
updated_at (čas zadnje spremembe).
5.2.2.6 Uporabnik
Uporabnik (»User«) je podatkovna struktura prijavljenih uporabnikov oz. administratorjev.
Vsebuje atribute: id (primarni ključ uporabnika), username (uporabniško ime), email (e-poštni
28
naslov uporabnika), crypted_password (kriptirano geslo uporabnika) in persistance token
(žeton prijavljenega uporabnika, ki se hrani v piškotkih brskalnika).
5.2.2.7 Uporabniška seja
Uporabniška seja (»UserSession«) predstavlja sejo prijavljenega uporabnika. Vsebuje
atribute: id (primarni ključ seje), username (uporabniško ime uporabnika) in password (geslo
uporabnika).
5.2.2.8 Statična stran
Statična stran (»Static«) je zbirka statičnih strani. Njeni atributi so: id (primarni ključ statične
strani), name (ime statične stran) in content (vsebina statične strani).
5.2.2.9 Povezava
Povezava (»Link«) je podatkovna struktura, ki služi za seznam povezav. Vsebuje atribute: id
(primarni ključ povezave), name (ime povezave), link (povezava) in description (opis
povezave).
5.2.2.10 Nastavitve
Nastavitve (»Settings«) je podatkovna struktura osnovnih nastavitev spletne strani. Vsebuje
atribute: id (primarni ključ nastavitve), val (ime nastavitve) in value (vrednost nastavitve).
5.2.3 Koncept uporabniškega vmesnika Slike 5.4 do 5.12 prikazujejo koncept videza uporabniškega vmesnika spletne galerije »galx«.
Gre za skice vseh ključnih elementov aplikacije, ki služijo kot zgled pri implementaciji
vmesnika.
Indeksna stran omogoča obiskovalcu hiter pregled nad zadnje dodanimi vsebinami na vseh
področjih (slika 5.4). Slika prikazuje še videz klasične glave in noge, ki sta del ogrodja
spletne strani in sta vedno prisotna.
29
Slika 5.4: Koncept indeksne strani
Vir: Lastni prikaz, 2010.
Seznam slik je nanizan skupaj z naslovom v širini brskalniku prilagodljivega seznamu (slika
5.5). Administrator lahko tu dostopa do funkcij urejanja in brisanja posamezne galerije ter
ustvarjanja nove.
Slika 5.5: Koncept zbirke galerij
Vir: Lastni prikaz, 2010.
30
Prikaz posamezne galerije vsebuje njen naslov, opis in vsebujoče slike. Administrator lahko
tu dostopa do funkcij urejanja in brisanja galerije ter brisanja, urejanja in dodajanja slik.
Slika 5.6: Koncept prikaza galerije
Vir: Lastni prikaz, 2010.
Urejanje in kreiranje vsebin poteka za vse vsebine preko enakega uporabniškega vmesnika, z
razliko zgolj v potrebnih poljih in dodatnih nastavitvah (slika 5.7).
Slika 5.7: Koncept urejanja in kreiranja vsebin
Vir: Lastni prikaz, 2010.
Izgled slike je v običajnem formatu z naslovom, sliko in opisom (slika 5.8). V zgornjem
desnem kotu sta gumba za pomik naprej in nazaj po galeriji, pod njo pa so povezava nazaj,
uredi in briši.
31
Slika 5.8: Koncept prikaza posamezne slike
Vir: Lastni prikaz, 2010.
Članke bloga sestavlja naslov zgoraj, vsebina članka.
Izgled članka bloga je v običajnem formatu z naslovom, datumom objave, avtorjem in
vsebino ter številom oddanih komentarjev, če so le-ti omogočeni (slika 5.9). Administrator
lahko tu dostopa do funkcij urejanja, brisanja in ustvarjanja novega članka.
Slika 5.9: Koncept prikaza članka na blog-u
Vir: Lastni prikaz, 2010.
32
Možnost oddaje komentarja, ki se vključi pod vsako od vsebin, če je možnost teh omogočena
(slika 5.10). Obiskovalec mora vnesti svoje ime oz. psevdonim in vsebino komentarja. Izpisan
komentar ima v glavi naslov, pod naslovom pa vsebino.
Slika 5.10: Koncept komentiranja vsebin
Vir: Lastni prikaz, 2010.
Administrator dostopa do dodatnih funkcionalnosti preko prijavnega obrazca (slika 5.11).
Slika 5.11: Koncept prijavnega obrazca
Vir: Lastni prikaz, 2010.
Administrator lahko dostopa do dveh nadzornih plošč, nastavitve uporabnikov in nastavitve
strani. Izgled obeh je v osnovi enak (slika 5.12). Nastavitve uporabnikov vsebujejo naslednje
jezičke: nastavitve, statične strani, komentarji in teme. Nastavitve uporabnikov pa vsebujejo
jezička: nastavitve uporabnika in uporabniki.
33
Slika 5.12: Koncept nadzorne plošče
Vir: Lastni prikaz, 2010.
5.3 Časovni načrt V tabeli 5.2 so navedene vse aktivnosti, potrebne za izvedbo projekta Spletna galerija »galx«.
Slika 5.13 prikazuje celoten časovni načrt, ki je bil predviden za realizacijo projekta.
Tabela 5.2: Tabela aktivnosti
1. Načrtovanje
2. Implementacija 2.1 Implementacija galerije
2.2 Implementacija slik
2.3 Implementacija novic (bloga)
2.4 Implementacija komentarjev
2.5 Implementacija statičnih strani
2.6 Implementacija povezav
2.7 Implementacija indeksne strani
2.8 Implementacija nastavitev strani
2.9 Implementacija zaščite
2.10 Implementacija nastavitev uporabnika
2.11 Implementacija tem
2.12 Implementacija iskanja
3. Testiranje 3.1 Funkcionalno testiranje
3.2 Testiranje integracije
3.3 Sistemsko testiranje
3.4 Testiranje enot
34
4. Namestitev (postavitev na splet)
Vir: Lastni prikaz, 2010.
Slika 5.13: Časovni načrt
Vir: Lastni prikaz, 2010.
6 IMPLEMENTACIJA Implementacija se začne z generiranjem novega Ruby on Rails projekta. Rails skripta poskrbi
za kreiranje vsega potrebnega za začetek pisanja kode. Generira tri različne tipe okolij:
razvijalno, produkcijsko in testno. Vsako od njih predstavlja eno od faz razvoja Rails
aplikacije. Razvijalno okolje je namenjeno za uporabo pri implementaciji aplikacije. Ob vsaki
poizvedbi brskalnika se avtomatično posodobi koda ne da bi bilo potrebno strežnik ponovno
zagnati. Prav tako je vključena možnost uporabe razhroščevalca in izključenega pomnjenja
(Railsguides).
6.1 Priprava sistema Preden začnemo z implementacijo je potrebno še konfigurirati podatkovno bazo MySQL, ki
ni privzeta, in namestiti nekatere gem-e, ki pripomorejo k hitrejši in enostavnejši
implementaciji.
35
6.1.1 Compass Compass je orodje za ustvarjanje izgleda spletne strani. Za pisanje slogov uporablja jezik
Sass, ki pripomore k temu, da je koda stilov krajša, bolj pregledna in posledično jo je lažje
vzdrževati. Compass ponuja najboljše elemente različnih CSS platform, ki se lahko uporabijo
brez uporabe njihovih razrednih imen, med drugimi tudi Blueprint, ki omogoča organiziranje
CSS div-ov vi mrežo (Conpass).
6.1.2 Haml/Sass Haml in Sass sta označevalna jezika, ki sta del Hanl gem-a, katerega je potrebno namestiti
skupaj z Compass-om. Haml opisuje HTML kodo spletne strani, medtem ko Sass opisuje
CSS. Jezika imata sintakso, ki omogoča pisanje krajše in predvsem preglednejše kode (Haml,
Sass).
6.1.3 Haml-scaffold Rails Scaffolding je hiter način za generiranje nekaterih večjih delov aplikacije. Hkrati lahko
generira model, view in controller za vnešene parametre. Haml-scaffolding je alternativa
privzetemu scaffolding sistemu, ki predstavitveni del (view) generira v jeziku haml.
Generirani seznami elementov že vsebujejo odstranjevanje z gem-om Will_paginate. Poleg
osnovne kode generira tudi testno kodo v jeziku Mocha (haml-scaffold).
6.1.4 Will_paginate Will_paginate je gem, ki omogoča odstranjevanje seznamov posameznih elementov spletne
strani. Nastavitev in uporaba sta zelo preprosti, saj zahtevata zgolj dve vrstici kode (Will
pagiante).
6.1.5 Mocha Mocha je jezik, ki se uporablja pri pisanju testov. Združljiv je z veliko testnimi platformami
kot so: Test::Unit, RSpec, test/spec, expectations, Dust, MiniTest in JtestR (Mocha).
6.1.6 FCKeditor Ima svoj sistem za nalaganje slik, te pa lahko dodamo tudi iz drugih virov izven strežnika.
6.1.7 Paperclip Paperclip je preprost sistem za pripenjanje datotek z ActiveRecord-om. Ustvarjen je bil z
namenom čim preprostejše namestitve in da se lahko datoteke tretira tako kot ostale atribute.
Datoteke se shranijo šele potem, ko je bila enota shranjena v ActivRecord-u. V podatkovni
http://www.ruby-doc.org/core/classes/Test/Unit.htmlhttp://rspec.info/http://chneukirchen.org/repos/tests