1 UVOD Razvoj mobilnih naprav, kot so pametni telefoni in vseprisotnih informacijskih rešitev, ki smo jim priča dandanes, je privedel do popolnoma novega okolja, v katerem uporabniki pričakujejo uporabne storitve in informacije. A količina podatkov in storitev se širi z izjemno hitrostjo. Le-ta je dosegla že tak obseg, da se uporabniki težko sami odločijo, katero storitev izbrati, ali pa za to porabijo veliko časa. To je spodbudilo idejo o uporabi konteksta za zmanjšanje nabora informacij in ponujanje uporabnikom bolj prilagojenih storitev. Sistemi, ki uporabljajo kontekst, se imenujejo kontekstno odvisni in omogočajo nove razvojne možnosti tako za ponudnike storitev kot tudi za njihove končne uporabnike. Z zajemanjem kontekstnih podatkov in njihovo obdelavo je mogoče prilagajati obnašanje sistema in s tem povečati učinkovitost iskanja informacij in storitev. To pa neposredno izboljšuje uporabniško izkušnjo. Še posebno v kombinaciji z mobilnimi napravami se ti mehanizmi kažejo kot posebej učinkoviti in doživljajo množično uporabo na različnih mobilnih aplikacijskih platformah. Ta motivacija nas je privedla do raziskave, kjer smo pregledali objave zadnjih let in povzeli rezultate sorodnih del. Opravljen pregled literature je bil podlaga za izdelavo analize kontekstno odvisnih sistemov. Ta nas je pripeljala do spoznanja, da imajo sistemi kar nekaj podobnosti, a se vendarle razlikujejo v arhitekturi, delovanju in uporabi konteksta. Da bi dosegli višjo stopnjo sistematizacije, smo se odločili za izdelavo taksonomije kontekstno odvisnih sistemov, ki je jedro v tem članku opisane raziskave. Delo je sestavljeno takole: po uvodnem poglavju predstavljamo definicije kontekstna in kontekstno odvisnega računalništva. Nadaljujemo s tretjim poglavjem, kjer opisujemo osnovne značilnosti kontekstno odvisnih sistemov. Četrto poglavje je jedro raziskave. Na začetku predstavimo taksonomijo kontekstno odvisnih sistemov, ki jo nato podrobno razdelamo po kategorijah. V sklepu predstavljamo klasifikacijo ogrodij in aplikacij glede na predstavljeno taksonomijo. Članek zaključujemo z razpravo, kjer kritično razpravljamo o raziskanem področju in možnosti nadaljnjih raziskav. 2 DEFINICIJA KONTEKSTA IN KONTEKSTNE ODVISNOSTI Za lažje razumevanje konteksta smo najprej poiskali različne definicije tega termina v literaturi. Prvič izraz obravnavata Schilit in Theimer [1], ki ga definirata kot lokacijo ali identiteto ljudi in predmetov v bližini ter spremembe med njimi. Podobne definicije podajo tudi Brown et al. [2] ter Ryan et al.[3]. Čeprav so takšne definicije zelo pogoste, jih je v praksi težko posplošiti. Zato raziskovalci težimo k temu, da bi termin definirali na bolj splošen način. Tega sta se zavedala tudi Dey in Abowd [4], ki sta poiskusila poenotiti pogled na kontekst in kontekstno odvisne aplikacije. Če gledamo na kontekst v smislu informacijskih storitev in ne toliko mobilnih oz. prenosnih naprav, se Prejet 11. april, 2012 Odobren 23. april,2012 42 ŽONTAR, HERIČKO, ROZMAN bolj prilega definicija konteksta, kot so jo podali Doulkeridis et al. [5]. Njihova definicija identificira dve vrsti konteksta, in sicer uporabniškega in storitvenega. Pri iskanju storitev se preverja ujemanje obeh kontekstov in se tako izključijo vse nerelevantne storitve. Sami definiciji konteksta in kontekstno odvisnega računalništva sta strogo prepleteni. Tako ni presenetljivo, da sta prvo definicijo kontekstne odvisnosti podala prav Schilit in Theimer [1]. Na začetkih raziskav so definirali aplikacije kot kontekstno odvisne že, če so te seznanjene s kontekstom in se odzivajo v odvisnosti od njegovega stanja. Treba je poudariti, da v literaturi ne obstaja skupno razumevanje, kaj kontekst dejansko je. Čeprav se večina avtorjev sklicuje na kontekst, ga v svojih prispevkih dojemajo popolnoma drugače. Zato smo se osredotočili na kontekst kot množico dodatnih podatkov o uporabniku, ki mu pomagajo izluščiti pomembne podatke oz. storitve glede na njegove zahteve. 3 KONTEKSTNO ODVISNI SISTEMI Skozi leta se je razvilo veliko ogrodij in aplikacij, ki jih lahko uvrstimo v skupino kontekstno odvisnih sistemov. Ti se v večini razlikujejo po naboru funkcionalnosti, postavitvi in poimenovanju arhitekturnih slojev ter drugih arhitekturnih konceptov. S ciljem, da izdelamo smiselno taksonomijo, smo najprej raziskali nekaj skupnih značilnosti sistemov, ki so jih omenjali že avtorji pred nami (Baldauf et al. [6] in Lee et al. [7][7]). Na podlagi njihovega dela in predstavljenih meta arhitektur smo razdelali in analizirali kontekstno odvisne sisteme. Kontekstno odvisni sistemi imajo pogosto kompleksne arhitekture in veliko podsistemov, ki skrbijo za predstavitev, upravljanje, sklepanje in analizo kontekstnih podatkov. Le z usklajenim sodelovanjem vseh teh podsistemov je mogoče doseči določeno funkcionalnost. Čeprav je bilo predstavljenih veliko različnih sistemov, pa vendar vsi vsebujejo vsaj štiri osnovne korake za upravljanje konteksta [7]. To so:  pridobivanje konteksta,  shranjevanje konteksta,  abstrakcija konteksta in  uporaba kontekstnih podatkov. Prvi korak je pridobitev surovih kontekstnih podatkov z uporabo fizičnih ali virtualnih senzorjev. Ko so le-ti zajeti, jih sistemi pogosto shranijo v repozitorij. Za hrambo je treba podatke organizirati v podatkovne ali kontekstne modele. Naslednji korak je opcijski, saj ga uporabljajo le nekateri sistemi in se imenuje abstrakcija konteksta. Zadnji korak v tem procesu je uporaba surovih ali abstrahiranih kontekstnih podatkov v aplikacijah ali storitvah. 4 TAKSONOMIJA V tem poglavju bomo predstavili in opisali osem kategorij, ki sestavljajo našo taksonomijo. Identificirali bomo vse kriterije in podali razloge, zakaj smo jih uvrstili v taksonomijo. 4.1 Vrsta sistema Kontekstno odvisni sistemi so lahko, tako kot druga programska oprema, implementirani na različne načine. Slika 1. Taksonomija kontekstno odvisnih sistemov TAKSONOMIJA KONTEKSTNO ODVISNIH SISTEMOV 43 Zgodnji sistemi so bili implementirani kot samostojne aplikacije, ki delujejo na določeni napravi ali operacijskem sistemu. Posledično so prilagojeni na specifične senzorje in druge specifike strojne opreme. Vse to pa ima negativne posledice na prenosljivost in množično uporabo. To se novejši sistemi razvijajo v obliki ogrodij in vmesne programske opreme. Medtem ko je možnost ponovne uporabe pri prvih večja, pa se zadnji usmerjajo predvsem v uporabo kontekstna v spletnih storitvah in storitveno-usmerjeni arhitekturi [7]. Kot primere ogrodij lahko naštejemo Context Toolkit [8], Hydrogen [9] in CoBrA[10]. Na drugi strani, lahko najdemo tudi implementacije vmesne programske opreme kot sta Service-Oriented Context-Aware Middleware – SOCAM [11] in Gaia [12]. 4.2 Aplikacijska domena Z vrsto sistema je tesno povezana tudi aplikacijska domena. Medtem ko lahko za vse kontekstno odvisne sisteme, ki so implementirani kot samostojne aplikacije, z gotovostjo trdimo, da so domensko specifični, pa pri drugih arhitekturah opažamo čedalje večjo težnjo po splošnosti [7]. Zato ni presenetljivo sovpadanje s smernicami razvoja objektno-orientiranih sistemov, kjer se teži k uporabi ogrodij. 4.3 Arhitektura Arhitekturne stile kontekstno odvisnih sistemov lahko povzamemo v tri kategorije: samostojne, distribuirane in centralizirane. Samostojna arhitektura je najpreprostejša, saj ima aplikacija neposreden dostop do senzorjev in ne omogoča skupne rabe konteksta med napravami. To vrsto arhitekture je mogoče hitro implementirati, a ima ob tem kar nekaj omejitev, saj je omejena le na lastno pridobljene kontekstne podatke. Ta je primerna le za manjše, preproste in domensko specifične aplikacije. Distribuirani kontekstno odvisni sistemi lahko hranijo kontekstne podatke na več ločenih napravah, zato odpade potreba po dodatnem centralnem strežniku. Vsaka naprava zase je neodvisna, zato izpad posamezne naprave ne vpliva na delovanje sistema. Med slabosti te arhitekture lahko uvrstimo komunikacijske vezi med posameznimi napravami ali agenti. Le-te so pogosto implementirane kot ad hoc rešitve, ki pa jih je težko nadzirati in vzdrževati [7]. Mobilnim napravam namreč primanjkuje virov in računske moči za tako vrsto implementacije. Zato arhitektura distribuiranih sistemov ni primerna za implementacijo računsko intenzivnih aplikacij. V centralizirani arhitekturi so senzorji in naprave povezani s centralnim kontekstnim strežnikom, ki ima na voljo veliko virov in računske moči. Vsi kontekstni podatki so shranjeni tam. Kadar naprava potrebuje dodatne podatke, pošlje poizvedbo na centralni strežnik, to pa ji vrne rezultate povpraševanja. V tej arhitekturi vse povezave vodijo v centralni strežnik, kar omogoča njihovo poenostavitev in posplošitev. Posledica tega sta lažja implementacija in vzdrževanje. Dodatna prednost je, da lahko v tak sistem na zelo preprost način dodajamo nove naprave in senzorje. 4.4 Senzorji Senzorji so zelo pomemben del kontekstno odvisnih sistemov, saj skrbijo za zajemanje kontekstnih podatkov. Pogosto je treba zajemati podatke iz več različnih virov, jih združiti in obdelati, da pridobimo ustrezne kontekstne informacije. Podatke lahko zajemamo na več načinov, med njimi so najbolj izpostavljeni fizični in virtualni senzorji ter fuzija obeh zvrsti. V literaturi so najpogosteje omenjeni prav fizični senzorji. Med temi prednjači lokacija [4,5,13,14,15,16,17], kateri sledita čas [4,5,14,17] in temperatura [13]. Druge vrste senzorjev obsegajo še:  identiteto uporabnika,  njegove aktivnosti,  zmožnosti naprave,  število uporabnikov,  socialno okolje,  kontekstne storitve in  sestavljen kontekst. Čeprav identitete uporabnika oz. njegovega uporabniškega profila ni mogoče direktno zaznati s senzorji, je le prav, da ga vseeno uvrstimo v to kategorijo. V nemalo raziskavah [5,15,16,17] se je ta koncept izkazal kot ključen za učinkovito delovanje sistema. Uporabnik namreč z nastavitvami profila direktno vpliva na delovanje sistema. Lahko se celo zgodi, da uporabnik prestopi mejo konteksta in postane osrednji del sistema. V [18] sistem predlaga način komunikacije z osebo glede na njene uporabniške nastavitve, lokacijo in aktivnost. Podoben vpliv imata tudi število uporabnikov in socialno okolje, v katerem se uporabnik giblje [14]. Zmožnosti naprave se povezujejo s ponujeno vsebino. V [5] navajajo, da zmožnosti naprave vplivajo na rezultate poizvedb. Tu imajo pomemben vpliv velikost zaslona in podprte vsebine. Ko delamo z multimedijskimi vsebinami, prikažemo le tiste, ki so primerne za določen tip naprave. Kontekstne storitve, kot je bilo že omenjeno, so abstrakcija senzorjev in lahko služijo pridobivanju poljubnih kontekstnih podatkov. Novejši sistemi jih pogosto uporabljajo, saj ponujajo dodatno raven abstrakcije. Sestavljen kontekst, kot je predstavljen v [4], je sinteza več različnih kontekstnih podatkov, ki sami zase ne bi dajali enake stopnje informacij, kot če so povezani skupaj. 4.5 Kontekstni model Kontekstni modeli so potrebni za shranjevanje in obdelavo kontekstnih podatkov. Izbira in razvoj modela je težavna, saj moremo pokriti čim več možnosti uporabe [19]. Baldauf et al. [6] povzemajo najbolj relevantne pristope k modeliranju konteksta, ki temeljijo na podatkovnih strukturah, uporabljenih za predstavitev 44 ŽONTAR, HERIČKO, ROZMAN in izmenjavo kontekstnih podatkov. Ločijo šest kategorij:  modeli ključ-vrednost,  modeli iz označevalnih shem,  grafični modeli,  objektno orientirani modeli,  modeli na podlagi logike in  ontološko podprti modeli. S pregledom literature smo pridobili lasten vpogled v modele kontekstnih ogrodij in aplikacij. Zato smo dopolnili omenjene kategorije, kot je prikazano v taksonomiji. Šesterici smo dodali graf oz. drevo, ki je bilo opisano v [5], in domensko specifičen jezik na katerega smo naleteli v [19]. Modela, ki bi temeljil na logiki, nismo zasledili. Zato in zaradi podobnosti s skupino ontološko podprtih modelov smo se odločili, da ga združimo v eno skupino. Posebej želimo poudariti ContextUML [13]. To je na jeziku UML 1 temelječa notacija za opis kontekstnih podatkov. V novejši literaturi je opazna čedalje večja težnja k uporabi ontoloških modelov za opis konteksta. Ontologije namreč ponujajo način opisa konceptov in relacij med njimi. Zaradi njihove visoke stopnje izraznosti in zmožnosti uporabe sklepanja jih uvrščamo kot eno pomembnejših tehnologij na tem področju. 4.6 Abstrakcija konteksta Kontekstne podatke lahko pridobimo neposredno iz senzorjev, a šele njihova abstrakcija privede do novih in bolj uporabnih spoznanj. Kot smo opisali v prejšnjem poglavju, obstaja veliko načinov, kako modelirati kontekst. Razumljivo je, da ima način opisa velik vpliv na zmožnost abstrakcije podatkov v sistemu. Kadar so kontekstni podatki opisani z ontologijo, abstrakcija v večini primerov poteka s semantičnim pristopom in ontološko podprtim sklepanjem. Nad drugimi kontekstnimi modeli lahko za abstrakcijo uporabimo še pravila ali logiko prvega reda, a je sklepanje v teh primerih močno omejeno. 4.7 Hramba konteksta Nekateri kontekstno odvisni sistemi hranijo kontekstne podatke v repozitorijih. Ti podatki se lahko uporabijo takoj ali pozneje ter povratno vplivajo na takrat veljavni kontekst. A načini hrambe so različni in močno povezani z izbranim kontekstnim modelom. Najpogosteje se uporabljajo relacijske podatkovne baze. Zelo pogosta je tudi serializacija v XML, ki se uporablja za distribucijo kontekstnih podatkov. S širšo uporabo ontologij se je povečalo tudi hranjenje v zapisih RDF 2 . Kontekstno odvisni sistemi, ki delujejo na storitveni arhitekturi, raje uporabljajo spletne storitve za trajno hrambo kontekstnih podatkov. 1 http://www.uml.org/ 2 http://www.w3.org/RDF/ 4.8 Varnost in zasebnost Zasebnost podatkov in s tem povezano varovanje je zelo pomemben aspekt kontekstno odvisnih sistemov. Nenehno spremljanje uporabnikov in obdelava njihovih podatkov lahko povzroči strah pri uporabnikih in posledično privede do odklona uporabe aplikacij ali naprav. Zaradi teh dejavnikov je treba v sistemih zagotoviti ustrezne mehanizme za varovanje in omejitev dostopa do teh podatkov. To še posebej velja v sistemih, ki shranjujejo kontekstne podatke v trajni obliki. Tukaj je treba poudariti razlike med klasičnim varovanjem podatkov v informacijskih sistemih in kontekstno odvisnih sistemih. Pri slednjih so pomembni predvsem vidiki do katerih kontekstnih podatkov lahko dostopajo aplikacije. Ali je podatek o lokaciji res potreben? Dovoliti dostop do uporabniškega profila? Kako se beleži zgodovina uporabe? Na vsa ta in številna druga vprašanja je treba odgovoriti, še preden se lotimo razvoja kontekstno odvisnih rešitev. A na tem področju je opazno očitno pomanjkanje raziskav. Le redki avtorji omenjajo varnostne mehanizme za varovanje zasebnosti uporabnikov. V večini se osredinjajo le na arhitekturo in omogočanje kontekstno odvisnih funkcionalnosti. Langheinrich [20] opozarja na nevarnosti, ki prežijo na uporabnike vseprisotnih mobilnih rešitev. Med drugim poudarja nujnost obveščenosti uporabnika o tem, kateri podatki se zbirajo, in pridobiti njegovo potrditev za to. Hkrati poudarja še pomen anonimnosti in zaključuje z nekaj napotki za zbiranje podatkov:  zbiranje podatkov samo za določen in točno definiran namen;  zbiranje izključno podatkov, ki so potrebni za namen (in nič več);  hraniti podatke le za čas, ki je potreben za namen. Eden prvih, ki omenjajo zasebnost, je Dey [8]. V Context Toolkitu uvaja preprost mehanizem dostopa za varovanje zasebnosti uporabnikov v obliki lastništva konteksta. CoBrA [10] ponuja ontološko podprt jezik (REI), ki omogoča uporabnikom, da definirajo pravila in s tem kontrolirajo deljenje zasebnih podatkov. 5 KLASIFIKACIJA Da bi preverili izdelano taksonomijo, smo se odločili izvesti klasifikacijo na primeru. Iz sorodnih del smo izbrali nekaj primerov kontekstno odvisnih sistemov in jih razvrstili glede na kategorije iz klasifikacije. Tabela 1 prikazuje to klasifikacijo. http://www.w3.org/RDF/ TAKSONOMIJA KONTEKSTNO ODVISNIH SISTEMOV 45 Tabela 1: Klasifikacija kontekstno odvisnih sistemov na podlagi naše taksonomije K o n te k st n o o d v is n i si st e m V r st a si st e m a A p li k a c ij sk a d o m e n a A r h it e k tu r a S e n z o r ji K o n te k st n i m o d e l A b st r a k c ij a k o n te k st a H r a m b a k o n te k st a V a r n o st i n z a se b n o st AMS[1] Samostojna aplikacija Domensko specifična Samostojna Lokacija / / / / Context Toolkit [8] Ogrodje Splošna Distribuirana Lokacija, identiteta, čas, aktivnost Ključ- vrednost Pravila / Avtorizacija Hydrogen [9] Ogrodje Splošna Distribuirana Lokacija, identiteta, čas Objektni model / / / Gaia [12] Ogrodje Splošna Distribuirana Lokacija Ključ- vrednost Logika prvega reda XML / CoBrA [10] Ogrodje Splošna Centralizirana Lokacija, aktivnost Ontologije Ontološko podprto sklepanje RDF/OWL Avtorizacija SOCAM [11] Vmesna programska oprema Splošna Centralizirana Kontekstne storitve Ontologije / RDF/OWL / Enhanced CoCA [21] Ogrodje Splošna Distribuirana Lokacija, aktivnost Ontologije Logika prvega reda Relacijske PB / Context Management Framework [22] Ogrodje Splošna Centralizirana Lokacija, čas, temperatura, aktivnost, zmožnosti naprave Ontologije Ontološko podprto sklepanje XML / 6 SKLEP V raziskavi smo se ukvarjali s kontekstom in kontekstno odvisnimi sistemi v računalništvu. Cilj je bil pridobiti pregled nad omenjenim raziskovalnim področjem. Zanimalo nas je, kaj sploh kontekst je in kako ga definirajo drugi raziskovalci. Potem smo si zastavili vprašanje, kako zaznati kontekst in kako ga lahko uporabimo za izboljšanje delovanja sistema. Da bi dobili odgovore na ta in podobna vprašanja, smo se lotili pregleda sorodne literature. Pri tem so bile arhitekture sistemov in uporabljene tehnologije v ospredju naše pozornosti. Da bi bolje razumeli kontekst, smo najprej poiskali njegove definicije in definicije kontekstno odvisnih sistemov. Ugotovili smo, da imajo avtorji skupno razumevanje konteksta, a ga je težko izraziti. Najbolj razširjena in uveljavljena je definicija, ki sta jo podala Dey in Abowd [4]. Nato smo pogledali, kako so zgrajeni sistemi, ki temeljijo na kontekstu. Na podlagi pridobljenega znanja smo ugotovili kar nekaj sovpadanja med posameznimi sistemi. Zato smo izdelali taksonomijo področja, ki omogoča sistematičen pristop k analizi kontekstno odvisnih sistemov. Izbrali smo osem kategorij, s pomočjo katerih lahko natančno klasificiramo rešitve. Za lažjo predstavitev smo izdelali diagram ribje kosti, ki ponazarja izdelano taksonomijo. Za konec lahko ugotovimo, da je področje kontekstno odvisnih sistemov še dokaj neraziskano. Možnosti za nadaljnje raziskave lahko najdemo v vsaki od navedenih kategorij. Mogoče je še največ dela odprtega pri zajemanju konteksta. Trenutni sistemi sicer promovirajo različne vrste senzorjev, a na koncu implementirajo le redke. Potrebni so inteligentni mehanizmi, kako zajeti tudi druge uporabniške kontekste. Prav tako so odprta področja še na hrambi in obdelavi konteksta. Nazadnje je treba omeniti še varnost in zasebnost. Žal smo morali ugotoviti, da se le malo raziskav ukvarja s tem področjem.