• Rezultati Niso Bili Najdeni

Razvoj uporabniˇ skih vmesnikov za razliˇ cne naprave z uporabo ogrodja

N/A
N/A
Protected

Academic year: 2022

Share "Razvoj uporabniˇ skih vmesnikov za razliˇ cne naprave z uporabo ogrodja"

Copied!
91
0
0

Celotno besedilo

(1)

Univerza v Ljubljani

Fakulteta za raˇ cunalniˇ stvo in informatiko Fakulteta za elektrotehniko

Martin Kozmelj

Razvoj uporabniˇ skih vmesnikov za razliˇ cne naprave z uporabo ogrodja

Qt

MAGISTRSKO DELO

MAGISTRSKI ˇSTUDIJSKI PROGRAM DRUGE STOPNJE MULTIMEDIJA

Mentor : doc. dr. Marko Meˇ za

Ljubljana, 2021

(2)
(3)

Avtorske pravice. Rezultati magistrskega dela so intelektualna lastnina avtorja, Fakul- tete za raˇcunalniˇstvo in informatiko ter Fakultete za Elektrotehniko Univerze v Ljubljani.

Za objavljanje ali izkoriˇcanje rezultatov magistrskega dela je potrebno pisno soglasje av- torja, Fakultete za raˇcunalniˇstvo in informatiko, Fakultete za Elektrotehniko ter mentorja.

©2021 Martin Kozmelj

(4)
(5)

Zahvala

Najveˇcja zahvala gre mentorju doc. dr. Marku Meˇzi za pomoˇc in nasvete pri izdelavi magistrskega dela. Zahvaljujem se vsem sodelavcem v podjetju Norik Sistemi, ki so mi pomagali na podroˇcjih, ki mi doslej niso bili poznani, in so bili hkrati tudi udeleˇzenci uporabniˇskega testiranja. Zahvaljujem se Ani, ki je poskrbela, da je magistrsko delo tudi slovniˇcno pravilno. Zadnja zahvala je namenjena moji druˇzini, prijateljem in punci, ki so mi med ˇstudijem stali ob strani in me podpirali v vseh mojih odloˇcitvah.

Martin Kozmelj, 2021

(6)
(7)

Kazalo

Povzetek Abstract

1 Uvod 1

2 Pregled literature 3

2.1 Tehnologije za razvoj aplikacij za razliˇcne naprave . . . 3

2.2 Vgrajeni sistemi . . . 13

2.3 Qt . . . 16

2.4 Uporabniˇska izkuˇsnja . . . 22

3 Zasnova 29 3.1 Prototip pametnega doma . . . 29

3.2 Uporabniˇski vmesnik . . . 32

3.3 Uporabniˇska izkuˇsnja . . . 36

4 Realizacija 43 4.1 Prototip pametnega doma . . . 43

4.2 Uporabniˇski vmesnik . . . 49

5 Rezultati 53 5.1 Uporabniˇski vmesnik . . . 53

5.2 Funkcionalnosti aplikacije . . . 56

5.3 Namestitev aplikacij na koˇcne naprave . . . 56

(8)

5.4 Uporabniˇska izkuˇsnja . . . 57

6 Ugotovitve 63

6.1 Cas za razvoj in namestitev aplikacij . . . .ˇ 63 6.2 Vpliv na uporabniˇsko izkuˇsnjo . . . 64

7 Zakljuˇcek 67

A Vpraˇsalnik o uporabniˇski izkuˇsnji 69

(9)

Seznam uporabljenih kratic

kratica angleˇsko slovensko

RFID Radio Frequency IDen-

tification

radiofrekvenˇcna identi- fikacija

SDK software development

kits

paketi za razvoj ap- likacij

MDSN model driven software

development

modelno naravnan razvoj

DSL domain specific lan-

guage

domensko specifiˇcen programski jezik PWA progressive web apps progresivne spletne ap-

likacij

CRUD create, read, update,

delete

kreiraj, beri, posodobi, izbriˇsi

MAR mobile augmented re-

ality

mobilna ubogatena resniˇcnost

API application program-

ming interfaces

aplikativni programski vmesniki

GPS global positioning sys-

tem

sistem za doloˇcanje lokacije

IoT internet of things internet stvari

DSP digital signal process-

ing

digitalna obdelava sig- nalov

(10)

CAD computer-aided design pristop raˇcunalniˇskega naˇcrtovanja

XML eXtensible Markup

Language

razˇsirljiv oznaˇcevalni jezik

HAL Hardware Abstract

Layer

strojna abstraktna plast

GUI graphical user interface grafiˇcni uporabniˇski vmesnik

MOC Meta-Object Compiler prevajalnik meta ob-

jektov

TCP Transmission Control

Protocol

protokol za nadzor prometa

UDP User Datagram Proto-

col

protokol za prenaˇsanje paketov

NFC near field communica-

tion

komunikacija kratkega dosega

RTOS real time operating sys-

tem

operacijski sistem v re- alnem ˇcasu

UEQ User Experience Ques-

tionnaire

vpraˇsalnik o

uporabniˇski izkuˇsnji

LCD Liquid Crystal Display zaslon s tekoˇcimi

kristali

SSH Secure Shell protokol za upravljanje

raˇcunalnika na daljavo

APK Android application

packet

Androidov aplikacijski paket

(11)

Povzetek

Naslov: Razvoj uporabniˇskih vmesnikov za razliˇcne naprave z uporabo ogrodja Qt

Na podroˇcju razvoja programskih reˇsitev v zadnjem ˇcasu vsi procesi teme- ljijo na hitrem razvoju, ki ga pogosto povezujejo tudi z agilnimi metodami, ki so ˇze dalj ˇcasa prisotne tudi na drugih podroˇcjih. Zaradi raznolikosti naprav, ki se uporabljajo v zadnjem ˇcasu, je bilo potrebno prilagoditi tudi razvoj pro- gramskih reˇsitev. V ta namen so se zaˇcele uporabljati tehnologije za razvoj aplikacij za razliˇcne naprave, kar je precej skrajˇsalo ˇcas razvoja aplikacij in predvsem njihovega vzdrˇzevanja.

V tem magistrskem delu sta bila raziskana vpliv razvoja aplikacij za razliˇcne naprave na uporabniˇsko izkuˇsnjo in ˇcasovna uˇcinkovitost tovrstnega razvoja.

Ti dve lastnosti sta bili ugotovljeni na podlagi razvoja aplikacije za osebni raˇcunalnik, mobilni telefon in napravo Raspberry Pi, s katero se krmili pro- totip pametnega doma, ki je bil za potrebe magistrskege dela razvit na ra- zvojni ploˇsˇci ESP32. Uporabniˇska izkuˇsnja je bila izmerjena z uporabniˇskim testiranjem, kjer je 6 uporabnikov uporabljalo aplikacijo na omenjenih treh aplikacijah in nato reˇsilo kratek vpraˇsalnik o uporabniˇski izkuˇsnji.

Ugotovljeno je bilo, da razvoj aplikacij za razliˇcne naprave vpliva na upo- rabniˇsko izkuˇsnjo, saj je manj prilagajanja konˇcnim napravam, zato se po- javijo manjˇsa odstopanja pri uporabi na razliˇcnih napravah. ˇCas, ki je bil porabljen za razvoj aplikacij, je bil manjˇsi, kot bi bil pri razvoju za vsako napravo posebej, je pa namestitev na konˇcne naprave zahtevala nekoliko veˇc ˇcasa, kot je bilo predvideno.

(12)

uporabniˇski vmesniki, aplikacije za razliˇcne naprave, vgrajeni sistemi, upo- rabniˇska izkuˇsnja, ogrodje Qt

(13)

Abstract

Title: Development of user interfaces for cross-platform applications with Qt

Software solutions have to be developed as fast as possible due to changes in the IT sector. Companies use agile methods to achieve rapid development.

There are a lot of different devices being used in our everyday lives and soft- ware development has to adapt to cover all of these devices. Cross-platform development allows developers to develop solutions quicker and these solu- tions are then easier to maintain.

The main goal of this thesis was answering two questions: how cross-platform development is influencing user experience and whether the use of cross- platform technologies really shortens the development process. This ques- tions were answered by developing cross-platform application that ran on a personal computer, mobile phone, and Raspberry Pi. With this application, user can control the prototype of a smart home that was developed on de- velopment board ESP32. For measuring user experience a user testing with 6 users was done. All users tested all three applications and they filled out a user questionnaire.

As it turned out cross-platform did have an influence on user experience as there were smaller irregularities that would not have been present if software would be developed for each device. The time that was used for development was shorter but installation to devices took more time than it was predicted.

(14)

user interfaces, cross-platform applications, embedded systems, user experi- ence, Qt framework

(15)

Poglavje 1 Uvod

V svetu informacijsko komunikacijskih tehnologij je v zadnjem ˇcasu pora- slo ˇstevilo naprav, ki se uporabljajo v vsakdanjem ˇzivljenju. ˇZe v 80. letih prejˇsnjega stoletja so se na trgu pojavili osebni raˇcunalniki in prvi prenosni telefoni. V zaˇcetku tega stoletja so se lahko prenosni telefoni povezali tudi v splet. Veliko prelomnico pa predstavlja tudi leto 2007, ko je Steve Jobs oziroma podjetje Apple predstavilo svojo novo napravo Iphone [1], [2]. Od leta 2007 naprej se je razvoj pametnih telefonov pospeˇsil in danes ima skoraj polovica svetovne populacije pametni telefon [3]. ˇZe leta 1999 se je v litera- turi zaˇcelo omenjati pojem internet stvar, ki je bil sprva namenjen predvsem za promocijo ˇcipov za radiofrekvenˇcno identifikacijo ali krajˇse RFID. ˇsele okrog leta 2010 pa se je pojem interneta stvari premaknil na podroˇcje osta- lih brezˇziˇcnih tehnologij in leta 2014 dosegel tudi ˇsirˇsi trg [4]. Z razvojem razliˇcnih tehnologij se je poveˇcalo tudi ˇstevilo razliˇcnih naprav, ki se upora- bljajo v vsakdanjem ˇzivljenju. Ker moderni naˇcin ˇzivljenja zahteva nenehno spreminjanje in prilagajanje trendom, se je temu morala prilagoditi tudi in- dustrija informacijskih tehnologij. Programska oprema mora delovati na ˇcim ˇsirˇsem spektru razliˇcnih naprav, pri ˇcemer pa se uporabniˇska izkuˇsnja ne sme razlikovati glede na to, katero napravo uporablja doloˇcen uporabnik.

Tudi na podroˇcju uporabniˇske izkuˇsnje je eden od bolj pomembnih posa- meznikov Steve Jobs, ki je najprej revolucijo zaˇcel na podroˇcju osebnih

1

(16)

raˇcunalnikov, nadaljeval pa na podroˇcju pametnih telefonov in predvajal- nikov glasbe. Uporabniˇska izkuˇsnja je bila pomembna ˇze precej pred ˇcasom Steva Jobsa. Vse revolucionarne tehnologije so izboljˇsale uporabniˇsko izkuˇsnjo pri opravljanju doloˇcenih opravil. V zadnjem ˇcasu ljudje vse manj pozorno- sti namenjajo vsakdanjim opravilom, zato mora biti uporabniˇska izkuˇsnja pri uporabi aplikacij ˇcim bolj intuitivna, da uporabniku ni potrebno razmiˇsljati, kako izvesti doloˇceno akcijo [5].

Posledica hitre rasti ˇstevila razliˇcnih naprav, ki se uporabljajo, je bil tudi razvoj tehnologij za razvoj reˇsitev za razliˇcne naprave (ang. cross-platform development). Te tehnologije omogoˇcajo enoten razvoj za najrazliˇcnejˇse na- prave, od osebnih raˇcunalnikov, pametnih telefonov, vgrajenih sistemov, vse do nosljivih naprav. Takˇsen razvoj je hitrejˇsi kot razvoj za vsako napravo posebej. Zaradi razlik med omenjenimi napravami pa morajo razvijalci po- sebno pozornost nameniti tudi uporabniˇski izkuˇsnji, da zagotovijo ˇcim boljˇsi uporabniˇsko izkuˇsnjo na vseh napravah.

V okviru tega magistrskega dela je bila narejena ˇstudija vpliva tehnologije razvoja za razliˇcne naprave na uporabniˇsko izkuˇsnjo. Za potrebe ˇstudije je bil razvit prototip pametnega doma in aplikacija, ki je bila nato nameˇsˇcena na osebni raˇcunalnik, pametni telefon in napravo Raspberry Pi. Poleg vpliva na uporabniˇsko izkuˇsnjo, se je v ˇstudiji beleˇzil tudi ˇcas, ki je bil porabljen za doloˇceni del razvoja aplikacije.

Hipoteza 1: Razvoj za razliˇcne naprave vpliva na uporabniˇsko izkuˇsnjo.

Uporabniˇska izkuˇsnja se razlikuje glede na napravo, na kateri se aplikacija izvaja.

Hipoteza 2: Razvoj za razliˇcne naprave skrajˇsa ˇcas razvoja aplikacije.

(17)

Poglavje 2

Pregled literature

Pregled literature je razdeljen na 4 podpoglavja. V podpoglavju 2.1 so opi- sane in primerjane razliˇcne tehnologije za razvoj za razliˇcne naprave. V podpoglavju 2.2 so opisane lastnosti vgrajenih sistemov in primer uporabe tehnologije za razvoj za razliˇcne naprave na vgrajenih sistemih. V podpo- glavju 2.3 so opisane znaˇcilnosti ogrodja Qt in glavne prednosti uporabe omenjenega ogrodja. V podpoglavju 2.4 je opisan postopek merjenja upo- rabniˇske izkuˇsnje in pretekle ˇstudije vpliva uporabe tehnologij za razliˇcne naprave na uporabniˇsko izkuˇsnjo.

2.1 Tehnologije za razvoj aplikacij za razliˇ cne naprave

Prva izbira pri razvoju aplikacij so paketi za razvoj aplikacij (ang. soft- ware development kits ali krajˇse SDK), ki jih v veˇcini primerov objavljajo in vzdrˇzujejo podjetja, ki imajo v lasti tudi pripadajoˇce operacijske sisteme. Ti paketi so zasnovani tako, da je razvojna izkuˇsnja ˇcim bolj prilagojena ciljnim napravam. Uporabniˇski vmesnik vsebuje lastne elemente, ki so enaki tistim, ki se prikazujejo v privzetih aplikacijah, ki so ˇze nameˇsˇcene na napravi. Ven- dar pa je razvoj posamezne aplikacije za vsak operacijski sistem precej drag in cena razvoja naraˇsˇca sorazmerno s ˇstevilom razliˇcnih operacijskih siste-

3

(18)

mov, ki jih ˇzeli aplikacija podpreti [6].

Zaˇcetki pojavljanja tehnologij za razvoj aplikacij za razliˇcne naprave na po- droˇcju mobilnih aplikacij sega v leto 2012 [6]. Najbolj citiran ˇclanek na temo primerjave tehnologij za razvoj naprav za razliˇcne naprave pa je ˇze iz leta 2013. V ˇclanku Evaluating Frameworks for Creating Mobile Web Apps [7]

so Heitk¨otter in ostali predlagali ogrodje za primerjavo omenjenih tehnolo- gij. Med kriteriji, ki so jih avtorji izpostavili, so cena in licenca, izvedljivost na dolgi rok, dokumentacija in podpora, krivulja uˇcenja, napor pri razvoju, nadgradljivost, vzdrˇzevanje, gradniki uporabniˇskega vmesnika, lasten izgled in obˇcutek (ang. look-and-feel), ˇcas nalaganja ter uˇcinkovitost izvajanja. Za evalvacijo rezultatov so predlagali tudi primerjavo z lastnimi ali spletnimi aplikacijami, ki pokrivajo isti nabor funkcionalnosti.

Glavna prednost ogrodij za razvoj aplikacij za razliˇcne naprave je enkra- tno pisanje programske kode, ki se nato namesti (ang. deploy) na razliˇcne naprave, ki za svoje delovanje uporabljajo razliˇcne operacijske sisteme. V literaturi je razvoj aplikacij za razliˇcne naprave najpogosteje omenjen v po- vezavi z mobilnimi aplikacijami. Pri mobilnih aplikacijah so se v preteklosti uporabljale predvsem lastne (ang. native) aplikacije ali pa spletne aplika- cije, ki se izvajajo v brskalnikih. Razvoj aplikacij za razliˇcne naprave na podroˇcju mobilnih aplikacij predstavlja kompromis med obema omenjenima pristopoma [8].

Spletne aplikacije so zelo ˇsirok pojem - v glavnem se s tem pojmom opisuje vse aplikacije, ki so na voljo na spletu in sledijo arhitekturi odjemalec-streˇznik.

Veˇcina teh aplikacij nima dostopa do lastnih funkcionalnosti naprave, na ka- terih se izvaja (oziroma je dostop zelo omejen), in so odvisne od prikaza v brskalniku, ki je lahko od naprave do naprave razliˇcen. Odvisne so tudi od tehnologije Javascript, ki jo lahko uporabnik na svojem brskalniku izklopi.

V tem primeru spletna aplikacija prikaˇze samo belo stran, saj se vsebina pri- kazuje dinamiˇcno s pomoˇcjo tehnologije Javascript [6].

(19)

2.1. TEHNOLOGIJE ZA RAZVOJ APLIKACIJ ZA RAZLI ˇCNE

NAPRAVE 5

2.1.1 Delitev tehnologij za razvoj za razliˇ cne naprave

Tehnologije za razvoj aplikacij za razliˇcne naprave se v grobem delijo na dve skupini: izvajalska okolja (ang. runtime environments) in generativni pri- stopi (ang. generative approaches). Cilj slednjega je zagotoviti lastno apli- kacijo za vsako okolje, v katerem se bo aplikacija izvajala. Glede na naˇcin, kako razliˇcne tehnologije zagotovijo generiranje lastnih aplikacij iz enovite kode, lahko tehnologije razdelimo ˇse na dve skupini. Modelno naravnan pri- stopi (ang. model driven software development ali krajˇse MDSD) temelji na modelu, ki je neodvisen od okolja na katerem se aplikacija izvaja. Ponavadi ta pristop uporablja tekstualen, redkeje pa tudi grafiˇcen domensko specifiˇcen programski jezik (ang. domain-specific language ali krajˇse DSL), ki opisuje aplikacijo. Drugi pristop so pretvorniki (ang. transpilers), ki izvorno kodo, ki je napisana za eno okolje, prevedejo v lastno kodo za drugo okolje. Na- sprotno od teh pristopov pa tehnologije, ki ne generirajo lastnih aplikacij, temeljijo na izvajalskem okolju, ki predstavlja most med aplikacijo in oko- ljem, v katerem se le ta izvaja. Mobilne spletne aplikacije za svoje delovanje uporabljajo brskalnik, ki ga priskrbi okolje, v katerem se aplikacija izvaja.

Hibridne aplikacije so v osnovi spletne aplikacije, vendar so zavite v lasten ovoj, ki je specifiˇcen za vsako okolje, v katerem se izvaja. V primerjavi z lastnimi aplikacijami imajo hibridne aplikacije prav tako dostop do funkcio- nalnosti naprave, vendar pa imajo manj avtentiˇcen izgled in obˇcutek. Zadnja podskupina so samostojna izvajalska okolja (ang. self-contained runtime), ki so podobna hibridnim aplikacijam, vendar za svoje delovanje uporabljajo la- stne gradnike uporabniˇskega vmesnika, ki jih priskrbi operacijski sistem [6].

Poleg ˇze omenjenih pristopov se v zadnjem ˇcasu vse bolj uporablja tudi progresivne spletne aplikacije (ang. progressive web apps ali krajˇse PWA).

PWA zdruˇzujejo spletne tehnologije z vsestranskostjo lastnih aplikacij. Upo- raba PWA naj, ne bi bistveno vplivala na uˇcinkovitost in odzivnost aplikacije ( podobno kot uporaba drugih tehnologij za razvoj aplikacij za razliˇcne na- prave (podobno kot uporaba drugih tehnologij za razvoj aplikacij za razliˇcne naprave), predstavlja pa ogromen prihranek na velikosti aplikacije, saj so pri

(20)

tej tehnologiji aplikacije precej manjˇse kot lastne aplikacije z enakim nabo- rom funkcionalnosti [6].

PWA za svoje delovanje uporabljajo posebne brskalnike, ki podpirajo teh- nologijo PWA in omogoˇcajo spletnim aplikacijam, da izgledajo kot lastne aplikacije. Objaviti jih je mogoˇce v spletnih trgovinah z aplikacijami, ki so privzeto naloˇzene na mobilnih napravah. Glavna razlika med navadno spletno stranjo oziroma aplikacijo in PWA je v dodatni funkcionalnosti in uporabniˇski izkuˇsnji, saj uporabniku ni potrebno odpreti brskalnika, vnesti URL naslova in ˇcakati, da se vsebina naloˇzi. Pri PWA uporabnik klikne na ikono aplikacije na namizju in stran se mu prikaˇze. Pri prvem obisku aplika- cije sicer traja nekaj ˇcasa, da se vsebina aplikacije naloˇzi, medtem ko je za vse naslednje obiske vsebina takoj vidna, kar omogoˇca shranjevanje HTML, CSS, Javascript, slikovnih in tipografskih datotek v predpomnilnik. Ta funk- cionalnost omogoˇca uporabo PWA tudi v ˇcasu, ko naprava nima dostopa do interneta, oziroma je hitrost te povezave zelo nizka. Razliko v uporabniˇski izkuˇsnji tehnologija PWA naredi s skrivanjem glavnih gradnikov brskalnika, kot so ukazna vrstica in akcijski gumbi, kar daje aplikaciji bolj avtentiˇcen izgled in jo pribliˇza lastnim aplikacijam. Ce je PWA dobro zasnovana inˇ oblikovana, jo je precej teˇzko loˇciti od lastne aplikacije [6].

2.1.2 Primerjava tehnologij

V literaturi najdemo veˇc razliˇcnih primerjav posameznih ogrodij za razvoj aplikacij za razliˇcne naprave. V ˇclanku Bridging the Gap: Investigating Device-Feature Exposure in Cross-Platform Development [9] sta Biørn-Hansen in Ghinea primerjala dva razliˇcna pristopa razvoja aplikacij za razliˇcne na- prave. Natanˇcneje sta primerjala, kako omenjena razvoja dostopata do la- stnih funkcionalnosti mobilnih naprav, kot so dostop do kamere, imenika, galerije, itd. Ta dva pristopa sta hibridni in interpreterski ter sta ˇze bila opi- sana v prejˇsnjem poglavju. Avtorja omenita tudi pristop navzkriˇznega preva- janja (ang. Cross-Compiled), komponentno zasnovanega (ang. Component- Based) in modelno vodenega pristopa (ang. Model-Driven), ki pa jih v svojo

(21)

2.1. TEHNOLOGIJE ZA RAZVOJ APLIKACIJ ZA RAZLI ˇCNE

NAPRAVE 7

ˇstudijo nista aktivno vkljuˇcila, saj ju je zanimalo predvsem, kako razliˇcni pristopi implementirajo osnovne funkcionalnosti naprav s pomoˇcjo mostov (ang. bridge), ki pa jih ti pristopi ne uporabljajo.

Kot glavno razliko med hibridnim in interpreterskim naˇcinom Biørn-Hansen in Ghinea izpostavljata uporabo lastne ˇskoljke (ang. native shell) pri hibri- dnem pristopu [9]. V lastno ˇskoljko ogrodja, ki delujejo po hibridnem pri- stopu, zavijejo spletni pogled (ang. WebView). Najbolj uporabljeno orodje, ki se uporablja pri hibridnih pristopih je Cordova [10]. Pri interpreterskem pristopu se ne uporablja lastne ˇskoljke, paˇc pa ogrodja uporabljajo kar lastne gradnike (ang. native components) posameznega operacijskega sistema.

Uporaba lastne ˇskoljke oziroma orodja Cordova je glavni razlog, ki privede do 5-krat boljˇsega rezultata pri hibridnem naˇcinu, kot pa pri interpreter- skem. Za testni scenarij je bila po obeh pristopih narejena enaka aplikacija, ki je imela en gumb, s katerim je lahko uporabnik naloˇzil sliko iz galerije.

Aplikacija, ki je bila razvita z ogrodjem Ionic, ki sledi hibridnem pristopu, je v 10 ponovitvah povpreˇcno potrebovala 212.81 milisekund, medtem ko je aplikacija razvita z ogrodjem React Native, ki sledi interpreterskem pristopu, potrebovala 1156.85 milisekund [9].

Za tehnologije za razvoj aplikacij za razliˇcne naprave je pomembno, kako ogrodja uporabljajo lastne funkcionalnosti operacijskih sistemov, ki delujejo na napravah. Bolje kot je most med operacijskim sistemom in ogrodjem razvit, uˇcinkovitejˇse aplikacije lahko s takˇsnim ogrodjem razvijamo [9]. V ˇclanku Comprehensive Analysis of Innovative Cross-Platform App Develop- ment Frameworks [8] Majchrzak in ostali primerjajo ogrodja React Native, Ionic Framework in Fuse na primeru iz gospodarstva, pri ˇcemer so posebno pozornost namenili uporabniˇski izkuˇsnji (ang. user experience). Pri primer- javi ogrodij za razvoj aplikacij za razliˇcne naprave si raziskovalci pomagajo z lastnimi in spletnimi aplikacijami, ki jim sluˇzijo kot osnova pri primerjanju izgleda in uˇcinkovitosti aplikacij.

(22)

2.1.3 Lastnosti tehnologij za razvoj za razliˇ cne naprave

Razvijalci spletnih aplikacij se morajo pri razvoju drˇzati nekaterih smernic za boljˇso uporabniˇsko izkuˇsnjo. Ena od teh je eksperimentalni pristop PRPL (ang. push, render, pre-cache, lazy-load), ki se v angleˇsˇcini izgovori “pur- ple”. Ta pristop temelji na dejstvu, da so spletne aplikacije na mobilnih napravah praviloma precej poˇcasnejˇse in da je potrebno ˇcim bolj skrajˇsati ˇcas, ko postane aplikacija odzivna (ang. time to interactive), saj ima neod- zivnost precej negativen vpliv na uporabniˇsko izkuˇsnjo [6].

Pri tehnologijah za razvoj je potrebno ˇcim veˇcjo pozornost nameniti nasle- dnjim lastnostim aplikacij:

• Uporabniˇski vmesnik mora biti sestavljen iz naravnih gradnikov in mora podpirati razliˇcne postavitve za razliˇcne velikosti zaslonov.

• Moˇznost zagotovitve kontrole toka (ang. flow) in razliˇcnih oblik inte- rakcije znotraj aplikacije.

• Izgled, ki sovpada z oblikovnimi in uporabnostnimi (ang. usability) smernicami za doloˇceno okolje.

• Moˇzonst definicije podatkovnih tipov in zagotavljanje osnovnih CRUD (ang. Create, read, update, delete) operacij na napravi in arhitekturi odjemalec-streˇznik.

• Mapiranje vnosnih polj na podatkovni model, vkljuˇcujoˇc validacijo vho- dnih podatkov in moˇznost ohranjanja (ang. persist) podatkov.

• Moˇznost odzivanja na vhode, dogodke in spremembe stanja.

• Moˇznost dostopanja vsaj do osnovnih funkcionalnosti strojne opreme [6].

(23)

2.1. TEHNOLOGIJE ZA RAZVOJ APLIKACIJ ZA RAZLI ˇCNE

NAPRAVE 9

Naprave za svoje delovanje uporabljajo razliˇcne operacijske sisteme, ki zahtevajo razliˇcne pristope razvoja programske opreme oziroma aplikacij.

Razvijalci so v preteklosti praviloma za te naprave programsko kodo razvijali posebej, kar moˇcno zviˇsa stroˇske razvoja, kar je razvidno iz tabele 2.1 [11].

Tabela 2.1: Primerjava razvoja za razliˇcne in lastne naprave

Kriterij Razliˇcne naprave Lastne naprave Kvaliteta uporabniˇske

izkuˇsnje

Odliˇcna Ne tako dobra kot pri razliˇcnih napravah

Kvaliteta aplikacije Visoka Srednja

Potencialni uporabniki Stevilni - razliˇˇ cne platforme

Omejeni na specifiˇcno platformo Cena razvoja

aplikacije

Nizka Visoka

V ˇclanku Cross-platform development for an online food delivery applica- tion [11] Abid in Karim navajata, da je uporabniˇska izkuˇsnja pri uporabi teh- nologij za razvoj aplikacij za razliˇcne naprave boljˇsa kot pri razvoju naravnih aplikacij, s ˇcimer se veˇcina drugih raziskovalcev ne strinja [12], [13]. ˇSe vedno obstajajo predsodki, da se uporaba ogrodij za razvoj aplikacij za razliˇcne na- prave pozna na uˇcinkovitosti in uporabniˇski izkuˇsnji konˇcnih uporabnikov, zato so razvijalci previdni pri uvajanju tovrstnih ogrodij. Se pa zavedajo, da ti predsodki brez obseˇznejˇsih testiranj in primerjanj nimajo nobene teˇze in predstavljajo zgolj predpostavke razvijalcev in raziskovalcev. Kot slabost pri uporabi ogrodij za razvoj aplikacij za razliˇcne naprave raziskovalci omenjajo uporabniˇsko izkuˇsnjo, tehniˇcno implementacijo, uˇcinkovitost in moˇznost te- stiranja [8]. V nadaljevanju ˇclanka Abid in Karim nato zakljuˇcita, da so tehnologije za razvoj aplikacij za razliˇcne naprave boljˇse, ˇce primerjamo raz- merje cene in kvalitete (ang. cost benefit analysis) [11].

Raziskovalci se zavedajo, da je tudi razvijalˇcev pogled na ogrodje, s katerim

(24)

razvijajo aplikacije, pomemben, zato lahko v literaturi zasledimo tudi ta vidik pri primerjavi ogrodij za razvoj aplikacij za razliˇcne naprave. Pri tem vidiku so pomembni ˇcas razvoja prototipa, razvoj uporabniˇskega vmesnika (uporaba lastnih komponent), dostop do lastnih funkcionalnost naprave (npr. kamera, imenik, galerija) in hitrost uˇcenja posamezne tehnologije oziroma program- skega jezika, na katerem je ogrodje zasnovano [8].

Ceprav tehnologije za razvoj aplikacij za razliˇˇ cne naprave praviloma zahte- vajo manj uˇcenja novih tehnologij, niˇzje stroˇske razvoja in hitrejˇso distri- bucijo na trˇziˇsˇce, se te tehnologije ne uporabljajo na vseh segmentih mo- bilnih aplikacij. ˇStevilne aplikacije, ki za svoje delovanje potrebujejo visoko uˇcinkovitost, so ˇse vedno razvite kot lastne aplikacije [6].

Med aplikacijami, ki za svojo delovanje potrebujejo visoko uˇcinkovitost, so tudi mobilne aplikacije z obogateno resniˇcnostjo (ang. mobile augmented reality ali krajˇse MAR). Uporabniki imajo veliko priˇcakovanj ob uporabi teh aplikacij in se zavedajo, da ima tehnologija, na kateri aplikacije delujejo, vpliv na uporabniˇsko izkuˇsnjo [14].

2.1.4 Prednosti uporabe tehnologij za razliˇ cne naprave

Prednost uporabe pristopov, ki so zasnovani na spletnih aplikacijah, pri ra- zvoju mobilnih aplikacij, je moˇznost izbire katerekoli izmed tisoˇce prosto dostopnih knjiˇznic in razˇsiritev, od katerih je veˇcina licencirana pod MIT [15], Apache [16] ali GNU (ang. General Public License) [17] licencami, kar pomeni, da se jih lahko uporabi v kakrˇsnih koli aplikacijah, zastonjskih ali komercialnih. Na nasprotni strani pa je kompleksnost upravljanja veˇc SDK, ki za svoje delovanje uporabljajo razliˇcne programske vmesnike (ang. appli- cation programming interfaces ali krajˇse API), sisteme za gradnjo aplikacij in orodja za upravljanje aplikacij, ˇcemur se lahko razvijalci izognejo z uporabo pristopov, ki temeljijo na spletnih tehnologijah [14].

Uporaba hibridnega pristopa k razvoju mobilne aplikacije ima ˇstevilne pred- nosti. Moˇznost uporabe razliˇcnih knjiˇznic, ki ponujajo gradnike uporabniˇskih vmesnikov, ki zagotavljajo konsistentnost pri uporabniˇski izkuˇsnji na vseh na-

(25)

2.1. TEHNOLOGIJE ZA RAZVOJ APLIKACIJ ZA RAZLI ˇCNE

NAPRAVE 11

pravah ne glede na operacijski sistem, ki se na doloˇceni napravi izvaja. Tradi- cionalni razvoj bi zahteval uporabo lastnih gradnikov uporabniˇskih vmesnih strani za vse elemente mobilne aplikacije, kar pomeni, da bi vsako spremembo na lastni aplikaciji za eno okolje morali narediti tudi na aplikacijah za druga okolja [14].

2.1.5 Izzivi in teˇ zave pri uporabi tehnologij za razliˇ cne naprave

Razvijalci mobilnih aplikacij se zavedajo, da je eden najveˇcjih izzivov, ki jih bodo sreˇcali v procesu razvoja aplikacije, tehniˇcna omejitev sodobne strojne opreme, pri ˇcemer so najbolj oˇcitne teˇzave pri uporabi geolokacije in sistema za doloˇcanje lokacije (ang. global positioning system ali krajˇse GPS), ki po- gosto ni najbolj natanˇcen. V ˇclanku An Argument Against Cross-Platform Development: Lessons From an Augmented Reality App Prototype for Ru- ral Emergency Responders [14] so Weichelt in ostali med testiranji ugoto- vili, da je na razliˇcnih napravah natanˇcnost GPS podatkov varirala med 10 in 430 metrov, kar povzroˇca ogromne teˇzave pri razvoju aplikacij, katerih glavna naloga je doloˇcanje lokacije v prostoru. Teˇzava je tudi zamik med prvo GPS meritvijo in bolj natanˇcnimi meritvami, ki lahko traja tudi do 10 min. Razliˇcne naprave lahko vsebujejo tudi razliˇcne nabore strojne opreme, s katero lahko razvijalci razpolagajo. V ˇstudijo aplikacije za obogateno re- sniˇcnost so raziskovalci vkljuˇcili tudi naprave, ki niso imele pospeˇskometra in zato tehnologija obogatene resniˇcnosti ni delovala, kar je pomenilo dodaten razvoj za te naprave.

Pri aplikacijah, ki so pri svojem delovanju moˇcno odvisne od strojne opreme in imajo zelo ozko ciljno skupino, je smiselno razviti lastno aplikacijo, ki bo optimizirana samo za doloˇceno napravo, in potem zagotoviti te naprave vsem uporabnikom. V ˇstudiji mobilne aplikacije z obogateno resniˇcnostjo so na primeru aplikacije za prve posredovalce na ruralnih obmoˇcjih predla- gali prav takˇsno izvedbo razvoja aplikacij. Sluˇzba, ki skrbi za posredovanje na teh obmoˇcjih, je zadolˇzena za dostavo enotnih naprav vsem deleˇznikom,

(26)

saj se lahko tako izognejo teˇzavam, ki nastanejo, ˇce posredovalci uporabljajo svoje naprave. Tako se lahko razvijalci osredotoˇcijo na eno okolje z omeje- nim naborom tehniˇcnih spremenljivk, kar lahko privede do bolj konsistentne uporabniˇske izkuˇsnje in manj teˇzav pri vzdrˇzevanju [14].

Ena od teˇzav pri razvoju aplikacij za razliˇcne naprave so tudi nadgradnje operacijskih sistemov in zunanjih knjiˇznic, ki jih aplikacije uporabljajo za svoje delovanje. Pri razvoju lastnih naprav je operacijski sistem iOS idealna naprava, saj so za razliko od operacijskega sistema Android razlike med na- pravami in posameznimi verzijami operacijskih sistemov precej manjˇse, kar privede krajˇsih ˇcasov razvoja in testiranj ob nadgradnjah. ˇStudije so po- kazale, da 95% uporabnikov naprav, ki uporabljajo operacijski sistem iOS, uporablja najveˇc predzadnjo verzijo operacijskega sistema. V primerjavi z na- pravami Android, kjer je takˇsnih uporabnikov manj kot 40%, kar je obˇcutna razlika. Pri razvoju aplikacij se morajo teh stvari razvijalci zavedati, saj je potrebno skrbeti tudi za delovanje aplikacij na starejˇsih verzijah operacijskih sistemov. Aplikacija, ki je bila razvita za najnovejˇso verzijo operacijskega sistema iOS, bo skoraj zagotovo identiˇcno delovala na vseh novejˇsih mode- lih iPhone z minimalnimi popravki uporabniˇskega vmesnika, ki so posledica razliˇcnih zaslonov in strojnih posebnosti posameznih naprav - slednje pa so precej manjˇse kot pri napravah, ki delujejo na operacijskem sistemu Android [14].

Poleg telefonov in tablic so v zadnjem ˇcasu v uporabi ˇse druge naprave. Hiter razvoj aplikacij se je tako ˇse dodatno oteˇzil s predstavitvijo nosljivih tehnolo- gij (ang. wearables) in drugih naprav v svetu interneta stvari (ang. Internet of Things ali krajˇse IoT), saj ni razvitega standarda, ki bi mu lahko razvijalci sledili pri razvoju aplikacij [6].

(27)

2.2. VGRAJENI SISTEMI 13

2.2 Vgrajeni sistemi

Tudi na podroˇcju vgrajenih sistemov raziskovalci in razvijalci uporabljajo tehnologije za razvoj programske kode za razliˇcne naprave oziroma okolja.

Generiranje programske kode (ang. code generation) je pogosto uporabljena tehnologija v razvoju programske opreme za osebne raˇcunalnike. Program- ska oprema za vgrajene sisteme se precej razlikuje od programske opreme za osebne raˇcunalnike, zato se mora tehnologija generiranja programske kode za vgrajene sisteme nekoliko prilagoditi [18].

Eden od pomembnejˇsih teˇzav pri naˇcrtovanju vgrajenih sistemov je optimiza- cija programske kode za mikroprocesorje, ki je shranjena v bralnem pomnil- niku (ang. read-only memory). Nekateri raziskovalci so predlagali integriran pristop k problemu generiranja naslovne kode (ang. address-code) za ob- delavo digitalnih signalov (ang. digital signal processing ali krajˇse DSP), s ˇcimer bi zmanjˇsali ˇstevilo naslovnih ukazov. V literaturi se omenja tudi teˇzava pri generiranju kompaktne in uˇcinkovite kode za vgrajene DSP pro- cesorje. V ta namen je bil ustanovljen raziskovalni projekt SPIRAL [19], ki posebno pozornost namenja uˇcinkovitosti linearnih transformacij za obdelavo digitalnih signalov. ˇCeprav se v ˇstevilnih raziskavah na podroˇcju vgrajenih sistemov pojavljajo pojmi samodejnega generiranja programske kode, je od- prtih ˇse veliko teˇzav, ki jih je potrebno odpraviti, da bodo te tehnologije lahko uporabljene ˇsirˇse [18].

V ˇclanku Wu in Lin opiˇseta postopek generiranje kode za posebni kontrolni sistem (ang. special control system), ki je bil razvit v kontekstu CASS (ang.

Computer Aided for Special System) projekta, ki stremi k omogoˇcanju gene- riranja kode za posebne kontrolne sisteme. Posebni kontrolni sistemi morajo biti vedno razviti v programskem jeziku naprave, kot sta na primer program- ski jezik C ali zbirnik (ang. assembler), kar vedno privede do nizke razvojne uˇcinkovitosti, dolgih razvojnih ciklov in daljˇsega ˇcasa odprave napak. Ta pri- stop je sestavljen iz dveh glavnih delov: grafiˇcnega vmesnika, ki temelji na pristopu raˇcunalniˇskega naˇcrtovanja (ang. computer-aided design ali krajˇse CAD), se izvaja na osebnem raˇcunalniku in omogoˇca uporabniku naˇcrtovanje

(28)

programske kode za vgrajene sisteme, ter arhitekture, ki teˇce na vgrajenem sistemu, skrbi za upravljanje strojne opreme in podpira izvajanje generirane kode [18].

2.2.1 Strukture vgrajenih sistemov

Na sliki 2.1 je prikazana struktura posebnega kontrolnega sistema, ki je bil razvit v okviru ˇclanka Cross-Platform Supported Technique for Embedded Software Generation [18]. Naˇcrtovalec (ang. designer) je grafiˇcno razvojno okolje, v katerem uporabnik izbere komponente, ki se bodo uporabljale v reˇsitvi in z njimi naˇcrtuje programsko kodo. Rezultat naˇcrtovanja je shra- njen v obliki XML (ang. eXtensible Markup Language) datoteke [20], ki je neodvisna od okolja. Datoteka vsebuje vse komponente, ki so uporabljene v programski kodi, njihove relevantne informacije, lokacije kontrolnih kompo- nent in druge informacije, kako se kontrolne komponente uporabljajo. Da- toteka XML je berljiva tudi za uporabnika in jo je mogoˇce naknadno urejati v urejevalniku besedil. Razˇclenjevalnik (ang. parser) je odgovoren za razu- mevanje naˇcrta, ki ga je uporabnik zasnoval. V praksi to pomeni, da mora iz naˇcrta izvleˇci semantiˇcne informacije z razˇclenjevanjem programske kode.

Najprej razˇclenjevalnik pridobi informacije iz datoteke XML. Potem organi- zira informacije glede na generatorjeve zahteve, da olajˇsa generiranje kode.

Zadolˇzen je tudi, da poiˇsˇce napake v naˇcrtu in s tem prepreˇci napake pri generiranju kode. Generator je zadolˇzen za avtomatsko generiranje kode.

Ker je glavni namen tovrstne programske kode izvajanje na vseh okoljih, mora biti koda neodvisna od okolja, na katerem se bo izvajala. V ta na- men je generirana koda v obliki programskega jezika C in uporablja samo abstraktne podatkovne tipe in funkcije. Za generiranje kode se uporabljajo tehnologije predlog (ang. templates). V ˇclanku sta Wu in Lin uporabila predlogo XSLT [21]. XSLT je oblikovan tako, da se uporablja kot del obli- kovnega jezika XSL, ki se uporablja v datotekah XML. Poganjalnik (ang.

engine) je kljuˇcna komponenta pri tehnologijah razvoja programske kode za razliˇcne naprave oziroma okolja. Poganjalnik se izvaja na zgornjem nivoju

(29)

2.2. VGRAJENI SISTEMI 15

strojne opreme in se uporablja za implementacijo naslednjih funkcionalno- sti: aktuacija vgrajenega sistema (poganjalnik kliˇce funkcionalno kodo, ki jo je generiral generator, v razliˇcnih urinih ciklih), upravljalne strojne opreme, definicija potrebnih virov (ang. resources) in zagotavljanje enotnega vme- snika za dostop do strojne opreme. HAL (ang. Hardware Abstract Layer) skrbi za abstrakcijo strojne opreme in zagotavljanje enotnega vmesnika do viˇsje nivojskega poganjalnika in programske kode. Sploˇsno znano je, da se naˇcin delovanja razlikuje pri razliˇcnih strojnih opremah. Nekatere naprave za shranjevanje celih ˇstevil uporabljajo 16 bitov, medtem ko druge upora- bljajo 32 bitov za shranjevanje istega ˇstevila. To bi lahko privedlo do napak pri izvajanju programske kode na doloˇcenih napravah. HAL z maskiranjem razlik med posameznimi strojnimi opremami poskrbi, da do tovrstnih teˇzav ne pride.

Slika 2.1: Struktura vgrajenega sistema.

(30)

2.2.2 Primer uporabe tehnologij za razvoj za razliˇ cne naprave na podroˇ cju vgrajenih sistemov

V ˇclanku iz leta 2016 [22] so Hsiao in ostali predstavili aplikacijo za pametni dom, ki je zasnovana na tehnologijah IoT in za razvoj uporablja tehnologije za razvoj aplikacij za razliˇcne naprave. Natanˇcneje so v ˇstudiji uporabili spletno aplikacijo za upravljanje televizije. Avtorji so predstavili, da se za upravlja- nje domaˇcih naprav, kot so televizije, zvoˇcni sistemi, video predvajalniki ali snemalniki, prezraˇcevalne naprave, igraˇce na daljinsko vodenje in ˇstevilne druge, najbolj pogosteje uporabljajo IR oddajniki in sprejemniki. Glavni razlog za ˇsirˇso uporabljenost te tehnologije je velikost, nizka cena, manjˇsa poraba energije in enostavno naˇcrtovanje strojne opreme. Danes v ˇstevilnih od zgoraj omenjenih naprav ˇse vedno najdemo IR oddajnike in sprejemnike, vendar pa so to tehnologijo ˇze zamenjale druge brezˇziˇcne tehnologije, kot so Wi-Fi in LTE.

Hsiao in ostali so primerjali tudi tehnologiji Wi-Fi in ZigBee za komunika- cijo med napravami. Prednosti uporabe tehnologije Wi-Fi so viˇsja pokritost signala kot pri ostalih tehnologijah in dejstvo, da veˇcina mobilnih naprav podpira tehnologijo Wi-FI. Prednost uporabe tehnologije ZigBee so manjˇsi ˇsum, ki se generira pri prenosu, viˇsja natanˇcnost pri prenosu sporoˇcil in manjˇsa poraba energije, ki omogoˇca daljˇse stanje pripravljenosti [22].

2.3 Qt

V tem poglavju bodo opisane glavne znaˇcilnosti ogrodja Qt in knjiˇznice QML, ki se v magistrskem delu uporablja za razvoj uporabniˇskega vmesnika apli- kacije za krmiljenje prototipa pametnega doma.

(31)

2.3. QT 17

2.3.1 Grafiˇ cni uporabniˇ ski vmesnik

Grafiˇcni uporabniˇski vmesnik (ang. graphical user interface ali krajˇse GUI) je vmesnik med napravo in ˇclovekom, s katerim uporabnik upravlja elektron- ske naprave, kot so raˇcunalniki, pametne naprave in druge naprave. Grafiˇcni uporabniˇski vmesnik uporablja okna, gumba in drsnike, s katerimi uporab- nik upravlja napravo oziroma aplikacijo. Poleg omenjenih gradnikov grafiˇcni uporabniˇski vmesnik uporablja tudi ikone, menije in druge grafiˇcne upodo- bitve za prikaz informacij in kontrol, za razliko od tekstualnih vmesnikov, pri katerih se podatki in ukazi predstavljajo v obliki teksta. Za upravlja- nje z grafiˇcnim uporabniˇskim vmesnikom uporabniki ponavadi uporabljajo naprave, kot so miˇska, sledilna kroglica (ang. trackball), pisalo ali prst na zaslonu na dotik. Akcije na grafiˇcnem uporabniˇskem vmesniku se veˇcinoma izvajajo kot direktna manipulacija grafiˇcnih elementov. Grafiˇcni uporabniˇski vmesniki se uporabljajo v najrazliˇcnejˇsih napravah, kot so predvajalniki MP3, igralne konzole, pametni telefoni in manjˇse naprave, ki se uporabljajo v in- ternetu stvari [23].

Ena izmed teˇzav pri razvoju grafiˇcnih uporabniˇskih vmesnikov je ˇsiroka ra- znolikost okolij, ki vplivajo na izvajanje aplikacij. Ker se razvijalci zavedajo teh teˇzav, namenijo precej ˇcasa prilagajanju aplikacij za vsako od okolij, na katerih se bo aplikacija izvajala. Kot alternativa razvoju aplikacij za vsako okolje posebej se ˇcedalje pogosteje uporabljajo tehnologije oziroma ogrodja za razvoj aplikacij za razliˇcna okolja, med katera sodi tudi ogrodje Qt [24].

2.3.2 Ogrodje Qt

Ogrodje Qt je orodje za razvoj aplikacij za razliˇcna okolja, ki se uporablja za razvoj aplikacij z grafiˇcnim uporabniˇskim vmesnikom (ang. graphical user interface ali krajˇse GUI) in podpira razliˇcne funkcionalnosti, kot so povezova- nje (ang. networking), delo z datotekami XML in SVG, delo s podatkovnimi bazami, podpora multimedijskim storitvam in vgrajenim sistemom. Razvoj ogrodja Qt se je zaˇcel leta 1990, od leta 1995 pa je ogrodje razˇsirjeno med

(32)

ˇstevilnimi komercialnimi in odprtokodnimi reˇsitvami, ki jih uporabljajo pod- jetja in organizacije, kot so Adobe, Boeing, IBM, Motorola, NASA, Skype in ˇstevilna druga [24].

Ogrodje Qt je SDK za razvoj aplikacij za razliˇcna okolja, ki omogoˇca hitro in ugodno (ang. cost-effectively) naˇcrtovanje, razvoj, postavitev (ang. de- ploy) in vzdrˇzevanje programske opreme z brezhibno uporabniˇsko izkuˇsnjo na vseh napravah. Eden izmed glavnih poudarkov ogrodja je enostaven razvoj mogoˇcnih multimedijskih aplikacij z uporabo jezika QML (ang. Qt Modeling Language) [25]. Podobno kot ostala ogrodja za razvoj aplikacij za razliˇcna okolja tudi Qt omogoˇca enoten razvoj aplikacije in nato prevajanje izvorne kode za ostala okolja [24].

Za podporo razvoju aplikacij za razliˇcna okolja ogrodje Qt uporablja QPA (ang. Qt Platform Abstraction) [26]. Ogrodje vkljuˇcuje prevajalnik meta objektov (ang. Meta-Object Compiler ali krajˇse MOC), ki razˇsiri program- ski jezik C++ s funkcionalnostmi, kot so na primer signali in reˇze (ang.

slots), ki se uporabljajo za komunikacijo med objekti. Prevajalnik razˇcleni izvorne datoteke, ki so napisane v razˇsirjenem programskem jeziku C++ in generira vire C++, ki so skladni s standardom. Aplikacije se lahko prevajajo z vsemi standardnimi prevajalniki, ki podpirajo programski jezik C++, kot sta na primer Clang ali GCC [24].

Ogrodje Qt vsebuje razliˇcne module oziroma knjiˇznice, ki pokrivajo ˇsirok na- bor razliˇcnih zahtev in funkcionalnosti. Ena izmed teh knjiˇznic je knjiˇznica QtQuick [27], ki je standardna knjiˇznica za ogrodje Qt, s pomoˇcjo katere lahko razvijalci gradijo uporabniˇske vmesnike. Knjiˇznica zagotavlja vme- snika za oba jezika: QML in C++, kar omogoˇca razvijalcem razˇsiritev jezika QML z lastnimi tipi in integracijo kode napisane v jeziku QML z jezikoma JavaScript in C++. Podobno, kot velja za ostale oznaˇcevalne jezike, je tudi dokument QML predstavljen kot drevesni objekt elementov. Ti elementi vsebujejo nabor gradnikov, grafiˇcnih elementov (geometrijski liki, slike) in obnaˇsanj (prehodi, animacije), ki so lahko zdruˇzeni in predstavljajo kompo- nente. Te so lahko precej enostavne, na primer gumb ali drsnik, lahko pa

(33)

2.3. QT 19

so sestavljene iz veˇc posameznih gradnikov, kar jih naredi precej kompleksne [24].

Qt Designer je orodje, ki ga uporablja ogrodje Qt, za naˇcrtovanje in gradnjo grafiˇcnih uporabniˇskih vmesnikov. Omogoˇca naˇcrtovanje gradnikov, dialo- gov, okvirjev ali celotnih glavnih oken. Naˇcrtovanje in gradnja grafiˇcnih uporabniˇskih vmesnikov je moˇzna z enostavnim vleˇcnim (ang. drag-and- drop) vmesnikom. Qt Quick omogoˇca ustvarjanje tekoˇcih (ang. fluid) in dinamiˇcnih uporabniˇskih vmesnikov z vkljuˇcevanjem deklarativnega skrip- tnega jezika QML, ki je po sintaksi precej podoben jeziku JavaScript [23].

2.3.3 QML

V dokumentu QML je vsak objekt v drevesu predstavljen s tipom, ki mu sledi par zavitih oklepajev. Med oklepajema lahko razvijalci definirajo atribute oziroma lastnosti objekta. Vsak objekt ima lahko lastnostid, ki pa mora biti unikatna za vsak objekt. Ta lastnost omogoˇca, da se lahko na ta objekt veˇzejo tudi lastnosti drugih objektov. Eden od naˇcinov predstavitve lastnosti je deklarativen naˇcin, pri katerem vsaki lastnosti doloˇcimo tudi njeno vrednost v obliki “lastnost: vrednost”. Lastnost lahko ima tudi relativno vrednost, kar pomeni, da je odvisna od lastnosti nekega drugega objekta. V kodi 2.3 je tako definirana lastnost width, ki je vezana na lastnost width objekta z lastnostjo id drugElement. V primeru, da se spremeni lastnost tega objekta se poslediˇcno spremenijo tudi vse lastnosti, ki so vezane na spremenjeno lastnost. Drugi naˇcin predstavitve lastnosti je uporaba katerega

koli izraza JavaScript, saj QML podpira standarden poganjalnik Java- Script. Tako lahko za predstavitve uporabljamo funkcijske klice ali celo vgrajene objekte JavaScript. V kodi 2.3 je na ta naˇcin predstavljena lastnost height in sicer kot funkcijski klic funkcijeizracunajVisino [24].

(34)

Koda 2.3: Primer kode

Rectangle {

anchors.centerIn: parent width: drugElement.width height: izracunajVisino()

color: { if (width > 10) ’blue’; } }

function izracunajVisino() {

Return Math.max(drugElement.height, 300);

}

Ogrodje Qt ponuja razrede za visokonivojsko in nizkonivojsko komuni- kacijo v omreˇzju, razrede za spletno integracijo ter razrede za medprocesno komunikacijo. Za visokonivojski omreˇzni promet Qt Network [28] skrbi za abstrakten nivo operacij, ki se uporabljajo, in uporabnikom prikazuje samo visokonivojske razrede in funkcije. Knjiˇznica podpira tudi niˇzjenivojske pro- tokole, kot sta na primer TCP (ang. Transmission Control Protocol) in UDP (ang. User Datagram Protocol). Razredi, kot sta QTcpSocket in QUdpSoc- ket, omogoˇcajo razvijalcem poˇsiljanje in prejemanje sporoˇcil preko omenje- nih protokolov. Razˇsiritev imena (ang. name resolution) je implementirana z razredom QHostInfo, ki je klican pred ustvarjanjem omreˇzne povezave z razredoma QTcpSocket ali QUdpSocket [24].

2.3.4 Prednosti uporabe ogrodja Qt

ˇStevilo naprav, ki nas obkroˇzajo, naraˇsˇca izjemno hitro. Poleg tega pa te na- prave postajajo bolj inteligentne in zahtevajo programsko opremo, ki teˇce na najrazliˇcnejˇsih platformah, od naprav interneta stvari (z ali brez zaslona)in pametnih ur, do najnovejˇsih pametnih televizij ter osebnih raˇcunalnikov.

(35)

2.3. QT 21

Ogrodje Qt je bilo zasnovano za ustvarjanje uporabniˇskih vmesnikov ˇze od samega zaˇcetka njegovega razvoja in ta lastnost je uporabna tudi v svetu interneta stvari. S pomoˇcjo ogrodja Qt lahko razvijalci razvijajo razliˇcne uporabniˇske vmesnike za najrazliˇcnejˇse aplikacije, od najenostavnejˇsih do bolj kompleksnih, ki se uporabljajo za krmiljenje pametnih domov. Ena iz- med prednosti uporabe ogrodja Qt je dejstvo, da ista programska koda teˇce tako na vgrajeni napravi kot tudi na napravi, ki upravlja vgrajeno napravo.

Veˇcina ostalih tehnologij temelji na gradnji zaslonskih aplikacij z uporabo drugaˇcnih tehnologij, kot so prisotne v vgrajenih napravah. V tem primeru se uporabljata dve namestitve programske kode v dveh jezikih, uporabljata se dva razliˇcna vmesnika, potrebni sta dve zbirki testov (ang. test suites) in dva razliˇcna naˇcina, kako detektirati in odpraviti napake v kodi. V primeru ogrodja Qt pa se naˇcrtuje, gradi in testira enoten modul, ki se nato deli med razliˇcne naprave, na katerih se ta programska koda nato izvaja. Da za- dosti potrebam interneta stvari, ogrodje Qt omogoˇca ˇsiroko paleto razliˇcnih knjiˇznic in vmesnikov. QtSensor vmesnik podpira ogromno ˇstevilo obstojeˇcih senzorjev in pripadajoˇcih razredov. Na primer za pisanje aplikacije v jeziku QML, ki uporablja podatke iz pospeˇskometra, so potrebni naslednji koraki:

vkljuˇcitev senzorskega modula, dodajanje tipa za pospeˇskometer in uporaba active lastnosti za zagon senzorja [24].

Glavna prednost ogrodja Qt je, da poleg modula za gradnjo grafiˇcnega upo- rabniˇskega vmesnika podpira tudi ˇsiroko izbiro modulov, ki skrbijo za hi- trejˇsi in enostavnejˇsi razvoj in postavitev aplikacij za projekte vseh velikosti.

Ogrodje Qt vsebuje posebne module, ki so specifiˇcni za doloˇceno okolje, kot so naprimer moduli za doloˇcanje pozicije, delo s senzorji ali delo z tehnologijo NFC (ang. near field communication). Ti moduli omogoˇcajo ogrodju, da se prilagodi posameznim potrebam specifiˇcnih projektov [23].

2.3.5 Ogrodje Qt na podroˇ cju vgrajenih sistemov

Skozi leta se je ogrodje Qt uporabljalo na ˇsirokem spektru operacijskih sis- temov in vgrajenih sistemov. Kmalu je operacijski sistem vgrajeni Linux

(36)

postal enako pomemben za razvijalce ogrodja Qt kot njegov njegova zaslon- ska razliˇcica. Tudi ostali operacijski sistemi za vgrajene naprave so kmalu sledili in danes Qt podpira ˇsiroko paleto operacijskih sistemov Linux, ope- racijske sisteme podjetja Microsoft in razliˇcne operacijske sisteme v realnem ˇcasu (ang. real time operating systems ali krajˇse RTOS). Vseeno pa efektivna implementacija ogrodja Qt na teh operacijski sistemih predstavlja ogromen izziv in ˇcasovno potraten proces optimizacije ogrodja, da efektivno deluje tudi z razliˇcnimi strojnimi komponentami, dostopnimi knjiˇznicami in ne vkljuˇcuje delov ogrodja Qt in operacijskega sistema, ki jih reˇsitev ne uporablja [24].

Najnovejˇsa pobuda za internet stvari v ogrodju Qt je Qt Lite Project [29].

Glavni namen projekta je narediti ogrodje ˇcim bolj osredotoˇceno na razvojni cikel in ˇzivljenjsko dobo vgrajenih naprav. Qt Lite je nov modul ogrodja, ki omogoˇca raziskovalcem vkljuˇcitev samo osnovnih gradnikov brez nepotrebnih spremljevalnih knjiˇznic, ki se v resnici sploh ne uporabljajo. Razvojni proces omogoˇca sprotno in naknadno vkljuˇcevanje komponent, ki so potrebne za delovanje doloˇcenih aplikacij. Dodatno je bil v zadnjem ˇcasu v modulu Qt Quick predstavljen 2D Software Rendered for Qt Quick, kar omogoˇca razvi- jalcem razvijanje uporabniˇskih vmesnikov za vgrajene naprave brez zahteve po vkljuˇcitvi tehnologije Open GL [30] [24].

Ogrodje Qt ustreza zahtevam standarda IEC 62304:2015, ki je potreben za uporabo tehnologij pri proizvodnji medicinskih naprav. Poleg omenjenega standarda pa ustreza tudi drugim globalnim certifikatom. T ˇUV NORD [31]

je izdal certifikat, ki dokazuje, da je ogrodje Qt primerno za izgradnjo varnih vgrajenih sistemov [23].

2.4 Uporabniˇ ska izkuˇ snja

Najbolj sploˇsno definicijo uporabniˇske izkuˇsnje sta v svoji knjigi [32] predsta- vila Don Norman in Jakob Nielsen, ki veljata za najbolj priznana raziskovalca na podroˇcju uporabniˇskih vmesnikov in uporabniˇske izkuˇsnje. Uporabniˇska izkuˇsnja zajema vse vidike interakcije konˇcnega uporabnika s podjetjem, nji-

(37)

2.4. UPORABNIˇSKA IZKUˇSNJA 23

hovimi storitvami in izdelki. Ta sploˇsna definicija je zlahka prenosljiva tudi na podroˇcje razvoja aplikacij. Tudi pri uporabniˇski izkuˇsnji ob uporabi apli- kacij je potrebno v kontekst postaviti podjetje, ki ustvarja aplikacijo, samo aplikacijo in obˇcutke, ki jih uporabniki doˇzivljajo ob uporabi aplikacije.

2.4.1 Uporabnost

Pogosto se ob pojmu uporabniˇske izkuˇsnje omenja tudi pojem uporabnost, vendar ne gre za isto stvar. Uporabnost (ang. usability) je merilo uspeˇsnosti, uˇcinkovitost in zadovoljstva, s katerim lahko specifiˇcen uporabnik v doloˇcenih pogojih in okolju uresniˇci specifiˇcen cilj, ki si ga je zastavil [33]. Pri upo- rabniˇski izkuˇsnji pa je poleg uspeˇsnosti in uˇcinkovitosti pomemben tudi ˇcustven vidik, s katerim se uporabnik sooˇca ob uporabi aplikacije ali pro- dukta. Za doseganje ˇcim boljˇse uporabniˇske izkuˇsnje je tako poleg upo- rabnosti, ki predstavlja racionalni vidik, pomembno tudi veselje ob uporabi oziroma emocionalni vidik uporabe aplikacije oziroma produkta [34].

2.4.2 Merjenje uporabniˇ ske izkuˇ snje

Za merjenje uporabniˇske izkuˇsnje se uporablja vpraˇsalnik za uporabniˇsko izkuˇsnjo (ang. User Experience Questionnaire ali krajˇse UEQ). Vpraˇsalnik je bil ustvarjen v nemˇskem jeziku leta 2005. ˇCez ˇcas so razvijalci na pod- lagi analize podatkov spreminjali nabor lastnosti, ki jih vpraˇsalnik vsebuje.

Zaˇcetni nabor je vseboval 229 moˇznih lastnosti. Danes vpraˇsalnik vsebuje 6 skupin s 26 lastnostmi, ki jih uporabniki ocenjujejo s pomoˇcjo 7-stopenjske skale. Skupine, ki jih vsebuje vpraˇsalnik, so: atraktivnost (ang. attracti- veness), ki predstavlja celoten vtis produkta oziroma aplikacije, preglednost (ang. perspicuity), ki predstavlja, kako enostavno se je nauˇciti uporabljati produkt oziroma aplikacijo, uˇcinkovitost (ang. efficiency), ki predstavlja, kako uspeˇsni so uporabniki pri opravljanju nalog brez nepotrebnega napora, vodljivost (ang. dependability), ki pove, ali lahko uporabnik nadzoruje potek interakcij, stimulativnost (ang. stimulation), ki pove, ali je produkt oziroma

(38)

aplikacija zanimiva za uporabo, inoriginalnost (ang. novelty), ki pove, ali je produkt oziroma aplikacija inovativna in kreativna. Na sliki 2.2 je prikazana struktura vpraˇsalnika UEQ [22].

Slika 2.2: Struktura vpraˇsalnika za uporabniˇsko izkuˇsnjo

2.4.3 Uporabniˇ ska izkuˇ snja pri uporabi tehnologij za razvoj za razliˇ cne naprave

Akademska skupnost si je enotna v prepriˇcanju, da na podroˇcju razvoja apli- kacij za razliˇcne naprave oziroma okolja primanjkuje raziskav, ki so osre- dotoˇcene predvsem na uporabniˇsko izkuˇsnjo. Uporabniˇska izkuˇsnja je v ˇstevilnih raziskavah omenjena kot ena izmed lastnosti pri primerjavah razliˇcnih tehnologij, ne pa kot glavna tema raziskav [35].

V ˇclanku An Empirical Study of Cross-Platform Mobile Development in In-

(39)

2.4. UPORABNIˇSKA IZKUˇSNJA 25

dustry [35] so Biørn-Hansen in ostali izvedli anketo o uporabi tehnologij za razvoj aplikacij za razliˇcna okolja v industriji. Zastavili so si 5 raziskoval- nih vpraˇsanj, med katerimi je bilo tudi vpraˇsanje: Katero od spodaj naˇstetih teˇzav povezujete z razvojem aplikacij za razliˇcne naprave? Med moˇznostmi, ki so jih anketiranci imeli na voljo, so bile: sploˇsna izguba uˇcinkovitosti v primerjavi z lastnimi aplikacijami, neoptimalna uporabniˇska izkuˇsnja, pre- malo razvita ogrodja (preveˇc tveganj), neoptimalne moˇznosti za ustvarjanje dobrih uporabniˇskih vmesnikov, nezrela skupnost (premalo aktivna, preveˇc nova), teˇzka integracija z vmesniki naprav, teˇzko testiranje in odprava na- pak, varnostne teˇzave in drugo. Navedene moˇznosti so izhajale iz preteklih raziskav na podroˇcju uˇcinkovitosti, uporabniˇske izkuˇsnje in dostopa do vme- snikov naprav pri razvoju aplikacij za razliˇcne naprave oziroma okolja.

Anketa je bila narejena z orodjem SurveyPlanet [36]. ˇStevilo anketiran- cev (N v tabeli 2.4) je bilo 101, kar je bilo primerljivo z nekaterimi dru- gimi ˇstudijami, ki so jih avtorji analizirali v poglavju o povezanih ˇstudijah.

Med vsemi moˇznostmi je najmanj anketirancev opazilo varnostne teˇzave, kar so Biørn-Hansen in ostali oznaˇcili za priˇcakovano, saj je bil tudi v drugih ˇstudijah ta vidik za uporabnike najmanj pomemben [35].

Tabela 2.4: Rezultati ankete

Moˇznosti (sortirane po N) N

Sploˇsna izguba uˇcinkovitosti v primerjavi z lastnimi aplikacijami 63

Neoptimalna uporabniˇska izkuˇsnja 58

Premalo razvita ogrodja (preveˇc tveganj) 55

Neoptimalne moˇznosti za ustvarjanje dobrih uporabniˇskih vmesnikov 50 Nezrela skupnost (premalo aktivna, preveˇc nova) 35

Teˇzka integracija z vmesniki napra 32

Teˇzko testiranje in odprava teˇzav 31

Varnostne teˇzave 13

Drugo 2

(40)

Za najbolj pogost odgovor se je izkazala moˇznost izgube uˇcinkovitosti pri razvoju za razliˇcne naprave ali okolja v primerjavi z lastnim pristopom.

V razliˇcnih ˇclankih [12], [13] avtorji opisujejo priˇcakovano poslabˇsanje pri uˇcinkovitost, ko gre za pristop razvoja za razliˇcne naprave. Vendar pa po- udarjajo, da to poslabˇsanje ni kritiˇcno, temve´c ravno nasprotno. V svojih ˇstudijah navajajo, da veˇcina uporabnikov tega poslabˇsanja ne zazna, sploh pri uporabi draˇzjih naprav. Pri poslabˇsanju je tako potrebno poudarek na- meniti tudi napravam, na katerih se aplikacije izvajajo, saj lahko prihaja do velikih odstopanj, predvsem na podroˇcju odzivnosti in porabe energije [35].

Uˇcinkovitost lahko v veliki meri vpliva tudi na uporabniˇsko izkuˇsnjo. Ka- dar uporabnik zazna poslabˇsanje v uˇcinkovitosti, je uporabniˇska izkuˇsnja po- slediˇcno slabˇsa. Zato ni presenetljivo, da je na drugem mestu najbolj pogostih odgovorov neoptimalna uporabniˇska izkuˇsnja. V ˇclanku An Em-pirical Study of Cross-Platform Mobile Development in Industry [35] so Biørn-Hansen in ostali pri analizi rezultatov to moˇznost povezali s slabˇsimi moˇznostmi pri ustvarjanju dobrih uporabniˇskih vmesnikov, ki je bila v anketi na ˇcetrtem mestu. Po mnenju avtorjev ti dve moˇznosti skupaj vplivata na uporabnost aplikacije, ki jo zaznajo uporabniki. Prav uporabnost aplikacij je bila glavna tematika sorodnega ˇclanka [37], v kateri je 37 anketirancev ocenjevalo pri- stop razvoja lastnih aplikacij in pristop razvoja aplikacij za razliˇcne naprave.

Poudarek je bil predvsem na netehniˇcnih parametrih, kot so atraktivnost in zanesljivost (ang. dependability) aplikacij. Angulo in Fere sta v omenjenem ˇclanku poudarila, da je pri izbiri ogrodja za razvoj za razliˇcne naprave po- membno, da ogrodje sledi smernicam za razvoj aplikacij za konˇcna okolja, na katerih se bodo aplikacije uporabljale, saj te v veˇcini primerov pripomorejo k boljˇsim uporabniˇskim vmesnikom in poslediˇcno tudi k boljˇsi uporabniˇski izkuˇsnji. Veˇcina anketirancev v je bila mnenja, da so teˇzave pri uporabniˇski izkuˇsnji bolj pogoste pri pristopu razvoja za razliˇcne naprave kot pa pri la- stnem pristopu. Pri odloˇcanju za izbiro pristopa je potrebno upoˇstevati tudi konˇcnega uporabnika, saj nimajo vsi uporabniki enakih priˇcakovanj.

Na podlagi sklepanj, da uporaba tehnologij za razvoj za razliˇcne naprave,

(41)

2.4. UPORABNIˇSKA IZKUˇSNJA 27

so Caulo in ostali [38] naredili tudi loˇcene primerjave uporabniˇske izkuˇsnje, kjer so enako aplikacijo razvili z uporabo pristopa lastnih aplikacij in pri- stopa razvoja za razliˇcne naprave. Avtorji so si za raziskovalno vpraˇsanje postavili ravno vpraˇsanje: Ali uporaba pristopa razvoja aplikacij za razliˇcne naprave vpliva na uporabniˇsko izkuˇsnjo? Natanˇcneje so to vpraˇsanje razdelili na dve raziskovalni vpraˇsanji, pri ˇcemer je bilo prvo zasnovano na zadovolj- stvu (ang. pleasure), vzburjenju (ang. arrousal), dominantnosti (ang. domi- nance) in vˇseˇcnosti (ang. liking), drugo pa na uporabniˇski izkuˇsnji. Razvili so dve aplikaciji: lastno aplikacijo za operacijski sistem Android in hibridno aplikacijo, ki so jo razvili z uporabo ogrodja Ionic. V ˇstudiji je sodelovalo 18 anketirancev, vsi imeli izobrazbo iz ene od informacijsko komunikacijskih vej. Za zbiranje ˇcustvenih reakcij (ang. affective reactions) so avtorji upo- rabili metodo SAM (ang. self-assessment manikin) [39]. Ta metoda vsebuje vpraˇsalnik, ki je zasnovan na 9-toˇckovni skali za vsako od ˇcustvenih dimen- zij: zadovoljstvo, vzburjenje, dominantnost in vˇseˇcnost. Skala zadovoljstva obsega moˇznosti od nesreˇce oziroma ˇzalosti do veselja oziroma radosti. Skala vzburjenja variira od mirnosti oziroma dolgoˇcasnosti do stimuliranosti ozi- roma navduˇsenja. Skala dominantnosti variira od podrejenosti do dominan- tnosti. V ˇstudiji je bila dodana ˇse ˇcetrta dimenzija: vˇseˇcnost, ki obsega moˇznosti od nevˇseˇcnosti do vˇseˇcnosti. Pri uporabniˇski izkuˇsnji so avtorji uporabili 26 lastnosti, ki jih vkljuˇcuje UEQ. Caulo in ostali so udeleˇzence razdelili v dve skupini, pri ˇcemer je prva najprej testirala lastno Android aplikacijo in nato hibridno, druga pa je aplikaciji testirala v obratnem vr- stnem redu. Iz rezultatov so avtorji lahko sklepali, da ima uporaba pristopa razvoja za razliˇcne naprava vpliv na uporabniˇsko izkuˇsnjo, saj so bili rezul- tati pri obeh delih raziskave boljˇsi za lastno Android aplikacijo. Najveˇcja razlika je bila pri zadovoljstvu in vˇseˇcnost, medtem ko je bila pri uporabniˇski izkuˇsnji nekoliko manjˇsa.

(42)
(43)

Poglavje 3 Zasnova

V tem poglavju so opisani vsi gradniki, ki bodo razviti v okviru magistrskega dela. V podpoglavju 3.1 so predstavljene funkcionalnosti in tehnologije, ki so se uporabljale za razvoj prototipa pametnega doma. Prikazana je tudi shema vezave prototipa. V podpoglavju 3.2 so predstavljene razliˇcne verzije ˇziˇcnega okvirja, ki so bile razvite v fazi naˇcrtovanja uporabniˇske izkuˇsnje.

V podpoglavju 3.3 je opisana zasnova uporabniˇskega testiranja in postopek analize rezultatov.

3.1 Prototip pametnega doma

3.1.1 Funkcionalnosti

Za testiranje uporabniˇske izkuˇsnje na razliˇcnih napravah je bil v okviru magi- strske naloge razvit tudi prototip pametnega doma. V prototip sta vkljuˇcena dva modula. Prvi modul je modul za temperaturo, ki meri in uravnava tem- peraturo v prostoru. Prototip omogoˇca avtomatsko in roˇcno uravnavanje temperature. Pri avtomatskem uravnavanju temperature uporabnik nastavi ˇzeleno konˇcno temperaturo in prototip se odzove s priˇzigom rdeˇce v primeru, da je ˇzelena temperatura viˇsja od trenutne, ki jo izmeri senzor za tempera- turo, ali modre LED diode, ˇce je ˇzelena temperatura niˇzja od trenutne. Pri roˇcnem uravnavanju temperature pa uporabnik nastavi stopnjo ogrevanja

29

(44)

oziroma hlajenja. Glede na stopnjo ogrevanja oziroma hlajenja se prilagaja tudi jakost LED diod. Drugi modul je modul za svetlobo, ki uravnava sve- tlobo v prostoru. Tudi pri tem modulu prototip omogoˇca avtomatsko in roˇcno uravnavanje svetlosti. Pri avtomatskem uravnavanju svetlobe uporab- nik nastavi ˇzeleno svetlost in prototip nastavi jakost barvne LED diode tako, da je jakost svetlosti, ki jo izmeri senzor za merjenje svetlobe, enaka svetlosti, ki jo nastavi uporabnik. Pri roˇcnem uravnavanju pa uporabnik sam uravnava jakost barvne led diode.

Podatki o ˇzelenih in izmerjenih vrednostih so shranjeni v oblaku, do kate- rega ima dostop aplikacija, ki je razvita z ogrodjem Qt, ki omogoˇca razvoj za razliˇcne naprave. Uporabnik lahko tako prototip pametnega doma krmili preko mobilne aplikacije, vgradnega sistema (v okviru magistrskega dela je to predstavljala naprava Raspberry Pi) ali namizne aplikacije.

3.1.2 Tehnologije

Za prototip pametnega doma je bila uporabljena razvojna ploˇsˇca ESP32 [40], Za merjenje temperature je uporabljen senzor DHT11 [41], ki je digitalni sen- zor za merjenje temperature in vlaˇznosti. Merjenje vlage je izvedeno s kapa- citivnim merilnikom vlage, merjenje temperature pa z uporabo termistorja.

Rezultati meritev so na voljo na digitalnem izhodu. Je precej preprost za uporabo, vendar zahteva posebno pozornost pri nastavljanju ˇcasa za zaje- manje podatkov. Edina resniˇcna slabost tega senzorja je, da se lahko nove podatke iz njega pridobi le enkrat na 2 sekundi, zato so lahko pri uporabi knjiˇznice za omenjeni senzor odˇcitki senzorjev stari do 2 sekundi. Za merje- nje svetlobe je uporabljena fotocelica CDS [42], ki na podlagi prejete svetlobe uravnava upornost. Ko je v prostoru veliko svetlobe, je upornost nekje okrog 1kΩ, ko pa je v prostoru temno pa okrog 10kΩ. Za simulacijo odziva pame- tnega doma so uporabljene LED diode.

Razvojna ploˇsˇca ESP32 omogoˇca uporabo brezˇziˇcnih tehnologij WiFi in Blu- etooth. Za prenos je bil uporabljen protokol MQTT [43], ki velja za enega bolj razˇsirjenih standardov v svetu interneta stvari. Zasnovan je kot sporoˇcilni

(45)

3.1. PROTOTIP PAMETNEGA DOMA 31

protokol, ki deluje po arhitekturi objavi/naroˇci (ang. publish/subscribe) in je idealen za povezovanje oddaljenih naprav, saj potrebuje za svoje delova- nje zelo malo energije in pasovne ˇsirine. Dandanes se protokol uporablja v ˇsiroki paleti industrijskih panog od avtomatike, telekomunikacij, proizvodnje in ˇstevilnih drugih.

Pri protokolu MQTT obstajata dve vrsti deleˇznikov: odjemalec (ang. cli- ent) in posrednik (ang. broker). Oba lahko prejemata ali oddajata podatke.

Odjemalec, ki ˇzeli prejemati podatke, se naroˇci na doloˇceno tematiko (ang.

topic). Posrednik nato vsem odjemalcem, ki so naroˇceni na doloˇceno te- matiko, poˇsilja podatke o spremembah na tej tematiki. Odjemalec, ki je zadolˇzen za oddajanje podatkov, pa podatke pridobljene iz senzorjev poˇsilja posredniku na doloˇceno tematiko.

V okviru tega magistrskega dela ima vlogo MQTT posrednika spletni posre- dnik EMQX, MQTT odjemalec pa je razvojna ploˇsˇca ESP32.

3.1.3 Shema vezave

Na sliki 3.1 je prikazana vezava vseh elementov in razvojne ploˇsˇce ESP32.

Na sliki 3.2 pa je prikazana elektriˇcna shema celotnega prototipa. Obe shemi sta bili narejeni z orodjem Fritzing [44].

Slika 3.1: Shema vezave prototipa

(46)

Slika 3.2: Elektriˇcna shema prototipa

3.2 Uporabniˇ ski vmesnik

Aplikacija za krmiljenje pametnega doma bo delovala na ˇstirih razliˇcnih na- pravah: Raspberry Pi z 18 centimetrov diagonale velikim zaslonom LCD (ang. Liquid Crystal Display) na dotik, pametni telefon z operacijskim sis- temom Android in namizni raˇcunalnik z operacijskim sistemom Linux.

Uporabniˇski vmesnik mora uporabniku omogoˇcati preklapljanje med roˇcnim in avtomatskim nastavljanjem temperature in svetlobe. Glede na izbran naˇcin se bo moral prilagoditi prikaz kontrolnih elementov za upravljanje s temperaturo in svetlobo.

Pri zasnovi uporabniˇskega vmesnika je potrebno upoˇstevati razliˇcni posta-

(47)

3.2. UPORABNIˇSKI VMESNIK 33

vitvi naprav: leˇzeˇco (ang. landscape) in pokonˇcno (ang. portrait). Na napravah Raspberry Pi in namiznem raˇcunalniku se bo uporabljala leˇzeˇca postavitev, medtem ko se bo na pametnih telefonih postavitev prilagajala postavitvi pametnega telefona.

3.2.1 Ziˇ ˇ cni okvir

Ziˇˇcni okvir (ang. wireframe) je eden bolj uporabljenih pristopov k naˇcrtovanju uporabniˇskih vmesnikov, ki se ga uporabi po definiranju koncepta in struk- ture aplikacije. ˇZiˇcni okvir se uporablja za bolj jasno predstavo o strukturi, postavitvi, poteku, funkcionalnost in obnaˇsanju aplikacije. Ker gre zgolj za osnovno predstavitev aplikacije, so oblikovne lastnosti, kot so barva, pisava in grafike, izpuˇsˇcene. Cilj ˇziˇcnega okvirja je razumevanje vseh deleˇznikov o postavitvi informacij, saj je precej ceneje kakˇsno spremembo uvesti v fazi naˇcrtovanja, kot pa kasneje v fazi razvoja. ˇZiˇcni okvir se lahko oblikuje roˇcno ali pa se uporabi kakˇsno od ˇstevilnih digitalnih orodij za ustvarjanje ˇziˇcnih okvirjev [45].

V okviru tega magistrskega dela sta nastala dva ˇziˇcna okvirja za dve razliˇcni postavitvi. Prva razliˇcica ˇziˇcnega okvirja je narejena roˇcno na papir in sluˇzi za osnovno predstavo postavitve vseh elementov. Kasneje je bil ˇziˇcni okvir narejen tudi s spletnim orodjem MockFlow [46]. Pri tem ˇziˇcnem okvirju so bile upoˇstevane tudi moˇzne uporabnikove akcije in celoten potek aplikacije.

(48)

Slika 3.3: Ziˇˇcni okvir (pokonˇcna postavitev)

Slika 3.4: Ziˇˇcni okvir (leˇzeˇca postavitev)

(49)

3.2. UPORABNIˇSKI VMESNIK 35

Slika 3.5: Prototip z definiranimi barvami in tipografijo

3.2.2 Potek aplikacije

Glavno okno je razdeljeno na dve enakovredni polovici. Uporabnik lahko upravlja svetlobo in temperaturo na enak naˇcin. S klikom na gumb Auto/Manual lahko spreminja naˇcin nastavljanja ene od lastnosti. Glede na njegovo izbiro, se spreminja prikaz kontrol za nastavljanje vrednosti. V primeru avtomat- skega nastavljanja je na voljo drsnik, s katerim lahko uporabnik nastavlja vrednost. V primeru roˇcnega nastavljanja pa se najprej prikaˇzeta trenutna in ˇzelena vrednost, s klikom na ikono za urejanje pa se uporabniku prikaˇzeta tudi vnosno polje in gumb Shrani za spreminjanje ˇzelene vrednosti. Pri nasta- vljanju temperature se spreminja tudi ikona nad kontrolami. ˇCe je trenutna temperatura manjˇsa ali enaka kot ˇzelena, se prikaˇze ikona plamena, v naspro- tnem primeru pa ikona sneˇzinke. Na sliki 3.6 je prikazan potek aplikacije, ki je bil narejen z orodjem Diagram.Codes [47].

(50)

Slika 3.6: Diagram poteka aplikacije

3.3 Uporabniˇ ska izkuˇ snja

Testiranje uporabniˇske izkuˇsnje pri uporabi aplikacije za upravljanje proto- tipa pametnega doma se je izvajalo za vsako napravo posebej. Aplikacijo je testiralo 6 uporabnikov, ki so testirali tri razliˇcice aplikacije. Uporabniki so bili nakljuˇcno razdeljeni v tri skupine. Prva skupina je najprej testi- rala aplikacijo na pametnem telefonu, nato na napravi Raspberry Pi in na koncu osebnem raˇcunalniku. Druga skupina je aplikacijo najprej testirala na napravi Raspberry Pi, nato na osebnem raˇcunalniku in na koncu na pame- tnem telefonu. Tretja skupina pa je aplikacijo najprej testirala na osebnem raˇcunalniku, nato na pametnem telefonu in na koncu na napravi Raspberry Pi. Uporabnik ima pri ponovnem testiranju enake aplikacije drugaˇcna pred- znanja in predstave o aplikaciji, zato se je testiranje izvajalo s tremi skupi- nami, ki so aplikacije testirale v drugaˇcnem vrstnem redu. Pri testiranju je

(51)

3.3. UPORABNIˇSKA IZKUˇSNJA 37

moral vsak uporabnik nastaviti niˇzjo temperaturo v prostoru in spremeniti naˇcin prilagajanja svetlobe.

Za poroˇcanje rezultatov testiranja je bil uporabljen standarden vpraˇsalnik za testiranje uporniˇske izkuˇsnje, ki je preveden v ˇstevilne jezike, med katerimi je tudi slovenˇsˇcina. Vpraˇsalnik vsebuje 26 lastnosti, pri katerih uporabnik uporablja 7 stopenjsko lestvico. Vrednosti odgovorov so cela ˇstevila med -3 in 3, pri ˇcemer -3 predstavlja najbolj negativno vrednost lastnosti, 3 pa naj- bolj pozitivno. V tabeli 3.1 je predstavljenih vseh 26 lastnosti s skrajnima vrednostima [48].

(52)

Tabela 3.1: 26 lastnosti kratkega vpraˇsalnika za uporabniˇsko izkuˇsnjo

nerazveseljiv razveseljiv

nerazumljiv razumljiv

kreativen brez fantazije

enostaven za uˇcenje teˇzak za uˇcenje

osveˇzilen uspavajoˇc

dolgoˇcasen napet

nezanimiv zanimiv

nepredvidljiv predvidljiv

hiter poˇcasen

nov star

se ne da upravljati se z lahkoto upravlja

dober slab

kompliciran enostaven

odbijajoˇc privlaˇcen

zastarel modern

neprijeten prijeten

napovedljiv nenapovedljiv

raznolik enoliˇcen

zanesljiv nezanesljiv

ni uˇcinkovit uˇcinkovit

pregleden ustvarja zmedo

deluje zatikajoˇce deluje tekoˇce

prostoren prenatrpan

lep grd

simpatiˇcen nesimpatiˇcen

nevpadljiv vpadljiv

(53)

3.3. UPORABNIˇSKA IZKUˇSNJA 39

V poglavju 2 je bila opisana struktura kratkega vpraˇsalnika, kjer se 26 lastnosti zdruˇzi v ˇsest kategorij, za katere se nato izraˇcunajo povpreˇcna vrednost, standardna deviacija in interval zaupanja (ang. confidence in- terval). Interval zaupanja predstavlja razpon vrednosti, katerim pripada doloˇcen odstotek (v primeru te magistrske naloge je bil ta odstotek 95%) anketirancev. Interval zaupanja se zapiˇse v obliki povprecna vrednost ± vrednost zaupanja, kjer se zaupanje izraˇcuna po formuli: ZsN, kjer Z pred- stavlja vrednost intervala zaupanja (za 95% je ta vrednost 1.960) s standar- dno deviacijo in n ˇstevilo vzorcev. ˇStevilo vzorcev mora biti za verodostojne podatke vsaj nekje 40. Za potrebe tega magistrskega dela je bil vzorec 6 [49]. Porazdelitev odgovorov glede na lastnost je ˇse en naˇcin, kako se lahko prikaˇze raznolikost odgovorov za razliˇcne lastnosti. Na sliki 3.7 so prikazani odstotki pojavitve odgovorov za vseh 26 lastnosti [48].

Slika 3.7: Porazdeljenost odgovorov glede na lastnost

Skupnost razvijalcev vpraˇsalnika o uporabniˇski izkuˇsnji pa je oblikovala tudi merilo uspeˇsnosti (ang. benchmark) uporabniˇske izkuˇsnje. To merilo je bilo oblikovano na podlagi 452 ˇstudij, ki so skupaj vsebovale 20190 oseb in so bile vezane na najrazliˇcnejˇse reˇsitve od poslovnih programskih reˇsitev,

Reference

POVEZANI DOKUMENTI

V veˇ cji organizaciji, kjer morda potrebujemo veˇ c sistemov pfSense za razliˇ cne segmente omreˇ zij ali za razliˇ cne funkcionalnosti (poˇstni streˇ znik, poˇ zarni zid ...),

Razvoj igre poteka po razliˇ cnih metodologijah razvoja in vsebuje razliˇ cne ko- rake, odvisno od skupine razvijalcev ter njihovega naˇ cina dela.. Kljub temu razvoj iger v

jQuery Mobile [13], [3] je zelo popularna knjiˇ znica, ki se uporablja za razvoj mobilnih aplikacij ali aplikacij, ki so prilagojene za mobilne naprave.. Je dodatek ˇse bolj znane

21 5.6 Prikaz seznama izpitnih rokov v mobilno aplikacijo FriStudent 22 5.7 Prikaz prijave na izpitni rok v mobilni aplikaciji FriStudent.. 22 5.8 Prikaz dodajanja izpitnega roka

Plyer je implementiran predvsem za razvoj mobilnih aplikacij, kjer se upo- rablja za dostop do senzorjev naprave in drugih funkcionalnosti. Tabela 3.1 prikazuje strojno opremo

Pri projektu TrinityCore sodelujem pretežno v vlogi razvijalca za podatkovne baze ter, kot tako imenovani upravitelj igre (game master) Občasno sodelujem tudi pri izdelovanju

Z doloˇ citvijo zadnje toˇ cke meritve smo si lahko privoˇsˇ cili, da se pozicija kamere prestavi pod prvi del stopala (pod prste) in tako (glede na povpreˇ cno velikost ˇ

razvoj spletne aplikacije, Facebook, Graph API, veˇcslojna arhitektura, spletni uporabniˇski vmesnik, vmesnik SPI, avtentikacija uporabnikov, prenos podatkov, dinamiˇcno