Aplicație pentru managementul evenimentelor Coordonator Absolvent Conf. Dr. Ing. Moisescu Mihnea Alexandru Marcu Iulia-Florentina 2016 Introducere… [307258]
Universitatea POLITEHNICA București
Facultatea Automatică și Calculatoare
Departamentul Automatică și Informatică Industrială
LUCRARE DE LICENȚĂ
Aplicație pentru managementul evenimentelor
Coordonator Absolvent: [anonimizat]. [anonimizat]
2016
Introducere
Telefoanele mobile au devenit o resursă pe care se centrează activitățile zilnice ale oricărui individ. Astfel, [anonimizat] a ajuta la procesul de comunicare directă, s-a schimbat, devenind o platformă ce oferă oportunități inovatoare pentru orice tip de servicii inteligente.
[anonimizat], o persoană își folosește telefonul mobil la mai mult de 30 de activități diferite și ar dori creșterea gradului de utilizare odată cu punerea la dispoziție a mai multor servicii. Aceste servicii joacă un rol foarte important în schimbarea vieții de zi cu zi a indivizilor și în progresul unei societăți. [1]
[anonimizat] a [anonimizat]. [anonimizat]: pierderea timpului la cozi pentru a-[anonimizat] a-ți fi furată identitatea în timp ce stai la coadă pentru a intra la eveniment (tehnica „tragerii cu ochiul”), [anonimizat]. [anonimizat]-o (MeetApp, aplicație pentru managementul evenimentelor) asupra problemei validării persoanelor care participă la un eveniment.
Soluția software dezvoltată vine ca rezolvare a organizării din punct de vedere temporar al unui eveniment. Managementul timpului reprezintă esența oricărui eveniment de succes. Capabilitatea unui organizator de a face față provocării de a ține cont de principii precum organizarea optimă a [anonimizat], [anonimizat].
Modul în care tehnologia ajută creșterea din punct de vedere evolutiv a organizării de evenimente este evident. Pot fi menționate schimbări precum înlocuirea listelor de e-mail a viitorilor partacipanți la un eveniment cu publicitatea prin intermediul rețelelor de socializare și implicit trimiterea invitațiilor în același mediu. [anonimizat] o [anonimizat], afirmativ sau negativ. Înainte de a fi posibilă interacțiunea viitorilor participanți prin intermediul mijloacelor pe care o [anonimizat], complicând acest proces intuitiv și natural. De asemenea, s-a observat trecerea de la broșuri informative ce au ca scop înștiințarea indivizilor cu privire la un viitor eveniment la „responsive websites” și de la ghiduri referitoare la eveniment la aplicații mobile . „Responsive websites” [anonimizat]. În cele din urmă, o altă zonă de interes a organizatorilor de evenimente este reprezentată de reacțiile participanților, post-eveniment. În acest caz, formularele de feedback au fost schimbate cu monitorizarea reacțiilor prin intermediul aplicațiilor menționate mai sus sau a rețelelor de socializare.
Înțelegând și analizând domeniul managementului de evenimente, am ajuns la concluzia că este nevoie de o aplicație ca MeetApp care să ajute organizatorii să-și structureze cât mai bine activitățile desfășurate pentru un eveniment de succes. Astfel, utilizând această aplicație, timpul consumat pentru căutarea pe listă a unui participant la eveniment este economisit. Validarea participării se va face prin intermediul aplicației, folosind funcționalitatea NFC a telefonului mobil. Utilizatorul și organizatorul își vor apropria telefoanele mobile (la o distanță nu mai mare de 10 cm), activând în acest mod transferul unui cod de validare de la organizator la participant. Digitalizarea acestui proces ajută la adaptarea lumii fizice la cea informatizată.
În concluzie, utilizarea aplicației pentru managementul evenimentelor va facilita munca organizatorilor și le va oferi utilizatorilor senzația de siguranță atunci când participă la un eveniment datorită tehnologiei NFC integrate în aplicație.
Descrierea problemei abordate
Expunerea problemei rezolvate
Ideea de dezvoltare a aplicației pentru managementul evenimentelor a pornit de la necesitatea organizării acestui domeniu. În acest sens, a fost studiată participarea la un eveniment oarecare. Principala problemă observată în această situație este statul la coadă pentru a intra la eveniment și a fi verificat pe lista de participare, și implicit timpul pierdut. Soluția găsită implică validarea participării prin intermediul aplicației software.
Organizarea unui eveniment implică consumarea unor resurse primare ce fac parte din viața de zi cu zi a unui individ. De exemplu, pentru ca un eveniment să aibă succes, un organizator trebuie să pună la punct aspecte precum respectarea programului impus inițial. De aici, reiese importanța pe care o are managementul timpului în acest domeniu. Un avantaj pe care îl aduce aplicația software dezvoltată este economisirea timpului prin optimizarea proceselor de organizare și participare la un eveniment.
O altă problemă întâmpinată este aceea a listelor de participare. Crearea unor asemenea liste necesită timp și atenție sporită. Verificarea participanților utilizând metoda clasică a listei poate ridica probleme ca pierdutul unui interval mult prea mare de timp. De asemenea, o persoană care nu are permis accesul la un eveniment la care validarea participării se face prin verificarea unei liste cu numele și prenumele acestora ar putea să „tragă cu ochiul” și să folosească identitatea cuiva care se regăsește pe listă pentru a putea intra. Pe de altă parte, este nevoie de prezența unor persoane care să se ocupe de acest proces. Acest fapt este echivalent cu extinderea personalului pe care îl presupune organizarea unui eveniment și automat și cu creșterea bugetului. Înlocuind validarea utilizând o listă cu validarea printr-o aplicație software se pot evita aceste probleme.
În ultima perioadă s-a observat o creștere semnificativă în ceea ce privește numărul utilizatorilor de telefoane inteligente. Acestea sunt folosite la o gamă largă de activități zilnice. Familiarizarea de la vârste fragede cu mediul construit prin intermediul funcționalităților oferite de aceste dispozitive oferă oportunitatea evoluției anumitor domenii. Astfel, utilizarea telefoanelor mobile inteligente facilitează modul în care un individ poate interacționa cu alt individ/ grup de indivizi sau cu un domeniu care prezintă interes pentru acesta.
Totodată, bugetul reprezintă o resursă vitală în organizarea unui eveniment. Creșterea resurselor alocate pentru un eveniment generează, de obicei, și creșterea resurselor financiare. De asemenea, trebuie luate în calcul și cheltuielile referitoare la locația în care se va desfășura evenimentul și la consumabilele necesare decurgerii într-un mod pozitiv a evenimentului. Dar un buget consistent nu asigură succesul unui eveniment, urmărindu-se astfel economisirea din toate punctele de vedere acoperite de acest domeniu.
Studiul aplicațiilor similare
Înainte de a începe dezvoltarea aplicației software MeetApp, aplicație pentru managementul evenimentelor, s-a realizat un studiu al aplicațiilor din domeniu, cu funcționalități asemănătoare. Una dintre aceste aplicații se numește Nearify. Scopul acestei aplicații este acela de a oferi utilizatorilor oportunitatea de a descoperi evenimente de care sunt interesați.
Figura 2.2.1 – Nearify [2]
Aplicația mobilă Nearify sortează evenimentele în funcție de anumite criterii, precum locația sau domeniul tematic al acestora. Însă MeetApp permite utilizatorilor să vizualizeze evenimentele create de anumiți organizatori, după ce aceștia s-au abonat la organizatorii lor preferați. Această funcționalitate pune accent pe relațiile interumane de încredere și respect. Astfel, utilizatorii își lărgesc aria persoanelor cunoscute din domeniul organizării de evenimente.
Din punct (punctul) de vedere al organizării evenimentelor, Nearify pune la dispoziție funcționalitatea de a crea un eveniment. Acesta va apărea în aplicație, putând fi filtrat în funcție de gen (conferințe, petreceri, spectacole de comedie etc) și de locație. Comparând acest caz de utilizare din Nearify cu același caz de utilizare din MeetApp, se observă accentul pe care cea din urmă îl pune pe facilitarea activităților pe care trebuie să le desfășoare un organizator de evenimente. Astfel, în MeetApp, un organizator poate trimite invitații la evenimentele pe care le-a creat, evenimente pe care le vizualizează în secțiunea „Manage My Events” și poate coordona partea de validare a prezenței utilizatorilor la evenimentele respective.
Figura 2.2.2 – Nearify [2]
Așadar, exemplele menționate (exemplul? E doar unu daca te referi la aplicatie) în paragrafele anterioare favorizează evidențierea funcționalităților inovatoare prin (prin care) aplicația MeetApp se diferențiază în domeniul evenimentelor, atât în ceea ce privește participanții, cât și organizatorii.
Aplicații pentru managementul evenimentelor
Furtul/ Pierderea identității
Societatea noastră se bazează pe sporirea încrederii în informațiile personale prin care un individ se poate identifica în diferite circumstanțe. Problema furtului identității implică informații personale, dezvoltându-se mai ales în mediul online. Deși scopul hoților de identitate pare limitat în majoritatea țărilor, importanța implicațiilor acțiunii acestora crește, determinând astfel micșorarea siguranței utilizatorilor Internetului.
Înțelegerea conceptului de „identitate” și cum operează componentele sale sunt cruciale pentru determinarea mijloacelor optime de protecție împotriva unei catastrofe. Componentele de bază ale identității se bazează pe atributele fixe, verificate ale unei persoane, ce sunt, de obicei, înregistrate de către autoritățile publice. Aceste atribute includ: sexul, numele de familie, prenumele, data și locul nașterii, numele și prenumele părinților, CNP-ul. De asemenea, un individ poate fi identificat și prin intermediul unei alte varietăți de atribute, printre care se enumeră: numele de utilizator și parola de la calculatorul personal, o pagină web, un blog, un IP, o adresă de e-mail, un cont bancar, un PIN.
Furtul identității se produce atunci când un individ achiziționează, transferă, posedă sau folosește informații personale ale unui alt individ într-o manieră neautorizată, cu intenția de a le folosi pentru a comite fraude. Astfel, accesul neîndreptățit la informații cu caracter privat se poate face prin mai multe metode:
În mediul offline
Pretextul – hoții sustrag informații precum nume, prenume, număr de telefon, număr de cont bancar contactând instituții bancare sau companii telefonice, utilizând altă identitate decât a lor.
Privitul „peste umăr” – se referă la acțiunea de a trage cu privirea peste umărul cuiva atunci când introduce informații personale într-o aplicație.
În mediul online
E-mail-urile sau website-urile false – sunt folosite pentru a induce în eroare persoane, convingându-le să dezvăluie informații cu caracter privat.
Calculatoarele sau telefoanele – manipulate sau „hackuite” pentru a extrage informații referitoare la posesorul acestora.
de internet ()varietăți de atrifiecăruia în a-și ndpersonal, o pagină web, un blog, un protocol de internet ()varietăți de atri
de internet ()varietăți de atrifiecăruia în a-și ndpersonal, o pagină web, un blog, un protocolde internet ()varietăți de atri de internet ()varietăți de atrifiecăruia în a-și ndpersonal, o pagină web, un blog, un protocol de internet ()varietăți de atri de internet ()varietăți de atrifiecăruia în a-și ndpersonal, o pagină web, un blog, un protocol de internet ()varietăți de atriUtilizând metodele menționate anterior, hoții de identități sunt capabili de a deschide conturi false ( de credit, de telefonie, pentru împrumuturi, asigurări de sănătate etc. ).
Identificarea diferitelor tehnici de furt al identității este crucială pentru prevenirea și răspunsul cât mai eficient la amenințare. Detaliile acestor tehnici ar trebui colectate, analizate și ținute la zi, în acest mod existând posibilitatea de a fi întrebuințate cât mai productiv. Totodată, este necesară educarea și informarea eventualelor victime în acest sens. Atacurile au un caracter din ce în ce mai personal, iar preconizarea lor poate scădea riscul expunerii unui astfel de pericol.
Atât zona de business, cât și cea a industriilor sunt de părere că indivizii ar trebui să fie mai alarmați atunci când este vorba despre asumarea responsabilității individuale pentru protejarea propriei identitate. Chiar și așa, aceștia nu vor deține efectiv controlul asupra datelor personale fără o educație puternică. Unele studii demonstrează faptul că indivizii cu statut de utilizator al Internetului nu realizează că ignorând amenințările online, se expun de fapt unui mare pericol. De exemplu, atunci când un individ intră pe o pagină web nesigură care pentru a o accesa îi cere detalii precum numele, prenumele sau adresa de e-mail. El nu conștientizează pericolul pe care și-l asumă oferind unui sistem necunoscut oportunitatea de a stoca informații precum cele menționate anterior.
Securitatea datelor reprezintă o componentă cheie a unei strategii de combatere a furtului identității. Compromiterea datelor poate avea efecte devastatoare precum expunerea indivizilor la pierderea identității, expunerea entității a cărei sistem a pierdut datele la eșec și impunerea riscului unor pierderi financiare substanțiale de către toate părțile implicate în proces. Din această cauză, organizațiile ce colectează și păstrează informații cu caracter personal sunt sfătuite să implementeze o tehnică puternică de menținere a securității acestor date.
Pe piața IT se dezvoltă câteva metode de sporire a încrederii. Una dintre ele este tehnologia autentificării electronice, recunoscută ca fiind un proces complex ce permite verificarea și managementul identității din mediul online. În continuare, accentul se pune pe situația în care se efectuează un schimb de informații (mesaj) între doi indivizi, utilizatori ai unei aplicații software (emițător și receptor). Un argument în favoarea utilizării autentificării electronice este reprezentat de oferirea receptorului comunicării posibilități precum: verificarea identității emițătorului, verificarea autenticității conținutului mesajului transmis (de la trimitere până la primire), asigurare faptului că emițătorul nu poate nega trimiterea mesajului.
Există mai multe tipuri de tehnologii de autentificare electronică, incluzând transmiterea prin intermediul funcției NFC a unui cod de validare, semnături digitale, date biometrice (voce, fizionomie, amprentă), semnături dinamice.
În viitor se dorește lărgirea limitelor unui sistem online ce permite utilizatorilor să interacționeze, în timp ce cantitatea informațiilor personale pe care o dezvăluie se reduce. [3]
Managementul timpului
Managementul timpului reprezintă un scop important al multor activități umane, vizând o varietate de probleme referitoare la definirea scopului, evaluarea resurselor disponibile, controlul politicilor de management, programarea deciziilor.
În contextul lipsei timpului, se pot evidenția următoarele probleme:
Abundența informației.
Viteza cu care această informație devine perimată și consecința nevoii de materiale noi.
Simultaneitatea îndeplinirii mai multor roluri de către un individ și întreprinderea unor sarcini.
Nevoia constantă de a fi sincronizat cu organizații și persoane descentralizate.
Utilizarea unei varietăți de dispozitive pentru coordonarea vieții de zi cu zi.
Pe scurt, trebuie furnizate informații referitoare la cererile de zi cu zi ale unei societăți descentralizate, flexibile, în continuă schimbare, a cărei membrii sunt în contact permanent.
O provocare majoră a unui stil de viață reprezentativ pentru societatea descrisă mai sus este folosirea timpului disponibil într-o manieră eficientă și cât mai productivă. Timpul este considerat o resursă limitată care trebuie planificată și supervizată cu atenție, în condițiile unei zile pline de activități ce necesită a fi îndeplinite, de roluri asumate și de informații evaluate și procesate.
În prezent, sunt proiectate atât strategii, cât și dispozitive destinate economisirii timpului, putând fi atinse mai multe scopuri, utilizând aceleași resurse temporale. Însă, aceste strategii și dispozitive pot fi doar o iluzie, accentuând senzația derulării timpului cu viteză. Percepția unui decurs alert al vieții este principala cauză responsabilă pentru deteriorarea sănătății indivizilor (fizică și psihică) și a calității vieții pe care aceștia o percep. În plus, senzație de grabă constantă este accentuată în societățile cu grad mare de tehnologizare. [4]
Rolul tehnologiei în societatea curentă este asociat atât unor aspecte pozitive, cât și negative. De exemplu, deși tehnologia permite accesul la informații într-un mod mai ușor și mai eficient sau îmbunătățește productivitatea în diferite organizații, dedicarea excesivă aplicată unor forme de tehnologie poate determina dezvoltarea unui sentiment de alienare, declanșat atunci când individul se detașează de viața reală, în favoarea mediului virtual. Cu toate acestea, tehnologia, sub forma aplicațiilor software, poate genera o serie de beneficii pentru utilizatori. Mai exact, în ceea ce privește managementul timpului, este un fenomen universal cunoscut faptul ca aplicațiile au un impact semnificativ asupra timpului investit în diferite activități: de exemplu, o persoană care dorește să își gestioneze timpul mai eficient poate alege sa își comande produse alimentare folosind site-ul sau aplicația unui supermarket și selectând livrarea la domiciliu, scutind astfel timpul petrecut în magazin pentru achiziționarea cumpărăturilor. Din acest exemplu se poate stabili existența unei legături între aplicațiile software și managementul optim al timpului, aceasta instalându-se atunci când utilizatorul poate săvârși o activitate în mod autonom (în cazul supermarket-ului, fără a fi nevoie de a aștepta la coadă pentru a plăti cumpărăturile la casă). Un alt exemplu care favorizează crearea unei astfel de legături este reprezentat de statul la coadă pentru validarea participării la un eveniment. Astfel, instalarea unor aplicații software care permit efectuarea imediată a unor comenzi, a unor plăți sau a validării diverselor procese, reprezintă un beneficiu atât la nivel de gestionare a timpului, dar și la nivelul bunăstării mentale a utilizatorului, reducând stresul și epuizarea care apar când acesta petrece un timp îndelungat la coadă pentru a efectua acele activități în mod tradițional.
Securitate și siguranță în contextul IoT(Internet of Things)
Era IoT deja a început, având un impact considerabil asupra vieții de zi cu zi. Chiar dacă IoT implică beneficii considerabile, această rețea de dispozitive expune utilizatorii unei largi game de amenințări de securitate. Cele mai dezvoltate amenințări au legătură cu pierderea informațiilor, a datelor sau a serviciilor. Acestea pot avea un efect negativ asupra vieții reale, ridicându-se astfel problema riscului siguranței fizice.
IoT are în componența sa o varietate de platforme și dispozitive cu capabilități diferite, iar fiecare astfel de sistem va avea nevoie de soluții de securitate bazate pe propriile caracteristici. În plus, securitatea individului devine din ce în ce mai importantă, pe măsură ce mediul IoT folosește informații personale, distribuindu-le între dispozitivele conectate. Așadar, sunt necesare mecanisme de protejare a datelor personale și monitorizare a circulației acestora.
Problematica IoT poate fi abordată din perspectiva siguranței și a securității, observându-se atât oportunitățile valabile, cât și riscurile asumate.
Riscurile există datorită integrării unui număr mare de dispozitive distribuite ce aparțin unei mulțimi de indivizi, având putere de calcul limitată și fiind localizate într-un mediu nesecurizat, fără control de acces. Toate aceste proprietăți determină vulnerabilitatea unui sistem bazat pe IoT. Astfel, sunt necesare concepte și soluții noi pentru detectarea conținutului infectat cu viruși sau a datelor corupte. Comunicarea dintre componentele IoT este în acest mod securizată, asigurându-se un caracter conciliant infrastructurii IoT. În aceste condiții, accentul este pus pe protejarea și managementul datelor personale implicate în procesele descrise anterior. [5]
În viitor, IoT va cuprinde o varietate cât mai mare de dispozitive. Acest fapt se datorează, desigur, noilor tehnologii IoT-enabled. Fiecare dintre aceste dispozitive este proiectat să adune, stocheze și comunice cât mai multe date. Datele pot fi folosite pentru a afla informații personale referitoare la un individ (nume, prenume, CNP, informații financiare, locație, contacte, obiceiuri și activități). Însă aici apare problematica protejării intimității fiecărui individ ce dispune de un astfel de dispozitiv. IoT prezintă o multitudine de avantaje atunci când vine vorba despre securitatea utilizatorilor săi: sunt asigurate infrastructuri de comunicare locală ce determină o viziune mai pozitivă asupra societății. Odată ce amenințările care pun în primejdie siguranța publică și securitatea sunt detectate încă din stadii incipiente, impactul acestora devine mai mic, garantându-se suport în timpul unor asemenea dezastre. Aceste aspecte eficace ale IoT se reflectă și în importanța pe care acesta îl joacă în menținerea anumitor nivele de securitate într-o rețea cu mai mulți utilizatori. [6]
Un exemplu real ce reflectă o problemă pentru securitatea IoT este constituit de dispozitivele care se conectează între ele, fiind ulterior conectate la o rețea. În acest caz, cele două procese nu se petrec simultan, fapt ce reprezintă un mare consumator de timp și de date. O soluție pentru această problemă se bazează pe planificarea, managementul și securitatea unei infrastructuri solide. Trebuie luate în considerare nevoile și preferințele fiecărui individ ce posedă un astfel de dispozitiv. [7]
Creșterea numărului de dispozitive IoT și prezența lor în domeniul Web duce la urgentarea rezolvării problemelor referitoare la securitate. Se poate observa că gradul de deschidere către astfel de probleme sau cerințele de protejare a datelor personale pe care fiecare individ le poseda diferă. Din punct de vedere tehnologic, este fezabilă personalizarea sau diferențierea metodelor în care fiecare dispozitiv protejează securitatea datelor personale pe care le stochează. În realitate, pot apărea constrângeri financiare și temporale care împiedică satisfacerea individuală a cerințelor de securitate. Chiar și așa, fiecare implementare optimă a unei soluții de securitate ce vizează dispozitive IoT se adresează unui sector specific de activități (ex. evenimente, magazine, muzică). [8]
Cerințele aplicației
Din punct de vedere al funcționalităților, pentru dezvoltarea aplicației, s-au luat în considerare următoarele cerințe:
Aplicația trebuie să aibă un design cât mai simplu pentru a putea fi ușor de folosit (user-friendly: simplu, intuitiv).
Conținutul aplicației poate fi vizualizat doar de persoanele care dispun de cont de Facebook.
Funcționalitațile aplicației diferă în funcție de tipul utilizatorului care se autentifică: participant sau organizator de eveniment.
Aplicația dispune de patru secțiuni: HOME/FEED, FEEDBACK, CALENDAR, PROFIL.
Informațiile referitoare la PROFIL sau la EVENIMENTE sunt importate de pe Facebook.
Este necesară integrarea unei funcționalități pentru validarea participării la evenimente prin intermediul tehnologiei NFC.
Prezentarea tehnologiilor utilizate în dezvoltarea aplicației
Ionic
Ionic este un framework de dezvoltare a aplicațiilor web ce ajută la crearea aplicațiilor mobile hibride. În acest caz, aplicațiile hibride sunt website-uri mici ce funcționează într-un browser shell dintr-o aplicație ce are acces la layer-ul platformei native. Acestea prezintă câteva avantaje în favoarea aplicațiilor pur native, cum ar fi suportul platformei, viteza de dezvoltare și accesul la cod parte terță.
Ionic poate fi văzut ca un front-end UI framework care se ocupă de tot ce înseamnă interacțiune UI, înfățișare și senzație pe care o aplicație ți le oferă atunci când o folosești.
Spre deosebire de un „framework responsive”, Ionic oferă posibilitatea utilizării unor elemente de UI mobil ce dau impresia a fi native. Odată ce Ionic este un framework HTML5, necesită un wrapper nativ precum Cordova pentru a funcționa ca o aplicație nativă (Angular + Cordova = ngCordova).
La baza dezvoltării unei aplicații hibride folosind Ionic este de fapt o pagină web ce funcționează într-un shell de aplicație nativă. De aici reiese faptul că se pot folosi în continuare HTML, CSS și JavaScript pentru a dezvolta o aplicație hibridă. De asemenea, Ionic utilizează AngularJS pentru mulțimea de funcționalități pe care acest framework o are.
Aproape toate sistemele de operare mobile dispun de un API care ajută la dezvoltarea aplicațiilor. Acest API constă într-o componentă care se numește Web View. Un Web View este, de obicei, un browser care funcționează în interiorul scope-ului unei aplicații mobile. Acest browser rulează codul HTML, CSS și JavaScript. Asta înseamnă că este posibilă dezvoltarea unei pagini web utilizând tehnologiile precedente și apoi executarea acesteia în interiorul unei aplicații. [9]
Figura 3.3.1. – Arhitecturile unei aplicații native, hibride, respectiv web [10]
Structură
Aplicațiile Ionic sunt dezvoltate cu Cordova, acesta reprezentând un pachet html/css/js al aplicațiilor, ce poate funcționa atât pe dispozitive mobile, cât și pe dispozitive desktop și care furnizează o arhitectură de plugin pentru accesarea funcționalităților native. Astfel, aplicațiile Ionic au structura unui fișier Cordova.
Pentru a înțelege mai bine utilitatea API-ului Cordova, se va analiza imaginea de mai jos.
Figura 3.3.1.1 – Funcționare Cordova [9]
Acolo unde este executat codul HTML/CSS/JavaScript există un web view. Acest cod poate fi luat ca atare, reprezentând implementarea unei interfețe grafice cu care utilizatorul poate interacționa. Pentru a apela date de la server-ul de acces la distanță se va face un apel AJAX.
Acolo unde este executat codul HTML/CSS/JavaScript există un web view. Acest cod poate fi luat ca atare, reprezentând implementarea unei interfețe grafice cu care utilizatorul poate interacționa. Pentru a apela date de la server-ul de acces la distanță se va face un apel AJAX. (identic cu paragrafu de mai sus)
Structura unui proiect Ionic cuprinde:
Platforms – folder ce conține proiectul Android sau iOS sau alte platforme.
Hooks – pentru acțiunile prin care aplicația trece datorită procesului de dezvoltare utilizând Cordova.
Merges – pentru supraîncărcarea documentelor pentru platforme specifice. De exemplu, presupunând că există fișierele merges/ios/someFile.js și www/someFile.js. Când se implementează aplicația iOS, someFile va fi înlocuit cu versiunea din merges. Poate fi o modalitate eficientă în crearea modificărilor specifice fiecărei platforme în parte.
Plugins – Folder ce conține toate plugin-urile folosite în cadrul aplicației. Acestea se adaugă folosind comanda: ionic plugin add {plugin}, unde {plugin} reprezintă numele plugin-ului sau URL-ul github.
SCSS(Sassy CSS) – locația în care se află fișierele SASS(Syntactically Awesome Stylesheets) ale aplicației. Utilizarea SASS este opțională în Ionic, dar Ionic în sine este construit cu SCSS.
WWW – folderul în care se găsește aplicația web prorpiu-zisă.
CSS – conține fișierele .css folosite pentru stilizarea aplicației
IMG – conține imaginile utilizate în dezvoltarea aplicației.
JS – conține fișierele javascript specifice Angular.js. Împărțit în app.js, ce conține metodele Angular de funcționare și configurare. Aici se definesc rutarea aplicației și variabile precum stilul taburilor, iOS style headears pe Android. Tot aici se găsește (gasesc) controllers.js – Angular controller, services.js – servicii Angular, precum call-ul către un 3rd party API și directives.js – directive Angular
LIB – conține bibliotecile Ionic. Respectă formatul Bower, noi biblioteci putând fi adăugate și actualizate folosindu-se Bower (bower install {packageName}.
TEMPLATES – conține fișierele de tip view (fișierele .html ce sunt randate).
Aplicațiile Ionic sunt la bază aplicații Angular. Așadar, atunci când vine vorba despre UI sau modul în care datele din aplicații sunt comunicate către surse externe, se aplică aceleași reguli fundamentale ca cele din Angular. Angular are o arhitectură MVVM(Model-View-ViewModel) unde controller-ul include un obiect de tip $scope. Proprietățile acestui obiect sunt disponibile template-ului aplicației, template-ul actualizându-se automat odată cu schimbarea valorilor proprietăților obiectului $scope.
Dezvoltare
Ionic reprezintă o colecție de Angular.js, UI Router, directive Angular, servicii Angular, funcționalități JavaScript și stiluri CSS focalizate pe înfățișarea aplicației mobile. Toate acestea sunt legate prin fișierele ionic.bundle.js și ionic.css.
Instalarea Ionic se face utilizându-se comanda: npm install –g ionic.
În timpul procesului de dezvoltare a aplicației, testarea pe dispozitive este foarte importantă. Deși Ionic facilitează crearea aplicațiilor mobile performante, asta nu înseamnă că nu aduce și trăsături ce implică bug-uri.
Figura 3.3.2.1 – Caracteristici ale platformei Ionic[11]
AngularJS
Cea mai bună soluție de dezvoltare a unei aplicații web de tip client side, durabilă în timp, folosește o structură bazată pe structura Angular JS. Angular JS este un framework dezvoltat de Google Inc. Motivul pentru care acest framework este considerat cel mai relevant în domeniu este reprezentat de suportul comunității și de sprijinul pe care îl oferă programatorilor pentru ca aceștia să-și mențină codul bine structurat. Renunțând la partea cantitativă a scrierii codului pentru aplicație, în utilizarea Angular JS, accentul cade pe ceea ce trebuie făcut.
MVC (Model View Controller)
MVC reprezintă baza pattern-ului arhitectural în ingineria software. Acest pattern este utilizat în dezvoltarea de aplicații software ce includ o interfață grafică cu care utilizatorul interacționează. [12]
Ideea fundamentală a MVC-ului este aceea de diferențiere la nivel de cod între modelul de date (managementul datelor), controller (logica aplicației) și view (prezentarea datelor utilizatorului). Astfel, utilizatorul interacționează cu o componentă view (ex. GUI), iar input-ul introdus de acesta este procesat de către o componentă controller. Acest controller are responsabilitatea de a verifica datele introduse înainte să fie procesate, asigurând în acest mod conformitatea cu anumite reguli de business. Mai mult, există un mecanism de comunicare între modelul de date și view ce permite celei din urmă să primească o notificare la fiecare modificare apărută în model. Ca rezultat, componenta view este răspunzătoare să se asigure că utilizatorul primește ultima versiune a datelor din aplicație.
În contextul aplicației dezvoltate utilizând tehnologii web, implementarea propriu-zisă a pattern-ului MVC se rezumă de fapt la o aplicație ce conține o colecție de controllere, fiecare dintre ele înaintând o cerere către un URL specific. Odată ce clientul (browser web) trimite cererea HTTP către server, controllerul o procesează. Astfel, controllerul va avea următoarele responsabilități: validarea datelor și procesarea acestora ținând cont de anumite reguli de business. În plus, controllerul are funcția de a asambla datele și template-ul HTML, comasarea având ca rezultat un răspuns HTTP. Acest răspuns HTTP, sub forma unui document HTML generat dinamic, este trimis către client.
Codul HTML generat pe care browser-ul îl afișează redă o parte a componentei view. Faptul că orice formă de comunicare HTTP implică o cerere din partea unui client și un răspuns din partea serverului susține lipsa unei (unui) canal de legătură între layer-ul stocării datelori și codul HTML afișat de browser (view). [13]
Figura 3.4.1.1 – Arhitectura MVC [14]
Crearea aplicațiilor moderne necesită ca un procent ridicat al logicii să fie susținut de browser. În astfel de arhitecturi, serverul este utilizat doar (nu doar) ca sursă a datelor ci și ca memorie furnizată aplicației ce rulează în browser.
În concluzie, în aplicațiile Angular, view-ul este DOM (Document Object Model), controller-ul este o clasă JavaScript, iar modelul de date este stocat în proprietățile obiectelor. [14]
MVVM (Model-View-ViewModel)
MVVM poate fi definit ca versiune extinsă a MVC-ului. Acesta introduce un layer proxy părții client, ce returnează datele actualizate utilizate în momentul curent, datorită datelor aflate inițial pe server și comunicate ulterior printr-un API REST (cred ca merge reformulat aici sau sa termini fraza dupa „in momentul curent” si sa incepi alta despre datele initiale). Layer-ul proxy se numește ViewModel.
În general, este nevoie ca datele să fie transformate într-o anumită manieră pentru a putea fi afișate. De acest lucru se ocupă componenta ViewModel. [13]
Figura 3.4.2.1 – Arhitectura MVVM [15]
Pe scurt, layer-ul ViewModel are două funcționalități primare. Prima dintre ele este aceea de a furniza și de a transforma o secțiune a datelor aplicației localizate pe server. A doua oferă funcționalitatea dorită în contextul afișării datelor.
Chiar dacă soluția găsită nu este o aplicație ce comunică cu o componentă backend, este recomandat să se folosească conceptul ViewModel. În majoritatea cazurilor, aplicația va avea o sursă de date a cărei elemente implică o anumită transformare înainte de a fi afișate. [13]
Two-way data binding și Scope
„Two-way data binding” se poate defini ca un mecanism utilizat pentru actualizarea automată a modelului de date odată cu interacțiunea utilizatorului cu interfața grafică (GUI). De asemenea, conceptul acoperă și reversul definiției, situație în care view-urile sunt actualizate automat ca răspuns al schimbărilor ce se petrec la nivelul modelului de date.
Deoarece noțiunea de „two-way data binding” face parte integral din AngularJS, se evită astfel scrierea unei cantități mari de cod ce ar fi avut ca scop implementarea unei logici de actualizare specifice. Comparând AngularJS cu jQuery, se evidențiază faptul că în jQuery este nevoie de adăugarea unui event listener DOM-ului (Document Object Model) care va apela o funcție callback în momentul în care event-ul este declanșat. Funcția callback din jQuery va modifica astfel variabila corespunzătoare a modelului de date. Totodată, atunci când valoarea variabilei se schimbă, trebuie implementată manual o logică pentru actualizarea valorii elementului DOM corespunzător. În concluzie, tot acest efort poate fi ocolit datorită conceptului „two-way data binding”. [13]
Figura 3.4.3.1 – Descrierea modului de funcționare a „two-way data binding-ului” [16]
Implementarea „two-way data binding-ului” în AngularJS se bazează pe scope-uri. Un scope este alcătuit dintr-un set ce cuprinde toate variabilele și funcțiile definite într-o anumită situație. Această situație reprezintă o parte spefică a DOM-ului. În AngularJS este creată o legătură directă, în ambele sensuri, între datele afișate pe site și modelul de pe server, doar pentru variabilele sau funcțiile ce sunt definite în scope. O valoare importantă o are faptul că framework-ul creează un scope rădăcină (root scope) pentru orice aplicație.
O altă proprietate a scope-ului este organizarea ierarhică. Un scope poate moșteni atributele altor scope-uri prin intermediul prototipurilor. Din punct de vedere semantic, există o corespondență cu proprietatea de moștenire a atributelor prototipurilor din JavaScript, prin care se evită redundanța.
Dacă Scope B moștenește Scope A, atunci, utilizând Scope B se accesează atât variabilele și funcțiile definite în acesta, cât și cele definite în A. În orice caz, variabilele sau funcțiile cu aceleași nume, din scope-uri care se moștenesc, se suprascriu.
Un caz particular este reprezentat de scope-urile izolate. Acestea permit controlul asupra variabilelor sau funcțiilor din scope-ul părinte. Ele sunt folosite în mod special în directive. Utilizând acest tip de scope-uri se asigură independența variabilelor comune din punctul de vedere al componentelor reutilizabile.
Când vine vorba despre scope-uri în contextul „two-way data binding”, se evidențiază necesitatea unui mecanism decizional care să hotărască când să se producă sincronizarea dintre interfața grafică și server. Acest mecanism constă într-un algoritm care analizează toate scope-urile relevante pentru view-ul curent, cu scopul de a găsi nereguli (ex. discrepanțe între view și ViewModel). De asemenea, algoritmul este executat frecvent, de acest detaliu fiind responsabil framework-ul AngularJS.
Una dintre cele mai importante reguli ale definirii unui scope este aceea de a preveni declararea unor funcții sau variabile care nu sunt necesare într-un view. Toate aceste date inutile nu fac decât să îngreuneze procesul de testare, fără a adăuga nicio valoare aplicației. [17]
NFC (Near Field Communication)
Tehnologia NFC este definită ca integrare a tehnologiei RFID (Radio Frequency Identification) cu dispozitivele mobile. Dispozitivele mobile ce dispun de această tehnologie pot fi folosite precum cardurile fără contact (contactless), fiind de asemenea capabile să scrie sau să citească date pe/de pe aceste carduri. [18]
NFC este o tehnologie de comunicare wireless pe distanță scurtă, ce a evoluat din RFID. Ea activează transmiterea datelor pe raze de câțiva centimetri, între două dispozitive ce au această funcționalitate.
NFC funcționează într-un spectru de frecvență radio de 13.56MHz, utilizând o putere mai mică de 15mA pentru a transmite date în raza sa de lucru. [19] Utilizarea NFC-ului se bazează pe principiul inducției magnetice. [20] Mecanismul inducției magnetice are ca fundament legea lui Faraday care susține producerea unui câmp magnetic de către două dispozitive active sau unul activ și unul pasiv, prin care trece curent electric.
Modul în care sunt transmise informațiile între două dispozitive cu NFC se numește cuplaj inductiv. În acest proces, dispozitivul activ cu rol de cititor se comportă ca o bobină ce produce un semnal sinusoidal și creează un câmp magnetic. Apoi, dispozitivul pasiv aflat în acel câmp preia energie de la cel activ și schimbă proprietățile frecvenței primite. Următoarea etapă constă în producerea de curent electric alternativ (AC) de către undele sinusoidale create de cititor. După, redresorul și regulatorul aflate în chip-ul tag-ului transformă curentul electric alternativ (AC) în curent electric continuu (DC). În final, tag-ul generează o undă sinusoidală ce va fi identificată de cititor. [21]
Figura 3.5.1 –Principiul de funcționare NFC – cuplaj inductiv [22]
Moduri de operare
Tehnologia NFC are trei moduri de operare: modul citire/scriere, modul peer-to-peer și modul emulatorului de card.
loare aplicației.
ă sincronizare-to-peer și modul uă dispozitive cu NFC uă dispozitivemunie o valoare aplicației.
ă sincronizareModul citire/scriere
În acest mod, un dispozitiv NFC activ poate scrie, citi sau schimba datele stocate într-un tag NFC pasiv. [23] Se poate face o analogie între procedura de citire/scriere și tehnologia cardurilor fără contact (contactless), în care un terminal citește date de pe un chip încorporat într-un card inteligent.
Cele două moduri pot fi descrise astfel: modul citire – inițiatorul citește date de la sursă; modul scriere – dispozitivul mobil se comportă ca un inițiator și scrie date pe tag. Viteza maximă de citire sau de scriere a datelor este de 106 kbps. [24]
în re aplicației.
ă sincronizare-to-peer și modul uă dispozitive cu NFC uă dispozitivemunie o valoare aplicației.
ă sincronizare
Figura 3.5.1.1 – Modul citire/scriere [22]
Ca aplicabilități ale acestui proces se pot menționa deschiderea browser-ului atunci când este atins un tag Smart-Poster, deschiderea unei aplicații atunci când este atins un tag, publicitate referitoare la anumite servicii etc. [25]
Un exemplu în favoarea utilizării modului citire/scriere este reprezentat de situația în care posterele inteligente oferă informații oamenilor. Într-o facultate, atunci când utilizatorul atinge tag-ul NFC de pe poster cu dispozitivul cu capacitate NFC sunt transferate informații referitoare la departamentul facultății din care face parte. Astfel, studentul nu va mai trebui să rețină toate numerele sălilor de curs pe care le va vizita. Această proprietate îi oferă mobilitate utilizatorului, informațiile relevate de poster putând fi vizualizate chiar și la distanță de el.
Modul peer-to-peer
Modul peer-to-peer este pus în practică prin schimbul de date dintre două dispozitive active. Având în vedere că ambele dispozitive dispun de o baterie ca sursă de putere, se poate stabili o legătură radio între ele. Se creează un canal bi-direcțional, half-duplex, în care viteza maximă de transfer al datelor este de 424 kbps. [24]
Figura 3.5.1.2 – Modul peer-to-peer [22]
Avantajul principal al modului peer-to-peer este reprezentat de ușurința cu care este făcut schimbul de date. Atunci când doi utilizatori își ating telefoanele mobile, pornește transferul de date. Transmiterea datelor între două dispozitive compatibile NFC oferă posibilitatea de a securiza acest proces.
Modul emulatorului de card
În acest mod, dispozitivul NFC activ se comportă ca un Smart Card (Card Inteligent). Astfel, sunt prezente avantaje în cazul plăților, al tichetelor de parcare etc. Această proprietate este utilizată de Android 4.4 Kitkat, Google. [23]
Figura 3.5.1.3 – Modul emulatorului de card [23]
Acest mod va putea elimina transportarea în portofele a unor obiecte precum cărți de credit, bilete, chei sau cupoane de reducere. De asemenea, va fi posibilă stocarea electronică a cărților de identitate, a pașapoartelor, a carnetelor de conducere sau a amprentelor. Integrarea acestor obiecte în dispozitivul mobil al unui individ crește dependența de a dispune de astfel de dispozitive.
De exemplu, modul emulatorului de card poate fi folosit pentru a intra într-o încăpere. În cazul studenților, prezența acestora la curs poate fi dovedită prin autentificarea acestora atunci când intră în sala de curs. În acest mod, gradul de securizare al datelor de identificare al unei persoane crește, accesul la ele fiind manipulat de un mecanism de control NFC.
Măsuri de securitate în tehnologia NFC
Pentru a înțelege mai bine problema securității, se va analiza situația tranzacțiilor financiare prin intermediul NFC. Tehnologia NFC dispune de un grad mare de securitate al datelor deoarece distanța de transmitere a acestora este mică. Însă, pentru a fi siguri că se evită orice pericol, informațiile financiare stocate în dispozitivul NFC ar trebui criptate. De asemenea, este pus la dispoziție un element de securitate care se mai numește și NFC Controller. Există trei tipuri de astfel de elemente: embedded hardware (componenta statică încorporată în telefonul mobil și personalizată de utilizator), SMC (secure memory card), UICC (universal integrated circuit card; o cartelă SIM inteligentă). [22]
Câteva din riscurile de securitate pe care tehnologia NFC le include sunt:
„Tragerea cu urechea” – dacă un atacator se situează la o distanță mică de desfășurarea unui schimb de date NFC, el poate intra în posesia datelor utilizând o antenă puternică. Dispozitivul utilizat de atacator trebuie să dispună de funcționalitatea NFC. Această problemă se rezolvă prin securizarea canalului de comunicare. [23]
Coruperea datelor – atacatorul poate insera în canalul de comunicare informații eronate. Modificarea informațiilor de pe canal se face utilizând aceeași frecvență, în același moment de timp. Rezolvarea acestei probleme constă în folosirea unei viteze Baud mai mare. [26]
Atacator în mijlocul procesului de comunicare – rutarea comunicării NFC este transferată unui schimb de date între trei persoane, de către atacator. Dar, datorită distanței mici de comunicare între dispozitivele NFC, acest tip de atac este aproape imposibil. [22]
Avantajele utilizării tehnologiei NFC
Unul dintre avantajele tehnologiei NFC constă în utilizarea dispozitivelor mobile atât ca cititor de NFC, cât și pentru stocarea datelor. Acestea pot citi informații de pe tag-uri NFC și le pot afișa, fiind capabile să le proceseze ulterior. De asemenea, pot fi utilizate ca memorii digitale (ex. memorii pentru informații despre cărțile de credit).
Alt avantaj important este compatibilitatea NFC cu structurile RFID, tag-uri RFID și cardurile inteligente fără contact (contactless) deja existente. Pe de altă parte, această tehnologie este ușor de utilizat, utilizatorii nefiind nevoiți să cunoască vreo informație despre tehnologie deoarece tot ce trebuie să facă este să apropie cele două dispozitive între care se transferă datele. În plus, problema securității este inerentă, raza de comunicare între două dispozitive fiind foarte mică, procesul de comunicare întrerupându-se atunci când acestea se îndepărtează. [22]
Comparativ cu Bluetooth sau RFID, NFC prezintă următoarele avantaje:
NFC are nevoie de un timp de configurare mai mic de o secundă. [27]
Puterea necesară pentru configurarea comunicării NFC este neglijabilă. [27]
NFC utilizează comunicare peer-to-peer. [28]
Comunicarea datelor prin NFC este mai securizată, având în vedere faptul că nu este stocată nicio informație referitoare la utilizator în perioada procesului de transfer. [28]
NFC este mai ușor de folosit decât Bluetooth, cel din urmă presupunând activarea instalării transferului de date. [29]
Tabel 3.5.4.1 – NFC vs Bluetooth [30,31]
Facebook API
În ultimii ani s-a produs o creștere considerabilă a popularității rețelelor de socializare online (ex. Facebook). Acest fenomen a avantajat în mod special dezvoltatorii aplicațiilor web ce utilizează Facebook ca parte terță, fiind capabili să lucreze cu toate datele pe care Facebook-ul le pune la dispoziție. Aplicațiile parte terță au avantajul de a manipula colecția de prietenii specifice fiecărui utilizator (social graph), furnizând astfel o experiență cu caracter personal atunci când aplicația este folosită.
Este puțin probabil ca o aplicație parte terță Facebook, sigură, să nu aibă succes. Acest tip de aplicații utilizează Facebook API pentru a accesa informații referitoare la relațiile de prietenie dintre utilizatori. Un apel incorect al unei metode Facebook ar putea cauza o catastrofă. Așadar, un factor crucial în dezvoltarea unei aplicații sigure parte terță Facebook este utilizarea corectă a Facebook API. [32]
Facebook API este o platformă care ajută la crearea aplicațiilor ce sunt disponibile membrilor rețelei sociale Facebook. API-ul permite aplicației să utilizeze informații referitoare la conexiunile sociale ale utilizatorului și la profilul acestuia. De asemenea, folosirea acestui API implică un protocol RESTful și răspunsuri în format JSON. [33]
Arhitectura Facebook
Pentru a înțelege mai bine cum funcționează Facebook API, trebuie înțeleasă arhitectura pe care se bazează platforma Facebook.
Figura 3.6.2.1 – Arhitectura platformei Facebook [34]
Platforma Facebook este formată din cinci componente: un limbaj de marcaje derivat din HTML (Facebook Markup Language), un REST API pentru comunicarea dintre Facebook și orice aplicație web, un limbaj de tip SQL pentru interacțiunea cu datele de pe Facebook (Facebook Query Language), un limbaj de programare (Facebook JavaScript) și un set de biblioteci client pentru diverse limbaje de programare.
De fiecare dată când un utilizator interacționează cu aplicația ce folosește Facebook API, sunt evidențiate o serie de interacțiuni între server-ul Facebook și server-ul aplicației. Atunci când utilizatorul apelează ceva din aplicație prin intermediul Facebook-ului, acel apel este transmis server-ului aplicației pentru a inițializa un apel REST către Facebook API. Odată ce se intră în posesia răspunsului acestui apel, se poate afișa (în FBML) și trimite înapoi către server-ul Facebook. Facebook procesează această informație și creează un răspuns HTML. Datorită transferului constant de informații, există un nivel specific de complexitate care poate complica detectarea bug-urilor. [35]
Figura 3.6.2.2 – Arhitectura de bază a unei aplicații web ce utilizează API-ul Facebook [35]
API
API este acronimul Application Programming Interface, deci, după cum îi spune și numele, conține o interfață programabilă a aplicației și permite unei aplicații client externe să comunice și să se integreze cu resursele serviciului. Această parte are o influență importantă în domeniul dezvoltării de aplicații deoarece implică o fuziune între comunicare și integrare, reprezentând un canal de transfer al datelor. Utilizarea unui API oferă un plus valoare aplicațiilor existente, dându-le programatorilor posibilitatea de a reutiliza servicii precum Facebook, Google, Yahoo etc.
Luând în considerare tipologia în care un API se poate încadra, API-urile bazate pe servicii web diferă, începând cu cel oferit de Microsoft (RPC=Remote Procedure Call) care furnizează o interfață prin intermediul unor servicii precum SOAP (Simple Object Access Protocol; protocol de comunicare bazat pe XML) și REST (Representational State Tranfer). Acestea sunt API-uri orientate pe servicii și bazate pe web, cunoscute pentru legătura pe care o creează între aplicațiile mobile și cele web.
În domeniul SOA (Service Orientated Applications), unde este posibilă formarea unei legături cu aplicații mai complexe precum CRM (Customer Relationship Management) și ERP (Enterprise Resource Planning), API reprezintă un concept mult mai complicat. Acest lucru se întâmplă datorită complexității interfețelor programabile, ce au funcționalități limitate. Odată cu îndepărtarea mediului IT de SOA, s-a produs apropierea de o arie orientată pe partea mobilă și web a aplicațiilor, API-urile devenind astfel template-uri simple. De fapt, API-urile folosite pentru comunicarea dintre dispozitivele mobile și aplicațiile web cu alte baze de date sunt proiectate bazându-se pe principii simple. [36]
Acronimul API se poate analiza din punct (punctul) de vedere al componentelor astfel:
A = Application (Aplicație) – aplicațiile pot fi definite ca instrumente, jocuri, rețele de socializare și alte programe software pe care un individ le utilizează zilnic pe laptop, tabletă sau telefon mobil inteligent.
P = Programming (Programare) – reprezintă componenta ce se referă la codul pe care inginerii software îl folosesc pentru dezvoltarea aplicațiilor descrise mai sus.
I = Interface (Interfață) – este o metodă comună de interacțiune între utilizatori, aplicații sau dispozitive. Dacă această interfață este partajată între două aplicații sau programe, se furnizează un sens comun de comunicare a sistemelor între ele.
Pentru a înțelege modul de funcționare a unui API, acesta poate fi considerat un template ce este utilizat pentru dezvoltarea unei aplicații web. Se presupune ca de fiecare dată când se dorește accesarea unui set de date din aplicație, este necesar un apel către API. Acest apel trebuie să aibă o sintaxă specifică fiecărui limbaj de programare. [36]
Graph API
Graph API reprezintă o modalitate principală de a exporta sau de a importa date de pe Facebook. Este un API HTTP ce poate fi utilizat pentru a interoga date, manipula anunțuri publicitare, încărca fotografii și pentru o varietate de alte activități de care aplicația ce utilizează acest API are nevoie. [37]
Conceptul Open Graph din care face parte Graph API are ca scop centrarea utilizatorului în aplicațiile web și instituirea unei conexiuni între cele două entități. În Graph API, fiecare obiect are un ID unic și o mulțime de legături pe care un programator le poate utiliza pentru a dezvolta aplicații web. De asemenea, acest API simplifică accesul la obiecte Facebook precum evenimente, utilizatori și fotografii, printr-un URL consistent și uniform. Fiecare obiect poate fi accesat utilizând URL-ul https://graph.facebook.com/ID, în timp ce conexiunile au URL-ul https://graph.facebook.com/ID/CONNECTION_TYPE .
Graph API are un identificator special care se numește me și se referă la utilizatorul curent. Un apel către URL-ul https://graph.facebook.com/me returnează toate informațiile ce pot fi accesate în mod public, referitoare la utilizatorul respectiv. Autentificarea se bazează pe protocolul OAuth 2.0 și facilitează conectarea cu contul de Facebook, cu scopul de a accesa informații despre utilizator. Pentru a primi aceste informații, trebuie interogat obiectul utilizator al Graph API, astfel:
Se face un apel către Graph API, utilizându-se o funcție.
Se apelează metoda GET prin https://graph.facebook.com/me pentru a primi informațiile dorite. Argumentul care este transferat prin funcția menționată mai sus este concatenat URL-ului https://graph.facebook.com
Componenta /me este adăugată automat, iar URL-ul la care apelul GET este făcut devine https://graph.facebook.com/me
În terminologia Facebook obiectul me se referă la utilizatorul autentificat curent.
Figura 3.4.3.1 – Utilizare Open Graph [38]
Graph API are o varietate de funcționalități. De exemplu: autorizare, citire, căutare, publicare, ștergere și analiză. În plus, obiectele Facebook prelucrate prin aceste funcționalități sunt legate prin conexiuni. Conexiunile sunt de asemenea obiecte care pot fi raportate sub introspecție la obiectul curent.[39]
Din perspectiva numelui, Graph API evidențiază modul în care este reprezentată informația pe Facebook – sub forma unui „graf social”. Acesta are în componența sa:
Noduri – obiecte precum Utilizatori, Fotografii, Pagini sau Comentarii.
Muchii/Laturi – legăturile dintre obiecte precum Fotografiile unei Pagini sau Comentariile unei Fotografii
Câmpuri – informații despre obiecte precum ziua de naștere a unui utilizator sau numele unei Pagini [37]
Autentificare
Facebook API permite autentificarea utilizatorilor prin două metode. Metoda facebook.auth.createToken creează un token de autentificare care este transmis mecanismului de autentificare ce folosește profilul de Facebook al utilizatorului. După ce utilizatorul este autentificat, a doua metodă, facebook.auth.getSession va conține în răspuns acest token, dar doar dacă este specificat acest lucru.
Autentificarea reprezintă o problemă destul de mare în cazul aplicațiilor online. Datorită Facebook API, nu mai este nevoie de certificate SSL, de implementarea unei scheme de criptare pentru parole sau de definirea unor intervale de timp pentru sesiunile de lucru în aplicație. Prin apelul către o metodă de autentificare, utilizatorii sunt redirecționați către pagina de autentificare a Facebook-ului. [35]
Considerente legate de dezvoltarea aplicației
Arhitectura aplicației
Figura
Cum majoritatea funcționalităților se bazează pe datele furnizate de API-ul Facebook, nu a fost necesară implementarea unui server propriu.
Aplicația Ionic
Creearea și rulearea pe telefon a unei aplicații Ionic (CLI):
Din moment ce la baza aplicației Ionic stă de fapt o aplicație web Angular, o a treia platformă este cea pentru browser ($ ionic platform add browser, $ ionic run browser):
ngCrodova (Cordova + Angular)
ngCordova reprezintă o colecție de peste 70 de extensii Angular peste API-ul Cordova. Aceste extensii fac mai ușoară și mai eficientă dezvoltarea și testarea aplicațiilor Cordova scrise în Angular. De exemplu, doar din câteva linii de cod javascript se poate face poză, se poate accesa locația curentă folosind GPS-ul, se poate porni flash-ul, etc.
Pentru a adăuga un nou plugin se folosește comanda:
$ ionic plugin add numePlugin
Pentru a-l folosi:
Pentru autentificarea în cadrul aplicației cu facebook am folosit plugin-ul phonegap-facebook-plugin:
$ ionic plugin add phonegap-facebook-plugin –variable APP_ID=”123456” –variable APP_NAME=”MeetApp”
APP_ID și APP_NAME sunt obținute în urma creării unei noi aplicații facebook pe developers.facebook.com.
Apoi plugin-ul (facebookConnectPlugin) se folosește ca oricare alt plugin ngCordova:
Servicii angular
Storage
Serviciu implementat cu scopul de a stoca obiecte javascript (JSON). Acesta se folosește de propietatea localStorage a obiectului Window, aceasta fiind similară cu sessionStorage, singura diferență fiind dată de faptul că localStorage nu are un termen de expirare a datelor (la închiderea browserului, implicit a aplicației, datele persistă).
Utilizarea serviciului:
facebookService
Serviciu creat pentru pentru interacțiunea cu API-ul Facebook. Acesta trimite cereri de GET către Graph API care returnează ca răspuns un JSON cu datele cerute sau de POST pentru Live Videos sau postarea fotografiilor pe pagaina evenimentului.
getProfileData returnează profilul utilizatorului pe baza tokenului furnizat. Profilul este salvat local cu ajutorul serviciului „Storage”. În adreesa URL la care se face cererea de GET se găsesc câmpurile profilului ce necesită a fi returnate (ex. nume, poză de profil, evenimente, etc). În caz de eroare, un mesaj de va fi afișat utilizatorului.
getSearchData returnează un JSON ce cuprinde o listă cu profile facebook ce se potrivesc criteriului de căutare. Primește ca parametru un token, tipul căutării (pagină sau persoană) și cuvintele cheie pentru căutare.
getProfile returnează informațiile despre profilul cu id-ul primit ca parametru. În acest caz este folosite pentru a returna imaginea de profil.
Cum plugin-ul facebookConnectPlugin funcționează doar pe telefon, iar în faza de dezvoltare s-a folosit în majoritatea timpului doar browserul, stochez temporar un accessToken generat pe developers.facebook.com.
Astfel, getToken returnează tokenul stocat temporar în variabila accessToken din serviciu sau dacă utilizatorul este autentificat, returnează accessTokenul asociat (authResponse).
Exemplu implementare funcționalitate în controller
calendarCtrl
În acest controller se citesc evenimentele utilizatorului și se păstrează doar cele ce urmează să aibă loc (Graph API returnează și evenimentele trecute).
Funcția setIndex() primește ca parametru un eveniment (evenimentul pe care s-a făcut click în view) și apoi i se determină indexul său din listă (necesar pentru afișarea informațiilor respectivului eveniment). $state.go(„tab.calendarEvent”) schimbă viewul în cel pentru afișarea unui singur eveniment.
eventCtrl
Se poate observa că pe scope, în variabila event se stochează evenimentul pe care s-a făcut click anterior (calendarEventIndex).
Afișarea informațiilor din controller în View (Template)
Calendar View
În acest exemplu, afișarea evenimentelor din calendar se face sub formă de listă, folosindu-se directive Angular ng-repeat=”event in calendarEvents” ce iterează prin toate elementele din calendarEvents și apoi le afișează conținutul (ex. {{ event.name }} ).
Directiva ng-click execută o funcție în urma unui click. În acest exemplu, atunci când se face click pe un eveniment din listă, se execută funcția setIndex(), definită în controllerul aferent acestui view.
Event view
Aici sunt afișate toate informațiile despre eveniment, citite din variabila event, aflată pe $scope.
Moduri de utilizare ale aplicației
Scenarii de utilizare
Pentru o viziune mai largă asupra scenariilor de utilizare ale aplicației, presupunem următoarea situație: un individ dorește să participe la un anumit eveniment. Pentru a-i putea fi validată participarea la eveniment, el trebuie să folosească aplicația.
Cu scopul elaborării unor scenarii de utilizare cât mai complexe, se disting următorii actori:
Utilizator – persoană care participă la eveniment, în calitate de public;
Organizator – persoană care se ocupă de organizarea evenimentului.
Un actor se definește ca o persoană, o organizație sau un sistem extern care joacă un rol în interacțiunea cu sistemul (cu aplicația pentru managementul evenimentelor). [40]
În funcție de cele două tipuri de actori, se disting următoarele scenarii de utilizare (use case-uri):
Pentru utilizatori
Aplicația este descărcată din Google Play.
Precondiții:
posesia unui telefon inteligent cu sistem de operare Android, ce dispune de tehnologia NFC
posesia unui cont de Google, pentru a fi posibilă autentificarea în Google Play
Aplicația este instalată pe dispozitivul personal.
Autentificarea în aplicație.
Precondiții:
posesia unui cont de Facebook, deoarece autentificarea în aplicație se face doar folosind detaliile acestui cont.
Disponibilitatea funcționalităților aplicației. Utilizatorul are posibilitatea de a:
căuta organizatori în aplicație pentru a se abona la profilul acestora (căutare disponibilă în secțiunea PROFILE). Odată abonați, vor vedea evenimentele adăugate de aceștia în secțiunea HOME/FEED.
posta fotografi, da feedback la eveniment (pe Facebook) și poate transmite în direct, în secțiunea FEEDBACK.
Precondiții:
secțiunea FEEDBACK poate fi accesată doar după ce participantul a fost validat de către organizator.
vedea toate evenimentele la care a fost invitat în secțiunea CALENDAR. El poate răspunde la invitație doar pe Facebook.
vedea profilul în secțiunea PROFILE. Detaliile profilului sunt importate de pe Facebook.
Utilizatorii sunt anunțați că au fost invitați la un eveniment printr-un e-mail trimis de organizator.
La eveniment, utilizatorul este validat prin trimiterea unui cod via NFC.
În plus, după validare, utilizatorul poate beneficia de reduceri la următoarele evenimente organizate de aceeași persoană deoarece a folosit aplicația.
Figura 5.1.a.1 – Scenariu de utilizare participant
Pentru organizatori
Aplicația este descărcată din Google Play.
Precondiții:
posesia unui telefon inteligent cu sistem de operare Android ce dispune de tehnologia NFC
posesia unui cont de Google, pentru a fi posibilă autentificarea în Google Play
Aplicația este instalată pe dispozitivul personal.
Autentificarea în aplicație prin intermediul contului de Facebook.
Creare eveniment pe Facebook.
Trimitere invitații viitorilor participanți pe Facebook.
La eveniment, un organizator validează participanții trimițând un cod via NFC.
Figura 5.1.b.1 – Scenariu de utilizare Organizator
Concluzii
În urma analizei detaliate a domeniului organizării de evenimente am observat că aplicațiile software care facilitează interacțiunea participanților sau ajută organizatorii să structureze detaliile unui eveniment, au devenit o componentă standard a succesului în această arie de dezvoltare. Integrarea platformelor adiacente precum Facebook reprezintă o modalitate de evoluție, presupunând creșterea numărului de funcționalități pe care o aplicație îl poate avea. Caracteristicile tehnologiilor iBeacon, NFC sau RFID sunt acum instrumente de încredere puse la dispoziția utilizatorilor prin înglobarea lor aplicațiilor (in aplicatiile) pentru managementul de evenimente.
Contribuții personale
În ceea ce privește contribuțiile personale aduse dezvoltării aplicației MeetApp și scrierii documentației specifice, pot fi menționate:
Studiul domeniului organizării de evenimente.
Studiul tehnologiilor de dezvoltare disponibile.
Alegerea convenabilă a tehnologiilor de dezvoltare.
Integrarea și dezvoltarea tuturor funcționalităților stabilite ca scop al aplicației.
Crearea interfeței cu utilizatorul
Dezvoltări ulterioare
Întrucât cea mai recentă versiune a Graph API nu a permis implementarea unor funcționalități cheie ale aplicației (postare comentarii de exemplu), pe viitor poate fi creat un server Node.js (realizat cu Express.js și Mongodb) care să extindă funcționalitățile aplicației:
Crearea de evenimente direct din aplicație, ulterior va permite înregistrarea utilizatorilor fără un cont de Facebook, fiind nevoie doar de un cont de email (pai mai sus mentionezi ca integrarea facebook-ului reprezinta o modalitate de evolutie).
Postarea de comentarii text și media (foto, video, audio) direct din aplicație
Check-in
Event chat
Bibliografie
[1] GSMArena: Mobile phone usage report 2011: The things you do. http:// www.gsmarena.com/mobile_phone_usage_survey-review-592.php
[2] https://play.google.com/store/apps/details?id=com.nearify.android
[3] Oecd Organisation For Economic Co – Operation And Development. (2009). OECD Policy Guidance on Online Identity Theft. OECD Publishing.
[4] Mercè Boixadós Anglès, Eulàlia Hernández-Encuentra and Modesta Pousada Fernández. (2012). Personal Time-Management and Quality of Life in the Network Society, Time Management. http://www.intechopen.com/books/time-management/personal-time-management-and-quality-of-life-in-the-network-society
[5] Cagáňová Dagmar, Giaffreda Raffaele, Li Yong, Riggio Roberto, Voisard Agnes. (2015). Internet of Things – IoT Infrastructures.
[6] Marie-Helen Maras. (2015). Internet of Things: security and privacy implications. http://idpl.oxfordjournals.org/content/5/2/99
[7] Gan Gang, Lu Zeyong, Jiang Jun. (2011). Internet of Things Security Analysis.
IEEE Conference Publications. http://ieeexplore.ieee.org.proxy.uba.uva.nl:2048/stamp/stamp.jsp?tp=&arnumber=6006307
[8] Zhou Wei, Piramuthu Selwyn. (2015). Information Relevance Model of Customized Privacy for IoT. http://link.springer.com.proxy.uba.uva.nl:2048/article/10.1007/s10551-014-2248-y
[9] Arvin Ravulavaru. (2015). Learning Ionic, https://www.packtpub.com/packtlib/book/Application%20Development/9781783552603
[10] http://developer.telerik.com/wp-content/uploads/2015/11/hybrid-native-web.png
[11] http://ionic.io/platform
[12] Brad Green, Shyam Seshadri. (2013). AngularJS. O’Reilly Media.
[13] Philipp Tarasiewicz, Robin Böhm. (2014). Angular JS.
[14] https://en.wikipedia.org/wiki/Model–view–controller
[15] Philipp Tarasiewicz, Robin Böhm. (2014). Angular JS. pg.9.
[16] https://docs.angularjs.org/guide/databinding
[17] Chris Sevilleja, Holly Lloyd. (2015). MEAN Machine – A beginner’s practical guide to the JavaScript stack.
[18] Kerem OK, Vedat COSKUN, Mehmet N. AYDIN, Busra OZDENIZCI. (2010). Current Benefits and Future Directions of NFC Services.
[19] http://apcmag.com/inside-nfc-how-near-field-communication-works.htm/
[20] E. Desai, M.G. Shajan. (2012). A Review on the Operating Modes of Near Field Communication, International Journal of Engineering and Advanced Technology (IJEAT), Volume-2.
[21] I. Poole. RFID coupling techniques – backscatter, capacitive, inductive. http://www.radio-electronics.com/info/wireless/radio-frequency-identification-rfid/coupling-backscatter-inductive-capacitive.php
[22] Shirsha Ghosh, Joyeeta Goswami, Abhishek Kumar and Alak Majumder. (2015). Issues in NFC as a Form of Contactless Communication: A Comprehensive Survey. http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=7225422&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D7225422
[23] N.A. Chattha. (2014). NFC – Vulnerabilities and Defense- Information Assurance and Cyber Security (CIACS). pg. 35- 38.
[24] http://www.nfc-forum.org.
[25] http://nfc-forum.org/resources/what-are-the-operating-modes-of-nfc-devices/
[26] http://www.nearfieldcommunication.org/nfc-security.html
[27] http://receivetipstricks.hubpages.com/hub/nfc-vs-bluetooth
[28] J. Thrasher. RFID vs. NFC: What’s the Difference?. http://blog.atlasrfidstore.com/rfid-vs-nfc
[29] http://www.differencebetween.net/technology/hardware-technology/difference-between-nfc-and-bluetooth/
[30] Chang Y., Chang C., Hung Y., Tsai C. (2010). NCASH: NFC phone-enabled personalized context awareness smart-home environment. Journal of Cybernetics and Systems.
[31] Kennedy T., Hunt R. (2008). A review of WPAN security: Attacks and prevention.
[32] Ben Rubinger, Tevfik Bultan. (2010). Contracting the Facebook API. http://arxiv.org/pdf/1009.3715.pdf
[33] http://www.programmableweb.com/api/facebook
[34] http://developers.facebook.com/videos/
[35] Wayne Graham. (2008). Facebook API Developers Guide.
[36] Alasdair Gilchrist. (2015). API Design and Control for DevOps.
[37] https://developers.facebook.com/docs/graph-api/overview
[38] http://image.slidesharecdn.com/opengraphfordevelopers-120621165917-phpapp02/95/getting-started-with-facebook-opengraph-api-13-728.jpg?cb=1340298577
[39] Shashwat Srivastava, Apeksha Singh. (2011). Facebook Application Development with Graph API Cookbook.
[40] http://agilemodeling.com/style/useCaseDiagram.htm
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Aplicație pentru managementul evenimentelor Coordonator Absolvent Conf. Dr. Ing. Moisescu Mihnea Alexandru Marcu Iulia-Florentina 2016 Introducere… [307258] (ID: 307258)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
