RAZVOJ MOBILNE APLIKACIJE»OPRAVILKO«ZA MOBILNO PLATFORMO ios

Size: px
Start display at page:

Download "RAZVOJ MOBILNE APLIKACIJE»OPRAVILKO«ZA MOBILNO PLATFORMO ios"

Transcription

1 Rok Janež RAZVOJ MOBILNE APLIKACIJE»OPRAVILKO«ZA MOBILNO PLATFORMO ios Diplomsko delo Maribor, februar 2017

2

3 RAZVOJ MOBILNE APLIKACIJE»OPRAVILKO«ZA MOBILNO PLATFORMO ios Diplomsko delo Študent: Študijski program: Rok Janež visokošolski študijski program Računalništvo in informacijske tehnologije Mentor: Lektor: doc. dr. Matej Črepinšek Špela Mlinar, univ. dipl. slov. i

4 ii Diplomsko delo Razvoj mobilne aplikacije»opravilko«za mobilno platformo ios

5 Zahvala Na tem mestu se zahvaljujem mentorju doc. dr. Mateju Črepinšku za smernice in pomoč pri izdelavi diplomske naloge. Velika hvala mojim staršem in bratu, ki so mi omogočili študij in me na tej poti tudi podpirali. Zahvaljujem se tudi vsem ostalim, ki so sodelovali pri ustvarjanju enega pomembnejših poglavij mojega življenja do zdaj. iii

6 RAZVOJ MOBILNE APLIKACIJE»OPRAVILKO«ZA MOBILNO PLATFORMO ios Ključne besede: ios, projekt, opravilo, xcode, Swift, mobilna aplikacija. UDK: :004.58(043.2) Povzetek V diplomskem delu sem se lotil podpore problema hitrega in učinkovitega vodenja projektov znotraj večjih ali manjših organizacij in podjetij. Na podlagi že začrtanih smernic oziroma dobre prakse delovnih procesov v podjetjih sem izdelal aplikativno rešitev za ta problem. Izziva sem se lotil strukturirano po načelu več je manj. Tako sem poleg prve faze analize problema in želj trga izdelal tudi mobilno aplikacijo, ki uporabniku omogoča hitro, preprosto in učinkovito vodenje projektov in razdelitev opravil med zaposlene. Navdih za aplikacijo sem črpal iz vsakdanje prakse v podjetju, kjer sem zaposlen. Načrtovanje in razvoj sem izvedel z razvojnim orodjem xcode v programskem jeziku Swift. V nadaljevanju diplomskega dela sem podrobno opisal svoj koncept aplikativne rešitve problema in določene segmente mobilne aplikacije. iv

7 THE DEVELOPMENT OF A MOBILE APPLICATION»OPRAVILKO«FOR MOBILE PLATFORM ios Key words: ios, project, task, xcode, Swift, mobile application. UDC: :004.58(043.2) Abstract In the thesis, I presented the problem of quick and effective project management within larger or smaller organizations and companies. Based on the already defined guidelines or good practice of work processes within companies, I made an applied solution for the problem of time organization and allocation of tasks between the employees. I faced the challenge structurally on the principle less is more. In addition to the first phase of the problem analysis, in order to solve this problem, I also created a mobile application that allows the user a quick, simple, and effective way of project management and allocation of tasks between the employees. I got inspiration for my application from everyday practice in the company where I work. Planning and development of the application was implemented with the xcode development tool and the Swift programming language. In the continuation of this thesis, I also described in detail my concept of the applied solution of the problem, and also some segments of mobile application. v

8 KAZALO VSEBINE 1 UVOD Motivacija OPERACIJSKI SISTEM ios Zgodovina ios SDK Komponente RAZVOJNO OKOLJE xcode Vmesnik xcode Orodje Instruments Orodje Interface builder PROGRAMSKI JEZIK SWIFT PROJEKTNO VODENJE Izbrane funkcionalnosti IZDELAVA APLIKACIJE Podatkovni model Prenos podatkov Programska koda in uporabniški vmesnik Vodja službe Vodja oddelka Zaposleni Pogledi Navigacija Knjižnica SwiftyJSON SKLEP VIRI IN LITERATURA vi

9 KAZALO SLIK Slika 2.2.1: ios 4 in ios Slika 2.3.1: Plasti operacijskega sistema ios... 7 Slika 2.4.1: Domači zaslon ios Slika 3.1.1: Samopopravek ob napaki Slika 3.1.2: Razvojno orodje xcode IDE (2016) Slika 3.2.1: Orodje Instruments ob analizi aplikacije Slika 5.1: Programski paket Microsoft Project Slika 5.1.1: Shematski prikaz izbranih funkcionalnosti Slika 6.1.1: Relacijska shema (ER-diagram) podatkovne baze Slika 6.1.2: Entitete Opravilo, Projekt in Projekt-Oseba-Opravilo Slika : Način komunikacije med aplikacijo in podatkovno bazo Slika 6.2.1: Primer organizacijske strukture IT-sektorja Slika 6.2.2: Tok podatkov v izbrani organizacijski sturkturi Slika 6.2.3: Vrstica zavihkov Slika : Zavihek opravilo in prikaz podrobnosti opravila Slika : Zavihek projekt in prikaz podrobnosti projekta Slika : Zavihek Oseba Slika : Prijavno okno Slika : Konfiguracija vsebine UIView Slika : Izbirnik datuma Slika : Vnos novega projekta z opravilom Slika : Tok podatkov med pogledi Slika : Zgradba celice v tabeli z razrednimi atributi Slika : Oblikovanje celice (Custom cell view) Slika : Funkcionalnost Swipa Slika : Iskalna vrstica Slika : Navigacijska vrstica KAZALO TABEL Tabela 4.1: Različice programskega jezika Swift KAZALO KODE Izvorna koda : Swift, zahteva za vnos podatkov v podatkovno bazo Izvorna koda : Odstranitev osebe iz seznama Izvorna koda : Izbira barve Izvorna koda : Dekodiranje JSON niza ob prenosu vrednost iz podatkovne baze vii

10 UPORABLJENI SIMBOLI IN KRATICE ios iphone Operating system tvos Apple TV Operating system OS X Apple Macintosh Operating system SDK Software Development Kit IDE Integrated Development Environment HTTP Hypertext Transport Protocol REST Representational State Transfer AJAX Asynchronous JavaScript and XML JSON JavaScript Object Notation PHP Personal Home Page Tools API Application Programming Interface URL Uniform Resource Locator SCM Source Code Management MVC Model View Controller GUI Graphical User Interface MMS - Multimedia Messaging Service viii

11 1 UVOD Temelj uspešnega poslovanja podjetij je hitro in natančno izvajanje projektov, predvsem pa agilnost in zmožnost dobrega prilagajanja spremembam in željam naročnika. V želji po čim večji konkurenčnosti podjetja vztrajno znižujejo fiksne stroške dela, po drugi strani pa v želji po čim večjem dobičku kopičijo projekte, za katere trenutno nimajo zmogljivosti, saj si tako na nek način zagotavljajo boljše finančne pogoje. S takšnim načinom poslovanja se podjetja začnejo slej ko prej dušiti v lastnih projektih, kar posledično privede do manjše kakovosti opravljenega dela. Projekti zahtevajo več režije in usklajevanja, kdo in kako se bo lotil dodeljenega opravila. Roki izvedb se začnejo prekrivati, ljudje, ki opravljajo določen projekt, so preobremenjeni in projektni vodje večino svojega delovnega časa začnejo namenjati reorganizaciji dela. Tako se kaj kmalu zgodi, da postane delovni dan en velik sestanek [1]. V ta namen proizvajalci programske opreme že ponujajo določene računalniške programe, ki vodilnim olajšajo vodenje projektov. Programi oziroma aplikacije omogočajo časovno načrtovanje projektov in opravil znotraj organizacije. Opozarjajo tudi na približevanje roka izvedbe, med seboj logično povezujejo opravila in jih združujejo v celoto. Eden takšnih programov je Microsoft Project, ki teče na operacijskem sistemu Windows. V zadnjih mesecih ga je bolj ali manj uspešno nadomestil njegov mlajši brat Microsoft Planner, ki je na voljo v sklopu pisarniškega paketa v oblaku Microsoft Office 365. Oba programa ponujata močno delovno okolje, kjer lahko hitro in učinkovito urejamo projekte in opravila, ki jim sledijo. Hkrati omogočata analizo že opravljenega dela in skozi grafe prikazujeta statistični napredek. Seveda je primerljivih programov, ki se spopadajo s podobnim problemom, na trgu še ogromno. Eden izmed mnogih je tudi Efficcess, ki prav tako ponuja širok nabor orodij za lajšanje vsakodnevnih težav vodij projektov in vseh ostalih, ki imajo nalogo čim hitreje in učinkovito izpeljati projekt [2]. 1

12 1.1 Motivacija Skupni imenovalec vseh računalniških programov, ki ponujajo načrtovanje projektov in dela v podjetju, je poleg tematike tudi, da mnogi ne tečejo na mobilnih napravah. Kot vemo, se danes računalništvo še vedno vztrajno seli v oblak, a tudi ta trend počasi upada. Lahko rečem, da se že začenja drugi del dobe mobilnih aplikacij, ko se nekdanji namizni programi selijo v naše žepe in na zapestja, kjer so v primerjavi s prvimi različicami tovrstnih produktov tudi uporabni. Pametni mobilni telefoni so namreč dobili zmogljivejša vezja, večje zaslone in operacijske sisteme, ki lahko brezkompromisno konkurirajo operacijskim sistemom, ki poganjajo osebne računalnike. V praksi to pomeni, da lahko danes z mobilnimi aplikacijami na pametnih napravah opravljamo enako delo kot na osebnem računalniku. Hkrati nam pametne naprave, recimo mobilni telefon, omogočajo geografsko neodvisnost, kar je pri poslovanju izjemnega pomena in velika prednost pred osebnimi računalniki. Tako sem za rešitev problema organizacije dela v podjetju izkoristil prav pomanjkljivosti namiznih računalniških programov in vse prednosti, ki nam jih ponuja svet pametnih naprav. S strukturiranim pristopom sem razvil mobilno aplikacijo, ki uporabniku s pomočjo pametnega mobilnega telefona ponuja hitro in učinkovito, predvsem pa pregledno delo s projekti, opravili in zaposlenimi v podjetju. Mobilna aplikacija je razvita za Applove pametne mobilne telefone iphone in tablične računalnike ipad, ki tečejo na operacijskem sistemu ios. Postavil sem tudi koncept aplikacije za pametno uro iwatch, vendar sem se v diplomskem delu osredotočil predvsem na mobilno aplikacijo. Mojo aplikacijo, ki sem jo poimenoval "Opravilko", odlikuje preprost in pregleden uporabniški vmesnik, iz katerega lahko uporabnik hitro in pregledno odčita stanje določenega opravila ali projekta. Ustvari lahko nov projekt in opravila zanj ter vse skupaj dodeli zaposlenim. Hkrati aplikacija uporabnika obvesti o preobremenjenosti zaposlenega, s čimer se izognemo slabi volji v oddelku. Projektni vodja oziroma vodja oddelka ima tudi celovit pregled nad zaposlenimi, ki so mu podrejeni. Na drugi strani lahko zaposleni dostopa do opravil, ki so mu dodeljena z višje instance, in prejema obvestila o spremembah v projektu. Mobilna aplikacija je zastavljena generično, kar pomeni, da jo je mogoče prilagoditi skoraj za vsako področje dela, pa naj bo to gradbeno podjetje, trgovsko podjetje, lekarna, avtomobilska industrija ali zobozdravstvena ordinacija. Za potrebe simulacije delovanja aplikacije sem aplikacijo prilagodil za IT-sektor v farmacevtskem podjetju. 2

13 Skozi diplomsko delo bom predstavil tudi orodja, ki omogočajo razvoj aplikacij za operacijski sistem ios, pot od ideje do končnega izdelka ter možne nadgradnje in razširitve aplikacije v prihodnje. V prvi fazi sem opisal operacijski sistem, ki poganja Applove pametne naprave in za katerega lahko na podlagi raziskav in primerjav trdim, da je trenutno eden boljših mobilnih operacijskih sistemov na trgu. V nadaljevanju sledi orodje, s katerim sem izdelal aplikacijo in nabor vseh programov, ki jih ponuja za potrebe testiranja in preverjanja njenega delovanja. Predstavil sem programski jezik, ki sem ga uporabil in ki se kljub sorazmerno kratkemu stažu na trgu programskih jezikov obnese odlično, predvsem pa zelo stabilno. Popeljal vas bom skozi korake razvoja aplikacije, opisal pristope razvoja ter navedel nekaj glavnih značilnosti in gradnikov aplikacije, da bo bralec začutil njeno poslanstvo in namen. Izdelana aplikacija je polno operativna in namenjena za uporabo v praksi. Kljub temu pa ni načrtovana kot operativna aplikacija, ampak bolj kot koncept oziroma smernica za nadaljnji razvoj aplikacij na tem področju [3]. 2 OPERACIJSKI SISTEM Mobilni telefon ne ponuja samo osnovnega klicanja in pošiljanja kratkih besedilnih sporočil. S prihodom možnosti povezovanja mobilne naprave v internetno omrežje in prenosa podatkov je mobilni telefon dobil cel kup novih funkcionalnosti, kot tudi možnosti izvajanja zahtevnejših operacij. S tem se uporabnost naprave zelo poveča in jo približa ravni osebnih računalnikov. Ti so nekako še vedno merilo, kaj mora pametni mobilni telefon ponujati. Za povečanje zmogljivosti sta ključna dva dela, ki sta med seboj tesno povezana in delujeta v nekakšnem skupnem ravnovesju. Če namreč močno izboljšamo en del, drugega pa zanemarimo, je stanje naprave enako, kot če ne bi izboljšali ničesar. Tako je treba za optimalen napredek z roko v roki izboljševati oba dela in ju kar se da najbolj prilagajati enega drugemu. Ti dve komponenti sta strojna oprema (hardware) in sistemska programska oprema (software). Moč naprave je odvisna od jedra, torej vezja, ki jo gradi. Zmogljivejše kot je, več pritiska bomo lahko izvajali nad operacijskim sistemom in več bomo lahko pričakovali od aplikacij. Druga enako pomembna, če ne še pomembnejša 3

14 komponenta pa je operacijski sistem. Operacijski sistem je vez med strojno opremo in uporabnikom naprave. Brez njega je vsa pamet tehnološko dovršenega tiskanega vezja, ki je zapakiran v prefinjeno aluminijasto oziroma stekleno ploščico, neuporabna (npr. iphone). Operacijski sistem je tisti, ki omogoča, da povezava med aplikacijo in sistemskimi viri poteka nemoteno. Nudi nam uporabniški vmesnik in napravo naredi uporabno. Za čim večji izkoristek sistemskih virov, kar v praksi pomeni večjo odzivnost in hitro ter stabilno delovanje naprave, mora biti operacijski sistem tehnološko dovršen in prilagojen strojni opremi. Danes je trg operacijskih sistemov, ki poganjajo naše pametne naprave, zasičen z vsemi možnimi bolj ali manj uspešnimi produkti operacijskih sistemov. V tem segmentu izstopajo Googlov operacijski sistem Android, ki temelji na odprti kodi, kar mu zagotavlja najvišji tržni delež že več let zapored, BlackBerry OS, ki poganja istoimenske naprave in je dober prikaz, kako v zelo kratkem obdobju izgubiti skoraj ves tržni delež, ter že skoraj pokopan, a včasih izredno priljubljen Nokijin Symbian, ki je»mobiliziral«množice. Pa vendar je bil trend hitrega razvoja zanj usoden. V skupino velikih treh poleg Androida in ios-a sodi tudi Microsoftov Windows Phone OS, ki ga odlikujeta preprost uporabniški vmesnik in izredno stabilno delovanje. Poleg operacijskih sistemov Android in ios je še edini resni igralec na trgu operacijskih sistemov za pametne naprave. Operacijska sistema Windows Phone in Android odlikuje tudi zmožnost poganjanja različnih naprav različnih proizvajalcev. Srečamo ju na pametnih telefonih in tabličnih računalnikih. Izpeljanka Androida pa poganja tudi pametne ure. 2.1 ios Leta 2007 je podjetje iz Cupertina skupaj s pametnim telefonom iphone, ki je takrat ob svojem prihodu premaknil meje mogočega, poslalo na trg tudi prvo različico operacijskega sistema ios. Do takrat še neprepoznaven izdelek se je izkazal za izjemno uspešnega in v samo nekaj letih prerasel v operacijski sistem, ki postavlja standarde oblikovanja in delovanja. Spada v družino Applovih operacijskih sistemov OS X, kamor uvrščamo tudi Watch OS, operacijski sistem za pametne ure, in tvos, ki poganja Applovo pametno televizijo. ios temelji na jedru XNU, Unix tipa Darwin, in teče izključno na Applovih napravah iphone, ipad in ipod touch s procesnim vezjem ARM. Zapisan je v programskih jezikih C, C++, Objective C in Swift. Izvorna koda je nedostopna, kar zagotavlja visoko 4

15 stopnjo varnosti in odpornost na škodljivo programsko kodo. Posebej ga odlikuje prijazen uporabniški vmesnik z grafično izredno dovršenim oblikovanjem. Stabilno delovanje, večopravilnost, obveščanje uporabnikov (angl. push notifications), večtočkovno upravljanje in SDK so le nekatere prednosti, ki jih ios ponuja svojim uporabnikom in razvijalcem. Velika posebnost ios-a je, da je v nasprotju z večino operacijskih sistemov za pametne naprave prilagojen strojni opremi naprave. ios poganja Applove naprave iphone, ipad in ipod Touch. Prav tako sta iz ios-a izpeljana tudi Watch OS za pametne ure in tvos za digitalno televizijo. Oba temeljita na ob njunem izidu aktivni različici ios-a. Prenos in namestitev sta za uporabnika popolnoma brezplačna, kakor tudi posodobitve. Te prihajajo na trg v 12 mesečnih časovnih intervalih. Pred tem izide tudi beta različica, ki razvijalcem omogoča, da svoje produkte pripravijo na prihajajočo različico ios-a. V splošnem gre za dokaj omejen operacijski sistem, ki uporabniku ne ponuja veliko svobode in dinamičnosti. Nudi pa izredno stabilno delovanje, visoko stopnjo varnosti in širok nabor aplikacij. Vse to poleg prefinjenega dizajna uvrsti operacijski sistem na prestol kot operacijski sistem z drugim največjim tržnim deležem [4]. 2.2 Zgodovina Skozi zgodovino se je do danes zamenjalo že 10 različic operacijskega sistema. Vsaka nova različica je prinesla večje ali manjše spremembe. Nekatere so pomenile tudi večji tehnološki preskok. To se navadno zgodi septembra, vzporedno z izidom nove različice pametnega mobilnega telefona iphone. Večje spremembe so poleg prve različice prinesle še različice 2 (App Store, ios SDK), 3 (MMS), 7 (popolnoma novo oblikovanje uporabniškega vmesnika) in zadnja različica 10, ki ponuja naprednejše delo z obvestili. Uporabniki so se morali sprijazniti tudi z dejstvom, da novejše različice niso več združljive s tri ali več let starimi napravami. Od prve različice naprej sta bila prenos in namestitev brezplačna. 5

16 Slika 2.2.1: ios 4 in ios ios SDK Software development kit (SDK) oziroma po slovensko orodja za razvoj programske opreme je nabor orodij, ki skoraj vsakomur omogočajo načrtovanje in razvoj aplikacij. Različni operacijski sistemi zahtevajo različne SDK. Tako recimo potrebujemo za razvoj aplikacij za Android Javin SDK,.NET Framework SDK za razvoj Windows phone aplikacij in ios SDK za aplikacije, ki tečejo na Applovih napravah. Prva različica ios SDK je izšla leta 2008, dobro leto po prihodu prvega iphona. To je omogočilo razvoj tretjerazrednih (t. i. Third part) aplikacij široki množici razvijalcev. SDK je zgrajen iz 4 plasti, in sicer Cocoa Touch, Media, Core Services in Core OS. Cocoa Touch ponuja programska orodja za razvoj aplikacij ios in ogrodja (angl. framework). Vsebuje kar 7 različnih ogrodij, ki razvijalcem omogočajo dodati nestandardne funkcionalnosti [5]. Ta ogrodja so: Game Kit, iad, Map Kit, Message UI, UIKit, Event Kit UI in Adress book UI. 6

17 Media je raven, ki je sestavljena iz grafičnih ter avdio- in videokomponent. Core Services vsebuje sistemske storitve, ki jih aplikacije potrebujejo za delovanje. Core OS je najnižja raven, na kateri slonijo vse ostale višje ravni. Zgradbo operacijskega sistema v ravneh prikazuje slika Slika 2.3.1: Plasti operacijskega sistema ios Poleg tega SDK ponuja tudi razvojno orodje xcode, iphone Simulator, Instruments in še ostale bolj ali manj uporabne programe, ki razvijalcem omogočijo razvoj, testiranje in preverjanje delovanja aplikacije. SDK temelji na arhitekturi MVC (model view controller). Tako kot pri.net Framwork model (angl. model) skrbi za delo s podatki njihovo pridobivanje in hranjenje ter je nekakšna vez med pogledom in krmilnikom. Krmilnik (angl. controller) je most med modelom in pogledom. Spremembe na eni ravni prenese na preostale ravni. Hkrati izvaja ukaze, ki so napovedani v pogledu. Pogled (angl. view) je interaktivni del arhitekture. Je del, ki je v stiku z uporabnikom. Sestavljajo ga posamezni grafični objekti, ki skupaj tvorijo celoto. Podatki v tem pogledu se samo prikazujejo in se ne shranjujejo. Cilj arhitekture MVC je ločiti med seboj različne segmente kode oziroma funkcionalnosti aplikacije in onemogočiti neposreden dostop iz uporabniškega vmesnika 7

18 do podatkov v modelu. S tem dosežemo večjo preglednost programske kode in lažje posodabljanje aplikacij. Hkrati se izognemo procesnim napakam in povečamo stabilnost aplikacije. 2.4 Komponente Operacijski sistem sestavljajo štiri glavne komponente, in sicer domači zaslon, večopravilnost aplikacij, glasovni ukazi in t. i. Game center oz. središče za igre. Te so temelj ios-a in iz njih so izpeljane ostale funkcionalnosti. Domači zaslon je najpomembnejša izmed štirih komponent, saj je to prva stvar, ki jo uporabnik opazi in s katero stopi v stik. Označimo ga lahko za nekakšno dnevno sobo oziroma središče celotnega dogajanja na mobilni napravi. Razdeljen je na tri dele, in sicer statusno vrstico, meni z aplikacijami in orodno vrstico. V statusni vrstici lahko uporabnik spremlja moč signala, stanje baterije in trenutni čas. Meni z aplikacijami je konfigurativen, torej ga lahko vsak uporabnik prilagodi svojim željam. Seveda ima omejeno svobodo urejanja. Spremeni lahko samo vrstni red aplikacij, katerih ikone so standardno razporejene v mrežo. Domači zaslon je prikazan na sliki Orodna vrstica je konsistentna na vseh zaslonih in ponuja hiter dostop do najbolj uporabljanih aplikacij. Postavitev ikon temelji na študijah in analizah, ki narekujejo kar se da najbolj ergonomske in uporabniku prijazne postavitve. Uporabnik lahko posamezne aplikacije tudi organizira v mape in jih tako združi po lastni presoji. Z različico 5.0 je operacijski sistem dobil tudi t. i. Notification Center oziroma središče za obvestila, kjer lahko uporabnik na enem mestu spremlja vsa obvestila vseh aplikacij. Prav tako obveščanje uporabnika poteka preko zaponk (angl. badge) na ikonah aplikacije. Orodna vrstica je tudi ena redkih komponent, ki skozi vsa leta razvoja ni spremenila svojega dizajna ali namembnosti. 8

19 Slika : Domači zaslon ios 9 Večopravilnost se je v ios-u prvič pojavila leta Uporabniku omogoča hkratno navidezno poganjanje več aplikacij. Ob prehodu iz ene aplikacije v drugo se ohrani stanje aplikacije ob preklopu. Čeprav je v ozadju odprtih več aplikacij, pa trenutno neaktivne aplikacije ne zasedajo pomnilnika, procesorskega časa ali drugih sistemskih virov. Aplikacija ne teče v ozadju, ampak se zaustavijo vsi procesi, povezani z njo, sprostijo se viri in aplikacija čaka na ponovno aktivacijo. Vsaka aplikacija teče v svojem peskovniku, tako se izogne križanju virov in zagotavlja stabilno delovanje. V primeru sesutja aplikacije to ne vpliva na ostale procese, ki v tistem trenutku tečejo na napravi. Zaradi izredno dodelanega nitenja procesov tečejo aplikacije nemoteno tudi ob več zaporednih preklopih. Hkrati ios velja za pionirja na področju upravljanja pomnilnika, preprečevanja t. i. puščanja pomnilnika (angl. memory leaks) in lovljenja mrtvih, v žargonu izraženo zombie procesov. V zadnjih nekaj letih se je na področju funkcionalnosti upravljanja operacijskih sistemov premaknilo veliko mej. Ves čas pa je največji izziv predstavljalo prostoročno ravnanje z napravo. To nam na nek način omogočajo glasovni ukazi (angl. voice control). Z njimi lahko uporabnik hitro in preprosto pride do želenih informacij. Omogočajo pošiljanje kratkih SMS-sporočil, odpiranje spletnih strani, brskanje po vsebini naprave, objavljanje 9

20 na družbenih omrežjih, kot tudi odgovarjanje na preprosta vprašanja, recimo kakšna je vremenska napoved za prihajajoče dni. Glasovne ukaze opredeljuje vmesnik Siri. Ta umetna asistentka se je najprej pojavila v sedmi različici operacijskega sistema. Glasovni ukazi so na voljo v 20 jezikih in so dostopni na vseh novejših napravah ios, vključno z ipod Touch. Ker je zabava del življenja in danes način preživljanja prostega časa, nam ios ponuja tudi širok nabor iger, s katerimi se lahko zabavamo ali pa si popestrimo delovni dan. V ta namen obstaja središče za igre (angl. game center), kjer so v eno skupnost združeni vsi uporabniki naprav ios. Gre za nekakšno igralniško družbeno omrežje, kjer se seštevajo posameznikovi dosežki in se oblikujejo seznami najboljših. Hkrati omogoča tudi večigralnost. Preprosto povabite prijatelja in skupaj en proti drugemu odigrata set najljubše igre. 3 RAZVOJNO OKOLJE xcode Razvojno okolje xcode je lastno domorodno orodje podjetja Apple. Namenjeno je razvoju aplikacij tako za operacijski sistem ios kot za OS X, Watch OS in tvos. Ponuja širok nabor orodij, s katerimi lahko idejo pripeljemo do končnega izdelka. Poleg osnovnega IDE xcode ponuja še orodja Instruments, iphonesimulator in Interface Builder. Zraven sodi še kopica bolj ali manj uporabnih dodatkov, kot so File merge, Assemblency inspector, Application loader, Audio tool, Editors in ostali. Glavno izmed orodij je IDE xcode, v katerem potekata kodiranje in razvoj aplikacije. Vsa orodja skupaj pa sodijo v programski paket xcode, in sicer med orodja za razvijalce (angl. developer tools). Celoten paket je za uporabnike Macintoshevih naprav brezplačen in na voljo v Applovi spletni trgovini App Store. Plačljivo je le testiranje aplikacije na napravi (velja za ios), za kar potrebujemo Apple Developer Account [6]. xcode omogoča programiranje z dokaj širokim naborom programskih jezikov. Omogoča tako objektno usmerjeno programiranje kot klasično proceduralno programiranje. 10

21 Podpira sledeče programske jezike: Swift, Objektni C, Objektni C++, C++, Fortran, Ruby, Apple script in Python. Posebnost orodja je, da teče samo na operacijskem sistemu OS X, in sicer na računalnikih z Intelovo procesorsko arhitekturo. Za prevajanje izvorne kode uporablja prevajalnik GCC in GNU Debuger. Programiranje aplikacij za različne Applove platforme je podprto z uporabo prilagojenih SDK in ločenih programskih ogrodij. 3.1 Vmesnik xcode Središče vsega dogajanja v programskem paketu je xcode IDE (angl. integrated development environment) [7]. Gre za samostojni program, s katerim lahko implementiramo tako čelni (angl. frontend) kot tudi zaledni (angl. backend) razvoj aplikacije. Nudi zelo prijazen uporabniški vmesnik, ki uporabniku s svojo organizirano strukturo omogoča hiter in pregleden razvoj aplikacije. Najnovejše različice poleg standardnega prevajalnika uporabljajo tudi prevajalnik LLVM in razhroščevalnik LLDB. Gre za odprtokodni komponenti, ki bosta nadomestili starejši prevajalnik GNU GCC. Prevajalnik LMVV temelji na čebulni strukturi ima več plasti, kjer ima vsaka svojo nalogo. Oba skupaj omogočata realno časovno prevajanje izvorne kode. Z drugimi besedami, orodje nas obvesti o napaki v izvorni kodi še pred pogonom prevajalnika. Hkrati razhroščevalnik ponuja samopopravke, kot je prikazano na sliki Slika : Samopopravek ob napaki 11

22 Uporabniški vmesnik je razdeljen na tri dele. To so Assistant editor, Editor area in Navigation area. V Assistant editorju nastavljamo vrednosti uporabljenih objektov. Editor area je razvijalčevo glavno področje dela. Tukaj ureja programsko kodo, gradi uporabniški vmesnik in razhroščuje. Tako kot že samo po sebi pove ime, Navigation area omogoča pregled in navigacijo po projektu. Slika : Razvojno orodje xcode IDE (2016) 3.2 Orodje Instruments xcode IDE nam ponuja zelo bogato možnost razhroščevanja programske kode in spremljanje vrednosti spremenljivk v realnočasovnem modelu. Kljub močni razhroščevalni podpori pa ne omogoča spremljanja dejanske porabe sistemskih virov, obnašanja aplikacije v različnih situacijah, z različnim naborom podatkov in simuliranja nepričakovanih napak. V ta namen poleg orodja xcode IDE najdemo orodje Instruments, predstavljeno na sliki Gre za preprosto orodje, s katerim lahko spremljamo stanje aplikacije od začetka do konca izvajanja. Spremljamo in analiziramo lahko procese, ki se zgodijo ob neki uporabniški interakciji, kot je pritisk na gumb. Procese lahko analiziramo do te mere, da odkrijemo večje ali manjše napake, ki jih najverjetneje nikoli ne bi opazili. Tako lahko 12

23 zaznamo t. i. zombie procese, neracionalno porabljanje sistemskega pomnilnika, izvedemo analizo programske kode, preučimo omrežni promet, ki ga aplikacija izvaja, in preverimo zmogljivosti aplikacije. Z orodjem lahko celotno obnašanje aplikacije tudi posnamemo in kasneje ponovimo testiranje skozi identične korake. Poleg vsega naštetega pa programsko orodje Instruments pripomore k večjemu razumevanju programske kode in načina kako aplikacije deluje, kako v prednastavljenem načinu upravlja sistemske vire, puščanja pomnilnika in podobno. Slika : Orodje Instruments ob analizi aplikacije Nad aplikacijo lahko izvajamo tudi različne scenarije uporabe in s tem testiramo njena mejna območja delovanja. Ponazorimo lahko več tisoč klikov v sekundi ali pa recimo iskanje v poljih, ki lahko vsebujejo tudi več deset tisoč zapisov. Ob koncu testiranja program Instruments izpiše poročilo, iz katerega so s pomočjo grafov hitro razvidne šibke točke v programski kodi. 3.3 Orodje Interface builder Tretja pomembna komponenta nam ponuja možnost gradnje uporabniškega vmesnika. Uporabniški vmesnik gradimo na način»povleči in spusti«(angl. drag and drop). To zelo poenostavi čelni razvoj aplikacije, saj lahko vse prehode in povezave implementiramo 13

24 virtualno. Osnovni gradnik za gradnjo se imenuje pogled (angl. view) iz razreda UIView. Na podlagi tega sledijo vsi ostali razredi, katerih komponente uporabljamo v aplikaciji. Gradnja se izvaja v t. i. Storyboardu. Gre za dokaj novo komponento, saj je zgodnejše različice programskega paketa xcode še niso poznale. Pojavila se je šele v 5. različici in zelo poenostavila oblikovanje uporabniškega vmesnika. Ima že prednastavljene grafične komponente uporabniškega vmesnika, ki so oblikovane in imajo vnaprej implementirane različne metode, ki razvijalcu poenostavijo razvoj aplikacije [8]. Osnovne preddefinirane komponente so: View Controller, Table View Controller, Navigation Controller, Tab Bar Controller, Page View Controller in GLKit View Controller. Osnovne komponente nudijo zadostno podporo za razvoj tako preprostih kot zahtevnejših aplikacij. Komponente in njihove razrede lahko poljubno prilagajamo in nadgrajujemo. Pri tem uporabnik skorajda nima omejitev. Za razvoj stilsko bolj dovršenih aplikacij uporabimo lastna ogrodja (angl. framework) ter tako izdelamo lastne komponente in definiramo unikatne razrede, ki pa so lahko tudi podedovani iz osnovnih. Ustvarjenih je tudi že veliko knjižnic, ki so na spletu na voljo brezplačno. Storyboard sam poskrbi za velikost in postavitev komponent ter na splošno za gradnjo uporabniškega vmesnika. Tako se razvijalcu ni treba ukvarjati z vprašanjem, kako bo neka komponenta videti na manjšem zaslonu in kako bo vidna postavitev gradnikov ob rotiranju naprave. Hkrati lahko uporabnik sam definira pravila, ki se bodo upoštevala ob izpolnjenih pogojih. Napovemo lahko, kakšni bodo postavitev gradnikov, barva, celo jezik besedila na različnih napravah. Poleg vsega naštetega nudi tudi pregled nad strukturo celotne aplikacije in predogled, s katerim lahko brez prevajanja celotne aplikacije vidimo realno stanje uporabniškega vmesnika. Orodje Interface builder nam ponuja tudi možnost implementacije določenih dogodkov za posamezen grafični element. V nekaj minutah lahko ustvarimo prehode med posameznimi okni, interakcijo gumbov in ostalih gradnikov. 14

25 Za podrobnejše testiranje aplikacije programski paket xcode ponuja simulator ios. Gre za nekakšen emulator, s katerim lahko poganjamo aplikacijo skoraj enako kot na mobilni napravi iphone oziroma ipad. Za prenos in testiranje aplikacije na napravi pa potrebujemo Applovo razvijalno licenco (angl. apple developer account), ki je ob plačilu na voljo z enoletnim naročilom. Z njo poleg testiranja aplikacije na napravi dobimo tudi možnosti deljenja aplikacije v trgovini Apple App Store in njene prodaje. Certificiran razvijalec je upravičen tudi do beta različic operacijskega sistema ios še pred njegovim uradnim izidom [9]. 4 PROGRAMSKI JEZIK SWIFT Novost, ki jo je leta 2014 prinesel izid programskega paketa xcode različice 6.0, je programski jezik Swift [10]. Zaradi vse večje rasti t. i. third part aplikacij, razvitih za operacijski sistem Android, so pri podjetju Apple želeli pospešiti produkcijo aplikacij za lastni operacijski sistem. Tako so na trg poslali povsem nov programski jezik, s katerim so predvsem poenostavili kodiranje in tako omogočili hitrejše učenje in posledično tudi razvoj aplikacij. Poleg tega je programski jezik Swift v primerjavi z ostalimi preprost za učenje, saj so za njegovo osnovo vzeli prednosti programskih jezikov, ki so med razvijalci zelo priljubljeni. Swift je v bistvu skupek dobrih lastnosti programskih jezikov C++, Objektni- C, C#, Ruby, Rust, Haskell in zaradi svoje preproste sintakse izjemno priljubljenega Pythona. Primarno je bil namenjen kodiranju aplikacij za Applove operacijske sisteme ios in OS X. S prihodom novejših različic pa tudi za Watch OS in tvos. Danes ga mnoga podjetja uporabljajo za izdelavo programskih aplikacij, ki tečejo na strežniških računalnikih, kot tudi podjetja, ki se ukvarjajo s telekomunikacijami, saj nudi hitro in preprosto kodiranje tudi najzahtevnejših algoritmov [11]. V osnovi gre za popolnoma brezplačen in objektno usmerjen programski jezik, ki temelji na Phytonu. Prevajamo ga s prevajalnikom LLVM. Tako uporabljamo kot tudi prevajamo ga lahko tudi na distribucijah Linux. Z decembrom 2015 je podjetje Apple Swift izpustilo iz svojih okov in ga ponudilo na trgu kot odprtokodni programski jezik. Njegovo izvorno 15

26 kodo lahko najdemo na portalu GitHUB. Za razvoj in nadzor nad različicami pa skrbi skupnost Swift.org. S tem korakom je Apple še povečal hitrost razvoja jezika, kot tudi pritegnil nove ljudi. Hkrati je s tem jeziku omogočil neomejen razvoj in brezčasno življenjsko dobo. Za razliko od jezika Objektni-C ali C# je Swift v stalnem razvoju. Vsako leto ali dve je na voljo nova, posodobljena različica jezika. Navadno se novosti odražajo v preglednejši kodi, boljši sintaksi, novih metodah in podobno. Velika posebnost jezika je tudi, da na koncu sintakse ne uporablja podpičij. Za prehod s predhodnih na novejše različice jezika je v sklopu programskega paketa xcode na voljo program Swift Migrant Asisstant. Težava je le, če uporabljamo zunanje knjižnice, ki jih ni avtoriziralo podjetje Apple. Tabela 4.1: Različice programskega jezika Swift Avgust 2014 Oktober 2014 April 2015 September 2015 Oktober 2015 Marec 2016 September 2016 Swift 1.0 Swift 1.1 Swift 1.2 Swift 2.0 Swift 2.1 Swift 2.2 Swift 3.0 Swift nam omogoča tudi vključitev širšega nabora knjižnic. Na spletu je na voljo prek knjižnic. Vključujemo jih preprosto preko ukazne vrstice s pomočjo aplikacijskega upravljalnika CocoaPods. Gre za t. i. third part aplikacijo, ki integrira knjižnice v projekt [12]. 5 PROJEKTNO VODENJE V poglavju sem se omejil predvsem na analizo obstoječih programskih rešitev projektnega vodenja. Obravnaval sem več pisarniških orodij in mobilnih aplikacij, iz katerih sem povzel njihove prednosti in slabosti. Vse aplikacije ne ponujajo enakih možnosti, hkrati pa ima vsak program svoj pristop k celovitosti reševanja problema. V uvodu sem že omenil, da je bilo na tem področju do danes razvitih že veliko računalniških programov. Nekaj manj aplikacij, ki rešujejo problem razporejanja dela in ravnanja s človeškimi viri, pa je namenjenih pametnim telefonom in tablicam. Microsoft, podjetje, ki velja za paradnega 16

27 konja pri razvoju pisarniških programov, na tem področju ponuja dva programa. Starejši Microsoft Project in mlajši, še dokaj nerazširjen program Microsoft Planner [13]. Oba izhajata iz paketa programske opreme Office. Odlikujeta ju preprosta uporaba in stilsko izredno dovršen uporabniški vmesnik. Oba ponujata tudi različico za pametne telefone in tablice ter podpirata delo v oblaku. Njuna slabost je, da sta na voljo za denarno nadomestilo, kar mnoge posameznike odvrne od njune uporabe. Hkrati ponujata ogromno funkcij, med katerimi se nevešč uporabnik kaj hitro izgubi in program postane zanj nezanimiv, saj se izrazi kot preveč kompleksen. Slika 5.17: Programski paket Microsoft Project Zadnji trendi so širjenje računalništva v oblaku. Torej na spletu uporabljamo kar spletne strani, ki se predstavijo kot aplikacija oziroma računalniški progam v malem. Takšnim aplikacijam pravimo tudi debeli odjemalci. Ti večino dela opravijo na uporabnikovi strani, torej v brskalniku, na strežnik pa samo pošiljajo in shranjujejo podatke. Tukaj najdemo veliko brezplačnih programov. To so Harvest, Zoho Projects, Trello. Skupna imenovalca vseh naštetih sta oblačna aplikacija in brezplačna uporaba. V večini primerov pa takšne aplikacije ne ponujajo enakih funkcionalnosti kot namizne in ob večji količini podatkov postanejo neuporabne. Velikokrat za referenčno aplikacijo izberemo Microsoftove produkte, saj so bili ti eni prvih na trgu in ponujajo širok nabor funkcij, ki so zapakirane v ličen uporabniški vmesnik. Tako je slabost aplikacij v oblaku, da navadno ponujajo le 17

28 najbolj obljudene funkcionalnosti, ostalih pa ne. Kljub temu so izredno priljubljene, saj so zaradi delovanja v brskalniku platformno neodvisne in ob vse večji pokritosti z internetnim omrežjem dostopne praktično povsod. Na trgu aplikacij za pametne telefone in tablične računalnike je stanje nekoliko drugačno. Če se odpravimo po nakupih v Googlovo trgovino Google Play, bomo iz nje odšli tako rekoč praznih rok. Sicer obstaja kar nekaj produktov, vendar so aplikacije funkcionalno zelo omejene ali pa ponujajo preprosto preveč in na majhnih napravah postanejo neuporabne. Podobna zgodba se odvija tudi v Applovi trgovini App Store, kjer je možnosti zaradi Applovih strogih pogojev poslovanja še manj. Omenil bi le aplikacijo Trello, ki je mobilna različica aplikacije, ki teče v oblaku, in je najbližje temu, kar naj bi orodje za vodenje projektov in ravnanje s človeškimi viri ponujalo. Na podlagi analize stanja na trgu sem ugotovil, da kljub pregovorno ogromno aplikacij teh le ni tako veliko. Obstaja nekaj aplikacij, in ko sem izmed njih izluščil tiste najboljše, sem ugotovil, da obstaja le nekaj zares uporabnih aplikacij. Aplikacije, kot so Trello, Basecamp, Asana in Casual, ponujajo veliko različnih funkcionalnosti. Večina aplikacij je plačljiva. Večini je skupno, da omogočajo dodajanje projektov in opravil, pripenjanje zaposlenih k opravilu in nadzor nad stanjem projekta. Basecamp ponuja tudi časovnico, na katero lahko v načinu povleči in spusti ustvarjamo projekte in dodajamo opravila. Trello poleg aktualnih opravil prikazuje tudi zapadle obveznosti in pretekle komentarje zaposlenih. Orodje Casual problem rešuje zelo izvirno, in sicer z uporabo diagrama poteka, kar ga loči od ostalih, ki večinoma uporabljajo klasični prikaz seznamov. Vendar pa diagram poteka postane nepregleden ob večji količini podatkov. Asana se od vseh razlikuje v tem, da omogoča ustvarjanje ekip (teamov) in opravil, ki se jim dodelijo. Ne podpira pa ustvarjanja projektov. Vse zgoraj naštete aplikacije ponujajo tudi spletno aplikacijo, s katero lahko projekte upravljamo tudi na osebnem računalniku. Kljub temu so po mojem mnenju te aplikacije preprosto prepolne. Ponujajo preveč funkcionalnosti, zaradi katerih se uporabnik izgubi. Tako ne obstaja aplikacija, ki uporabniku omogoča v nekaj korakih ustvariti projekt, določiti opravila, dodeliti osebe in spremljati stanje projekta. Aplikacije zahtevajo preveč podatkov, ki v končni fazi tudi niso tako zelo pomembne pri uspešni izvedbi projekta. Uporabniški vmesniki so prenatrpani in povprečen uporabnik ni zmožen na prvi pogled oceniti trenutnega stanja projekta. Večina takšnih aplikacij tudi izhaja iz nekakšnih opomnikov za opravila (t. i. to do list). Tako na 18

29 koncu dobimo produkt, ki spominja bolj na nakupovalni seznam kot na aplikacijo, s katero bomo svoje podjetje pripeljali na vrh ali ga vsaj dobro organizirali. Tako moja aplikacija temelji na ideji, da združim slabosti zgoraj naštetih produktov in jih uporabim v svojo korist. Zadal sem si nalogo izdelati aplikacijo, ki bo nudila preprost, uporaben, predvsem pa pregleden uporabniški vmesnik, iz katerega bo lahko uporabnik preprosto odčital stanje projekta in naloge, ki so mu dodeljene. Produkt ne sme biti preveč obsežen, torej sme ponujati samo najosnovnejše funkcionalnosti, ki so potrebne, saj je že teh veliko. Delovati mora hitro in varčevati tako s sistemskimi kot ostalimi viri. Hkrati pa ne sme dajati vtisa nakupovalnega seznama. 5.1 Izbrane funkcionalnosti Skupna lastnost vseh analiziranih aplikacij je objekt, ki ga sestavljajo relacijsko povezani gradniki. Zraven sodi še subjekt, ki dani objekt upravlja oziroma poskrbi za izvajanje posameznih gradnikov. Vse tri komponente vsebujejo tudi metapodatke, ki jih opisujejo (naslov, datum, opis). V mojem primeru objekt predstavlja projekt, medtem ko za gradnike veljajo različna opravila, ki se mu pripisujejo. Opravila izvaja oseba zaposleni, torej t. i. subjekt. Oseba lahko pripada različnim uporabniškim ravnem oziroma vlogam. S tem se ji omejijo pravice oziroma funkcionalnosti v aplikaciji. Tako kot subjekt tudi projekt sodi v različne kategorije, vendar je tukaj situacija nekoliko preprostejša. Namreč, projekt ali opravilo lahko kategoriziramo samo kot aktivno oziroma zaključeno, s tem določimo status objekta oziroma gradnika. Osebe pa lahko razvrstimo v več uporabniških skupin glede na to, iz katere organizacijske enote izvirajo in pri katerih projektih sodelujejo. Na podlagi takšne klasifikacije uporabnikov so izdelani različni uporabniški pogledi. Objekte, gradnike in subjekte miselnega vzorca projektnega vodenja relacijsko prikazuje slika Na isti filozofiji»projekt-opravilo-oseba«temelji tudi moja aplikacija, ki sem jo izdelal v sklopu tega dela in je podrobneje predstavljena v nadaljevanju. 19

30 Slika : Shematski prikaz izbranih funkcionalnosti 6 IZDELAVA APLIKACIJE Praktični postopek oziroma izdelavo aplikacije sem razdelil na sklopa zalednega (angl. backend) in čelnega (angl. frontend) razvoja. V zalednem delu poleg razvoja algoritma in programske kode načrtujem tudi implementacijo podatkovnega modela, medtem ko čelni razvoj pokriva implementacijo grafičnega uporabniškega vmesnika. Podatki, s katerimi produkt med delovanjem operira, se hranijo v podatkovni bazi, ki je od aplikacije ločena. Programska koda je jedro ali bolje rečeno pamet celotne storitve. Tukaj so definirani vsi procesi in dogodki. Uporabniški vmesnik je tisti del aplikacije, s katerim uporabnik najprej stopi v stik ter definira postavitev in funkcionalnost objektov. Hkrati se odraža tudi kot zunanji obraz aplikacije [14]. 20

31 6.1 Podatkovni model Za hranjenje podatkov o projektih, opravilih in osebah sem uporabil podatkovno bazo MySQL. V testnem obdobju je bila to lokalna podatkovna baza na lokalnem strežniku (t. i. localhost) Apache. V nadaljevanju sem podatkovno bazo prenesel na podatkovne strežnike podjetja, saj so za dostop do podatkov zahtevani posebni varnostni protokoli. Aplikacija se v poslovnem okolju na podatkovno bazo poveže preko vmesnika Citrix. Temelji na spominskem stroju (angl. InnoDB), ki omogoča relacijsko povezovanje entitet po tujem ključu. V grobem podatkovno bazo oziroma podatkovni model sestavlja šest entitet, ki so med seboj povezane v relacijah ena proti mnogo in po dve relaciji ena proti ena. Zaradi več mnogo proti mnogo relacij sem ustvaril tudi vmesne entitete in jih s procesom normalizacije pripeljal do želene ravni. Entitete se identificirajo po primarnem in tujem ključu. Seznam entitet, ki sestavljajo podatkovno bazo: Project, Task, Person, Squad, Rank in ProjectPersonTask. Zaradi potreb po konsistentnosti podatkovne baze sem vpeljal določena pravila poimenovanja entitet in atributov. Vse entitete in atributi so zaradi lažjega dela poimenovani v angleškem jeziku in z majhno začetnico. Tako atribut, ki označuje primarni ključ, vedno začnem z»id«in nadaljujem z imenom entitete, ki jo zapišem z veliko začetnico (primer idproject). Tuji ključ oziroma atribut, za katerim stoji, vedno začnem z»fk«in prav tako nadaljujem z imenom entitete, na katero kaže (primer fktask). Ostale atribute zapisujem s poljubnim poimenovanjem in strogo z majhno začetnico. Če atribut zaznamujeta dve besedi, sem ju zapisal skupaj in drugo besedo z veliko začetnico (primer datestart). V tistih entitetah, kjer se tematika atributov ponavlja, sem uporabil enaka poimenovanja. Tako sem s preprostimi pravili zagotovil, da je podatkovna baza strukturirana, konsistentna, hitro razumljiva, lahko razširljiva in prenosljiva. 21

32 Slika : Relacijska shema (ER-diagram) podatkovne baze Podatkovno bazo sem si zamislil s tremi glavnimi, eno povezovalno in dvema t. i. pomožnima entitetama. Glavne (angl. major) entitete so Projekt, Opravilo in Oseba. Kot že ime pove, entiteta Projekt (angl. project) hrani vse podatke o projektih naslov projekta, odgovorno osebo oziroma nosilca projekta, začetni datum in končni rok ter opombe. Atribut status opisuje, ali je projekt še aktiven, medtem ko barva hrani izbrano barvo projekta. Izvedena je tudi relacija preko tujih ključev na entitetah Oseba in ProjektOsebaOpravilo. Tabela Opravilo (angl. task) je po strukturi in poimenovanju zelo podobna tabeli Projekt, saj sta opravilo in projekt nekako sorodni temi. V entiteti Oseba (angl. person) hranim podatke o zaposlenih. Skupaj z entitetama Naziv (angl. rank) in Enota (angl. squad) tako hranim vse potrebne podatke o zaposleni osebi. Zelo pomembna entiteta, če ne tudi najpomembnejša, je tabela ProjektOsebaOpravilo (angl. ProjectPersonTask). Gre za entiteto, v kateri se združijo vse lastnosti in relacije posameznih zapisov preostalih entitet. Vsebuje primarni ključ in tri tuje ključe. Vsak tuji ključ predstavlja eno izmed entitet Projekt, Opravilo, Oseba. Zamislil sem si jo zato, da lahko na hitro in preprosto pridem do poizvedb, katere osebe izvajajo katera opravila in na 22

33 katerih projektih ter koliko oseb dela na določenem projektu, kot tudi koliko opravil projekt dejansko ima. Z vključitvijo stavka JOIN sem pridobil še ostale ključne poizvedbe, na primer vse osebe, ki pripadajo trenutnemu projektu, vključno z njihovimi podatki in podatki o projektu. Entiteta projekt vsebuje še atributa status in barva (angl. color), medtem ko tabela opravilo poleg enakih dveh vsebuje tudi atribut prestatus. Barva je predvsem za potrebe grafičnega oblikovanja in prikaza, medtem ko status in prestatus definirata status projekta ali opravila. Sprejmeta vrednost nič ali in, pri čemer nič pomeni, da projekt oziroma opravilo ni več aktivno. Vrednost ena pa pove, da je projekt oziroma opravilo še vedno aktualno. Vrednost atributa prestatus določi raven zaposlenega v oddelku. Na podlagi tega dobi nadrejeni obvestilo, da lahko zaključi projekt, torej spremeni vrednost atributa status iz ena v nič. Slika : Entitete Opravilo, Projekt in Projekt-Oseba-Opravilo Prenos podatkov Povezavo in prenos podatkov med mobilno aplikacijo in podatkovno bazo sem implementiral po smernicah storitve REST [15]. Skripta PHP na podlagi zahteve iz podatkovne baze po protokolu AJAX vrne podatek. Mobilna naprava odda zahtevo HTTP na strežnik. Na strežniku teče skripta PHP, v kateri so zapisane metode za poizvedbe. Strežnik iz parametrov, podanih v zahtevi, izbere zahtevano metodo. V mojem primeru je to izpis podatkov iz podatkovne baze ali vnos podatkov v podatkovno bazo. Metoda izvede operacijo in podatke zapakira v niz formata JSON. Tako zapakirane posreduje nazaj aplikaciji. Arhitektura spletne storitve REST je prikazana na sliki

34 Slika : Način komunikacije med aplikacijo in podatkovno bazo Na spletnem strežniku tečeta dve skripti, in sicer getdb.php in insertdb.php. Kot že končnica pove, sta obe napisani v programskem jeziku PHP. Obe dobita podatke preko parametrov, podanih v naslovu URL ob pošiljanju zahteve na strežnik. V prvem primeru je to preko metode GET, v drugem, kjer vnašam podatke v podatkovno bazo, pa preko metode POST. Vsak naslov URL vsebuje tudi ključni parameter, to je option. Na podlagi številčne vrednosti v parametru skripta ve, katero metodo poklicati za izvedbo operacije. Navadno parametru option sledijo še ostali parametri, kot so idproject, idtask ali več parametrov, kar se pojavi v primeru klica skripte insertdb.php, kjer pošiljamo podatke za vnos v podatkovno bazo [16]. Izvorna koda : Swift, zahteva za vnos podatkov v podatkovno bazo V interakciji s podatkovno bazo izvajam dve glavni poizvedbi, in sicer prenos podatkov iz podatkovne baze (SELECT) in vnos podatkov v podatkovno bazo (INSERT, UPDATE). Poleg operacij pridobitve in vnosa podatkov sem uporabil tudi operacijo brisanja (DELETE). Ta je posebna, saj se ne izvede samo s klasičnim stavkom SQL DELETE, ampak se izvede v več korakih. V operaciji brisanja sta tako zajeti tudi operaciji pridobitve 24

35 in vnosa podatkov. Izbris projekta iz podatkovne baze poteka po sledečem vrstnem redu. Naprej izbrišem podatke iz relacijskih entitet po pravilu tiste z največ tujimi ključi najprej. Zapis v entiteti ProjectPersonTask je na vrsti prvi, sledi entiteta Task in nato kot zadnja še entiteta Project. Pred izbrisom zapisa v entiteti opravilo in projekt iz njiju poizvem identifikator opravila in identifikator projekta, ki ju bom v naslednjem koraku izbrisal. Potrebujem ju za ponastavitev samodejnega povečevanja identifikatorjev (angl. auto increment), ki ga uporabljam v entitetah. Operacijo izvede ukaz ALTER TABLE imeentitete AUTO_INCREMENT = vrednost. Ta korak je nujen, saj se v nasprotnem primeru poruši sistem dodajanja opravil, ki predvideva identifikator naslednjega opravila po sistemu identifikator predhodnega opravila Programska koda in uporabniški vmesnik V programskem delu zaledne storitve so zapisani algoritmi, ki predstavljajo jedro in s tem vso logiko aplikacije. Tukaj so tudi definirani vsi razredi, knjižnice in programska ogrodja, s katerimi aplikacija operira. V testnem scenariju sem aplikacijo predvidel v sektorju ITfarmacevtskega podjetja. V podjetju je več zaposlenih, ki se med seboj razlikujejo po statusu v podjetju. Tako zaposleni v oddelku nima enakih ali celo večjih pravic kot vodja oddelka in tako naprej. Oseba z največ pravicami je vodja službe. Sledi mu vodja oddelka, ki mu pripadajo zaposleni v oddelku. Hierarhijo izbrane organizacijske strukture prikazuje slika Slika : Primer organizacijske strukture IT-sektorja Na podlagi tega sem pripravil tri uporabniške poglede. Uporabniška pogleda vodja službe in vodje oddelka si delita skupna okna (t. i. View Controllers). Realizacija različnih ravni je izvedena s kontrolno spremenljivko iscio, ki vsebuje vrednost ena ali nič. V primeru 25

36 vrednosti ena gre za vodjo službe in temu primerno se tudi prikažejo oziroma skrijejo grafične komponente. Uporabniška raven zaposlenega v oddelku ima zaradi svojih specifičnih omejitev samostojna okna. Posebnost aplikacije je, da oseba z določene ravni komunicira samo z osebami, ki so za eno raven višje ali nižje od nje. Tako vodja službe ne more neposredno dodeljevati opravil zaposlenim v oddelku, ampak jih lahko dodeli le neposredno podrejenemu, v tem primeru je to vodja oddelka. Komunikacija dodeljevanja opravil poteka samo po hierarhiji navzdol. Torej vodja oddelka ne more dodeliti nalog svojim nadrejenim. V obratni smeri poteka samo obveščanje o stanju projekta. Zaposleni v oddelku ima dostop samo do opravil, ki so mu bila dodeljena, in projektov, za katere je zadolžen. Ne more ustvariti projekta ali dodeliti opravila ostalim zaposlenim v oddelku. To lahko stori le vodja oddelka. Prav tako vodja oddelka v svojem pogledu vidi samo projekte, pri katerih sodeluje, in lahko dodeljuje opravila le svojim podrejenim. Torej osebam, ki so v njegovem oddelku. Vodja službe ima podobna pooblastila kot vodja oddelka, le da lahko svoje zahteve delegira le do svojih oddelkov. Kot vodjo projekta se samodejno dodeli osebo, ki je projekt ustvarila, ta pa nato naloge dodeljuje naprej med zaposlene v oddelku. Slika : Tok podatkov v izbrani organizacijski sturkturi S takšno zamislijo aplikacije sem zagotovil dober pregled nad stanjem projektov in razporeditvijo opravil. Ker vsak uporabnik dostopa le do informacij, ki so ključne za njegovo delovanje, se elegantno izognem preusmeritvi pozornosti zaposlenega od trenutne problematike in prenasičenosti z nepotrebnimi informacijami. 26

37 Programsko kodo sem predvidel v strukturirani obliki, kar v praksi pomeni, da sta shema razredov in način poimenovanja spremenljivk konsistentna skozi celotno aplikacijo. Vsak razred se začne s spremenljivkami in seznami, ki jim sledijo inicializacije gumbov, label in ostalih grafičnih komponent. Temu sledi podedovana metoda viewdidload, v katero zapišem ukaze, ki se bodo zgodili po inicializaciji okna. Po potrebi metodi sledijo še ostale metode, ki definirajo dogodke ob odprtju ali zaprtju okna. Sledi segment kode, kjer so metode za delo s podatkovno bazo. Če ima pogled še ostale grafične gradnike, recimo tabele ali iskalno vrstico, so ti definirani v nadaljevanju kode. Na koncu vedno sledi metoda, ki ob majhni količini prostega pomnilnika le-tega sprosti. Kot pri podatkovni bazi sem se tudi v programski kodi držal pravila natančnega poimenovanja spremenljivk. Spremenljivke so poimenovane tako, da lahko iz njihovega imena razberem pomen. Zapisane so izključno v angleškem jeziku in z majhnimi začetnicami. Če spremenljivko sestavljata dve besedi, sta zapisani skupaj in druga beseda z veliko začetnico (primer idpersonowner). Implementiral sem štiri razrede, ki pa jih uporabljam kot strukture za shranjevanje podatkov. To so Project, Person, Task in pomožni razred PersonTask. Za moje potrebe so zadostovali le konstruktorji. Tako kot pri večini objektno usmerjenih programskih jezikov tudi tukaj do spremenljivk razreda dostopamo preko operatorja pika. V projekt sem vključil tudi knjižnico SwiftyJSON in programskim ogrodjem DatePicker. Knjižnica SwiftyJSON se uporablja za delo z nizi JSON. Vsebuje metode za zapis podatkov v niz JSON ali branje in izluščevanje podatkov iz niza JSON. Framework DatePicker sem uporabil manj iz potrebe in bolj zaradi želje, da v diplomskem delu predstavim, kako se takšne komponente uporablja in katere prednosti imajo. Sam jo uporabljam za izbiro datuma začetka in konca projekta oziroma opravila. Posebnost je, da se ob kliku na datum izbirnik pokaže v trenutnem (t. i. popupview) in ne v samostojnem oknu. Tako knjižnica kot programsko ogrodje sta odprtokodna in prostolicenčna na voljo na portalu GitHUB. Sicer ima vsak pogled (view controller) svoj razred, ki je podedovan iz razreda UIViewController. Znotraj vsakega razreda sem vključil tudi knjižnici UIKit in CoreData. Slednja omogoča delo z lokalno podatkovno bazo, ki se nahaja na napravi in hrani podatke le za čas delovanja aplikacije. Poleg programske kode, ki tvori hrbtenico aplikacije, pa se hkrati pojavlja še uporabniški vmesnik. Njegov razvoj se neposredno prepleta z razvojem programske kode in je 27

38 praktično nepogrešljiv del mobilne aplikacije. Grafični uporabniški vmesnik (GUI) je sestavljen iz več komponent, poimenovanih objekti. Vse komponente opisuje programsko ogrodje UIKit. UIKit zagotavlja infrastrukturo in načine, kako komponente uporabiti v aplikacijah, ki so napisane za operacijska sistema ios in tvos. Poleg preddefiniranih grafičnih komponent opisuje tudi dogodke, ki se zgodijo ob kliku, animiran prikaz komponent, uporabo kamere in nekaterih senzorjev, ki jih ima naprava, definira tako lokalna kot oddaljena opozorila in dogodke izreži, kopiraj in prilepi. Vse funkcionalnosti in objekti so opisani v obliki razredov. V programskem ogrodju UIKit je opisano vse, kar potrebujemo za osnovno izdelavo grafičnega vmesnika. Komponente v grobem delimo na poglede in kontrole. Naloga prvih je omogočiti prikaz podatkov in komponent v uporabniškem vmesniku, medtem ko kontrole navadno definirajo interaktivne segmente in vključujejo dogodek (angl. evet). Uporabniški vmesnik gradimo v pomožnem orodju Interface Builder, ki deluje v sklopu razvojnega orodja xcode. Videz aplikacije poleg funkcionalnosti predstavlja eno ključnih komponent pri odločitvi uporabnika, ali bo aplikacijo uporabljal. Zato sem uporabniški vmesnik optimiziral in sledil filozofiji preprostosti in čistih barvnih kombinacij. Veliko vlogo pri tem imajo ikone, ki uporabnika usmerjajo in posredujejo informacije ne glede na uporabnikovo poznavanje jezika. Aplikacija je zgrajena iz treh temeljnih pogledov, ki z različnimi konfiguracijami tvorijo tudi ostale poglede. Za strukturiran prikaz in možnost prehoda v želene poglede ne glede na to, kje se trenutno v aplikaciji nahajamo, sem uporabil zavihke (angl. tab bar). Deklarirani so v razredu UITabBarView in sestavljeni iz t. i. itemov. Item oziroma enoto opisuje razred UITabBarItem. V aplikaciji so na voljo zavihki projekt, opravilo in osebe. Za uporabniku prijaznejši prikaz sem vključil tudi ikone, ki so skozi celotno aplikacijo konsistentne. TabBarView se dopolnjuje s komponento Navigation Bar, ki implementira vračanje v predhodni pogled. Skupaj ti dve komponenti tvorita celostno usmerjanje po aplikaciji. Slika : Vrstica zavihkov 28

39 Tako se struktura v večji meri ponavlja oziroma deduje. S tem sem pohitril razvoj in zmanjšal velikost končne aplikacije, kot tudi njene sistemske zahteve. Kot sem že omenil, je funkcionalnost aplikacije omejena glede na pooblastila uporabnika, ki je trenutno prijavljen. V testnem scenariju sem predvidel tri osnovne vloge oziroma uporabniške ravni. To so vodja službe, vodja oddelka in zaposleni v oddelku Vodja službe Vodja službe ima v aplikaciji pregled nad vsem, kar se dogaja znotraj okvirov službe. Ker vodi in posledično odgovarja za več oddelkov, ima dostop do vseh projektov in opravil, ki jih izvajajo oddelki znotraj službe. Prav tako ima dostop do vseh zaposlenih v službi. Gre za upravniško raven z daleč največ pravicami, saj ima pregled nad vsem in možnost opravljanja vseh interakcij. Ustvari lahko nov projekt, projektu doda opravila in jih dodeli zaposlenim. Vodja službe lahko tudi zaključi projekt ali opravilo in reorganizira tekoče projekte. Kljub vlogi z največ pooblastili sledi filozofiji aplikacije in lahko ustvarjen projekt ali opravilo dodeli le med neposredno podrejene uporabnike. V tem primeru so to vodje oddelkov Vodja oddelka Podobno kot vodja službe ima tudi vodja oddelka pregled nad vsem, a z omejitvijo, da vidi le stvari, ki se nanašajo na njegov oddelek. Tako lahko vpliva le na projekte in zaposlene, ki so mu neposredno podrejeni. Ima pravico ustvariti projekt in opravila. Osebe, ki nastopajo v njegovem oddelku, lahko dodeli želenim opravilom. Prav tako lahko zaključi opravilo ali projekt. Po prijavi se opre nov pogled, ki temelji na tabviewcontrollerju. Ta omogoča uporabo zavihkov. V vrstici zavihkov ima na voljo tri zavihke, in sicer opravilo, projekt in oseba. 29

40 Slika : Zavihek opravilo in prikaz podrobnosti opravila V zavihku opravilo (angl. task) je implementiran pregled nad vsemi trenutno aktivnimi opravili v oddelku. Izpisani in združeni so glede na projekt. Izbira lahko med opravili, ki so mu dodeljena v izvedbo, ali opravili, ki so jih v izvedbo od njega dobili ostali zaposleni. Ob naslovu projekta lahko uporabnik s seznama izve še, kdo je vodja projekta in datum roka izvedbe opravila. To prikazuje slika Rdeča oznaka ob opravilu ponazarja, da je opravilo opravljeno in ga odgovorna oseba lahko zaključi. S klikom na opravilo se odpre nov pogled, kjer uporabnik dobi vse potrebne informacije o določenem opravilu in opravilo tudi zaključi. Namen zavihka opravilo je samo pregled nad opravili, zato ne omogoča urejanja ali dodajanja novih opravil. Za povratek na predhodni pogled sem uporabil razred navigationviewcontroller, ki omogoča vračanje po pogledih. 30

41 Slika : Zavihek projekt in prikaz podrobnosti projekta Zavihek projekt (angl. project) je mlajši brat zavihka opravilo. Idejno sta si zelo podobna, s tem da uporabnik v zavihku projekt vidi samo projekte, za katere je zadolžen. Tukaj je tudi možnost dodajanja novega projekta. Ob vsakem novem projektu uporabnik izbere tudi njegovo barvo in doda opravila, ki mu sledijo. Postavi lahko tudi časovno omejitev projekta in doda kratke zapiske. S klikom na projekt se podobno kot pri zavihku opravilo odpre podroben pregled projekta, kjer lahko uporabnik doda nova opravila. Ob dodajanju opravil velja pogoj, da uporabnik ne more dodati novega opravila, če ga ob tem ni dodelil nobenemu izmed zaposlenih. Tako se izognem t. i. zombie opravilom, ki nimajo zadolženih oseb in posledično tvorijo nakupovalni seznam. V nadaljnjem podrobnem pregledu projekta lahko uporabnik še preveri število in stanje opravil, katere osebe so zadolžene za izvedbo določenih opravil in po želji prerazporedi človeške vire. Vsak vodja potrebuje podatke o svojih podrejenih, zato je na voljo seznam zaposlenih v podjetju. Implementiral sem ga v zavihku oseba (angl. person). Poleg osnovnih podatkov vodja prejme tudi informacijo o nazivu zaposlenega in delovnem mestu. Ob kliku na zaposlenega se podrobno prikažejo vse potrebne informacije o zaposlenem. Tako kot zavihek opravilo je tudi ta namenjen samo pregledu nad stanjem in ne omogoča 31

42 spreminjanja stanja. Prav tako ne omogoča dodajanja novih oseb, saj je v scenariju aplikacije predvideno, da aplikacija jemlje nabor oseb iz internega imenika podjetja. Podobne interakcije sledijo tudi na uporabniški ravni vodja služba. Razlika je samo v dejanskih podatkih, ki se prikazujejo. Implementacijo prikaza oseb opisuje slika Slika : Zavihek Oseba Zaposleni Ker je primarna naloga zaposlenega izvajanje dodeljenih delovnih nalog in ne organizacija dela, so temu primerno prilagojene tudi uporabniške pravice. Gre za raven z najmanj pooblastili v celotni hierarhiji. Ta nima nobene pravice dodajanja projektov in opravil ali spreminjanja že obstoječih. Sicer ne more dokončno zaključiti projekta, lahko pa ga odda v zaključek, vendar more to potrditi še vodja oddelka. Kar pomeni, da nadrejeni, v tem primeru vodja oddelka, dobi obvestilo, da je opravilo opravljeno in pripravljeno za zaključek. Na voljo ima pregled nad projekti, na katerih dela, in opravili, za katera je zadolžen. V sklopu projekta in opravil vidi vse podatke, ki jih projekt ali opravilo vsebuje. Uporabniške pravice glede na raven dostopa pregledneje opisuje tabela

43 Tabela : Ravni dostopa po vlogah Vodja službe Vodja oddelka Zaposleni v oddelku Globalni pregled projektov X Globalni pregled opravil X Globalni pregled zaposlenih X Pregled nad projekti v oddelku X X Pregled nad opravili v oddelku X X Pregled nad zaposlenimi v oddelku X X X Ustvarjanje novega projekta X X Ustvarjanje novega opravila X X Dodelitev oseb k opravilu X X Pregled projektov X X X Pregled opravil X X X Zaključek opravila X X Zaključek projekta X X Predlog za zaključek opravila X Predlog za zaključek projekta X 33

44 6.2.4 Pogledi Slika : Prijavno okno Uporabnik ima prvi stik z aplikacijo v pogledu loginview. Tukaj se prijavi s svojim uporabniškim imenom in geslom. Ob prijavi aplikacija iz podatkovne baze pridobi identifikator uporabnika (id) in njegov naziv (angl. rank). Nato identifikator shrani v lokalno podatkovno bazo, t. i. CoreData. Identifikator uporabnika je skozi celotno aplikacijo ključen podatek, saj na podlagi tega prilagajam poizvedbe v podatkovni bazi. Na podlagi uporabnikovega naziva aplikacija ustvari nadaljnje poglede in onemogoča funkcije, do katerih uporabnik glede na raven ne sme dostopati. Okno oziroma pogled je osnovna komponenta grafičnega vmesnika. Definirana je v razredu UIView, ki je del programskega ogrodja UIKit. Je temelj, na katerem z dodajanjem ostalih grafičnih komponent gradimo uporabniški vmesnik. Gradnja se odvija po načelu čebulne strukture. Vsaka nova komponenta predstavlja svojo plast na pogledu. Hkrati gradimo tudi hierarhijo komponent, saj imajo različne komponente različen vpliv oziroma težo na pogled. Na pogledu prilagajamo vsebino, obnašanje in prikaz komponent ter pogleda. Vse to določamo v sekciji Attributes Inspector. Kljub temu tukaj niso na voljo vse konfiguracije, zato jim moramo nastaviti programsko kodo v izvorni kodi. V razredu UIView priredimo vsebino, obnašanje in prikaz pogleda. Gre za tri značilnosti, ki opisujejo videz aplikacije. 34

45 Vsebina pogleda določa fizični videz. Postavitev gradnikov, redeklaracija, velikost objektov ob različnih velikostih zaslonov in podobno. Tako objekt, namesto da bi ga vedno znova ustvarili, samo primerno skaliramo in sidriramo na pravilno mesto. Te nastavitve lahko določimo vsakemu gradniku posebej ali vsem hkrati. Slika : Konfiguracija vsebine UIView Kako se bodo komponente odzivale ob uporabniški interakciji, določa sekcija Behavior of Views. Vsaka komponenta ima že prednastavljene določene vrednosti, ki opisujejo odziv. Tukaj lahko tudi onemogočimo vsakršno interakcijo z objektom ali pa omogočimo»multi touch«uporabo. V preddefiniranem režimu je način»multi touch«onemogočen, medtem ko je uporabniška interakcija omogočena. Nastavimo lahko še najosnovnejše lastnosti, ki so vezane na videz objekta. Vse ostale lastnosti nastavljamo v programski kodi. Sekcija prikaz pogleda ali objektov je v tesni povezavi z urejanjem vsebine in obnašanjem. Gre za nastavitve podrobnosti komponent. Tako recimo nastavimo vrednosti, ki jih določena komponenta vsebuje, ali pa barvo ob dotiku. Na gradnike lahko vključimo tudi slike. Dejansko nastavljamo zgoraj opisane komponente, le v natančnejši obliki, in njihovo izvedbo pogojujemo z določenimi pogoji. Tukaj tudi urejamo samodejno pozicioniranje in skaliranje ob različnih napravah in pogledih. Pogled natančneje definira razred UIViewController [21]. Ta zagotavlja infrastrukturo za upravljanje pogledov. Definira animacije, interakcije, osveževanje vsebine pogleda in osnovni grafični videz pogleda. Opisuje tudi rotacije vsebine in metode, ki inicializirajo določena stanja ob prihodu ali izhodu iz pogleda. 35

46 Ustvarjanje projekta in opravila Pri ustvarjanju novega projekta uporabnik vnese zahtevane podatke v vnosna polja tipa UITextField. Za izbiro datuma začetka in konca projekta oziroma opravila sem uporabil grafično komponento»picker«. Izhaja iz razreda UIPickerView, ki tako kot ostale navedene komponente temelji na razredu UIView. Sestavljen je iz vrtljivega valja, na katerem uporabnik izbere datum, in gumba za potrditev izbire. Picker sem integriral v lastno programsko ogrodje zaradi želje po nestandardnem prikazovanju. Ker ga potrebujemo enkrat v določenem trenutku, komponenta pa zavzame veliko prostora na zaslonu, sem izdelal t. i. popup prikaz. Ob uporabniškem kliku na vnosno polje se izbirnik datuma animirano prikaže na zaslonu in izgine ob potrditvi izbire. Izbrani podatki se neposredno zapišejo v kliknjeno besedilno polje, od koder jih kasneje prenesem v podatkovno bazo. Slika : Izbirnik datuma V naslednjem koraku uporabnik ustvari opravila, ki sledijo projektu. Vsako opravilo ima obvezna polja. 36

47 Slika : Vnos novega projekta z opravilom To so naslov opravila, začetni in končni datum ter vsaj ena oseba, ki je zadolžena za izvedbo opravila. Kot lastnik opravila oziroma odgovorna oseba se samodejno doda tistega uporabnika, ki ustvarja projekt. Prav tako se ga samodejno doda kot vodjo projekta. Iz podatkovne baze se prenese tudi najvišji identifikator, ki v danem trenutku obstaja. Nato se ta identifikator poveča za ena in zapiše v objekt podatkovnega tipa Task, ki se kasneje shrani v seznam opravil tabtask_pass. Podoben način pridobitve identifikatorja se uporablja tudi za projekt, le da v tem primeru operiram z entiteto Project Dodelitev oseb V naslednjem koraku uporabnik izbere vsaj eno osebo, ki bo zadolžena za izvedbo naloge. Nabor oseb se ustvari glede na uporabnika, ki je trenutno prijavljen. Tako zalogo vrednosti za vodjo oddelka predstavljajo osebe, ki so zaposlene samo v njegovem oddelku. Izvede se zahteva HTTP na strežnik, ki preko storitve REST vrne seznam oseb v obliki niza JSON. Ob kliku na osebo se v ozadju objekt PersonTask doda na konec seznama istoimenskega podatkovnega tipa. Poleg podatkov o zaposlenem se v objekt zapiše še identifikator opravila, ki mi oseba pripada. Predhodno sem ga pridobil z metodo gettaskid v pogledu 37

48 addtaskview. Če se uporabnik zmoti in po izbiri odstrani osebo, se to v izvorni kodi odraža kot izčrpno iskanje (angl. brute force or exhaustive search) po seznamu od prvega do zadnjega elementa in odstranitev ujemajočega elementa. V mojem primeru je izčrpno iskanje zadovoljivo, saj je velikost oddelka zaradi smernic organizacijskih struktur omejena na petnajst oseb. To pomeni, da seznam oseb, med katerimi lahko izbiram, za določeno opravilo ne bo nikoli daljši od petnajst zapisov. Izvorna koda, ki izvede operacijo odstranitve osebe s seznama, je prikazana na sliki Izvorna koda : Odstranitev osebe s seznama Po kliku na gumb shrani se aplikacija vrne na pogled, kjer je uporabnik prej že vnesel podatke o opravilu. Hkrati se v pogled addtaskview prenese tudi seznam oseb tabselectedperson, ki so dodeljene opravilu. Ko uporabnik konča implementiranje opravila, klikne na gumb shrani, ki ga vrne na pogled za ustvarjanje novega projekta. Obenem se v pogled addprojectview v obliki objekta Task prenesejo tudi podatki o opravilu in seznam zaposlenih, ki pri opravilu nastopajo. Opravilo se doda v seznam tabtask_pass, prav tako pa se v ta seznam pretoči seznam uporabnikov. Nato lahko uporabnik znova ustvari novo opravilo za isti projekt. Po vseh korakih se opravilo in seznam oseb zopet prepišeta v nov seznam v razredu addtaskview. S tem je omogočeno ustvarjanje več opravil hkrati za isti projekt. Seveda lahko uporabnik doda opravilo tudi naknadno. Postopek je podoben, le da lahko takrat dodajo samo po eno opravilo. V tem primeru mi ni treba predvideti identifikatorjev za opravilo, kar posledično pomeni manj režije v ozadju. Celoten podatkovni tok med pogledi v procesu dodajanja projekta prikazuje diagram poteka na sliki

49 Slika : Tok podatkov med pogledi Izbira barve Preden uporabnik uspešno ustvari projekt s pripadajočimi opravili, mora še izbrati barvo projekta. Ljudje smo bitja, ki si stvari lažje zapomnimo, če si jih znamo predstavljati. K oblikovanju našega subjektivnega modela pogosto pripomorejo raznorazni vzorci, kombinacije, objekti in ne nazadnje barve. V aplikaciji je barva identifikator oziroma pomaga pri lažji lokaciji projekta v seznamu. Tako je vsak projekt zaznamovan z barvo, ki jo nato deduje tudi opravilo, ki projektu pripada. Zaradi lažjega razlikovanja se pogleda projektov in opravil med seboj razlikujeta s preprostim pravilom. Projekti imajo poln barvni krog, medtem ko opravila predstavlja prazen barvni krog z barvno obrobo. Grafično 39

50 oblikovanje je podrobneje predstavljeno v nadaljevanju, in sicer v odseku Uporabniški vmesnik. Izbira barve je implementirana v ločenem pogledu colorpickerc_view. Gre za skupino gumbov, vezanih na isto metodo, ki se proži ob dotiku. Preko objekta sender nato ugotovim, za kateri gumb gre, in glede na gumb povzamem barvo. Heksadecimalni zapis barve je zapisan kar v znački text. Ob izbiri barve, torej kliku na gumb, se besedilo, zapisano v gumbu, shrani v globalno spremenljivko pickedcolor Vnos podatkov v podatkovno bazo Zadnje dejanje pri ustvarjanju projekta je vnos zbranih podatkov v podatkovno bazo. Celoten vnos se ne izvaja vzporedno po končanem vnosu na koncu interakcije v pogledu addprojecview. S takšnim pristopom sem močno olajšal sledenje spremembam in zmanjšal potrebo po prenosu podatkov ter s tem povečani omrežni dejavnosti aplikacije. Za rešitev problema sem tehtal med dvema rešitvama. Prva rešitev predvideva vnos podatkov v podatkovno bazo na vsakem pogledu ob kliku na gumb shrani. Pri tem se pojavi problem, če si uporabnik med procesom oblikovanja projekta premisli in ga zavrže. Sledita odstranitev že vnesenih podatkov v podatkovno bazo in osveževanje stanja na prikazovalnikih. Druga rešitev, ki sem jo tudi uporabil, pa predvideva vnos vseh podatkov v podatkovno bazo enkratno, na koncu procesa v pogledu addprojectview. Kot sem že omenil nekaj vrstic višje, se druga rešitev izkaže za boljšo predvsem z vidika varčevanja s prenosom podatkov v omrežju in zahteva manj režije. Vnos podatkov je zaradi tujih ključev v entitetah implementiran po sledečem vrstnem redu: 1. Project, 2. Task in 3. ProjectPersonTask. Naprej se izvede vnos v entiteto, ki ima najmanj tujih ključev. Izredno pomembno je, da imamo na razpolago potrebne identifikatorje tujih ključev, saj se v nasprotnem primeru zgodi t. i. domino učinek, kjer se ne izvede vnos podatkov za vse naslednje entitete. Vnos podatkov se izvede z metodo HTTP POST. Podobno kot pri pridobivanju podatkov iz podatkovne baze tudi pri vnosu podatkov uporabljam storitev REST. Podatke, ki jih želim vnesti v podatkovno bazo, posredujem kot parametre v naslovu URL skripti, ki teče na podatkovnem strežniku. Skripta nato preko parametra option kliče zahtevano metodo, ki 40

51 kot parametre prejme podatke, zapisane v naslovu URL. Gre za asinhrono komunikacijo. Ob zaključku operacije se uporabniku izpiše obvestilo o uspešnem ali neuspešnem vnosu podatkov v podatkovno bazo. Pri naknadnem dodajanju opravila se opravilo vnese v podatkovno bazo takoj ob kliku na gumb shrani v pogledu opravila Pridobitev in prikaz podatkov Prikaz podatkov v večini pogledov poteka po standardnem postopku. Ta zajema najprej prenos podatkov iz podatkovne baze, nato se podatki shranijo v lokalni seznam oziroma tabelo. V tretjem koraku se izvedeta inicializacija grafičnih komponent in priredba vrednosti iz prej napolnjenih seznamov. V primeru uporabe komponente UITableView za prikaz podatkov je postopek inicializacije nekoliko kompleksnejši. Grafično je sestavljena iz dveh komponent, to sta tabela (table), ki jo definira razred UITableView, in celica (cell), ki je definirana v razredu UITableViewCell. V osnovi je tabela sestavljena iz ene sekcije, lahko pa jo razdelimo na več sekcij. Za delovanje nujno potrebuje zalogo vrednosti, iz katere črpa podatke (angl. data source), in definiran protokol, ki opisuje metode tabele (angl. delegate). Slika : Zgradba celice v tabeli z razrednimi atributi Celica tabele je gradnik, v katerega naložim podatke. V osnovi ponuja napis, podnaslov in nabor dodatkov, ki se prikažejo ob interakciji s celico. Celico lahko definiramo tudi sami in tako v tabelo vključimo poljubne grafične elemente. Upoštevati moramo samo pravilo 41

52 dedovanja iz osnovnega razreda UITableViewCell. Sam sem celico prilagodil tako, da sem poleg osnovnih besedilnih oken dodal tudi komponento UIImageView, s katero prikazujem slike, in prilagodil poravnavo vsebine. Slika : Oblikovanje celice (Custom cell view) Krog, ki razbije monotonost in izboljša preglednost podatkov, je v osnovi komponenta Label z nastavljeno obrobo in polmerom robov. V primerjavi z uporabo slike je slednja preprosta, poceni in funkcionalna rešitev. Postopek inicializacije zajema tri standardne metode. Vsaka ima svoj namen in pomen. Tako v metodi numberofsectionsintableview povemo, koliko sekcij oziroma razdelkov ima tabela, v mojem primeru je večina tabel v eni sekciji. Sledi metoda cellforrowatindexpath. V njej definiramo videz celice tabele in priredimo vrednosti komponentam, ki so v celici. Celica tabele predstavlja eno vrstico oziroma en zapis v tabeli. Vsaka celica omogoča tudi interakcijo. Dogodke ob kliku na celico določa metoda didselectrowatindexpath. Večinoma sem tukaj implementiral prenos podatkov izbranega projekta ali opravila v novo okno, kjer se prikaže podroben pogled na izbrani podatek. Svoje tabele sem razširil z dodajanjem funkcije Swipe. Funkcija je podrobneje predstavljena v nadaljevanju. Za programsko kodo to pomeni uporabo dodatnih metod, ki so sicer v razredu UITableView že implementirane. Metoda editactionsforrowatindexpath omogoča implementacijo funkcije Swipe. Tukaj je zakodirana logika dogodkov, ki se prožijo ob uporabi funkcije. Če želim uporabiti funkcijo v celici, mora ta biti na voljo za urejanje. To storim z metodo caneditrowatindexpath. Tretja in zadnja metoda, ki jo potrebujem, je metoda commiteditingstyle. Gre za prazno metodo, v katero pošljem parametre urejanja in indeks celice, za katero želim uporabiti funkcijo Swipe. Swipe je dodatna funkcionalnost celice, ki sem jo prav tako dodal v svoje celice in navadno v inicializaciji še ni nastavljena. Gre za preprost, a robusten dodatek, ki naredi seznam uporabnejši in hitreje dostopen. Uporablja se za prikaz skritih gumbov, ki so 42

53 nekakšna bližnjica do funkcij objekta. Swipu sem dodal najbolj uporabljane funkcije, ki jih aplikacija za dano tematiko ponuja. Opisana je v razredu UISwipeGestureRecognizer. Slika : Funkcionalnost Swipa Iskanje v pogledih Veliko prikazanih podatkov brez možnosti brskanja po njih povečuje čas iskanja želenih podatkov in zmanjšuje uporabniško izkušnjo. Kljub organizaciji podatkov glede na skupni imenovalec je ročno iskanje še vedno zamudno. Tako je bilo treba v pogled dodati iskalno polje. Vsak pogled, ki prikazuje podatke s pomočjo seznama, ima implementirano funkcijo iskanja po njem. Iskalno polje sestavljajo vnosno besedilno polje, gumb za potrditev iskanja in gumb za ponastavitev besedilnega polja. Implementira ga razred UISearchBar, ki pa ne izvaja nobenega iskanja, ampak samo opisuje grafično komponento. Iskanje je realizirano z delegatom UISearchBarDelegate. V njem so opisane akcije, ki se izvedejo ob vnosu niza v besedilno polje. Slika : Iskalna vrstica Seznam ima v ozadju svojo tabelo oziroma seznam, iz katerega črpa podatke. Iskanje deluje tako, da v nov seznam oziroma tabelo iz starega seznama prepiše vse podatke, ki se ujemajo z geslom. Geslo je beseda, ki jo iščemo. Sledi še osvežitev seznama. Če strnem, v 43

54 praksi obstajata dve tabeli, poimenovani tab(task/person/project)data in tabfiltereddata. Kadar iskanje ni aktivno, seznam kot vir podatkov upošteva tabelo tab(task/person/project)data. Ob aktiviranem iskanju pa se vsi ujemajoči zapisi v prvi tabeli zapišejo v tabelo tabfiltereddata, ki se nato uporabi kot vir podatkov za prikaz. Podobno sem implementiral tudi preklop med pogledom na opravila, za katera je oseba zadolžena in katerih je lastnik. Tudi v tem primeru imam v uporabniškem vmesniku seznam in v ozadju dve tabeli tabtaskown in tabtaskimp. Katera tabela se uporablja za vir podatkov, določi uporabnik preko komponente UISegmentedControl. Gre za nekakšno stikalo, ki preklaplja med vrednostma 0 in Opozorila Zaradi varnosti in zagotavljanja celovitosti vnosa podatkov je v aplikaciji implementiranih več varnostnih mehanizmov. Ti mehanizmi preprečujejo uporabniku pozabljivost vnosa podatkov. Uporabnik ne more uporabiti določenih funkcij, recimo funkcije shrani, če v obrazcu ni vnesel podatkov v vsa obvezna polja. S tem zagotavljam tudi konsistentnost podatkov. Ob napaki aplikacija uporabnika vizualno opozori. To je implementirano preko sistemskih obvestil z razredom UIAlertView. Razred ima konstruktorje, ki lahko sprejmejo več parametrov. Dodelimo mu lahko tudi vnosna polja ali gumbe za izbiro. V mojem primeru sem uporabil prikaz besedila in standardni gumb za skritje obvestila. Tako sem s konstruktorjem inicializiral objekt alert in mu priredil tri osnovne vrednosti, naslov, sporočilo in način prikaza. Inicializiral sem tudi dva gumba in metodi, ki ob kliku izvedeta določeno operacijo. V aplikaciji sem uporabil standardni model obvestila, to je besedilo, in dva gumba. Metoda za dodajanje gumba se imenuje addaction in sprejme tri parametre naslov, način prikaza in t. i. handler. Zapis metode je podoben zapisu gnezdenih oblik funkcij v skriptnem jeziku jquery. Na koncu sem objekt alert z metodo presentviewcontroller še dodal na pogled. Z uporabo odprtokodnih programskih ogrodij so možnosti oblikovanja obvestil skoraj neomejene. Tako lahko slog, obliko, število in tip komponent, ki jih uporabimo v obvestilu, v celoti prilagodimo lastnemu oblikovanju in potrebam. 44

55 6.2.5 Navigacija Aplikacija ni sestavljena iz enega okna, ampak jo sestavlja več oken ali drugače poimenovanih pogledov. Za prehod med pogledi sem uporabil komponento UINavigationBar. Navigacijska vrstica ima primarno nalogo usmerjati uporabnika v predhodni pogled, torej v pogled, iz katerega izhaja. Implementira se zelo preprosto, in sicer v razvojnem orodju izberem želeni pogled, v katerega želim vstaviti komponento. V orodni vrstici izberem Edit, Emmbeded In in Navigation Controller. Razvojno orodje samodejno ustvari vse potrebne povezave. Lahko pa jo implementiram tudi programsko s klicem konstruktorja razreda UINavigationBar. Poleg gumba nazaj sem znotraj navigacijske vrstice implementiral tudi orodje za iskanje po sezamu. S tem sem pridobil več možnosti na pogledu. Navigacijsko vrstico z vgrajenim poljem za iskanje prikazuje slika Slika : Navigacijska vrstica Hkrati ob prehodu med različnimi pogledi prenašam tudi ključne podatke, ki jih posamezen pogled potrebuje za prikaz vsebine. Vsak pogled ima namreč svoj razred, lahko pa ima več pogledov isti razred, čeprav to ni priporočljivo. Vsak pogled deluje zase in spremenljivke, zapisane v enem pogledu, niso vidne in posledično tudi niso uporabne v ostalih pogledih. Ker pa želimo homogeno delovanje aplikacije, je potrebna nenehna komunikacija različnih pogledov med seboj. Tako potrebujemo podatkovni tok, ki bo zagotavljal kroženje podatkov na zahtevo in s tem posledično tudi prenos informacij. V programskem jeziku Swift imamo na voljo štiri bolj ali manj uporabne načine za prenos (angl. pass) podatkov. Vsak od njih je uporaben v določeni situaciji. Katerega izmed njih bomo uporabili, se tako odločimo glede na problem, ki ga imamo. V aplikaciji»opravilko«sem za potrebe demonstracije v različnih situacijah uporabil vse štiri načine. 45

56 Načini za prenos podatkov so: CoreData, Seque (relacijsko), globalne spremenljivke in preko razreda. CoreData je izredno praktičen in uporaben. Gre za nekakšno okrnjeno lokalno podatkovno bazo, ki je lokalno shranjena v napravi, na kateri poganjamo aplikacijo, med njenim delovanjem. Podatki, shranjeni v CoreData, bodo dostopni v celotni aplikaciji ves čas. Problem, ki se pojavi pri uporabi tega načina, je, da ob hkratnem prenosu podatkov iz baze in vnosu podatkov v bazo pride do izpada komunikacije. To v praksi pomeni, da včasih želenega podatka ni zapisalo v bazo. Zaradi takšnih težav sem raziskal še ostale načine in tako prišel do načina Seque. Seque je način prikaza pogleda [17]. Gre torej za povezavo med dvema pogledoma. Z enoličnim identifikatorjem, ki mu ga določim, lahko nanj»obesim«različne vrednosti in zahteve. Obenem moram izpolniti pogoj, da spremenljivke, v katere pošiljam vrednosti, obstajajo v razredu, v katerega pošiljam. Skratka, preko identifikatorja Seque dostopam do spremenljivk, zapisanih v razredu, in jim neposredno nastavim vrednost. Način je izredno učinkovit in preprost. Za implementacijo so potrebne samo tri vrstice kode. Izvorna koda : Prenos podatkov med pogledi z načinom "Seque" Vendar pa nastane problem, če želim preklopiti med pogledi, ki so ustvarjeni dinamično. V tem primeru pošiljanje podatkov preko povezave ne izvede zahteve, saj povezava predhodno ni bila ustvarjena in poimenovana. V tem primeru uporabim globalne spremenljivke. Globalne spremenljivke delujejo kot struktura. Zapišem jih na vrh v poljubnem razredu. Kot že ime pove, so vidne v celotni aplikaciji. Vse vrednosti oziroma spremenljivke, ki nastopajo v strukturi, so statične. V mojem primeru so podatkovnega tipa String. Globalnih 46

57 spremenljivk nisem uporabil samo za prenos podatkov ob prehodu med pogledi, ampak tudi za hrambo podatkov, ki bi jih v nasprotnem primeru hranil v skritih poljih (angl. hidden fields). Gre za preprosto rešitev, ki pa zna biti kritična, če je globalnih spremenljivk preveč. Takrat stvar postane zelo nepregledna in težko sledljiva. Četrti način, ki sem ga prav tako preizkusil v aplikaciji, je prenos spremenljivk preko razreda. Ta način je uporaben, ko se z UINavigationControllerjem vračamo na predhodne poglede. Tako na podlagi razreda, v katerega prehajamo, ugotovimo, kam je treba poslati vrednost. V praksi je to implementirano kot prehod v for zanki skozi vse razrede. Ko najdemo razred, ki ga iščemo, celoten razred pretvorimo v spremenljivko tipa let. Tako so nam na voljo vse spremenljivke v ciljnem razredu. Podobno kot pri prenosu preko povezave (seque) gre tudi tukaj za neposredno prireditev vrednosti spremenljivki v ciljnem razredu Knjižnica SwiftyJSON JSON se je v svetu programiranja neuradno ustoličil kot vodilni standard za strukturiran prenos večje količine podatkov [18]. Skoraj ni razvijalca, ki ga pri prenosu podatkov med strežniki ali ostalimi napravami ne bi uporabljal. Zgradba sloni na tehnologiji JavaScripta. Vrednosti se pripisujejo atributom (notacija ključ-vrednost), ki pripadajo objektom. Objekte označujejo zaviti oklepaji in tvorijo podatkovno strukturo. V osnovi programski jezik Swift nudi podporo za delo z nizi JSON. Vendar sta sintaksa in način uporabe v primerjavi z ostalimi metodami, ki jih ponuja Swift, zelo kompleksna. Ker je Swift odprtokodni programski jezik, se je tudi za ta problem našla rešitev. Na spletu lahko z nekaj kliki hitro pridemo do več deset podobnih stvaritev. Vse imajo isti cilj, in sicer olajšati delo z nizi JSON v programskem jeziku Swift. V svoji aplikaciji sem uporabil brezplačno knjižnico SwiftyJSON, ki je za prenos na voljo na portalu GitHUB. Poleg izvorne kode uporabnik dobi tudi demo projekt, s katerim lahko preveri delovanje in ga uporabi za kopitno implementacijo knjižnice v lastni projekt. Iz gruče datotek, ki so na voljo, je za nas zanimiva datoteka»swiftyjson.swift«[19]. 47

58 Izvorna koda : Dekodiranje niza JSON ob prenosu vrednosti iz podatkovne baze Kljub vsemu knjižnica še vedno uporablja standardno Swiftovo metode za delo z nizi JSON, JSONSerialization, vendar uporabnik navidezno nima stika z njo. Knjižnico lahko vključimo na več načinov. Najpreprostejši in razvijalno najelegantnejši način je, da jo uvozimo v projekt. Nato ni potrebna nobena nadaljnja deklaracija, definicija ali kaj podobnega. V razredu, kjer izvajamo interakcijo z nizi JSON, preprosto, kot prikazuje slika 17, pokličemo metode, ki so zapisane v knjižnici [20]. 48

Navodila za uporabo čitalnika Heron TM D130

Navodila za uporabo čitalnika Heron TM D130 Upravljanje sistema COBISS Navodila za uporabo čitalnika Heron TM D130 V1.0 VIF-NA-7-SI IZUM, 2005 COBISS, COMARC, COBIB, COLIB, AALIB, IZUM so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE

More information

KAKO GA TVORIMO? Tvorimo ga tako, da glagol postavimo v preteklik (past simple): 1. GLAGOL BITI - WAS / WERE TRDILNA OBLIKA:

KAKO GA TVORIMO? Tvorimo ga tako, da glagol postavimo v preteklik (past simple): 1. GLAGOL BITI - WAS / WERE TRDILNA OBLIKA: Past simple uporabljamo, ko želimo opisati dogodke, ki so se zgodili v preteklosti. Dogodki so se zaključili v preteklosti in nič več ne trajajo. Dogodki so se zgodili enkrat in se ne ponavljajo, čas dogodkov

More information

Donosnost zavarovanj v omejeni izdaji

Donosnost zavarovanj v omejeni izdaji Donosnost zavarovanj v omejeni izdaji informacije za stranke, ki investirajo v enega izmed produktov v omejeni izdaji ter kratek opis vsakega posameznega produkta na dan 31.03.2014. Omejena izdaja Simfonija

More information

Navodila za uporabo tiskalnika Zebra S4M

Navodila za uporabo tiskalnika Zebra S4M Upravljanje sistema COBISS Navodila za uporabo tiskalnika Zebra S4M V1.0 VIF-NA-14-SI IZUM, 2006 COBISS, COMARC, COBIB, COLIB, AALIB, IZUM so zaščitene znamke v lasti javnega zavoda IZUM. KAZALO VSEBINE

More information

Mobilna aplikacija za odčitavanje in ocenjevanje izdelkov

Mobilna aplikacija za odčitavanje in ocenjevanje izdelkov Univerza v Ljubljani Fakulteta za računalništvo in informatiko Igor Plavšić Mobilna aplikacija za odčitavanje in ocenjevanje izdelkov DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Razvoj mobilne aplikacije za pomoč študentom pri organizaciji študija

Razvoj mobilne aplikacije za pomoč študentom pri organizaciji študija UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Matej Šircelj Razvoj mobilne aplikacije za pomoč študentom pri organizaciji študija DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM

More information

Razvoj poslovnih aplikacij za informacijski sistem SAP R3

Razvoj poslovnih aplikacij za informacijski sistem SAP R3 UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Peter Mihael Rogač Razvoj poslovnih aplikacij za informacijski sistem SAP R3 DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Ljubljana, 2012 UNIVERZA

More information

Sistemi za podporo pri kliničnem odločanju

Sistemi za podporo pri kliničnem odločanju Sistemi za podporo pri kliničnem odločanju Definicija Sistem za podporo pri kliničnem odločanju je vsak računalniški program, ki pomaga zdravstvenim strokovnjakom pri kliničnem odločanju. V splošnem je

More information

Ogrodje mobilne aplikacije mfri

Ogrodje mobilne aplikacije mfri Univerza v Ljubljani Fakulteta za računalništvo in informatiko Dejan Obrez Ogrodje mobilne aplikacije mfri DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA

More information

Sistem za oddaljeni dostop do merilnih naprav Red Pitaya

Sistem za oddaljeni dostop do merilnih naprav Red Pitaya Univerza v Ljubljani Fakulteta za računalništvo in informatiko Luka Golinar Sistem za oddaljeni dostop do merilnih naprav Red Pitaya DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Milan Nedovič. Metodologija trženja mobilnih aplikacij

Milan Nedovič. Metodologija trženja mobilnih aplikacij UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Milan Nedovič Metodologija trženja mobilnih aplikacij DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: prof. doc. dr. Rok Rupnik Ljubljana,

More information

EU NIS direktiva. Uroš Majcen

EU NIS direktiva. Uroš Majcen EU NIS direktiva Uroš Majcen Kaj je direktiva na splošno? DIREKTIVA Direktiva je za vsako državo članico, na katero je naslovljena, zavezujoča glede rezultata, ki ga je treba doseči, vendar prepušča državnim

More information

PODATKOVNA BAZA (Uporaba IKT pri poslovanju)

PODATKOVNA BAZA (Uporaba IKT pri poslovanju) Šolski center Novo mesto Srednja elektro šola in tehniška gimnazija Šegova ulica 112 8000 Novo mesto PODATKOVNA BAZA (Uporaba IKT pri poslovanju) Avtorica: Tanja JERIČ, dipl. inž. rač. in inf. Novo mesto,

More information

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE

UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE UNIVERZA NA PRIMORSKEM FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE Zaključna naloga Reprodukcija dejanskega okolja v virtualno resničnost s pomočjo para kamer ter Google Cardboard

More information

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA VISOKOŠOLSKI STROKOVNI ŠTUDIJ Informatika in tehnologije komuniciranja POROČILO PRAKTIČNEGA IZOBRAŽEVANJA V TILZOR Maribor Čas opravljanja Od 25.3.2010 do 14.6.2010 Mentor v GD Tilen Zorenč Študent Miha

More information

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije Biznis scenario: U školi postoje četiri sekcije sportska, dramska, likovna i novinarska. Svaka sekcija ima nekoliko aktuelnih projekata. Likovna ima četiri projekta. Za projekte Pikaso, Rubens i Rembrant

More information

UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA MAGISTRSKO DELO BLAŽ DOBROVOLJC

UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA MAGISTRSKO DELO BLAŽ DOBROVOLJC UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA MAGISTRSKO DELO BLAŽ DOBROVOLJC UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA MAGISTRSKO DELO ANALIZA RAZLIČNIH PRISTOPOV PRI UVAJANJU DOKUMENTNEGA POSLOVANJA NA OSNOVI

More information

KLJUČNI DEJAVNIKI USPEHA UVEDBE SISTEMA ERP V IZBRANEM PODJETJU

KLJUČNI DEJAVNIKI USPEHA UVEDBE SISTEMA ERP V IZBRANEM PODJETJU UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO KLJUČNI DEJAVNIKI USPEHA UVEDBE SISTEMA ERP V IZBRANEM PODJETJU Ljubljana, junij 2016 VESNA PESTOTNIK IZJAVA O AVTORSTVU Podpisana Vesna Pestotnik,

More information

Družbeni mediji na spletu in kraja identitete

Družbeni mediji na spletu in kraja identitete UNIVERZA V LJUBLJANA FAKULTETA ZA DRUŽBENE VEDE Tamara Žgajnar Družbeni mediji na spletu in kraja identitete Diplomsko delo Ljubljana, 2009 UNIVERZA V LJUBLJANA FAKULTETA ZA DRUŽBENE VEDE Tamara Žgajnar

More information

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA

POROČILO PRAKTIČNEGA IZOBRAŽEVANJA VISOKOŠOLSKI STROKOVNI ŠTUDIJ Računalništvo in informacijske tehnologije POROČILO PRAKTIČNEGA IZOBRAŽEVANJA v Tom88 d.o.o. Maribor Čas opravljanja od 1.4.2014 do 15.6.2014 Mentor Tomaž Kokot, univ. dipl.

More information

OMREŽNA SKLADIŠČA PODATKOV (NAS)

OMREŽNA SKLADIŠČA PODATKOV (NAS) OMREŽNA SKLADIŠČA PODATKOV (NAS) SEMINARSKA NALOGA PRI PREDMETU STROKAVNA INFORMATIKA IN STATISTIČNE METODE VREDNOTENJA ŠTUDENTKA: Barbara Fras MENTOR: Matej Zdovc CELJE, MAJ 2009 kazalo 1. UVOD... 3 2.

More information

Uporaba HTML 5 in CSS3 v spletnih kvizih

Uporaba HTML 5 in CSS3 v spletnih kvizih UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Goran Ocepek Uporaba HTML 5 in CSS3 v spletnih kvizih DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDIJU Mentor: prof. Dr. Saša Divjak Ljubljana,

More information

Kontrolni sistem pospeševalnika delcev v okolju LabVIEW

Kontrolni sistem pospeševalnika delcev v okolju LabVIEW UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Miha Vitorovič Kontrolni sistem pospeševalnika delcev v okolju LabVIEW DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: prof. dr. Saša Divjak

More information

SLOVENSKI GIMP-PORTAL

SLOVENSKI GIMP-PORTAL ŠOLSKI CENTER VELENJE ELEKTRO IN RAČUNALNIŠKA ŠOLA MLADI RAZISKOVALCI ZA RAZVOJ ŠALEŠKE DOLINE RAZISKOVALNA NALOGA SLOVENSKI GIMP-PORTAL Tematsko področje: RAČUNALNIŠTVO IN TELEKOMUNIKACIJE (IKT) Avtorja:

More information

Upravitelj opravil Task Manager

Upravitelj opravil Task Manager Upravitelj opravil Task Manager Povzetek: Ta dokument opisuje uporabo in razlago nekaterih možnosti Upravitelja opravil - Task Manager s ciljem, da ugotovimo, če in zakaj naš osebni računalnik deluje ''počasi''

More information

UPORABA IN STROŠKOVNA ANALIZA SISTEMA ZA UPRAVLJANJE SPLETNIH VSEBIN

UPORABA IN STROŠKOVNA ANALIZA SISTEMA ZA UPRAVLJANJE SPLETNIH VSEBIN UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO EKONOMSKO POSLOVNA FAKULTETA Miran Šmid UPORABA IN STROŠKOVNA ANALIZA SISTEMA ZA UPRAVLJANJE SPLETNIH VSEBIN Diplomska naloga

More information

NAČRTOVALSKI VZORCI ZA UPRAVLJANJE MATIČNIH PODATKOV

NAČRTOVALSKI VZORCI ZA UPRAVLJANJE MATIČNIH PODATKOV Mitja Hegediš NAČRTOVALSKI VZORCI ZA UPRAVLJANJE MATIČNIH PODATKOV Diplomsko delo Maribor, september 2009 I Diplomsko delo univerzitetnega študijskega programa NAČRTOVALSKI VZORCI ZA UPRAVLJANJE MATIČNIH

More information

Večuporabniške aplikacije na večdotičnih napravah

Večuporabniške aplikacije na večdotičnih napravah UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Miha Kavčič Večuporabniške aplikacije na večdotičnih napravah DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDIJU Mentor: doc. dr. Matija Marolt

More information

Intranet kot orodje interne komunikacije

Intranet kot orodje interne komunikacije UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Petra Renko Intranet kot orodje interne komunikacije Diplomsko delo Ljubljana, 2009 UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Petra Renko Mentorica:

More information

Podešavanje za eduroam ios

Podešavanje za eduroam ios Copyright by AMRES Ovo uputstvo se odnosi na Apple mobilne uređaje: ipad, iphone, ipod Touch. Konfiguracija podrazumeva podešavanja koja se vrše na računaru i podešavanja na mobilnom uređaju. Podešavanja

More information

DIPLOMSKO DELO INTRANET SODOBNO ORODJE INTERNE KOMUNIKACIJE

DIPLOMSKO DELO INTRANET SODOBNO ORODJE INTERNE KOMUNIKACIJE UNIVERZA V MARIBORU EKONOMSKO-POSLOVNA FAKULTETA DIPLOMSKO DELO INTRANET SODOBNO ORODJE INTERNE KOMUNIKACIJE Kandidatka: Simona Kastelic Študentka izrednega študija Številka indeksa: 81498358 Program:

More information

OCENJEVANJE SPLETNIH PREDSTAVITEV IZBRANIH UNIVERZ IN PISARN ZA MEDNARODNO SODELOVANJE

OCENJEVANJE SPLETNIH PREDSTAVITEV IZBRANIH UNIVERZ IN PISARN ZA MEDNARODNO SODELOVANJE UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO OCENJEVANJE SPLETNIH PREDSTAVITEV IZBRANIH UNIVERZ IN PISARN ZA MEDNARODNO SODELOVANJE Ljubljana, julij 2006 SAŠA FERFOLJA IZJAVA Študent Saša Ferfolja

More information

Andrej Laharnar. Razvoj uporabniškega vmesnika oddelčnega proizvodnega informacijskega sistema za vodje izmen

Andrej Laharnar. Razvoj uporabniškega vmesnika oddelčnega proizvodnega informacijskega sistema za vodje izmen UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andrej Laharnar Razvoj uporabniškega vmesnika oddelčnega proizvodnega informacijskega sistema za vodje izmen Diplomska naloga na visokošolskem

More information

PRESENT SIMPLE TENSE

PRESENT SIMPLE TENSE PRESENT SIMPLE TENSE The sun gives us light. The sun does not give us light. Does It give us light? Za splošno znane resnice. I watch TV sometimes. I do not watch TV somtimes. Do I watch TV sometimes?

More information

NAČRTOVANJE IN STRATEGIJA SISTEMA ZA UPRAVLJANJE Z DIGITALNIMI IDENTITETAMI

NAČRTOVANJE IN STRATEGIJA SISTEMA ZA UPRAVLJANJE Z DIGITALNIMI IDENTITETAMI UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Matjaţ Cör NAČRTOVANJE IN STRATEGIJA SISTEMA ZA UPRAVLJANJE Z DIGITALNIMI IDENTITETAMI Mentorica: doc. dr. Mojca Ciglarič DIPLOMSKO DELO NA

More information

UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO PRENOVA ERP SISTEMA V PODJETJU LITOSTROJ E.I.

UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO PRENOVA ERP SISTEMA V PODJETJU LITOSTROJ E.I. UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO PRENOVA ERP SISTEMA V PODJETJU LITOSTROJ E.I. Ljubljana, julij 2007 SILVO KASTELIC IZJAVA Študent Silvo Kastelic izjavljam, da sem avtor tega diplomskega

More information

1. LETNIK 2. LETNIK 3. LETNIK 4. LETNIK Darinka Ambrož idr.: BRANJA 1 (nova ali stara izdaja)

1. LETNIK 2. LETNIK 3. LETNIK 4. LETNIK Darinka Ambrož idr.: BRANJA 1 (nova ali stara izdaja) Seznam učbenikov za šolsko leto 2013/14 UMETNIŠKA GIMNAZIJA LIKOVNA SMER SLOVENŠČINA MATEMATIKA MATEMATIKA priporočamo za vaje 1. LETNIK 2. LETNIK 3. LETNIK 4. LETNIK Darinka Ambrož idr.: BRANJA 1 (nova

More information

UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE

UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Petra Psarn Pridobivanje kadrov s pomočjo spletnih socialnih omrežij Diplomsko delo Ljubljana, 2011 UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Petra

More information

Informatika v medijih

Informatika v medijih 4.2. Analiza IS tehnike zajema zahtev. Razvoj IS Osnove razvoja IS je treba poznati, če želimo aktivno sodelovati pri uvedbi IS na področju, s katerim se ukvarjamo. Razvoj IS pomeni celotno pot od ideje

More information

D I P L O M S K A N A L O G A

D I P L O M S K A N A L O G A FAKULTETA ZA INFORMACIJSKE ŠTUDIJE V NOVEM MESTU D I P L O M S K A N A L O G A VISOKOŠOLSKEGA STROKOVNEGA ŠTUDIJSKEGA PROGRAMA PRVE STOPNJE JURE CEROVŠEK FAKULTETA ZA INFORMACIJSKE ŠTUDIJE V NOVEM MESTU

More information

Matija Lovrić VPELJAVA GEST Z MIŠKO IN NADGRADNJA FUNKCIONALNOSTI KLASIČNEGA UPORABNIŠKEGA VMESNIKA

Matija Lovrić VPELJAVA GEST Z MIŠKO IN NADGRADNJA FUNKCIONALNOSTI KLASIČNEGA UPORABNIŠKEGA VMESNIKA UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Matija Lovrić VPELJAVA GEST Z MIŠKO IN NADGRADNJA FUNKCIONALNOSTI KLASIČNEGA UPORABNIŠKEGA VMESNIKA DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM

More information

ALI UPORABLJAŠ MAPO UČNIH DOSEŽKOV?

ALI UPORABLJAŠ MAPO UČNIH DOSEŽKOV? ŠOLSKI CENTER VELENJE ELEKTRO IN RAČUNALNIŠKA ŠOLA Trg mladosti 3, 3320 Velenje MLADI RAZISKOVALCI ZA RAZVOJ ŠALEŠKE DOLINE RAZISKOVALNA NALOGA ALI UPORABLJAŠ MAPO UČNIH DOSEŽKOV? Tematsko področje: interdisciplinarno

More information

PRENOVA PROCESA REALIZACIJE KUPČEVIH NAROČIL V PODJETJU STEKLARNA ROGAŠKA d.d.

PRENOVA PROCESA REALIZACIJE KUPČEVIH NAROČIL V PODJETJU STEKLARNA ROGAŠKA d.d. UNIVERZA V MARIBORU FAKULTETA ZA ORGANIZACIJSKE VEDE Smer organizacija in management delovnih procesov PRENOVA PROCESA REALIZACIJE KUPČEVIH NAROČIL V PODJETJU STEKLARNA ROGAŠKA d.d. Mentor: izred. prof.

More information

Kako ustvariti in vzdrževati kazalo vsebine

Kako ustvariti in vzdrževati kazalo vsebine Kako ustvariti in vzdrževati kazalo vsebine Kako ustvariti in vzdrževati kazalo vsebine Različica 0.2 Prva izdaja: Januar 2004 Prva angleška izdaja: Januar 2004 Vsebina Pregled...3 O tem vodniku...3 Konvencije

More information

Tehnologiji RFID in NFC in njuna uporaba

Tehnologiji RFID in NFC in njuna uporaba Univerza v Ljubljani Fakulteta za računalništvo in informatiko Matej Žebovec Tehnologiji RFID in NFC in njuna uporaba DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA

More information

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE CJENOVNIK KABLOVSKA TV Za zasnivanje pretplatničkog odnosa za korištenje usluga kablovske televizije potrebno je da je tehnički izvodljivo (mogude) priključenje na mrežu Kablovskih televizija HS i HKBnet

More information

UNIVERZA V LJUBLJANI VREDNOTENJE SPLETNIH PREDSTAVITEV NA TEMO VZAJEMNIH SKLADOV

UNIVERZA V LJUBLJANI VREDNOTENJE SPLETNIH PREDSTAVITEV NA TEMO VZAJEMNIH SKLADOV UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO VREDNOTENJE SPLETNIH PREDSTAVITEV NA TEMO VZAJEMNIH SKLADOV Ljubljana, november 2005 TAJKA ŽAGAR IZJAVA Študentka Tajka Žagar izjavljam, da sem avtorica

More information

72 prvo. STROKOVNE INFORMACIJE strokovne informacije. četrtletje

72 prvo. STROKOVNE INFORMACIJE strokovne informacije.  četrtletje Uvodnik Nekaj paberkov iz zgodovine proizvodnje pigmenta titanovega(iv) oksida in kaj je iz dveh majhnih tovarnic nastalo Priprava in vsebina strani Vodenje in motiviranje zaposlenih za varčevanje z energijo

More information

Jamova cesta Ljubljana, Slovenija Jamova cesta 2 SI 1000 Ljubljana, Slovenia

Jamova cesta Ljubljana, Slovenija   Jamova cesta 2 SI 1000 Ljubljana, Slovenia Univerza v Ljubljani Fakulteta za gradbeništvo in geodezijo University of Ljubljana Faculty of Civil and Geodetic Engineering Jamova cesta 2 1000 Ljubljana, Slovenija http://www3.fgg.uni-lj.si/ Jamova

More information

ORGANIZACIJSKA KLIMA V BOHINJ PARK EKO HOTELU

ORGANIZACIJSKA KLIMA V BOHINJ PARK EKO HOTELU UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO ORGANIZACIJSKA KLIMA V BOHINJ PARK EKO HOTELU Ljubljana, december 2011 MAJA BELIMEZOV IZJAVA Študentka Maja Belimezov izjavljam, da sem avtorica

More information

VODENJE IN USPEŠNOST PODJETIJ

VODENJE IN USPEŠNOST PODJETIJ B&B VIŠJA STROKOVNA ŠOLA Program: Poslovni sekretar VODENJE IN USPEŠNOST PODJETIJ Mentorica: mag. Marina Trampuš, univ. dipl. org Lektorica: Andreja Tasič Kandidatka: Sabina Hrovat Kranj, september 2008

More information

NAVODILA ZA PREŽIVETJE

NAVODILA ZA PREŽIVETJE TEST HOFERJEVEGA MOBILNEGA PAKETA WIFI2GO Z DVD! ISSN 1318-1017 ZABAVNA ELEKTRONIKA I RAČUNALNIŠTVO I NOVE TEHNOLOGIJE JANUAR 2018 U LETNIK 28, ŠTEVILKA 1 U WWW.MONITOR.SI CENA: 6,65 EUR BITCOIN, NAVODILA

More information

Poglavje 8. QCAD - 2D prostorsko načrtovanje. CAD orodja Računalniško načrtovanje Primer: 2D načrtovanje skladiščnega prostora

Poglavje 8. QCAD - 2D prostorsko načrtovanje. CAD orodja Računalniško načrtovanje Primer: 2D načrtovanje skladiščnega prostora Poglavje 8 QCAD - 2D prostorsko načrtovanje CAD orodja Računalniško načrtovanje Primer: 2D načrtovanje skladiščnega prostora 180 QCAD - 2D prostorsko načrtovanje 8.1 Teoretično ozadje Na trgu obstaja veliko

More information

Analiza primernosti CRM produkta za potrebe invalidske organizacije

Analiza primernosti CRM produkta za potrebe invalidske organizacije Univerza v Ljubljani Fakulteta za računalništvo in informatiko David Jeras Analiza primernosti CRM produkta za potrebe invalidske organizacije DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: doc. dr.

More information

Kvalitativna raziskava med učitelji in ravnatelji

Kvalitativna raziskava med učitelji in ravnatelji Kvalitativna raziskava med učitelji in ravnatelji avtorji: Katja Prevodnik Ljubljana, november 2008 CMI Center za metodologijo in informatiko FDV Fakulteta za družbene vede, Univerza v Ljubljani e-mail:

More information

Paradoks zasebnosti na Facebooku

Paradoks zasebnosti na Facebooku UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Jernej Istenič Paradoks zasebnosti na Facebooku Diplomsko delo Ljubljana, 2012 UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Jernej Istenič Mentor: doc.

More information

KONCEPT INFORMACIJSKEGA SISTEMA ZA UPORABO NADGRAJENE RESNIČNOSTI IN BIM-a NA GRADBIŠČU

KONCEPT INFORMACIJSKEGA SISTEMA ZA UPORABO NADGRAJENE RESNIČNOSTI IN BIM-a NA GRADBIŠČU UNIVERZA V MARIBORU FAKULTETA ZA GRADBENIŠTVO David Polanec KONCEPT INFORMACIJSKEGA SISTEMA ZA UPORABO NADGRAJENE RESNIČNOSTI IN BIM-a NA GRADBIŠČU Magistrsko delo Maribor, junij 2014 Koncept informacijskega

More information

Mihael PETEK. Mentorica:

Mihael PETEK. Mentorica: i FAKULTETA ZA ELEKTROTEHNIKO, UNIVERZA V MARIBORU RAČUNALNIŠTVO IN INFORMATIKO 2000 Maribor, Smetanova ul. 17 Diplomska naloga visokošolskega strokovnega študijskega programa KONFIGURIRANJE IN UPORABA

More information

UPORABA PODATKOVNEGA RUDARJENJA PRI ODKRIVANJU NEZAŽELENE ELEKTRONSKE POŠTE

UPORABA PODATKOVNEGA RUDARJENJA PRI ODKRIVANJU NEZAŽELENE ELEKTRONSKE POŠTE UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO UPORABA PODATKOVNEGA RUDARJENJA PRI ODKRIVANJU NEZAŽELENE ELEKTRONSKE POŠTE Ljubljana, junij 2003 BLAŽ KONIČ IZJAVA Študent BLAŽ KONIČ izjavljam,

More information

Razvoj informacijskega sistema Lisjak

Razvoj informacijskega sistema Lisjak UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Špela Uranič Razvoj informacijskega sistema Lisjak DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDIJU Mentor: doc. dr. Rok Rupnik Ljubljanja,

More information

Boštjan Kodre. Prenos namizne igralniške aplikacije na mobilno platformo

Boštjan Kodre. Prenos namizne igralniške aplikacije na mobilno platformo UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Boštjan Kodre Prenos namizne igralniške aplikacije na mobilno platformo DIPLOMSKO DELO NA VISOKOŠOLSKEM STROKOVNEM ŠTUDIJU Mentor: dr. Igor

More information

NADGRADNJA INFORMACIJSKEGA SISTEMA NACIONALNEGA STORITVENEGA CENTRA CARINSKE UPRAVE

NADGRADNJA INFORMACIJSKEGA SISTEMA NACIONALNEGA STORITVENEGA CENTRA CARINSKE UPRAVE UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Jani Poljšak NADGRADNJA INFORMACIJSKEGA SISTEMA NACIONALNEGA STORITVENEGA CENTRA CARINSKE UPRAVE DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI

More information

Trening z uporabo navidezne resničnosti

Trening z uporabo navidezne resničnosti Univerza v Ljubljani Fakulteta za računalništvo in informatiko Blaž Česnik Trening z uporabo navidezne resničnosti DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA

More information

UNIVERZA V MARIBORU FAKULTETA ZA ORGANIZACIJSKE VEDE. Magistrsko delo

UNIVERZA V MARIBORU FAKULTETA ZA ORGANIZACIJSKE VEDE. Magistrsko delo UNIVERZA V MARIBORU FAKULTETA ZA ORGANIZACIJSKE VEDE SISTEM KAKOVOSTI ZA MALA PODJETJA Mentor: izr. prof. dr. Janez Marolt Kandidatka: Martina Smolnikar Kranj, december 2007 ZAHVALA Zahvaljujem se mentorju,

More information

NAGRAJEVANJE ZAPOSLENIH KOT NAČIN MOTIVIRANJA V PODJETJU DIAMANT REWARDS OF EMPLOYEES AS A MOTIVATIONAL FACTOR IN COMPANY DIAMANT

NAGRAJEVANJE ZAPOSLENIH KOT NAČIN MOTIVIRANJA V PODJETJU DIAMANT REWARDS OF EMPLOYEES AS A MOTIVATIONAL FACTOR IN COMPANY DIAMANT UNIVERZA V MARIBORU EKONOMSKO-POSLOVNA FAKULTETA MARIBOR DIPLOMSKO DELO NAGRAJEVANJE ZAPOSLENIH KOT NAČIN MOTIVIRANJA V PODJETJU DIAMANT REWARDS OF EMPLOYEES AS A MOTIVATIONAL FACTOR IN COMPANY DIAMANT

More information

PRIMERJAVA BORZNIH TRGOVALNIH INFORMACIJSKIH SISTEMOV BTS IN XETRA

PRIMERJAVA BORZNIH TRGOVALNIH INFORMACIJSKIH SISTEMOV BTS IN XETRA UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Gregor Malenšek PRIMERJAVA BORZNIH TRGOVALNIH INFORMACIJSKIH SISTEMOV BTS IN XETRA DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Krmilnik za morski akvarij

Krmilnik za morski akvarij UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andrej Virant Krmilnik za morski akvarij DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJ RAČUNALNIŠTVO IN INFORMATIKA Ljubljana, 2014 UNIVERZA V LJUBLJANI

More information

RAZISKAVA O EKONOMIJI DELITVE

RAZISKAVA O EKONOMIJI DELITVE RAZISKAVA O EKONOMIJI DELITVE V pričujočem prispevku sem povzel ključne ugotovitve raziskave o ekonomiji delitve v Sloveniji, ki sem jo izpeljal v okviru svoje magistrske naloge z naslovom Inovativni podjetniški

More information

UNIVERZA V NOVI GORICI POSLOVNO-TEHNIŠKA FAKULTETA. UPRAVLJANJE SISTEMA MyHome Z APLIKACIJO imyhome DIPLOMSKO DELO. Bojan Gulič

UNIVERZA V NOVI GORICI POSLOVNO-TEHNIŠKA FAKULTETA. UPRAVLJANJE SISTEMA MyHome Z APLIKACIJO imyhome DIPLOMSKO DELO. Bojan Gulič UNIVERZA V NOVI GORICI POSLOVNO-TEHNIŠKA FAKULTETA UPRAVLJANJE SISTEMA MyHome Z APLIKACIJO imyhome DIPLOMSKO DELO Bojan Gulič Mentorica: viš. pred. dr. Maja Bračič Lotrič Nova Gorica, 2012 NASLOV Upravljanje

More information

GO. (Primer iz prakse) Vloga: BPM, CEO, CIO, BA

GO. (Primer iz prakse) Vloga: BPM, CEO, CIO, BA mag. Andrej Guštin 3..2..1..GO (Primer iz prakse) Povzetek: 3 celine in države, 2 vsebinski predavanji, en predavatelj. Go! Jesen leta 2017 sem obiskal in predaval na treh največjih konferencah poslovne

More information

Elementi implementacije spletne trgovine

Elementi implementacije spletne trgovine UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Rok Avbar Elementi implementacije spletne trgovine DIPLOMSKO DELO VISOKOŠOLSKEGA STROKOVNEGA ŠTUDIJA Mentor: doc. dr. Janez Demšar LJUBLJANA,

More information

UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE

UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Maja Janškovec Sodobne dileme in priložnosti ustvarjalnega gospodarstva Diplomsko delo Ljubljana, 2012 UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Maja

More information

ŠOLSKI CENTER ZA POŠTO, EKONOMIJO IN TELEKOMUNIKACIJE LJUBLJANA

ŠOLSKI CENTER ZA POŠTO, EKONOMIJO IN TELEKOMUNIKACIJE LJUBLJANA ŠOLSKI CENTER ZA POŠTO, EKONOMIJO IN TELEKOMUNIKACIJE LJUBLJANA VIŠJA STROKOVNA ŠOLA DIPLOMSKA NALOGA MARKO KOVAČ Ljubljana, november 2008 ŠOLSKI CENTER ZA POŠTO, EKONOMIJO IN TELEKOMUNIKACIJE LJUBLJANA

More information

KAKO ZAPOSLENI V PODJETJU DOMEL D.D. SPREJEMAJO UVAJANJE SISTEMA 20 KLJUČEV

KAKO ZAPOSLENI V PODJETJU DOMEL D.D. SPREJEMAJO UVAJANJE SISTEMA 20 KLJUČEV UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO KAKO ZAPOSLENI V PODJETJU DOMEL D.D. SPREJEMAJO UVAJANJE SISTEMA 20 KLJUČEV Ljubljana, junij 2003 MATEJ DEBELJAK IZJAVA Študent Matej Debeljak izjavljam,

More information

Izbrana poglavja iz sodobne teorije organizacije Klasična teorija organizacije

Izbrana poglavja iz sodobne teorije organizacije Klasična teorija organizacije Univerza na Primorskem Fakulteta za management 1 Dr. Cene Bavec Izbrana poglavja iz sodobne teorije organizacije Klasična teorija organizacije (nelektorirana delovna verzija) Koper, marec 2004 2 1. UVOD...3

More information

DIPLOMSKO DELO MOTIVACIJA ZAPOSLENIH V PODJETJU GOOGLE

DIPLOMSKO DELO MOTIVACIJA ZAPOSLENIH V PODJETJU GOOGLE UNIVERZA V MARIBORU EKONOMSKO-POSLOVNA FAKULTETA, MARIBOR DIPLOMSKO DELO MOTIVACIJA ZAPOSLENIH V PODJETJU GOOGLE (EMPLOYEE MOTIVATION IN GOOGLE COMPANY) Študent: Niko Grkinič Študent rednega študija Številka

More information

UČINKI VKLJUČEVANJA PODJETIJ V PANOŽNE KOMPETENČNE CENTRE

UČINKI VKLJUČEVANJA PODJETIJ V PANOŽNE KOMPETENČNE CENTRE UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA MAGISTRSKO DELO UČINKI VKLJUČEVANJA PODJETIJ V PANOŽNE KOMPETENČNE CENTRE Ljubljana, december 2013 TAJA ŽUNA IZJAVA O AVTORSTVU Spodaj podpisana Taja Žuna, študentka

More information

OPREDELJEVANJE CILJNIH TRGOV ZA BODOČE ZDRAVILIŠČE RIMSKE TOPLICE

OPREDELJEVANJE CILJNIH TRGOV ZA BODOČE ZDRAVILIŠČE RIMSKE TOPLICE UNIVERZA V MARIBORU EKONOMSKO-POSLOVNA FAKULTETA MARIBOR DIPLOMSKO DELO OPREDELJEVANJE CILJNIH TRGOV ZA BODOČE ZDRAVILIŠČE RIMSKE TOPLICE Kandidatka: Andreja Pfeifer Študentka rednega študija Številka

More information

Priprava slikovnega gradiva in stavnice s programom SMART Notebook. Preparing Images and Beting with the Program SMART Notebook

Priprava slikovnega gradiva in stavnice s programom SMART Notebook. Preparing Images and Beting with the Program SMART Notebook INFORMACIJSKA DRUŽBA IS 2010 15. oktober 2010 VZGOJA IN IZOBRAŽEVANJE V INFORMACIJSKI DRUŽBI Priprava slikovnega gradiva in stavnice s programom SMART Notebook Preparing Images and Beting with the Program

More information

UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA MAGISTRSKO DELO EVALVACIJA ORODIJ ZA AVTOMATSKO TESTIRANJE TELEKOMUNIKACIJSKE OPREME

UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA MAGISTRSKO DELO EVALVACIJA ORODIJ ZA AVTOMATSKO TESTIRANJE TELEKOMUNIKACIJSKE OPREME UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA MAGISTRSKO DELO EVALVACIJA ORODIJ ZA AVTOMATSKO TESTIRANJE TELEKOMUNIKACIJSKE OPREME Ljubljana, oktober 2005 Vladimir Ljevaja IZJAVA Študent Vladimir Ljevaja izjavljam,

More information

Spletne ankete so res poceni?

Spletne ankete so res poceni? Spletne ankete so res poceni? Dr. Vasja Vehovar, FDV info@ris.org Internet v letu 2001 Leto največjega večanja števila uporabnikov Letna stopnja rast okoli 40% 350.000 (jan. 2001) 500.00 (jan. 2002) Gospodinjstva:

More information

UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO KLEMEN ŠTER

UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO KLEMEN ŠTER UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO KLEMEN ŠTER UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO ANALIZA PROCESA MANAGEMENTA PO TEMELJNIH FUNKCIJAH V PODJETJU SAVA TIRES d. o.

More information

REORGANIZACIJA PROIZVODNJE V MANJŠEM MIZARSKEM PODJETJU PO METODI 20 KLJUČEV S POUDARKOM NA UVAJANJU KLJUČEV ŠT. 1 IN 14

REORGANIZACIJA PROIZVODNJE V MANJŠEM MIZARSKEM PODJETJU PO METODI 20 KLJUČEV S POUDARKOM NA UVAJANJU KLJUČEV ŠT. 1 IN 14 UNIVERZA V LJUBLJANI BIOTEHNIŠKA FAKULTETA ODDELEK ZA LESARSTVO Uroš NEDELJKO REORGANIZACIJA PROIZVODNJE V MANJŠEM MIZARSKEM PODJETJU PO METODI 20 KLJUČEV S POUDARKOM NA UVAJANJU KLJUČEV ŠT. 1 IN 14 DIPLOMSKO

More information

Nadgradnja kartografskih baz za potrebe navigacijskih sistemov

Nadgradnja kartografskih baz za potrebe navigacijskih sistemov Univerza v Ljubljani Fakulteta za gradbeništvo in geodezijo Jamova 2 1000 Ljubljana, Slovenija telefon (01) 47 68 500 faks (01) 42 50 681 fgg@fgg.uni-lj.si Visokošolski program Geodezija, Smer za prostorsko

More information

PRENOVA SISTEMA OSEBNEGA KLICA Renovation of the Paging System

PRENOVA SISTEMA OSEBNEGA KLICA Renovation of the Paging System PRENOVA SISTEMA OSEBNEGA KLICA Renovation of the Paging System Marko Podberšič* UDK 621.395.92:614.8(497.4) Povzetek Članek opisuje prenovo sistema osebnega klica. Izvedena bo postopoma. Stari in novi

More information

VSŠ VIŠJA STROKOVNA ŠOLA MARIBOR

VSŠ VIŠJA STROKOVNA ŠOLA MARIBOR VSŠ VIŠJA STROKOVNA ŠOLA MARIBOR DIPLOMSKA NALOGA ROBERT HORVAT Maribor 2007 DOBA EVROPSKO POSLOVNO IZOBRAŽEVALNO SREDIŠČE VSŠ VIŠJA STROKOVNA ŠOLA MARIBOR PREDLOG IZBOLJŠAV AVTOMATIZIRANEGA PISARNIŠKEGA

More information

coop MDD Z VAROVANIMI OBMOČJI DO BOLJŠEGA UPRAVLJANJA EVROPSKE AMAZONKE

coop MDD Z VAROVANIMI OBMOČJI DO BOLJŠEGA UPRAVLJANJA EVROPSKE AMAZONKE obnovljen za prihodnje generacije IMPRESUM Fotografije Goran Šafarek, Mario Romulić, Frei Arco, Produkcija WWF Adria in ZRSVN, 1, 1. izvodov Kontakt Bojan Stojanović, Communications manager, Kontakt Magdalena

More information

Ravnanje s človeškimi viri na primeru zdraviliškega

Ravnanje s človeškimi viri na primeru zdraviliškega UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE Saša Ogrizek Ravnanje s človeškimi viri na primeru zdraviliškega turizma Magistrsko delo Ljubljana, 2012 UNIVERZA V LJUBLJANI FAKULTETA ZA DRUŽBENE VEDE

More information

UPORABA RAČUNALNIŠKIH PROGRAMOV ZA KONSTRUIRANJE IN OBLIKOVANJE V SLOVENSKIH LESNIH PODJETJIH

UPORABA RAČUNALNIŠKIH PROGRAMOV ZA KONSTRUIRANJE IN OBLIKOVANJE V SLOVENSKIH LESNIH PODJETJIH UNIVERZA V LJUBLJANI BIOTEHNIŠKA FAKULTETA ODDELEK ZA LESARSTVO Dejan MAVER UPORABA RAČUNALNIŠKIH PROGRAMOV ZA KONSTRUIRANJE IN OBLIKOVANJE V SLOVENSKIH LESNIH PODJETJIH DIPLOMSKO DELO Visokošolski strokovni

More information

Copyright po delih in v celoti FDV 2012, Ljubljana. Fotokopiranje in razmnoževanje po delih in v celoti je prepovedano. Vse pravice pridržane.

Copyright po delih in v celoti FDV 2012, Ljubljana. Fotokopiranje in razmnoževanje po delih in v celoti je prepovedano. Vse pravice pridržane. UPRAVLJANJE ČLOVEŠKIH VIROV V UPRAVI Miro Haček in Irena Bačlija Izdajatelj FAKULTETA ZA DRUŽBENE VEDE Za založbo Hermina Krajnc Ljubljana 2012 Copyright po delih in v celoti FDV 2012, Ljubljana. Fotokopiranje

More information

Zahvala Zahvaljujem se mentorju doc. dr. Boštjanu Murovcu za nadvse koristne nasvete, pripombe, napotke ter potrpežljivo pregledovanje diplomskega del

Zahvala Zahvaljujem se mentorju doc. dr. Boštjanu Murovcu za nadvse koristne nasvete, pripombe, napotke ter potrpežljivo pregledovanje diplomskega del UNIVERZA V LJUBLJANI FAKULTETA ZA ELEKTROTEHNIKO Tilen Mokič Uvedba sledljivosti izdelkov v proizvodnji Iskratel Electronics DIPLOMSKO DELO UNIVERZITETNEGA ŠTUDIJA Mentor: doc. dr. Boštjan Murovec Ljubljana,

More information

Z GEOMATIKO DO ATRAKTIVNEJŠEGA PODEŽELJA

Z GEOMATIKO DO ATRAKTIVNEJŠEGA PODEŽELJA Projekt GRISI PLUS, program Interreg IVC Geomatics Rural Information Society Initiative PLUS Seminar: Z GEOMATIKO DO ATRAKTIVNEJŠEGA PODEŽELJA Gornja Radgona, AGRA 2014 28. avgust 2014 Projekt GRISI PLUS

More information

Spletne ankete in uvoz v Limesurvey

Spletne ankete in uvoz v Limesurvey (Priročnik za ravnatelje) Avtorji: Mojca Berce, Janko Harej, Primož Štekar, Dušan Klemenčič Ljubljana, februar 2012 Kazalo 1 SPLETNO ANKETIRANJE...3 1.1 Analiza podatkov...3 1.2 Anketa mora biti:...3 2

More information

RAZVOJ KONCEPTA UČEČE SE ORGANIZACIJE V SLOVENIJI

RAZVOJ KONCEPTA UČEČE SE ORGANIZACIJE V SLOVENIJI REPUBLIKA SLOVENIJA UNIVERZA V MARIBORU EKONOMSKO-POSLOVNA FAKULTETA Magistrsko delo RAZVOJ KONCEPTA UČEČE SE ORGANIZACIJE V SLOVENIJI Kandidat: Dejan Kelemina, dipl.oec, rojen leta, 1983 v kraju Maribor

More information

Informacijski sistem za podporo gospodarjenju z javnimi zelenimi površinami v urbanem okolju

Informacijski sistem za podporo gospodarjenju z javnimi zelenimi površinami v urbanem okolju Univerza v Ljubljani Fakulteta za gradbeništvo in geodezijo Jamova 2 1000 Ljubljana, Slovenija telefon (01) 47 68 500 faks (01) 42 50 681 fgg@fgg.uni-lj.si Podiplomski program Gradbeništvo Komunalna smer

More information

Uporabniški priročnik NiceLabel Pro

Uporabniški priročnik NiceLabel Pro www.nicelabel.com, info@nicelabel.com Uporabniški priročnik NiceLabel Pro Slovenska izdaja Rev-1011 2011 Euro Plus d.o.o. Pravice pridržane Euro Plus d.o.o. Poslovna cona A 2 SI-4208 Šenčur, Slovenia tel.:

More information

V šestem delu podajam zaključek glede na raziskavo, ki sem jo izvedel, teorijo in potrjujem svojo tezo.

V šestem delu podajam zaključek glede na raziskavo, ki sem jo izvedel, teorijo in potrjujem svojo tezo. UVOD Oglaševanje je eno izmed najpomembnejših tržno-komunikacijskih orodij sodobnih podjetij, nemalokrat nujno za preživetje tako velikih kot malih podjetij. Podjetja se pri izvajanju oglaševanja srečujejo

More information

vozni red / timetable 1 Vozni red letov velja Flight Timetable

vozni red / timetable 1 Vozni red letov velja Flight Timetable vozni red / timetable 1 Vozni red letov velja 29.10.2017-24.03.2018 Flight Timetable valid 29.10.2017-24.03.2018 2 vozni red / timetable LEGENDA LEGEND REDNI PREVOZNIKI / SCHEDULED AIRLINES AF AIR FRANCE

More information

STRES NA DELOVNEM MESTU V PODJETJU POTEZA D.D.

STRES NA DELOVNEM MESTU V PODJETJU POTEZA D.D. UNIVERZA V LJUBLJANI EKONOMSKA FAKULTETA DIPLOMSKO DELO STRES NA DELOVNEM MESTU V PODJETJU POTEZA D.D. Ljubljana, junij 2011 MARKO TRAJBER IZJAVA Študent Marko Trajber izjavljam, da sem avtor tega diplomskega

More information

RAZISKAVA ZADOVOLJSTVA IN MOTIVIRANOSTI ZAPOSLENIH V IZBRANEM PODJETJU

RAZISKAVA ZADOVOLJSTVA IN MOTIVIRANOSTI ZAPOSLENIH V IZBRANEM PODJETJU UNIVERZA V LJUBLJANI FAKULTETA ZA UPRAVO Diplomsko delo RAZISKAVA ZADOVOLJSTVA IN MOTIVIRANOSTI ZAPOSLENIH V IZBRANEM PODJETJU Sara Skok Ljubljana, maj 2017 UNIVERZA V LJUBLJANI FAKULTETA ZA UPRAVO DIPLOMSKO

More information