1.1 Prezentarea contextului și a problemei 1 1.2 Scurtă descriere a sistemelor de securizare a clădirilor 2 1.3 Utilitatea programelor online în… [305631]

Cuprins

Capitolul 1 INTRODUCERE 1

1.1 Prezentarea contextului și a problemei 1

1.2 Scurtă descriere a sistemelor de securizare a clădirilor 2

1.3 Utilitatea programelor online în gestiunea securizării 2

1.4 Prezentarea proiectului 3

1.5 Riscuri și constrângeri 4

1.6 Ciclul de viață al proiectului 5

Capitolul 2 OBIECTIVE ȘI SPECIFICAȚIA PROIECTULUI 7

2.1 Obiectiv principal 7

2.2 Obiective secundare (conexe) 7

2.3 Specificația proiectului 9

Capitolul 3 STUDIU BIBLIOGRAFIC 12

3.1 Sisteme de securizare ale clădirilor 12

3.1.1 Securitatea 12

3.1.2 Controlul accesului 13

3.1.3 Autentificarea 13

3.1.4 Autentificarea prin parolă 14

3.1.5 Politica de securitate 15

3.1.6 [anonimizat] 15

3.1.7 [anonimizat] 17

3.2 Programe pentru gestionarea securizării 18

Capitolul 4 ANALIZĂ ȘI PROIECTARE 21

4.1 Analiza dispozitivelor utilizate 21

4.1.1 Plăcuța Intel Galileo Gen 2 21

4.1.2 Led 23

4.1.3 Plăcuțe cu relee 23

4.1.4 Senzor PIR 23

4.1.5 Contacte magnetice 24

4.1.6 Tastatură 4X4 24

4.1.7 Dispozitiv mecanic de blocare/deblocare a ușii 24

4.1.8 Alarmă 10db cu semnal luminos 25

4.1.9 Fire de legătură 25

4.2 Analiza limbajelor și a tehnologiilor folosite 25

4.2.1 Arduino 25

4.2.2 C# 26

4.2.3 SQL 28

4.2.4 HTML5 29

4.2.5 CSS3 30

4.2.6 Javascript(cu librăria JQuery) 31

Capitolul 5 IMPLEMENTAREA 32

5.1 Arhitectura generală a aplicației 32

5.2 Crearea sistemului de securizare pentru clădiri 34

5.3 Implementarea programului pentru gestiunea sistemelor de securizare ale clădirilor 37

5.3.1 Diagrame și specificații 37

5.3.1.1 Use-Case 37

5.3.1.2 Master Page 38

5.3.2 Diagrame și specificații 39

5.3.3 Dezvoltarea soluției C# 44

5.3.4 Metode de aranjare și structurare a codului 49

5.3.4.1 Structura 49

5.3.4.2 Nume specifice 50

5.3.4.3 Metodele și logica lor 51

5.3.4.4 Design Patterns 52

5.3.5 Operații cu baza de date 52

5.3.5.1 Conectarea la baza de date 52

5.3.5.2 Construirea comenzilor pentru baza de date 53

3.5.6 Legătura între programul local și cel Web 54

5.3.7 Legătura programului local cu plăcuța 55

Capitolul 6 TESTARE ȘI VALIDARE 57

Capitolul 7 CONCLUZII 60

7.1 Realizări 60

7.2 Îndeplinirea obiectivelor 60

7.3 Comparație cu alte aplicații existente 61

7.4 Posibilități de extindere în viitor 62

Bibliografie 63

Acronime 65

INTRODUCERE

Prezentarea contextului și a [anonimizat] a răspunde cerințelor mari impuse de această evoluție. Companiile vor să asigure siguranța angajaților și a [anonimizat] a unor persoane neautorizate. Din aceste motive dorința pentru securizarea bunurilor și informațiilor pentru aproape toată lumea devine tot mai aprigă și necesitatea sistemelor de securizare crește pe zi ce trece.

Totodată tehnicile de spargere pe care le adoptă hoții ii ajută să treacă ușor de un sistem simplu și neautomatizat de securizare a [anonimizat] o broască cu cheie sau un paznic.

[anonimizat], a fost cel care a creat breșa în securitate și, astfel, hoții au putut profita de ocazie și fura date sau obiecte importante.

Dacă luăm în calcul distanțele mari pe care se pot întinde o serie de clădiri ale companiilor de astăzi și câtă atenție ar necesita păzirea fiecărei posibile intrări în acea clădire fără un sistem de automatizare, costurile pentru un număr mare de resurse umane le-ar depăși pe cele ale unui sistem automatizat, iar riscul unor erori umane ar fi redus semnificativ cu un astfel de sistem.

Modularizarea (împărțirea pe module separate a dispozitivelor unui sistem) în cadrul unei clădiri automatizate este esențială, deoarece prezintă posibilitatea de extindere, în cazul demodării sau defectării unor dispozitive dedicate, înlocuirea acestora nu necesită mare efort și, împrăștierea pe arii mai vaste a unui sistem nu prezintă o problemă. Din acest motiv, astăzi, se preferă sistemele cu un grad ridicat de modularizare.

Dar toate aceste aspecte sunt privite doar din punctul de vedere al șefilor unor companii și a oamenilor implicați în lucrul la acea companie, însă, mai este o latura a situației: clienții.

Clienții firmelor mari de programare, bănci, administrație sau orice firmă care lucrează cu informațiile și bunurile oamenilor au ocazia să se informeze și s-au modernizat destul de mult încât să prefere ca firma în care își pun încrederea să fie una sigură și securizată puternic, astfel, și ei vor avea sentimentul de siguranță pe care un sistem de securitate automat îl poate oferi.

Folosirea internetului și accesul la internet se face acum foarte ușor, de pe orice telefon, tabletă sau calculator, fără a ține cont de distanțele mari la care pot călătorii oamenii, de aceea, un program care să afișeze informații despre propriul sistem de securizare și despre alertele apărute în timp real este de preferat să poată fi accesat din cadrul unor pagini web. Cu toate acestea sunt companii care își doresc ca sistemul lor să fie intern și datele să fie stocate pe un server intern, vizibile doar de calculatoarele dintr-o rețea, fapt care este simplu de implementat în cazul în care există dispozitivele necesare și o soluție care să ruleze pe un Web Site dintr-o rețea LAN(Local Area Network – rețea locala).

Site-urile web care sunt cele mai accesate și apreciate astăzi urmează o structură simplă și clară, consistență, pe toate paginile site-ului și un aspect curat, ușor de urmărit pentru orice utilizator. Scopul unui site profesionist este de a impresiona prin acuratețea, rapiditatea și securizarea pe care o deține, pentru a gestiona datele, și, nu prin modul complicat și ambiguu de a face acces la informațiile căutate.

Scopul unui sistem de securizare automatizat, bine gestionat și cat mai modularizat este de a oferi siguranța și securitatea necesare companiilor și oamenilor care îl utilizează. De asemenea, este de preferat ca acest sistem să fie accesibil de oriunde și ușor de folosit pentru ca un utilizator simplu să nu necesite instruire sau suport din partea unui administrator în citirea informațiilor furnizate de sistem.

Scurtă descriere a sistemelor de securizare a clădirilor

Un sistem de securizare a unei clădiri poate însemna orice, de la o ușă închisă cu cheia și un geam care se deschide doar dinăuntru și un câine care latră în prezenta unui străin, la verificarea amprentei sau a ADN-ului pentru autentificarea în sistem. Majoritatea firmelor doresc sisteme de securizare cat mai personalizate, preferă un anumit tip de autentificare sau de detectare a prezentei, precum și un anumit mod de a da o alarmă.

Posibilitățile sunt numeroase deoarece, pentru un sistem de securizare, exista senzori de mișcare, prezentă sau bariere optice, conectori magnetici, camere de luat vederi, iar ca alarme, există cele luminoase, cele sonore și chiar blocarea mecanică a unei uși. În domeniul autentificării se poate merge pe trei direcții: ceea ce utilizatorul știe, ceea ce are sau ceea ce este.

„Ceea ce știe” presupune existenta unui sistem de acces prin introducerea unei parole sau răspunderea la o întrebare pe care doar cei autorizați o cunosc. Acest lucru se poate realiza print-un sistem cu comandă locală sau unul cu tastatură.

Alte sisteme folosesc autentificarea printr-un obiect, precum o cheie sau un card, cu circuit integrat. Autentificarea prin cititoare RIFD este foarte populară în ziua de astăzi.

Pentru ca un utilizator să se autentifice prin ceea ce este, există dispozitive de identificare optică a retinei, citire a amprentei sau recunoașterea timbrului vocii, însă acestea sunt scumpe și necesită un program foarte avansat de analize a datelor citite.

Majoritatea companiilor care creează sisteme de securizare vin cu oferte de asigurare prin autentificare cu parolă și un sistem de alarmă în cazul în care un conector magnetic a fost activat, dar pentru un grad ridicat de protecție și flexibilitate, ar avea nevoie de un sistem împărțit pe module care pot funcționa unul fără celălalt, astfel încât, dacă unul pica să poată fi înlocuit și întreg sistemul să continue să funcționeze. Avansul rapid tehnologic aduce pe piață, foarte des, tehnici și dispozitive noi tot mai performante, însă, un sistem care nu are un grad ridicat de redundanță va trebui înlocuit cu totul. Din cauza consumismului acerb, firmelor de astăzi le convine înlocuirea întregului sistem pentru o componentă, de aceea, evită modularizarea sistemului, nerespectând cerințele mediului înconjurător de a nu arunca inutil componente folositoare și a clienților care nu doresc să plătească pentru un sistem întreg pentru modificarea unor componente, nu mai pot fi ignorate mult timp și, în viitorul apropiat, cererea pentru sisteme modulare, redundante, ușor de modificat și controlat, va crește tot mai mult.

Utilitatea programelor online în gestiunea securizării

Programele online sunt foarte flexibile și pot fi accesate de oriunde în lume, fără a fi nevoie de altceva decât o legătură la internet.

Acestea prezintă un risc la siguranța informațiilor însă acesta poate fi diminuat prin folosirea unei autentificări printr-un utilizator și o parolă corespunzătoare.

Aceste programe au o bază de date stocată pe un server și sunt scalabile pentru că pot împarți informații la clienți din toata lumea în timp real.

Sistemele de securizare necesită o acționare rapidă în cazul unor probleme apărute, de aceea, este de preferat un program care poate să prezinte informațiile noi în timp-real chiar și la distanțe mari. În plus, orice program online este mai accesibil pentru orice utilizator decât un program încărcat pe un calculator personal. Este, totodată, mai ușor de întreținut deoarece, la fiecare posibilă eroare apărută sau la o modificare pentru îmbunătățirea performanțelor, este destulă modificarea într-un singur loc a programului și nu ar apărea discrepanțe între versiunile folosite pentru clienții acestei aplicații.

Cu toate acestea programele online trebuie să primească informații de la dispozitivele locale, componente a fiecărui sistem de securizare. Pentru ca aceste date să ajungă la server cât mai repede, o comunicare între server și dispozitivul local este necesară. Aceasta se poate face prin mai multe feluri: comunicarea directă printr-un cablu necesită foarte multe resurse precum un server foarte mare pentru toate legăturile posibile, printr-o rețea locală, fapt care necesită existența unor centre de stocare și procesare a datelor, în împrejurimi sau folosirea unei căi deja existente și accesibile: internetul. Primele două necesită legături suplimentare făcute prin cabluri pe distanțe mari care pot să fie distruse și periclitează siguranța sistemului în schimb în cel de al treilea caz resursa necesară este doar un dispozitiv cu acces la internet și legătura la rețeaua de internet prin care se pot trimite datele la server.

Prezentarea proiectului

Acest proiect își propune crearea unu sistem de securizare a clădirilor, controlat cu un program de gestiune a sistemelor de securizare.

Sistemul de securizare va include componente de detectare a intrării prin efracție într-o clădire, componente de alarmare a acestor infracțiuni, dar și modalități de autentificare în cadrul sistemului pentru a dezactiva alarmele sau pentru pătrunderea în incinta protejată, toate comandate cu ajutorul plăcuțelor programabile legate printr-un cablu serial de un dispozitiv(calculator, tabletă sau un dispozitiv special creat).

Programul pentru gestiunea sistemelor de securizare se împarte în două componente:

Aplicația locală stocată pe dispozitivul de gestiune locală. Aceasta va citi datele de la sistemul de securizare și se va conecta printr-un serviciu de internet la serverul principal.

Aplicația Web care va fi rulată pe internet pentru a oferi acces clienților și administratorilor la informații legate de sistemele de securizare, indiferent de locația lor.

Programul Web va fi accesat tot în urma unei autentificări, cu un nume de utilizator și o parolă și va arăta noțiuni despre de sistemele de securizare în funcție de permisiunile deținute de un utilizator.

În cadrul programului online vor exista trei tipuri de utilizatori dar, pe viitor, pot fi adăugate și alte tipuri cu permisiunile aferente. Administratorul, utilizatorul autentificat și vizitatorul sunt cele trei tipuri de utilizatori predefiniți.

Administratorul va avea acces la informațiile sale personale deoarece și el poate deține dispozitive proprii care să genereze informații legate de starea de securizare a sistemului. Acesta va avea dreptul de a gestiona și evenimentele, dispozitivele și caracteristicile utilizatorilor simpli, el fiind capabil să intervină și să rezolve anumite probleme apărute. El va întreține datele, ștergându-le pe cele irelevante și schimbând statusul unor evenimente deja rezolvate. Pentru a efectua testarea și a genera rapoarte se pot adăuga noi evenimente de tip „Custom” care nu vor fi tratate ca alarme sau autentificări, ci, doar pentru a stoca anumite informații suplimentare și a aduce la zi eventualele rapoarte.

Administratorul are abilitatea de a adăuga, șterge sau modifica datele tuturor utilizatorilor însă, un utilizator autentificat simplu va putea modifica doar unele date personale și nu va avea acces deloc la datele personale ale altor utilizatori și nici la dispozitivele, locațiile sau evenimentele lor.

Un vizitator este un utilizator care nu e înregistrat în baza de date și, poate vedea informații despre ce echipamente sunt suportate de compania de securizare sau date de contact și despre compania de securizare, însă aceste pagini nu sunt cu informații încărcate din baza de date ci sunt statice și nu pot afecta siguranța informațiilor din baza de date.

Programul își propune să afișeze informații relevante într-o manieră ușor de înțeles și de gestionat.

Atât proiectul cât și sistemul își doresc a fi fiabile în diverse medii, redundante, pentru posibilitatea adăugării unor noi elemente sau înlocuirea elementelor deteriorate și scalabile deoarece sistemele necesare pot fi folosite de persoane fizice sau de companii cu mai multe clădiri.

Detectarea posibilelor erori va fi înregistrată automat iar la posibilitatea defectării sau blocării unei părți din cadrul sistemului sau a programului, nu se va distruge funcționarea firească ci se va înregistra doar o problemă apărută pentru a fi rezolvată.

Integritatea datelor va putea fi verificată prin rapoarte sau tabele cu informații ușor de citit.

Acest proiect poate fi folosit de către o companie capabilă de implementare a sistemelor de securizare sau chiar de companii de stat care prezintă încredere și răspund pentru informațiile la care au acces. Firma care folosește aceste programe trebuie să dețină sau să aibă acces la un server pentru baza de date, unde să posede permisiunile necesare pentru acces, scriere, interogare, modificare și alte operații. De asemenea, pe acest server sau pe altul, va fi încărcat codul care rulează sub forma de site web. Pentru conexiunea la internet vor avea nevoie de un domeniu însă, acest program poate fi folosit și local, într-o clădire legată printr-o rețea și site-ul creat să fie unul local.

Clienții care pot să beneficieze de serviciile oferite de acest proiect pot fi companiile sau persoanele fizice care doresc un sistem extensibil și fiabil care să fie gestionat de un program online, modern și ușor de utilizat.

Riscuri și constrângeri

Pentru crearea în siguranță și buna funcționare a acestui proiect sunt necesare evaluările unor riscuri și a unor constrângeri care pot să apară și care ar pune în pericol sau chiar periclita funcționalitatea dorită. Este importanta determinarea timpurie a acestor factori și descoperirea unor căi posibile de rezolvare sau ocolire a constrângerilor și a riscurilor.

Principalele riscuri care pot afecta sistemele de securizare și programele pentru gestiunea acestora sunt:

Crearea unei atmosfere sufocante și obositoare pentru locul de muncă datorită sistemelor prea stricte și a gestiunii lor prin programe greu de descifrat. Oamenii vor aprecia siguranța oferită de un sistem de securizare însă acesta poate să meargă la extrem și persoanele protejate să se simtă urmărite sau confuze în ceea ce privește încălcarea intimității lor și a dreptului pe care îl au pentru un spațiu privat.

Păstrarea unui echilibru între securitatea fizică și cea informatică este de luat în considerare deoarece accesul online la program presupune necesitatea unei modalități de protejare a datelor.

Defectarea unui dispozitiv sau a unei părți din programul de gestiune a securizării poate afecta negativ sau chiar opri întreg sistemul.

Riscurile descrise mai sus sunt mai greu de evitat și din cauza unor constrângeri care pot să se ivească specifice sistemelor de securizare și a celor pentru gestiunea lor. Printre acestea se numără:

Costurile implicate în dezvoltarea proiectului, deoarece sistemele de securizare pot include aparatură scumpă și resurse umane de specialitate pentru a putea întreține sistemele fizice și informatice și a le extinde pe viitor.

Interfața grafică trebuie să rămână rapidă și sigură dar să fie plăcută și ușor de manevrat pentru orice client. La un număr mare de clienți nu vor putea fi asigurați destui consultanți pentru orice incertitudine apărută de aceea este nevoie de simplitate pentru în citirea și înțelegerea programului de gestionare a resurselor.

Avansul tehnologic și informatic și integrarea de noi dispozitive apărute în sisteme mai performante cu un minim de efort.

Toate aceste riscuri și constrângeri pot afecta negativ o companie care deține sistemul de securizare, de aceea ele trebuie considerate, analizate și ameliorate pentru ca sistemul să fie rezistent și folositor chiar și peste ani de zile.

Ciclul de viață al proiectului

În primul rând, pentru a crea acest proiect trebuie luate în considerare riscurile și constrângerile existente. De aceea proiectul are nevoie de o fază de analiză, cercetare a pieței și determinare a planului cel mai potrivit de urmat.

Partea de analiză și cercetare a pieței include descoperirea dispozitivelor potrivite pentru cât mai multe companii din ziua de azi. O analiză a capabilităților senzorilor existenți, a sistemelor de autentificare și de alarmă, poate salva proiectul de la posibile erori care ar necesita timp și investiții suplimentare pentru a fi rezolvate.

Cercetarea pieței, a nemulțumirilor și breșelor în sistemele de securizare existente astăzi este, și ea, un aspect în care timpul merită investit, la fel ca analiza tehnologiilor și posibilităților, pentru crearea programelor pentru gestiunea sistemului de securizare.

Dar după această analiză și crearea unui plan pentru acest proiect, implementarea inițială a proiectului trebuie făcută cu grijă și atenție pentru a nu necesita modificări majore în întreținerea ulterioară. Modificările ulterioare ar avea rolul de a extinde ciclul de viată al proiectului.

Având în vedere că, sistemul pe care proiectul și-l propune al crea, este unul împărțit în module și redundant, acesta are șanse să fie întreținut mai ușor astfel încât ciclul lui de viața să crească.

De asemenea, faptul că sistemul poate fi extins și poate fi implementat pentru o scală mai largă, este un avantaj de luat în considerare și pentru viitor, când numărul clienților are potențialul de a crește. Ținând cont de programul care este accesat prin internet și de configurația destul de flexibilă din cadrul acestuia, la o scală mare se pot folosi mai multe servere pe care să fie împărțită baza de date și, care, să ajute la performanta afișării informațiilor. În plus o parte din prelucrarea datelor va fi efectuată pe programul local astfel încât serverul nu va fi suprasolicitat.

După ce proiectul a fost analizat și implementat el poate fi folosit de compania de securizare care este capabilă și are resursele necesare pentru a facilita întreținerea și dezvoltarea continuă.

Pe viitor se poate avansa cu reciclarea dispozitivelor defectate sau depășite de tehnologie dintr-un sistem de securizare iar acesta pot fi înlocuite cu alte dispozitive. Astfel, acest proiect poate prezenta potențial în crearea unei fabricații sustenabile a acestor dispozitive datorită redundantei pe care o prezintă.

Potrivit unor statistici europene [12] numărul jafurilor a rămas în general constant, deși, în anumite tari(printre care și Romania) a puțin din anul 2007 până în 2012. Cu toate acestea numărul este parțial constant datorită sistemelor de securizare deja existente, însă ar fi de preferat să fie în scădere, și sistemele de securizare să fie mai des folosite pentru securitatea atât a sănătății oamenilor cat și a bunurilor sau informațiilor lor.

Acum lumea înconjurătoare dispune de tot mai multe resurse (senzori, sisteme de comunicații, dispozitive) pentru a asigura securizarea clădirilor și dorește să profite tot mai mult de aceste avantaje pe măsură ce costurile unor dispozitive tot mai accesibile scad și implicit scad și costurile acestor sisteme.

OBIECTIVE ȘI SPECIFICAȚIA PROIECTULUI

În acest capitol vă voi prezenta obiectivele principale și cele secundare (conexe) pe care doresc să le ating pentru a implementa corect și eficient acest proiect.

Soluția propusă este un sistem de securizare al clădirilor care să fie ușor de utilizat, extins și modificat. Acest proiect este divizat în două părți:

Prima parte este un sistem de securizare împărțit pe module astfel încât fiecare dispozitiv este controlat individual printr-o plăcuță programabilă și aceasta este controlată printr-o comunicare serială cu un calculator sau tabletă locală. Iar a doua parte este un program pentru gestiunea sistemelor de securizare a clădirilor împărțit în doua aplicații. Una este locală și este folosită pentru citirea evenimentelor generate de sistemul de securizare, analizarea și trimiterea acestora către cea de-a doua aplicație care este dezvoltată să funcționeze online sau într-o rețea de calculatoare printr-un site Web

Obiectiv principal

Obiectivul principal al acestui proiect este crearea unui sistem de securizare a clădirilor pentru companii sau persoane fizice care au nevoie de o flexibilitate mare, o modalitate ușoară de interacțiune și citire a informațiilor generate și doresc posibilitatea de extindere și perfecționare în domeniul securizării.

Acest sistem de securizare are avantajul faptului că poate fi urmărit de oriunde, online, printr-un site Web sigur și plăcut unui utilizator, capabil să genereze rapoarte și să afișeze date în funcție de ordonările dorite dar și local printr-un program care afișează în timp real orice eveniment apărut.

Prin acest sistem se dorește nu doar urmărirea unor alarme generate ci și a unor modele comportamentale și a unor statistici care pot duce la descoperirea unor infracțiuni făcute inclusiv de persoane autorizate în sistem.

Acest proiect își propune să prezinte o soluție redundantă pentru a putea fi menținută sau modificată cu cele mai noi tehnologii, ținând pasul cu ce este mai nou pe piață din domeniul securizării clădirilor. Cu toate acestea soluția să fie fiabilă și cu un grad ridicat de integritate pentru că în domeniul securității este nevoie de o soluție de încredere.

De asemenea proiectul trebuie să fie scalabil la dimensiuni mici, dar și foarte mari, pentru că cererea pe piața sistemelor de securizare integrate este tot mai mare.

Acest obiectiv principal poate fi realizat doar prin urmărirea și îndeplinirea unor obiective secundare care să asigure buna funcționare a fiecărei părți din soluția propusă.

Obiective secundare (conexe)

Obiectivele secundare ale acestui proiect se vor extinde pentru ambele părți componente ale proiectului. Pentru o mai bună explicație a lor, tabelul 2.1 vă va arăta cum se potrivesc aceste obiective sistemului fizic de securizare a clădirilor în paralel cu programul pentru gestiunea acestui tip de sistem.

Îndeplinirea acestor obiective ar însemna crearea unui sistem de securizare și a unui program care să îl gestioneze, care să fie dinamice, plăcute, atât clienților cât și companiilor care le gestionează, sigure, scalabile și de viitor. Proiectul de față dorește a urmării aceste obiective cât mai exact și prezentarea unei soluții general valabile pentru un sistem de securizare fiabil.

Obiectivele pot fi aprofundate în detaliu și îmbunătățite și servesc ca un ghid și pentru extinderea și dezvoltarea ulterioară a acestui proiect.

Programul pentru gestiunea sistemelor de securizare are mai mari șanse să supraviețuiască schimbărilor continue din domeniu IT și al automatizărilor dacă este extensibil și ușor de înțeles, ceea ce presupune, totodată, ca este ușor de întreținut.

Tabel 2.1

Specificația proiectului

Sistemul de securizare va consta într-o serie de dispozitive legate între ele și controlate printr-o plăcuță programabilă .Acestea sunt folosite pentru detecția jafurilor sau a pătrunderii frauduloase în incinta clădirilor securizate.

Dispozitivele se împart în 4 categorii: elementul de autentificare care este reprezentat printr-o tastatură 4X4 și care poate fi completat pe viitor cu un cititor de carduri RFID, sisteme de răspuns precum led-ul, panoul de afișaj al aplicației locale și yala de deblocare sau blocare mecanică a ușii(aici mai pot fi adăugate dispozitive de informare precum afișajul digital sau răspunsul sonor), declanșatori ai alarmei precum conectorii magnetici, senzor PIR, butonul de panică și alarme precum cea sonoră și vizuală.

Fiecare dispozitiv va fi conectat la o plăcuță programabilă și, cu ajutorul codului scris în limbajul de programare Arduino va fi controlată și legată la un program de tip Windows salvat pe un dispozitiv local cu acces la internet.

Pentru înregistrarea valorilor se va folosi o bază de date relațională de tip SQL. Ea va conține înregistrări ale evenimentelor care sunt relevante pentru următoarele interogări, de pildă data și ora unui eveniment, tipul de eveniment(alarmă, autentificare cu card sau cu tastatură, atenționare, acordare acces), dispozitivul de pe care s-a înregistrat evenimentul și prin acesta se cunoaște locația la care are loc întâmplarea și chiar utilizatorii care au legătură cu dispozitivul respectiv. Datele utilizatorilor vor fi folosite pentru autentificarea lor și doar clienții care au drepturi vor putea avea acces în clădirea securizată.

Dacă nu s-au dezactivat senzorii și utilizatorul autentificat nu este cel care încearcă să pătrundă în incinta clădirii, atunci alarmele luminoase se vor aprinde și cele sonore vor emite sunete puternice, ușile vor rămâne blocate iar toate caracteristicile descriptive ale acestor alarme vor fi reținute în baza de date ca fiind alarme active care trebuie rezolvate și astfel o echipă de intervenție ar putea rezolva infracțiunea creată de un jefuitor.

Însă și după rezolvarea acestor alarme, datele vor fi păstrate în baza de date cu statusul de „rezolvate” sau „inactive” și ele vor putea fi citite și interpretate astfel încât să se poată emite grafice și sondaje pe baza lor. Astfel vom ști perioadele în care sunt cele mai dese atacuri, orele din zi, locațiile, sau proximitatea lor, unde care se desfășoară cele mai multe infracțiuni astfel încât, cu ajutorul acestui sistem se vor putea preveni, rezolva și determina măsuri ce trebuie luate pentru a reduce rata viitoarelor posibile infracțiuni.

Toate acestea vor putea fi urmărite online, printr-un program sigur și ușor de utilizat care va putea să genereze rapoarte sub format Word, PDF și Excel astfel încât acestea să fie mai ușor prezentate ca dovezi sau stocate pentru viitoare cercetări.

Interacțiunea cu programul de gestiune a sistemelor de securizare ale clădirilor se va realiza cu trei tipuri de actori: administrator, utilizator autentificat și vizitator. Vizitatorul este cel care nu are permisiuni salvate sau un fost utilizator care nu mai are acces la sistem, motiv pentru care el va putea observa doar paginile cu conținut static, cele care conțin informații despre firma deținătoare a acestor sisteme de securizare, felul cum pot contacta această firmă sau ce produse sunt disponibile și câteva specificații ale lor.

Orice utilizator autentificat va putea citi datele sale personale, genera rapoarte pe baza lor și, astfel, urmări starea sistemului său de securizare.

Doar un administrator care are permisiunile necesare va putea citi și gestiona informațiile legate de toate evenimentele, utilizatorii și dispozitivele lor.

De asemenea, el se încadrează în categoria de utilizator autentificat, astfel încât, va avea dreptul de a manipula informațiile caracteristice legate de propriul său sistem de securizare.

Autentificarea în sistem se va face pe baza de nume de utilizator și parolă, pe acestea utilizatorii le vor primi de la administratori atunci când se creează contul și le vor putea modifica ulterior. În baza de date se va retine un identificator unic a fiecărui utilizator iar acesta nu va putea fi modificat.

Lipsa accesului la informațiile din baza de date a persoanelor care nu sunt autorizate să le citească sau modifice va asigura consistența, integritatea și securitatea informațiilor.

Interfața programului online cu utilizatorul va fi una ușor de urmărit, care nu va avea nevoie de îndrumare pentru a fi utilizată ci va fi intuitivă, plăcută și consistentă pe paginile site-ului. Se vor folosi limbajul de programare C# și mediul de programare Visual Studio pentru a crea programul online sub formă de site Web și programul local sub formă de aplicație Windows. Pentru ținerea bazei de date și a programului, compania care gestionează sistemele de securizare va avea nevoie de un server astfel încât să facă informațiile accesibile clienților săi.

Proiectul va fi unul scalabil și redundant astfel încât va fi simplu de modificat și dezvoltat pe viitor la apariția unor dispozitive sau tehnologii noi pe piața sistemelor de securizare, datorită ritmului rapid al avansului tehnologic de astăzi.

Cele trei proiecte vor fi prezentate împreună lucrând în tandem pentru a crea o experiență plăcută clienților prin siguranța informațiilor și securitatea locațiilor pe care le dețin.

STUDIU BIBLIOGRAFIC

În acest capitol vă voi prezenta o serie de concepte legate de securizarea clădirilor și de programele care pot fi create pentru a gestiona securizarea. Acestea includ cercetarea câtorva domenii anexe securității, precum: controlul accesului, autentificarea unui utilizator, în special cu ajutorul parolei, politica de securitate adoptată astăzi, o scurtă istorie a sistemelor de securitate integrate pentru a descoperi pașii pe care sistemele de securizare i-au parcurs de-a lungul anilor și alte amănunte legate de programele pentru gestionarea securizării.

Sisteme de securizare ale clădirilor

Securitatea

Securitatea este totalitatea serviciilor și mecanismelor care apără un obiect. Obiectul poate fi de tip fizic(o clădire, o mașină, un seif) sau de tip virtual(o informație).[1]

Securitatea poate avea mai multe ramificări și subdomenii prezentate în tabelul 3.1;

Tabel 3.1

Principiul de bază al securizării este oprirea accesului proceselor sau oamenilor neautorizați la resurse și acordarea accesului celor autorizați. Aceasta se realizează prin blocarea accesului cu ajutorul unui sistem de control al accesului la resurse și prin alertarea unei neregularități în cadrul sistemului securizat.

În ceea ce urmează mă voi referi, în special, la securizarea clădirilor dar implicit a oamenilor și a resurselor. În plus, un program pentru gestiunea securizării clădirilor presupune totodată securizarea datelor din sistem.

Controlul accesului

„În general, controlul accesului este orice hardware, software, politică administrativă, organizațională sau procedură care acordă sau restricționează accesul, monitorizează și înregistrează încercări de acces, identifică utilizatori care încearcă să acceseze și determină dacă aceștia sunt sau nu autorizați.” [2]

Una din principalele arii ale securității este controlul accesului. Acesta reprezintă relația dintre resurse și subiecții care încearcă să le acceseze. Subiecții pot fi un utilizator, un proces, program, bază de date și multe alte entități. O resursă este un fișier, o bază de date, un program, un obiect sau chiar o locație. Subiectul poate avea acces doar la unele permisiuni asupra resursei respective precum scrierea sau citirea de informații într-o bază de date, alterarea sau ștergerea unor fișiere, observarea unor obiecte sau însușirea acestora, accesul în anumite arii ale unei clădiri.

Procesul de autentificare este un lucru esențial în foarte multe domenii atunci când se dorește accesul unei resurse. Orice comunicare începe prin stabilirea identificării partenerilor: fiecare trebuie să se autentifice în fața celuilalt sau în fața unui sistem care ii acordă accesul la resurse, prin prezentarea unor dovezi. [3]

Controlul accesului este necesar pentru a asigura confidențialitatea, integritatea și disponibilitatea unei resurse. El protejează utilizatorii care au acces la resursa respectivă, precum și informațiile sau obiectele existente în cadrul resursei. [2]

Pentru a primi accesul la o resursă un utilizator trebuie să facă o cerere de acces la acesta, fie prin autentificare fie prin alți parametrii care ii acordă accesul.

Nu doar partenerii de dialog sunt vizați de mecanismele de autentificare ci și mesajele pe care ei le trimit. Determinarea identității unui utilizator se face în momentul solicitării, pe baza unor dovezi, a autentificării însă aceasta nu oferă nici o informație despre conținutul mesajelor pe care le va gestiona în timp ce trimiterea și autentificarea unei informații în formă de mesaj arată date despre conținutul mesajului. [3]

Autentificarea

Motive pentru care autentificarea este necesară în viața de zi cu zi:

Controlul accesului: prin acordarea unor permisiuni se asigură siguranța resurselor gestionate. Fără controlul accesului nu am mai avea dreptul la intimitate și confidențialitate.

Autorizarea: „Este metoda prin care un utilizator primește unul sau mai multe drepturi de acces”. Acestea pot să cuprindă variate specificații precum dreptul de a scrie sau citi o informație, dreptul de a pătrunde în incinta clădirii sau de a dezactiva o alarmă. Chiar și dreptul de a anula sau șterge dintr-o bază de date informația unei alarme.

Auditarea: Este reținerea informației cu privire la persoana care s-a autentificat la un moment dat, chiar daca aceasta nu a declanșat o alarmă sau o alertă în sistem. Este utilă păstrarea informațiilor despre acțiunile unui utilizator, pentru o anumită perioadă de timp, chiar dacă acestea nu prezintă alarme sau au fost soluționate, pentru a previziona posibile activități malițioase în viitor sau pentru a servi la viitoare statistici. Multe atacuri provin chiar de la persoane din cadrul instituției respective și păstrarea informațiilor despre autentificarea lor la o anumită oră sau dată pot crea un tipar ușor de urmărit. Au fost nenumărate cazuri de furturi și distrugeri a bunurilor sau informațiilor din sisteme care s-au soluționat urmărind tiparul persoanelor autentificate în acea perioada precum și cine ar fi avut accesul la acele resurse fără a declanșa o alarmă.

Siguranța oamenilor: sunt anumite zone din cadrul unei clădiri, a unei firme sau anumite informații care ar periclita siguranța unor persoane care nu au fost instruite în legătură cu procedurile care trebuie urmate în prezența unor anumite echipamente, utilaje, substanțe și multe altele.

Pentru autentificare sistemele trebuie să determine unul sau mai multe din următoarele aspecte specifice unui subiect.

Cel mai des și mai ușor de gestionat este ceea ce un client știe, de exemplu o parolă. Potrivit unui studiu „multe sisteme solicită CNP-ul sau numele de fată al mamei pentru a autentifica un utilizator”[3]

Acest mod de autentificare s-a descoperit ca fiind destul de riscant și ușor de aflat din partea unei persoane străine care nu are acces la sistemul pe care dorește să se autentifice. Acum se preferă ca în cadrul unei parole să nu fie folosite date personale sau a persoanelor apropiate.

Ceea ce posedă un om poate fi, de asemenea, un mod de autentificare. Un lucru(fizic sau electronic), chei, tag-uri sau alte dispozitive specifice pe care utilizatorul le deține îl pot autentifica prin verificarea obiectului în sine. Aceste lucruri pot fi folosite și de un alt utilizator, ceea ce poate fi bine(de exemplu accesul în casa a unui prieten de încredere) sau rău(pierderea unui obiect autentificator face o breșă în sistemul de securizare).

Un alt aspect care îl poate autentifica pe un utilizator este ce este el(sau îl caracterizează) prin analiza amprentelor, retinei sau recunoașterea scrisului sau a vocii.

Autentificarea prin parolă

Este o secvență alfanumerică creată printr-o combinație de biți în coduri precum ASCII(abreviat din cuvintele: American Standard Code for Information Interchange) sau Unicode(are ca sens deținerea câtor mai multe caractere existente pe glob), cunoscută doar de cel care se autentifică și de sistemul care asigură identificarea sau determinata de acest sistem. Este adevărat ca sistemul poate să nu cunoască în prealabil parola dar printr-un algoritm să determine dacă aceasta este sau nu validă și acordă sau nu accesul la o anumită informație.

Parolele trebuie să fie ceva ușor de memorat dar greu de citit.

Cel mai bine este ca parola să nu cuprindă numele propriu sau a persoanelor apropiate și nici date personale. O parolă puternică este formată din cel puțin 8 caractere, conține atât litere mici cât și mari, cifre și caractere speciale. Acestea din urmă nu sunt suportate de majoritatea sistemelor de securitate actuală și multe sisteme permit parole foarte simple, fără a verifica dacă acestea sunt sau nu sigure.

Un sondaj de opinie din anul 1979 care a fost inclus în Comunicația ACM(pag 594-596) de Moris și Thomson arată că din 3289 de parole luate de la cei care foloseau tehnica de calcul(în special IBM), 86% nu erau sigure din următoarele motive: „15 erau formate dintr-un singur caracter ASCII, 72 din 2 caractere, 464 din 3 caractere, 4777 era din 4 caractere alfa numerice, 760 din 5 caractere de același tip(mari sau mici), 605 din 6 litere mici”. Alte parole care erau ușor de dedus erau cele formate din cuvinte uzuale, numele persoanelor apropiate, date personale și chiar secvențe tastate în ordine(de exemplu: asdfg ).[3]

Acestea pot sa fie ușor cunoscute de un om care se informează despre datele personale ale victimei.

Schimbarea frecventă a parolelor creste securitatea sistemelor. Există sisteme care își obligă angajații să își modifice parolele periodic sau care generează ele alte parole pe care angajații trebuie să le memoreze.

O alta categorie de parole sunt cele „one-time”(o singura dată) care presupun ca sistemul să genereze sau să posede o listă de parole din care se șterge cate o parolă deja folosită (de exemplu cheile unice de autentificare la produse software cumpărate online) dar pentru care s-au inventat programe care să le descopere și să le fure.

O altă categorie sunt parolele actualizate secvențial pot să fie problematice la apariția unei erori de comunicație și pot bloca întreg sistemul. Mai există și parole bazate pe funcții neinversabile care folosesc diverse tipuri de scheme pentru a le concepe și elimina aceasta problemă.

Politica de securitate

Politica de securitate este o strategie care descrie modalitatea de implementarea a principiilor de securitate și tehnologiile folosite în acest scop. Este crucial ca o companie să își creeze un plan se securizare pentru apărarea oamenilor, informațiilor și resurselor ei. [13]

Politica de securitate asigură un ghid de urmat pentru a atinge nivelul de securizare dorit și descrie în detaliu procesele implicate pentru securizare.

Această abordare este diferită în funcție de necesitățile fiecărei firme în parte și poate chiar a fiecărei clădiri sau resurse separate. Din acest motiv un sistem de securizare, oricât de complex și bine analizat este, are nevoie de un grad de flexibilitate pentru cazul în care politica de securitate a unei companii, persoane sau clădiri se schimbă în timp.

Sistemele integrate de securizare- scurtă istorie

În istorie putem împărți sistemele integrate de securitate în cinci generații pentru a le urmări mai ușor dezvoltarea lor.

Prima generație pornește din 1851. Atunci, în Boston, primul sistem de securizare de tip alarmă prin telegraf a fost instalat(numit McCulloh). Sistemul poate fi observat în figura 3.1.

Primul sistem de securizare cu telegraf și alarmă [14]

Pentru acest sistem un curent de 20 miliamperi era trimis pe un fir și curentul din fir era monitorizat. Dacă acesta se întrerupea atunci rezultă o mișcare de tip ceas care rotea o rotiță care acționa un întrerupător asemănător ca celor utilizate în telegraf de mai multe ori, generând un model care putea fi interpretat precum o alarmă sau informație. Acestea erau des folosite de pompieri și poliție. [4]

În anii 1940 au apărut primele sisteme de intercomunicații iar primele benzi magnetice pentru controlul accesului, atașate unui card au apărut în anii 1960. Din 1961 în Londra, poliția a început să folosească sistemele CCTV(closed-circuit television) pentru a monitoriza trenurile în escale. Toate acestea erau discrete dar erau sisteme individuale. Până și camerele de filmat care au apărut în această perioadă, transmiteau fiecare câte unui monitor și nu se înregistra nimic pentru că era prea costisitor pentru acea perioadă și chiar și așa erau o raritate și un lux.

În a doua generație de sisteme de securitate s-a creat o rețea de opt cititoare de carduri care transmiteau împreună la un calculator dedicat, care era de mărimea unui calculator electronic mare de birou și avea doar câteva butoane și un afișaj cu tuburi. Atunci apărut și sistemele cu avertizare de alarmă prin lumină și sonor. Fiecare alarmă avea trei tuburi luminoase. Roșu era pentru alarma, verde pentru acces și galben pentru așteptare. A doua generație continuă și azi și a apărut în anul 1945. Sistemele CCTV mai erau puțin folosite dar cele cu intercomunicare aproape deloc.

A treia generație a apărut în 1968 până în anul 1978 și a reușit combinarea sistemului de acces cu cel de alarmă într-un singur sistem. S-au legat până la 64 de cititoare de carduri și 256 de puncte de alarmă individuale la aceste sisteme din seriile IBM sau PDP-8. Dar acest sistem era extrem de costisitor pentru că un calculator mic împreună cu 16 cititoare de carduri costa peste 100, 000 de dolari.

În 1971 a apărut și a patra generație introdusă de Intel printr-un microprocesor de 4 biți(modelul 4044) făcut de Ted Hoff pentru o companie japoneză de calculatoare. Acesta susținea 2300 de tranzistoare și multe întrerupătoare care încăpea într-o camera întreagă și avea nevoie de propriul lui sistem de răcire. După acesta, au apărut cel de 8 biți și apoi tehnologia numită sistem de control distribuit. Până în anul 1974 fiecare parte din sistem și fiecare alamă era legată individual de calculator și asta costa foarte mult. În 1974 a apărut primul sistem care putea să lege alarmele și cititorii la panouri de comandă și astfel s-a creat un sistem distribuit.

Când într-un final costul cablajului a fost redus și sistemele au devenit mai accesibile puțin. Dar în continuare, cititorul afișa un mesaj codificat precum numele cardului și un operator trebuia să caute codul într-o carte pentru a face autentificarea persoanei. Acum se puteau lega și camerele de filmat împreună la un monitor și să se facă schimbarea intre imagini printr-un întrerupător. Până în anul 1990 camerele de filmat au devenit mai accesibile și puteau filma pana la 30 de cadre pe secundă iar înregistrarea pe film a informațiilor a devenit mai ieftină.

Doar pe la mijlocul anilor 1990 au început manufacturierii să constate că organizațiile ar vrea ca sistemele lor de securitate să fie integrate atât cu controlul accesului cat și cu alarme și intercomunicație și s-au creat adevăratele sisteme integrate. Aceste sisteme pot să detecteze o spargere și să privească pe cea mai apropiată cameră video scena unde a avut loc alarma. Dacă era destul de aproape câteodată sistemul de intercomunicații putea fi folosit pentru a detecta locația semnalizării. Era folosită o hartă pentru a vedea zona alarmei și a spune operatorului de la consolă ce tip de alarmă este. Aceste sisteme răspundeau în timp real dar interfața era destul de rudimentară pentru că la doua modele sau mărci diferite de sisteme, aceasta era diferită și devenea dificil de făcut unirea celor două.

Dar aceste sisteme de securizare, deși impresionate, ele nu erau ușor programabile pentru că foloseau memoria EPROM. Aceasta este o memorie programabilă cu ajutorul unui dispozitiv special și cu impulsuri mai mari de curent dar această memorie își păstrează starea după oprirea alimentarii. Pentru a o reprograma trebuie expusă la o lumină ultravioletă foarte puternică dar aceasta reprogramare se face greu și doar de la zero. Așadar atribuțiile fizice ale sistemelor de securizare din a patra generație erau caracteristicile lor și nu funcțiile lor programabile.

Astfel intra a cincea generație în peisaj și a fost rezolvată introducând ceva ce exista deja pe alte planuri însă la sistemele de securitate nu era implementat. Începând cu anii 2000 producătorii de sisteme de securizare și-au dat seama că nu au nevoie, pentru fiecare client în parte, sau pentru nevoia fiecăruia să construiască un alt sistem de la zero, programat și legat din start și care să îndeplinească un anumit set de funcții exacte. În timp ce ei se axau să creeze sisteme cat mai complexe, au observat ca ar putea folosi Controlerele Programabile Logice(PLC-uri) și transmisii prin rețele deja existente de LAN (Local Area Network) rețele locale sau MAN (Municipal Area Network) sau chiar WAN (World Area Network) și arhitectura de Ethernet. Folosind acestea era mult mai ușor să aducă la un loc sistemele de comunicare cu cele de control și de alarme și multe altele într-un singur sistem integrat. Acum tehnologia se îndreaptă tot mai mult spre sisteme complexe care vor să integreze diferite componente precum alarme, puncte de acces de control și chiar interfețe ușor de utilizat pentru clienți. Un exemplu de sistem de securizare cu cititor de amprentă este prezentat în figura 3.2.

Se poate observa avansul tehnologic enorm în comparație cu primul sistem de alarmă cu telegraf din figura 3.1.

Sistem de securizare cu citire de amprente [15]

Spre acestea aspir și eu cu implementarea prezentului proiect pentru a crea un sistem de securizare ușor de integrat modificat sau configurat care are în același timp o interfața plăcută pentru administratori și utilizatori.

Sistemele integrate de securizare-generalități

Sistemul integrat de securitate este un sistem care are un singur punct de control principal reprezentat de un program general pentru monitorizarea subsistemelor, care, la rândul lor, pot fi controlate parțial de subprograme sincronizate.

Dacă diferite sisteme pentru securitate care includ mai multe tipuri de alarme, sisteme de supraveghere sau detecție și semnalizare împreună cu sisteme de autentificare și pentru controlul accesului, sunt coordonate de un sistem central atunci acestea fac parte dintr-un sistem integrat de securizare.

Aceste sisteme pot avea aplicații în cadrul companiilor mari și mici, în special în centrele comerciale, hoteluri, bănci sau chiar blocuri de locuințe.

Un sistem de securitate robust ar avea numeroase dezavantaje, de la lipsa flexibilității până la aspectul estetic al sistemului care poate fi personalizat în cadrul unui sistem de securizare integrat.

În ceea ce urmează vă voi prezenta o listă de facilitați pe care un sistem de securizare integrat le prezintă:

Program software care este ușor de utilizat și intuitiv. El poate controla sistemul și interoga diverse tipuri de evenimente din cadrul întregului sistem.

Programul poate fi scris în modul client-server ceea ce presupune existența a mai multor clienți și informații securizate pe un server astfel încât clienții să primească doar informațiile necesare și pe care au dreptul să le observe.

Controlarea drepturilor de acces la informații și în cadrul sistemului.

Îmbunătățirea continuă a sistemului prin adăugarea de subsisteme noi.

Modificarea sistemului prin îmbunătățirea unor componente și înnoirea lor, indiferent de producătorul care le-a furnizat.

Flexibilitate mare de extindere și chiar de eliminare a unor subsisteme nerelevante pe viitor.

Comunicația între subsisteme rapidă și flexibilă, fiind ușor adaptabilă clădirii în care a fost instalat sistemul prin gradul înalt de modularitate.

Monitorizarea totală, în timp real, la distanță.

Comenzi care pot fi furnizate de la distanță de către un operator precum alertarea autorităților sau oprirea sistemelor de iluminat.

Sisteme de pontaj integrate în cadrul sistemului de securizare prin reținerea logării utilizatorilor în sistem.

Prelucrarea simplă a evenimentelor pentru că acestea sunt menținute într-o bază de date bine structurată.

Persistența datelor într-o bază de date ajută ulterior la statistici și monitorizare.

Pentru aceste motive sistemele de securizare configurate de majoritatea firmelor specializate au astăzi un oarecare grad de modularizare și sunt construite pe principiul sistemelor integrate.

Programe pentru gestionarea securizării

Orice sistem de securizare modern are și un program care ajută la controlul sistemului și gestionarea evenimentelor generate de sistem. Acest program trebuie să dețină posibilitatea stocării datelor generate și analiza lor, afișând și monitorizând informațiile rezultate.

Programul poate fi unul de tip Windows, instalat pe calculator și care poate fi utilizat doar în cadrul aceluiași calculator sau poate fi unul de tip server-clienți care are o baza de date generala. A doua variantă de program are avantajele de a fi mai flexibilă, ușor de gestionat, accesibilă de oriunde și permite răspunsul imediat al unor companii de intervenție în cazul breșei în securitate. Problema cu un program online este faptul că trebuie asigurată confidențialitatea și siguranța informațiilor fiecărui utilizator.

Autentificarea utilizatorului în cadrul unui program pentru gestionarea sistemelor de securizare se poate face pe bază de utilizator și parolă, o metoda de logare foarte mult folosită astăzi.

În general programele pentru gestiunea securizării au o interfață prietenoasă cu clientul pentru ca acesta să citească ușor informațiile dorite și să fie intuitiv de utilizat, având în vedere că majoritatea oamenilor care își doresc sisteme de securizare nu sunt specialiști în acest domeniu.

Majoritatea companiilor care oferă sisteme de securizare folosesc site-ul propriu pentru prezentarea produselor pe care le dețin și a ofertelor lor. Au și o pagină de întrebări frecvente unde mai răspund unor probleme apărute mai des printre utilizatorii sistemelor lor și încă o pagină care să explice modalitatea de a fi contactați însă foarte puține dintre acestea au o pagină Web în care un utilizator poate să vadă, în funcțiile de permisiunile pe care le are, date despre sistemul lor propriu și personalizat de securizare. Un exemplu de astfel de site poate fi văzut în figura 3.3 [16] .

Acesta este site-ul de prezentare a firmei Bip Telecom iar aici se pot descoperi date despre firma Bip Telecom, portofoliul cu clienții lor, competențele firmei și certificările obținute(pentru a-și demonstra veridicitatea) și pagini de prezentare a produselor și ofertele lor. Tot acest site prezintă opțiunea de a schimba toată informația din romană în engleză, fapt care poate să ajute mult la experiența utilizatorului și la mărirea numărului de posibili clienți.

Citind Url-ul(adresa la care se află site-ul) putem observa că acesta a fost creat în limbajul de programare PHP.

Crearea site-urilor Web se poate face prin diverse limbaje de programare dintre care cele mai cunoscute sunt Java, Javascript, PHP, C# alături de HTML sau CSS și alte limbaje, librării sau tehnologii adiacente. HTML și CSS nu sunt suficiente pentru a crea un astfel de programe deoarece este nevoie de cod ținut pe un server care să fie accesat doar de acolo iar acestea sunt doar limbaje care permit afișarea unor informații, fără a permite gestiunea permisiunilor sau legătura cu baza de date. Baza de date, la rândul ei, poate fi ținută pe o platformă SQL, Oracle sau MySql iar aceasta stocată, de asemenea pe un server.

Site de prezentare Bip Telecom[16]

În figura 3.4 se poate observa un alt site romanesc în care sunt foarte puține date despre sistemele de securizare integrate dar care au suport, în special, pentru securitatea și siguranța electronică și oferă ocazia unui client existent să se autentifice și să navigheze pe acest site în funcție de permisiunile sale.

Site de prezentare Helinick[17]

Programul securizat poate să fie extins printr-un program de automatizare completă a clădirii, aspect spre care se migrează tot mai mult.

Pentru a asigura securitatea se pot face verificări pe partea clientului, în browser, legat de autenticitatea persoanei care se loghează dar pentru o mai mare securitate este nevoie ca programul să dețină o bază de date a utilizatorilor care să posede câte o parolă unică, ușor de amintit însă cât mai sigură pe care site-ul să o interogheze făcând un apel la serverul sistemului de securizare.

Astfel baza de date poate să dețină un număr foarte mare de informații și un program online poate fi îmbunătățit ușor, orice problemă apărută putând fi rezolvată repede și nu doar la eliberarea unei versiuni noi, așa cum se întâmplă în cazul programelor instalate pe calculatorul personal.

Pentru operarea unui program online este, de asemenea, nevoie de o echipă de administratori care poate să întrețină site-ul și să îl aducă la zi cu ultimele modificări.

Dacă moda în design-ul site-urilor se schimbă sau dacă compania de securizare dorește să se reidentifice printr-o nouă interfață, aceasta este ușor de modificat și actualizat.

Tot în cadrul acestui program se pot genera o serie de grafice și rapoarte care să ajute la înțelegerea generală a datelor citite.

Din aceste motive se preferă un program de securizare bine gestionat și întreținut care este rulat sub formă de pagina WEB.

După cum se observă și în figurile 3.3 și 3.4, aceste site-uri de prezentare au o structură generală care poate să ajute utilizatorul sau clientul să navigheze intuitiv și simplu. Dezavantajul care îl prezintă pagina WEB pentru Helinick este faptul ca informațiile legate de produse sunt puține astfel încât este necesară contactarea directă a echipei la dorința aflării detaliilor și faptul că autentificarea clientului este greu de observat în pagină, sub meniu, astfel încât un client trebuie instruit înainte de a lucra cu acest site. Dar ca avantaje vedem pagina simplu de înțeles, numele clar și bine afișat al companiei, făcându-și astfel și reclamă virtuală și culorile alese care sugerează profesionalism. Pe de altă parte site-ul de la Bip Telecom are mai multe detalii de prezentare și ajutor dar este mai greu de navigat și are părți în care combină destul de mult limba romană cu limba engleză, fapt care poate fi dificil de înțeles pentru un utilizator.

Informațiile virtualizate sunt tot mai mult folosite și utile iar o firmă din ziua de astăzi care nu are o bază de date și un program pentru gestiunea informațiilor destul de solide va rezista tot mai greu pe piață.

ANALIZĂ ȘI PROIECTARE

Lucrarea de față încorporează o serie de dispozitive fizice, controlate cu tehnologii de programare, prin mai multe limbaje de programare, marcare sau editare a stilului de afișare pe interfața utilizatorului. Un sistem de securizare a clădirilor poate fi creat într-o varietate largă de modele. Din acestea fac parte sistemele de securizare care presupun o autentificare printr-un printr-o parola unica introdusă de la o tastatură sau prin alte sisteme de specifice precum cititoarele RFID sau chiar scanarea retinei, sistemele de securitate care verifică prezența unor persoane neautentificate cu ajutorul mai multor tipuri de senzori și chiar cele care, la detectarea unui pericol activează o alarmă.

Problema este că beneficiarii acestor sisteme de securizare a clădirilor își doresc, de cele mai multe ori, un sistem de securizare particularizat care să le ofere pentru o anumită clădire sau pentru încăperi, o anumită combinație de dispozitive de securizare iar majoritatea furnizorilor nu au sisteme modulare care pot fi ușor particularizate, precum am prezentat în capitolul precedent.

În ceea ce urmează voi analiza câteva detalii legate de dispozitivele folosite în proiectul meu și de ce am ales să folosesc aceste dispozitive, ca mai apoi să prezint felul în care am decis să le controlez și algoritmul pentru detectarea tipurilor de alarme. Tot acest capitol include și o scurtă descriere a tehnologilor și limbajelor de programare alese pentru a proiecta interfața prin care clientul va interacționa cu aplicația.

Analiza dispozitivelor utilizate

Dispozitivele utilizate sunt componente de bază a unui sistem de securizare care ar fi capabil să armeze și dezarmeze o serie de senzori și să reacționeze la alerte aruncate de acești senzori prin elemente de alarmare și mecanice, precum cele de blocare a ușii.

Plăcuța Intel Galileo Gen 2

Intel Galileo Gen2 este o plăcuță fizică pentru dezvoltarea de aplicații. Ea ajută la controlul unor elemente interactive prin acceptarea unor informații de la lumea fizică, exterioară și procesarea lor. După procesarea datelor, diverse căi de acțiune pot fi urmate, fie răspunzând tot în lumea fizică sau prin activarea de evenimente sau afișarea informațiilor dorite în lumea virtuală. Dacă comunicarea printr-o rețea este configurată, atunci plăcuța poate comunica cu alte dispozitive de exemplul cele de tipul web-serverelor [5]. Plăcuța Intel Galileo Gen2 are un port de Ethernet prin care se poate face comunicarea. De asemenea se poate crea o conexiune cu calculatorul care este serială și se face prin portul micro-USB.

În figura 4.1 este prezentată plăcuța Intel Galileo Gen2. Se poate observa modul de legare la calculator printr-un cablu cu micro USB și conectarea la alimentare printr-un transformator de 12V. Am evidențiat și mufa de Ethernet prin care se face comunicarea în rețea cu alte dispozitive.

Această plăcuță este compatibilă cu Arduino, însemnând ca poate fi programata utilizând limbajul de programare Arduino în mediul de programare Arduino IDE software. Configurația pinilor este compatibila cu modelul de pini Arduino 1.0 ceea ce însemnă ca ei pot fi definiți în aplicație la fel ca pentru plăcile Arduino Uno, Arduino Mega și Arduino Yún.

Între avantajele pe care le are Intel Galileo Gen2 intră și faptul că are un procesor care rulează cu sistemul de operare Linux, memorie RAM pentru stocare de date, intrare pentru Micro-SD card pentru a stoca date(acceptă card de pană la 32GB) și unde se poate reține codul pe care îl va rula plăcuța(dacă este încărcat de pe card) și permite chiar conexiune la WiFi în cazul conectării cu aparatura necesară.[6]

Plăcuța Intel Galileo Gen2

Cu toate acestea, plăcuța Galileo Gen2 nu are vreo funcționalitate de sine stătătoare care să permită crearea unui proiect mai avansat decât aprinderea și stingerea unui led. Din acest motiv pentru crearea unui sistem de securitate voi folosi mai multe componente conectate de intrare sau ieșire, conectate la cate o plăcuță. Conexiunea intre mai multe dispozitive se face prin Ethernet.

O schemă generală a plăcuței este prezentată in figura 4.2 iar în aceasta se pot observa mai bine felul în care sunt repartizați pinii și conexiunile plăcuței.

Intel Galileo Gen 2 structura generală[25]

În această imagine vedem că plăcuța are un micro-procesor Inel Quark X1000, pini analogici și digitali care pot fi folosiți atât pentru intrări cât și pentru ieșiri, opțiuni de alimentare a dispozitivelor de 5V sau 3.3V, legătură la masă(GND) și butoane pentru resetare(reset) dar pentru a reseta programul din plăcuță se recomandă ca acestea să nu fie apăsate și, în schimb, să fie scoasă din priză plăcuța pentru că rezolvă automat acțiunea de reset in cazul în care nu citește de pe cardul SD codul scris în limbajul de programarea hardware, Arduino ci reține codul în memoria proprie.

Led

Ledul roșu din Figura 4.3 este folosit pentru a semnala un eveniment apărut în lucrare și este foarte util în dezvoltarea unei aplicații pe plăcuța fizică pentru o observare ușoară a mersului fiecărei părți din proiect. Se poate folosi și ledul de pe plăcuța Intel Galileo Gen2 care se află la ieșirea notată cu numărul 13 însă pentru a alege ieșirea dorită ca fiind pe orice pin digital, se va folosi un led care se leagă la GND(masă) și la pinul de care da semnalul printr-o tensiune de 5V(Volți).

Led

Plăcuțe cu relee

Câteva dintre dispozitivele ce vor fi prezentate ulterior, au nevoie de o alimentare mai mare decât cea oferită de plăcuță. Alimentarea acestora se face prin plăcuțe cu relee care primesc un semnal de la plăcuța cu relee, se conectează la masă și la intrarea de 5V și pot media o alimentare de până la 250V / 10 A în funcție de semnalul folosit și sursa externă de tensiune pe care o acceptă. Aceste relee sunt folosite pentru a controla o tensiune mare cu ajutorul unei tensiuni mici. Releele folosite se pot vedea în figura 4.4.

Plăcuțe cu relee

Senzor PIR

Senzorul PIR(senzor de prezență) citește razele infraroșii emise de corpul uman prin căldura lui și trimite pe o ieșire analogică un semnal. El poate fi controlat cu o plăcuță(în acest exemplu am ales Intel Galileo Gen2) primind o alimentare de 9V sau 12V. În figura 4.5 se poate observa cum arata acest senzor.

Senzor PIR

Acesta va avea nevoie de fire conectoare și de o rezistentă de 10K pentru a fi legat la plăcuță. Senzorul PIR ales nu are o rază foarte mare de acțiune însă poate citi informații de prezență într-o arie de 180 de grade.

Contacte magnetice

Contactele magnetice se montează pe uși sau geamuri și generează informații sub formă de semnale dacă ușa sau geamul au fost deschise. Ele știu aceste informații datorită faptului că simt sau nu contactul cu perechea lor. Un exemplu de contacte magnetice este prezentat în figura 4.6.

Contacte magnetice

Tastatură 4X4

Sistemul de securizare conține senzori care trebuie să fie dezactivați sau să nu trimită alerte atunci când utilizatorul autentificat. care are permisiunile necesare. dorește acest lucru. O tastatură 4X4 va fi folosită pentru a permite acestuia să semnaleze dezactivare respectiv activarea senzorilor și alarmelor, dacă introduce codul unic de securitate personal și are permisiuni la dispozitivele de la o anumita locație. O tastatura precum cea prezentată în figura 4.7 poate fi legată la o plăcuță Galileo prin 8 fire tată-tată astfel: primele 4(începând din stânga) reprezintă coloanele iar următoarele 4 reprezintă rândurile.

Tastatură 4X4

Dispozitiv mecanic de blocare/deblocare a ușii

În figura 4.8 este prezentat un dispozitiv pentru deblocarea ușii în cazul autentificării corecte a unui utilizator. Acesta are nevoie de o sursa de tensiune de 9V. Pentru alimentare se folosește un releu comandat de un semnal pe 5V și o sursă externă de tensiune.

Pentru o mai bună securizare, utilizatorul trebuie să se autentifice cu ajutorul tastaturii pentru a deschide și tot atunci se poate dezarma sau arma sistemul.

Dispozitiv mecanic de blocare/deblocare a ușii

Alarmă 10db cu semnal luminos

Alarma este folosită pentru a semnala o efracție sau un eveniment periculos. Ea este folositoare pentru că descurajează un infractor prin semnalul ei sonor foarte puternic și o alertă luminoasă. Astfel oricine e prin împrejurime poate interveni și, dacă în clădire sau în casă se mai află persoane, ei sunt atenționați.

Există posibilitatea ca o alarmă să fie declanșată de către o persoană autorizată în acea zonă, dintr-o eroare umană. Pentru această situație, o autentificare la zona de autentificare de care aparține alarma, va dezactiva alarma dar evenimentul va rămâne înregistrat în baza de date a serverului.

În figura 4.9 se găsește o un exemplu de alarmă folosită în proiectul meu. Tipul de alarmă poate să difere deoarece alarma este legată separat pentru lumina și sunet iar în cazul schimbării alarmei se pot lega unul sau mai multe dispozitive care să reacționeze precum o alarmă.

Alarmă 10db cu semnal luminos

Fire de legătură

În funcție de fiecare dispozitiv conectat la sistem, se vor folosi fire de legătură tată-tată, mamă-mamă sau tată-mamă. Mai sunt necesare cabluri de alimentare pentru plăcuțe și relee cu transformatoare ale curentului pentru ca o alimentare la 220V ar distruge circuitele. Am folosit și un cablu serial sub formă de micro-macro USB pentru transferul programului din computerul unde a fost scrisă aplicația în Arduino pe plăcuța Intel Galileo Gen2.

Analiza limbajelor și a tehnologiilor folosite

În acest subcapitol vă voi prezenta tehnologiile și limbajele de programare alese pentru implementarea programului pentru gestiunea sistemelor de securizare a clădirilor. Această descriere va include câteva generalități legate de limbajele de programare și felul în care ele pot fi utilizate împreună cu câteva exemple și structuri de bază folosite pentru aplicații scrise în limbajele în cauză. În plus aici veți putea descoperii cum se utilizează aceste tehnologii prin mediile de programare necesare și cu ajutorul câtorva librării specifice.

Arduino

În subcapitolul 4.1 am prezentat o serie de dispozitive pe care am decis să le utilizez în această aplicație din diverse motive prezentate. Pentru ca dispozitivele să funcționeze împreună și să reprezinte un sistem de securitate, ele sunt legate la plăcuțe programabile pe care este încărcat un cod scris în limbajul de programare Arduino.

Arduino este un limbaj cu sursa deschisă (Open-Source) pentru programarea dispozitivelor hardware. Codul este încărcat pe plăcuța dorită și va rămâne încărcat până ce va fi suprascris sau plăcuța va fi resetată [5].

Limbajul Arduino este scris în programul Arduino IDE care este o aplicație creată în Java iar pentru a programa Intel Galileo Gen2 este nevoie de versiunea 1.6.0. al acestuia.

Mai este nevoie de configurarea porturilor în calculatorul pe care se va programa pentru ca plăcuța să fie recunoscută ca Intel Galileo Gen2.

„Orice program Arduino are nevoie de o funcție numită setup()” [7] acesta este locul unde vor fi definiți pinii de intrare/ieșire, de aici pornește execuția oricărui program pentru că această funcție este apelată o dată la inițializarea plăcuței. „O altă funcție obligatorie este cea numită loop()” iar aceasta se repetă într-o buclă infinită și ține logica principală a programului. Multe alte funcții predefinite pot fi folosite aici, fiecare aparțin unei librării încărcate ulterior sau generale precum funcția delay() care reprezintă o pauză în rularea programului pentru un anumit număr de milisecunde specificate.

Un exemplu de program simplu pentru a face posibilă aprinderea și stingerea unui led de pe plăcuță sau legat la pinul 13, la intervale determinate de timp(în acest caz de o secundă) se poate vedea în figura 4.10:

Exemplu Blink Arduino

Acest cod provine chiar din exemplele furnizate de Ardunio IDE 1.6.0.. Mai multe exemple pot fi găsite intrând în meniul din antet prin Files->Examples. Cel prezentat mai sus este din Basics și se numește Blink.

Acest limbaj de programare este un limbaj simplu de înțeles și utilizat inclusiv pentru persoanele care nu au avut multă tangență cu programarea și a fost inițial creat pentru artiști și cei începători în programarea hardware.

C#

Limbajul de programare C# a apărut destul de recent în viața programatorilor, mai precis în anul 2002 și a fost lansat de firma Microsoft pentru lucrul în mediul .NET.

Caracteristicile de bază a limbajului de programare C# sunt simplitatea, faptul că e orientat pe obiect, la fel ca Java sau C++, acestea fiind două din limbajele de programare din care este derivat și este puternic tipizat(TypeSafe).

Aceste caracteristici aduc următoarele avantaje:

• Ușurință în dezvoltarea anumitor servicii WEB

• Interoperabilitatea cu diverse limbaje

• Oferă suport complet pentru dezvoltarea de aplicații software

Aplicațiile create în C# pot să fie de multe tipuri precum cele Web Applications pentru site-urile Web sau Windows Application pentru crearea unui program care să ruleze pe Windows dar cel mai des folosit este și cel mai simplu dintre programe: Console Application care permiterea afișarea informațiilor pe o consolă dar și gestiunea informațiilor, legătură cu baza de date și permite crearea de clase cu extensia .cs care pot fi apelate chiar din proiectele celelalte prin setarea acestora ca referințe și adăugarea moștenirilor necesare prin comanda using.

Pentru a utiliza C# și a crea o pagină WEB care să reprezinte programul de gestiune a sistemelor de securizare ale clădirilor voi avea nevoie de instrumentele prezentate în tabelul 4.1 pentru a scrie și rula programul. Versiuni mai vechi sau care sunt gratis ale acestora pot fi utilizate însă, prezintă unele dezavantaje atât în ușurința de a scrie cod cât și în posibilitatea de a-l face atât de eficient și curat.

Tabel 4.1

„Un program C# este, de fapt, o colecție de tipuri. Definite în fișiere, ce sunt organizate în spații de nume(namespace), care sunt compilate în module și apoi grupate în ansambluri(assembly).” [8] Această organizare se poate observa în figura 4.11.

Ierarhia C#

În general, aceste unități organizatorice pot să fie suprapuse, de exemplu un spațiu de nume poate să aparțină mai multor ansamble așa cum și un ansamblu poate conține mai multe spații de nume.[8]

Cu ajutorul directivei numită „using” putem să îi spunem compilatorului ce spațiu de nume să recunoască în cadrul unui alt spațiu de nume.

Acest limbaj de programare folosește și moștenirea sau suprascrierea metodelor din interfețe, clase abstracte și prin gestiunea acestora într-un mod eficient, codul va fi mai eficient din punct de vedere al vitezei și al resurselor pe care le folosește. Pentru a le gestiona pe acestea s-au creat șabloanele pentru proiectarea codului (design patterns) care sunt inventate de oameni pentru a defini situații tipice în care un programator se poate afla și, pentru care, există anumite metode de rezolvare a problemei.

SQL

Pentru a organiza un număr mare de date într-un calculator și a citi exact informația dorită la momentul dorit, se folosesc baze de date. Suport pentru organizarea bazelor de date este oferit și de MS SQL Server, MySQL, Oracle și multe altele.

SQL(Structured Query Language) este un limbaj folosit pentru programarea bazelor de date ceea ce înseamnă că, prin el, se citesc, scriu și modifică informații într-o bază de date relațională. El este unul din cele mai folosite și cele mai importante limbaje pentru ca orice dată ținută într-o bază de date de SQL poate fi citită și gestionată cu ajutorul acestui limbaj.

SQL este un limbaj declarativ, care se axează pe obținerea rezultatelor și cere automat rezultatele dorite, spre deosebire de un limbaj procedural, cum este, de exemplu, C#, care descrie o procedură care trebuie urmată și rezultatul este ceea ce reiese din aplicarea procedurii respective. Asta înseamnă că se bazează pe cerere și spune „ce” și nu „cum” să facă rost de rezultatul dorit.[9]

Pentru a folosi baze de date, am ales programul SQL Server 2014 Management Studio. SQL este folosit pentru a lua, scrie sau modifica informații într-o bază de date relațională.

Toate datele sunt ținute în structuri bi-dimensionale, sub formă de tabele cu linii și coloane, care mai au și anumite proprietăți asupra lor, precum tipul de date pe care îl stochează și dimensiunea unei date.

O bază de date relațională este o bază de date în care tabelele care țin datele pot să facă referințe la alte tabele și să aibă o anumită relație(prin una sau mai multe chei străine) cu alte table, forțând informațiile să fie coordonate între ele.

O cheie primară este o coloană într-un tabel din SQL care are informații unice pentru fiecare rând și, după care, se poate identifica mai ușor și mai rapid rândul respectiv. Cheia străină este o referință la o altă cheie primară dintr-un tabel cu care există o relație.

Astfel, dacă se cunoaște informația din cheia străină a altui tabel, acel rând care are informația unică respectivă este ușor de identificat și, practic, rândul din tabelul curent are și informația rândului cu care are legătură din tabelul secundar.

Pe scurt, acest limbaj permite interogarea informațiilor dintr-o bază de date după felul în care se dorește afișarea legăturii și este o nouă modalitate de a manevra informația dorită.

De asemenea, o bază de date relațională poate fi stocată pe mai multe servere sau să permită mai multor utilizatori, în funcție de permisiunile pe care le au, accesul la date. Ea poate fi folosită pentru a organiza, într-o întreprindere, accesul la informații dar și coordonarea la aceleași date între angajați.

Prin SQL se poate face accesul la informație ceea ce înseamnă ca oferă oamenilor atât securitatea de care au nevoie legată de informațiile lor, dar și puterea de a accesa ei informația la care au acces. În general, pe un server, doar administratorii cu cel mai înalt grad de autorizație au acces la baza de date a informațiilor ținută în SQL.

În plus, modificarea unei structuri în baza de date se face destul de ușor, adăugând tabele cu legăturile dorite chiar daca nu au fost construite de la începutul cereri bazei de date.

În jurul nostru se află nenumărate baze de date, cele care țin informații despre documentele noastre, despre ce este scris pe un site sau într-o aplicație de Windows și chiar și pe telefonul mobil.

SQL are câteva elemente folosite de un programator a bazelor de date precum:

Clauze: sunt cuvinte rezervate pentru a defini instrucțiunile care generează comenzi și sunt scrise într-o anumită ordine și cu un format specific. Exemple de clauze sunt WHERE care pune o condiție sau ORDER BY care ordonează datele după o coloană.

Expresii: sunt o combinație de simboluri și operatori care ajută la obținerea unei anumite valori dorite.

Predicate: pot specifica condiții care sunt evaluate de SQL și returnează adevărat, fals sau necunoscut. Acestea se pot folosi în cadrul clauzelor WHERE, HAVING, JOIN sau altele unde se poate folosi verificarea booleana. De exemplu: CONTAINS sau IS (NOT) NULL.

Instrucțiunile: cod de acces la baza de date prin care aceasta poate fi citită sau modificată. De exemplu inserarea unei valori, modificarea sau ștergerea unei date existente, etc.

Interogări: instrucțiuni care au rolul de a returna un rezultat care poate fi citit (se folosesc în special cu clauza SELECT).

Proceduri stocate: pachete de instrucțiuni care sunt stocate și memorate astfel încât să fie accesate la utilizare.

Tipuri de date definite de utilizatori: sunt folosite în funcții și proceduri stocate ca variabile și sunt stocate în baza de date.

Tranzacție: o secvență de una sau mai multe instrucțiuni care presupune că la eșuarea unei instrucțiuni, nici o modificare făcută de tranzacție să nu aibă loc.

HTML5

HTML este un limbaj de marcare și este folosit pentru aranjarea elementelor vizuale în pagina web. Cu ajutorul acestui limbaj, specific unde doresc să plasez un tabel sau un text pentru a face mai plăcută experiența unui utilizator în vizualizarea site-ului.

Un cod HTML de baza arată în felul următor:

<Html>

<Head>

<Title>Titlul site-ului</Title>

<Script src=”fisierJavascript.js”></Script>

<Link rel="stylesheet" type="text/css" href="fisierCSS.css">

</Head>

<Body>

Aici se adaugă elementele, precum tabelele sau listele

<div class=”cssClass”>

Div-ul este un element pe care pot să îl plasez în pagină și toate

<br />elementele din el se vor aranja în conformitate cu acesta

</div>

</Body>

</Html>

Codul poate fi scris într-un fișier Notepad și salvat cu extensia „.html” , astfel el poate fi deschis într-o pagină de browser web. Pentru a lega codul html de cel C#, am folosit acest cod în Visual Studio, care are suport pentru HTML, CSS, Javascript și alte limbaje. Acesta a fost scris în cadrul unui proiect de tipul „Web Form”, un proiect pentru gestionarea paginilor web și a două feluri de elemente din Visual Studio: unul cu extensia .master, care reprezintă pagina Master a site-ului și se utilizează pentru aranjarea elementelor în pagină și altul cu extensia .aspx, care este chiar o pagină web care poate să dețină cod de c# în spatele paginii pentru a o gestiona.

Din cadrul secțiunii de cod exemplificată mai sus, șirurile de caractere prinse intre paranteze ascuțite se numesc elemente HTML. Tag-urile sunt elemente care se împart în 3 categorii: elemente de început( care au nevoie de elemente de închidere pentru a determina până unde au efect), de închidere(cele care au / înainte de cuvântul descriptiv) și elemente care se închid singure precum <br /> care nu mai au nevoie de un element de închidere.

Tag-urile pot să fie imbricate astfel încât un tag să conțină altă pereche de taguri, dar un tag copil nu se poate închide înafara tag-ului părinte.

Orice fișier HTML este format din tagurile:

<html></html> care conțin tot codul

<head></head> care pot conține titlul site-ului(apărut în partea de sus de unde se vede deschis tab-ul browser-ului) și referințe la fișiere cu CSS sau Javascript

<body></body> pentru deținerea de elemente care ajută aranjarea în pagină. Acestea pot primi clase sau id-uri pentru identificarea lor și pot fi aranjate sau modificate prin coduri de CSS sau HTML.

HTML5 are suport și de aranjare în pagină precum definirea locului, culorii sau dimensiunii unui element însă, în general, este mai util să se folosească aranjarea prin codul CSS și prin Javascript pentru că există mai multe opțiuni și este mai flexibil. În plus, o clasă poate referi mai multe elemente iar în CSS pot ca toate elementele din acea clasă să primească o serie de atribute, astfel încât să nu se repete codul de aranjare scris. Dacă se dorește siguranța că doar un element specific primește niște atribute de CSS, atunci, un ID este ideal pentru ca acesta nu poate fi de două ori repetat în aceeași pagină HTML.

HTML5 este ultima versiune de HTML care este folosită și în cadrul proiectelor din Visual Studio.

CSS3

CSS este un limbaj pentru aranjare. Prin acest limbaj se pot specifica atribute pentru elementele de HTML plasate în pagină.

Pentru specificarea atributelor unei clase formatul este în felul următor:

.cssClass{

color:red;

}

Se folosește simbolul „ . ” pentru a specifica că atributele sunt ale unei clase iar toate atributele din cadrul acoladelor se vor aplica pentru acea clasă. Un exemplu de atribut este „color” prin care se specifică culoarea textului conținut în element.

Pentru a specifica atributele unui element la care i se cunoaște id-ul se folosește simbolul „#” în loc de punct. Se pot specifica și atribute folosite pentru toate tag-urile de acel tip din cadrul unei pagini HTML, scriind numele tag-ului fără punct sau diez înainte. De asemenea, se pot utiliza și combinații dintre acestea, de exemplu:

div .cssClass{

float:right;

}

Exemplul anterior are ca efect mutarea tuturor elementelor care au clasa .cssClass și sunt conținute în cadrul unui element de tip div, în partea dreaptă a paginii web.

Mai există și condiții pentru aplicarea unui stil, de exemplu „:hover”, care, dacă este pus chiar la finalul declarației, atributele se vor aplica doar atunci când utilizatorul trece cu mouse-ul deasupra elementului.

CSS3 este ultima variantă de CSS apărută și se potrivește cu HTML5.

Javascript(cu librăria JQuery)

„JavaScript este un limbaj de scriptare destinat accesării programate a obiectelor din interiorul unor aplicații. A fost folosit în forma „client-side” care este și în prezent cea mai răspândită, ulterior fiind dezvoltată și forma server-side” [9].

Acesta este un limbaj bazat pe obiecte pentru că folosește resursele primite precum niște obiecte virtuale.

Forma „client-side” reprezintă o formă de limbaj de programare care presupune gestionarea codului în cadrul încărcării pe pagina web și nu prin executarea de cerere către server. Această formă prezintă avantaje și dezavantaje și este folosită în anumite cazuri specifice.

Avantajele codului client-side sunt:

Rapiditate: trimiterea de cereri către server este costisitoare din punct de vedere a timpului.

Utilizarea resurselor clientului și nu a serverului: un sistem cu foarte multe cereri către server se poate bloca dacă nu conține resursele necesare pentru a gestiona toate cererile.

Validările și datele pe care clientul le alege vor fi trimise doar la finalul cererii lui, nu la modificarea fiecărui aspect din pagină.

CSS-ul și atributele controalelor pot fi definite client-side foarte rapid și eficient.

Dezavantajele codului client-side sunt:

Siguranța informațiilor este mai greu de asigurat pentru că orice informație deja trimisă de server poate fi interogată la citirea sursei unei pagini, chiar și fără a mai face o cerere.

Corectitudinea informațiilor citite poate să nu fie la fel de sigură dacă trimiterea cererii se face doar la finalul completării a mai multor câmpuri, pentru că datele pot fi alterate.

Accesul la baza de date se poate face doar prin cereri către server deoarece baza de date se afla pe un server.

În anumite condiții este recomandată și utilizarea codului client-side Javascript, în special pentru abilitatea lui de a modifica elemente de pe pagină, dar abilitatea acestui cod de a accesa date de pe calculatorul gazdă este limitată, el neputând să acceseze baze de date, fișiere, documente, etc.

Librăria JQuery este una din cele mai utilizate din Javascript pentru că deține elemente ca meniuri, dropdown-uri(liste selectabile), calendare și multe altele. Acestea pot să primească și informații în legătură cu acțiunea care a avut loc asupra lor și, în funcție de ele, să răspundă într-un mod programat.

IMPLEMENTAREA

În cadrul acestui capitol eu voi expune modul de implementare pe care l-am ales pentru a crea sistemul de securizare al clădirilor și programul pentru gestiunea acestor sisteme. Programul este divizat în două soluții, una cu un proiect de tip Windows Form, creat în mediul de programare Visual Studio și în limbajul de programare C#, iar cealaltă cu mai multe proiecte făcute cu aceeași tehnologie dar care are rolul de a porni un Site Web legat la rândul lui de baza de date a ansambului de securizare.

Arhitectura generală a aplicației

Pentru a crea acest proiect am analizat dispozitivele necesare și tehnologiile pe care le voi folosi. În continuare am conceput o arhitectură generală a aplicației care îmi va permite să urmăresc câțiva pași clari pentru a implementa lucrarea.

Arhitectura acestui sistem este prezentată în figura 5.1.

Arhitectura sistemului

După cum se poate observa în figura 5.1 există o serie de elemente componente ale acestui proiect care comunică între ele pentru a transmite și controla datele legate de sistemele de securizare. Legenda arhitecturii este:

Dispozitivele fizice folosite pentru citirea informațiilor legate de sistemul de securizare precum senzor Pir, butonul de panică și tastatura și cele pentru interacțiunea cu mediul înconjurător precum cele de alarmă sau care permit accesul în clădire

Plăcuțe programabile în care se încarcă codul scris în Arduino pentru a comanda dispozitivele prin firele de legătură specifice.

Calculatorul local pe care este încărcată soluția de tip program Windows. Acesta comunică cu plăcuța programabilă printr-un cablu serial. Programul Windows se conectează la toate porturile conectate la calculator și trimite un mesaj așteptând un răspuns. Dacă la unul sau mai multe porturi sunt conectate plăcuțe cu cod Arduino capabil să răspundă cu mesajul specific atunci se cunoaște faptul că există o legătură și se poate face comunicarea cu acea plăcuța.

Serverul principal pe care este socată baza de date și soluția rulată pe internet. În acest caz serverul principal este și calculatorul personal și programul este încărcat pe localHost(accesează calculatorul personal din rețeaua proprie de servicii) dar cu acces la un domeniu de internet sau în cadrul unei rețele de calculatoare, soluția poate fi accesată și de pe un alt calculator.

Soluția care cuprinde proiectul Web în care se află interfața utilizatorilor, proiecte pentru legătura cu baza de date și pentru logica din cadrul soluției și, în cadrul proiectului Web, cuprinde și un serviciu prin care se face conectarea cu programul de pe calculatorul local.

Serviciul web care conține logica de validare, salvare a datelor și răspuns pentru sistemele fizice de securizare.

Baza de date relațională de tip SQL, stocată pe serverul principal, în care se păstrează informațiile despre evenimente, dispozitive, locații, utilizatori dar și log-uri(informații specifice care apar la întâmpinarea unei excepții în cadrul soluției pentru gestiunea sistemelor de securizare).

Cu toate că proiectul curent prezintă un sistem combinat dintr-un singur calculator, o plăcuță programabilă și o serie limitată de dispozitive, programul pentru gestiunea sistemelor de securizare a clădirilor a fost creat pentru a putea fi folosit și la mai multe dispozitive, conectate la un număr mai mare de plăcuțe programabile și acestea, la rândul lor, legate de mai multe calculatoare personale sau alte aparate speciale cu capacitate suficientă de procesare și legătură la internet.

Așadar programul pentru gestiunea sistemelor de securizare, cu acces la resursele necesare, poate să controleze un ansamblu precum cel prezentat în figura 5.2 unde există mai multe dispozitive, calculatoare și plăcuțe programabile, creându-se astfel un sistem complex de securizare a clădirilor și gestiunea securizării acestora.

Pentru ca acestea să fie posibile soluția principală de pe serverul unde se stochează și baza de date trebuie să fie încărcată într-o pagină Web, astfel putând fi accesată de oriunde în lume.

Programul local va avea o referință către un serviciu din cadrul soluției principale și astfel, cunoscându-se URL-ul site-ului online și a serviciului Web, poate să creeze o nouă instanță a acelui serviciu din care să apeleze metodele care sunt de tip „WebMethods” și să trimită sau primească informații relevante.

Interfața cu utilizatorul este de două tipuri: cea locală care apare pe afișajul dispozitivului local însărcinat cu comunicarea directă cu sistemele fizice de securizare și cea online în care este necesară autentificarea unui utilizator pentru a avea permisiuni de a vedea și gestiona date din sistemul propriu de securizare. Această autentificare se face doar cu un nume de utilizator si o parolă deja existente în baza de date. Pentru adăugarea unui utilizator este nevoie ori de un cont de administrator care are permisiuni mai ample în site-ul online ori de acces direct la serverul principal și la baza de date stocată acolo.

Sistemul general controlabil cu programul pentru gestiunea sistemelor de securizare a clădirilor

Crearea sistemului de securizare pentru clădiri

Sistemul fizic pentru securizarea clădirilor este format dintr-o plăcuță programabilă pe care sunt legate mai multe dispozitive, precum se vede și în figura 5.1 și care au legătură cu un calculator printr-un cablu serial.

Butonul de panică este de fapt un contact care are o intrare pe legată la COM care este comandată printr-o tensiune mai mare de 5V ceea ce poate fi primită de la pinul VIN. Acest dispozitiv poate trimite un semnal în două feluri: atunci când este normal închis (NC) și în mod normal conduce continu curent iar atunci când butonul este apăsat curentul este întrerupt sau normal deschis(NO) atunci când nu conduce curent decât atunci când se apasă butonul de panică, făcându-se astfel contactul.

Ieșirea de la NO sau NC se duce cu un fir de legătură la un pin de pe plăcuța programabilă pe un pin digital(de exemplu pin-ul 10) și se citește de acolo informația sub formă de existența sau lipsa unui mesaj.

Tastatura 4X4 va fi folosită pentru autentificare în sistem și armarea sau dezarmarea acestuia. Codul fiecărui utilizator va fi stocat în baza de date. În funcție de codul introdus acesta va trece printr-o serie de verificări. Dacă este de 5 caractere(4 dintre ele sunt salvate în baza de date și unul reprezintă un caracter special de exemplu „#” pentru blocarea sistemului și „*” pentru deblocarea lui) atunci, dacă prima cifră este unul din caracterele speciale, se verifică în baza de date daca există un utilizator cu parola respectivă care să aibă permisiunile necesare pentru a interacționa cu dispozitivul.

Dacă nu poate accesa sistemul atunci va primi un mesaj corespunzător pe ecranul calculatorului local și autentificarea(evenimentul) nu va fi înregistrată. În caz ca a reusit să se autentifice atunci comanda de armare sau dezarmare se va rezolva dar se va stoca evenimentul de autentificare în baza de date.

În figura 5.3 se poate observa cum am legat tastatura 4X4 la plăcuță prin cei 8 pini de intrare a tastaturii și pinii digitali de pe Intel Galileo Gen 2 de la numărul 2 la numărul 9 incusiv.

Legarea tastaturii 4X4 la plăcuță

Senzorul PIR(senzorul infraroșu pasiv) detectează prezența umană prin citirea razelor infraroșii emise de acesta. La citirea unei prezențe el va emite o informație pe care programul o va transforma în alertă. Alerta poate fi dezactivată fie din program fie prin dezarmarea sistemului folosind o parolă validă la tastatura care aparține acelui sistem de securizare(plăcuței programabile).

Senzorul PIR va fi legat la plăcuța Intel Galileo Gen 2 cu ajutorul unei rezistente de 10K. Legătura se poate vedea în figura 5.4. Firul alb este legat la masă(GND), cel negru la 5V prin rezistența de 10k și la ieșirea analogică A0 dar poate fi legat și la altă ieșire analogică iar firul roșu la VIN.

Acesta va simți apariția unei noi prezențe umane deoarece aceasta emite raze infraroșii detectate de senzor.

Conexiune PIR cu Galileo Gen2

Mecanismul mecanic de blocare sau deblocare a ușii transformă energia electrică în mișcarea unui cilindru care, dacă utilajul nu este alimentat pe curent, este automat în poziție de închis. Acesta poate fi deschis prin alimentarea cu tensiunea de 9V dar pentru a alimenta cu această valoare de tensiune este nevoie de o sursă externă pentru a nu suprasolicita plăcuța. Legătura cu sursa externă de tensiune se face cu ajutorul unei plăcute cu releu după cum se vede în figura 5.5.

Conectarea mecanismului de blocare a ușii

Releul are trei intrări care se conectează la plăcuța programabilă astfel: Vcc la ieșirea de 5V, GND la pinul cu același nume(la masă) și un pin care primește semnal de comandă de la pinul numărul 11(poate fi și altul) iar, în funcție de acest semnal, se activează sau nu releul care permite trecerea curentului de 9V. Firul care este legat la capătul pozitiv al sursei de tensiune(care poate fi un adaptor de 9V sau o baterie) este legat la intrarea COM a releului în timp ce celălalt(cel negativ) la o intrare din cele două a dispozitivului mecanic. Circuitul este completat de legarea celei de-a doua intrări a mecanismului cu unui din variantele de conectare NO sau NC ale releului. Acestea funcționează sub același principiu cu butonul de panică. Având în vedere că mecanismul nu are nevoie de conexiune la curent pentru a fi blocat am ales să în leg cu intrarea normal deschisă astfel încât, fără un semnal trimis de la plăcuță, sistemul rămâne blocat.

Tot într-un mod similar se conectează și alarma luminoasă ș sonoră pentru că necesită o alimentare de 9V doar pentru că alarma se controlează prin setarea a două intrări diferite(una pentru sunet și una pentru lumină), voi folosi două relee și doi pini(12 și 13) de pe plăcuța programabilă. Aceștia vor transmite semnal atunci când o neregularitate apare și, astfel, alarma va descuraja jefuitorul și va atenționa persoanele din împrejurimi despre infracțiunea ce are loc.

Implementarea programului pentru gestiunea sistemelor de securizare ale clădirilor

Prima dată se va face analiza programului care va rula online deoarece acesta este soluția principală iar apoi se va descrie modalitatea în care este creat și legat de această soluție programul local.

Programul pe care l-am implementat, sub formă de pagină WEB își propune să permită gestiunea unui sistem de securizare a clădirilor printr-o interfață plăcută și intuitivă. Prin acest program se pot monitoriza alertele generate de sistemul integrat de securizare, se pot șterge evenimente, se poate modifica starea sau descrierea unui eveniment și se pot adăuga noi evenimente speciale pentru statistici sau rapoarte ulterioare.

Toate acestea vor fi posibile în funcție de permisiunile pe care le deține un utilizator pe baza autentificării acestuia pe site. În cazul în care persoana autentificată în aplicație are rolul de administrator, acesta va putea vedea și gestiona toate alertele, inclusiv cele ale altor utilizatori și va putea adăuga utilizatori sau modifica și șterge utilizatori inactivi.

Persoanele neautorizate în cadrul acestui program sau utilizatorii inactivi vor avea acces doar în secțiunea de prezentare de produse, contact și anunțuri ale site-ului pentru gestiunea sistemelor de securizare ale clădirilor.

Diagrame și specificații

Proiectul curent va fi prezentat printr-o serie de diagrame care vor reprezenta părți cheie din implementarea și logica programului.

Use-Case

Există 3 tipuri de utilizatori care pot interacționa cu programul de gestiune a sistemelor de securizare a clădirilor. Din punct de vedere a securității site-ului, cei 3 actori sunt: Administratorul(denumit și admis), utilizatorul autentificat(denumit simplu: utilizator) și utilizatorul neautentificat(numit vizitator) precum în figura 5.6.

Ierarhie de drepturi

Diagrama Use-Case din figura 5.7 arată cum pot interacționa utilizatorii cu sistemul, în funcție de fiecare tip de actor, ei au permisiuni să gestioneze sau să vizualizeze parțial sau chiar deloc anumite arii din cadrul programului. De exemplu, vizitatorul poate doar să vadă paginile statice precum „Acasă”, „Produse” și „Contact”, neavând dreptul la nici o informație venită din baza de date.

Diagrama Use-Case pentru toate tipurile de utilizatori

Master Page

Pagina Master este o pagina creată în mediul de programare Visual Studio în cadrul unui proiect de tip Web Application. Aceasta este utilă deoarece creează o interfață consistentă pentru utilizator, pe paginile pe care el navighează, astfel încât să fie ușor de înțeles pentru client și simplu de adus modificări pentru programator. Structura unui program care conține o pagină master este cea din figura 5.8.

Structura aplicației cu pagina Master

Eu am ales un model clasic dar foarte util pentru a afișa această pagină. În figura 5.9 se poate observa felul în care voi configura pagina master precum și, în general, ce conținut va avea aceasta.

Aspect general al interfeței

În antet va fi creat un meniu cu elemente care vor fi vizualizate în funcție de permisiunile fiecărui tip de utilizator. Un administrator va avea în plus fată de un utilizator normal (autentificat), un element din meniu de unde va putea să gestioneze toți utilizatorii, toate dispozitivele și toate alertele tuturor utilizatorilor, element numit Management Administrativ, pe când un utilizator autentificat va avea în plus opțiunea de a alege Management Personal pentru a-si gestiona evenimentele și dispozitivele personale față de un vizitator(neautentificat) care va vedea doar produsele promovate și câteva detalii despre sistemul de securizare, precum și cum poate să ia legătura cu cineva din cadrul firmei de securizare. De asemenea, în antet se găsește și numele utilizatorului autentificat, respectiv cuvântul ”Vizitator”, pentru un utilizator neautentificat în programul pentru gestiunea sistemelor de securizare a clădirilor.

Meniul lateral se va încărca dinamic în funcție de pagina pe care se află utilizatorul(opțiunea din meniul principal) iar subsolul poate reține anumite informații care vor persista pe toate paginile.

Diagrame și specificații

Baza de date pentru acest program este creată în SQL Server 2014 Management Studio. Acest program va ține pe server informațiile necesare legate de utilizatori, evenimente și locații, cele care vor fi ulterior citite, modificate, șterse sau completate cu ajutorul programului de gestionare a sistemelor de securizare pentru clădiri.

Această bază de date va fi stocată pe server iar accesul direct la ea se va face doar prin accesul la calculatorul gazdă.

Pentru crearea unei noi baze de date, programul SQL Server cere autentificarea prin permisiunile sistemului de operare pe care se află baza de date sau printr-un utilizator care are o parolă și care poate fi definit la instalarea programului pentru stocarea bazei de date. După cum se vede și în figura 5.10 eu am ales autentificarea prin Windows.

Autentificare SQL Server 2014

Din Object Explorer, cu click-dreapta pe Databases, am ales opțiunea New Database și am creat baza de date cu numele „SistemSecurizare”. În această bază de date am adăugat tabelele necesare pentru menținerea datelor despre evenimente și utilizatori.

În primul rând am avut nevoie de informații legate de utilizatorul care este autentificat în aplicație și deține un sistem de securizare care poate produce evenimente.

Utilizatorul are un nume și o parolă care pot fi folosite pentru autentificarea în pagina WEB. Cu toate că numele va fi verificat să nu mai fie folosit, pentru o mai bună siguranță și pentru parcurgerea mai rapidă a bazei de date, un utilizator va avea și un ID unic care este cheie primară și cu ajutorul căreia poate fi identificat.

În figura 5.11 se pot vedea ce informații care vor fi reținute în legătură cu un utilizator. După cum se observă coloanele care conțin spațiu în numele lor au nevoie să fie încadrate cu paranteze pătrate pentru a include spațiul ca fiind parte din nume. Aici vedem că rețin data înscrierii care va fi adăugată automat la crearea unui nou utilizator din interfață, dar și data rezilierii contractului cu sistemul de securizare, aceasta, la fel ca alte coloane, permite salvarea valorii de NULL care reprezintă o intrare vidă iar, pentru un utilizator care nu are dată de reziliere trecută se consideră faptul că este încă activ.

Prefixul identificator notat aici este format dintr-o secvență de cifre sau litere din seria A,B,C,D care este folosit pentru autentificarea prin tastatură în sistemul de securizare al clădirilor. Acesta va putea fi modificat din interfață sau direct din baza de date.

Tipul unui utilizator este cel care ne va spune dacă utilizatorul este administrator, utilizator obișnuit sau vizitator. Pentru că acest câmp este varchar(50), orice valoare poate fi introdusă aici. Dacă cuvântul care apare aici nu este exact cel folosit în codul C# pentru un tip de utilizator, atunci utilizatorul va fi considerat direct ca fiind un vizitator însă, prin acest câmp, este ușor de extins aplicația pentru ca, la dorința adăugării unui nou tip de utilizator, tot ce trebuie este să fie setat un nume specific aici care să fie atribuit cu unele permisiuni în codul C#.

Tabel Utilizatori

Se poate observa cum tipurile de date(data type) a fiecărei coloane pot să difere. Aici vedem uniqueidentifier care este de tip GUID, varchar(50) care reprezintă o informație de 8 biți cu dimensiunea de 50 de caractere sau nvarchar care este în format Unicode. Mai există și „datetime” care este o informație sub formă de dată și timp scrise cu spațiu între ele. În SQL mai există tipuri de date bit care reprezintă un bit de 0 sau 1 și se folosesc pentru a stoca informații de tipul fals-adevărat, date numerice de diverse dimensiuni și multe altele.

Un utilizator poate să aibă un dispozitiv sau mai multe la care le este proprietar și are dreptul să citească informații legate de acestea însă și un dispozitiv poate fi deținut de mai mulți utilizatori când, de exemplu, într-o clădire de birouri intră mai multe firme, fiecare având acces la dispozitivul de la intrarea principală în clădire însă separat acces la intrarea la fiecare etaj sau în fiecare companie în parte. De aceea, între un tabel cu utilizatori și unul cu dispozitive ar fi o relație de mai mulți la mai mulți, ceea ce duce la o neregularitate în formele normale și regulile pentru scrierea unei baze de date relaționare corecte. De aceea, această relație M:M poate fi rezolvată printr-un tabel de legătură care arată ca în figura 5.12 și se numește DispozitiveUtilizatori.

Tabel de legătură intre Dispozitive și Utilizatori

Astfel un dispozitiv poate avea o structură precum în figura 5.13 și atunci, când o legătură intre un utilizator și un dispozitiv va fi creată în baza de date, se va adăuga doar un rând în tabelul de legătură. Aici am demonstrat și avantajul utilizării unei chei primare compuse din doi identificatori pentru că în acest tabel nu este unic ID-ul unui utilizator și nici cel al unui dispozitiv însă este unică perechea de utilizator-dispozitiv.

Figura 5.4 ilustrează tabelul folosit pentru deținerea informațiilor despre dispozitive. Un dispozitiv trebuie să aparțină unei locații dar o locație poate avea mai multe dispozitive, de aceea, aici vedem o cheie primară cu ID-ul dispozitivului dar și o cheie străină cu identificatorul locației.

Tabel Dispozitive

Tabelul de locații este prezentat în figura 5.14. Acesta conține toate datele necesare pentru a identifica rapid o locație în care a avut loc o alertă și, chiar dacă nu toate datele sunt obligatoriu de introdus, adresa alături de numele locației sunt necesare.

Tabel Locații

Pentru a completa structura necesară gestionarii evenimentelor din baza de date, mai este nevoie de un singur tabel, cel numit „Evenimente”. Acest tabel este prezentat în figura 5.15 și deține toate informațiile necesare pentru identificarea unică a unui eveniment.

Tabelul de evenimente are o cheie primară pentru fiecare eveniment în parte, o coloană pentru tipul evenimentului, de exemplu logarea, alarma sonoră sau altele, un ID pentru dispozitivul pe care are loc evenimentul și, prin acesta, se poate afla locația dispozitivului și utilizatorul dispozitivului respectiv, câteva informații asociate care pot fi adăugate ulterior și nu sunt obligatorii, statusul evenimentului de exemplu activ, inactiv, rezolvat și ora, alături de data la care a avut loc întâmplarea logată.

Tabel Evenimente

Toate aceste tabele pot forma împreună o bază de date pentru un sistem de securizare. Pe lângă acestea, conform tehnicilor de scriere a codului curat și pentru a nu interveni posibile probleme pe parcursul rulării programului, am creat și un tabel numit Log, în care afișez eventualele erori sau excepții apărute în cod. Tabelul din figura 5.16 arată faptul că de aici am toate datele necesare descoperirii unei erori de programare sau a unei situații neașteptate pentru ca aceste erori să fie rezolvate imediat și pentru a nu se introduce date eronate în baza de date.

Tabel pentru logarea erorilor

Severitatea mesajului poate fi de tipul eroare. Aceasta este o excepție tratată în codul C# iar în acest caz datele din coloana „Excepția” va fi titlul acesteia și StackTrace reprezintă locul în clase și cod unde a avut loc ea. Mesajul este unul scris de mine în codul C# pentru a înțelege mai ușor excepția care a avut loc iar, dacă aceasta este de tip avertizare(warning) sau este doar o informație pe care am vrut să o observ legată de mersul programului, în coloana de excepție și în cea numită StackTrace nici o valoare nu va fi introdusă.

Acest tabel nu are nevoie de o cheie primară deoarece nu are nici o legătură cu aplicația sau cu un alt tabel și nu este necesar să identific unic o eroare apărută ci, îmi doresc doar, să pot urmări bunul mers al programului.

Această bază de date poate fi interogată și gestionată cu ajutorul codului SQL care poate fi scris direct într-o apelare a bazei de date sau apelând în funcție de numele ei, o procedură stocată creată anterior. Acestea pot fi găsite navigând în baza de date curentă sub fișierul numit „Programability” ->”Stored Procedures”. Ele trebuie create din cod SQL.

Un exemplu pentru crearea unei proceduri stocate este:

USE [SistemSecurizare]

GO

CREATE Procedure [dbo].[GetAutentificationID]

(

@UserName varchar (31),

@Password nvarchar (51)

)

AS

SELECT IdUtilizator

FROM Utilizatori

WHERE [Nume Utilizator]= @UserName AND Parola= @Password

Această procedură stocată este folosită pentru citirea identificatorului unic al unui utilizator în funcție de numele și parola acestuia. Ea are nevoie de doi parametri @UserName și @Password care au dimensiunile și tipul de date specificat aici. Pentru modificarea unei proceduri stocate, codul arată la fel, cu excepția cuvântului CREATE, care va fi înlocuit cu ALTER.

Arhitectura bazei de date este prezentată printr-o diagramă(figura 5.17) care arată modelul fiecărei tabele și relația între acestea. Cheia primară(mai numită și cheie principală) este reprezentată printr-o cheiță în dreptul numelui coloanei. Cheia străină este o constrângere pe o coloană și face referire la cheia primară din alt tabel. Coloana care are constrângerea de cheie străină trebuie să conțină elemente din cadrul cheii primare atribuite, deși, elementele nu trebuie să fie unice.

O legătură cu o cheie la un capăt și semnul de infinit la celălalt capăt reprezintă o legătură de o intrare dintr-o tabelă(cea de la capătul cu cheiță) la mai multe(tabelul cu semnul infinit) se mai notează ca fiind o legătură 1:M(one-to-many) și este o legătură care respectă formele normale ale unei baze de date.

Arhitectura bazei de date

Normele pentru scrierea codului curat specifică faptul că o proiectare corectă de la început, alături de o bază de date bine structurată elimină în mare parte din problemele care pot să apară pe parcursul implementării codului de programare.

Menționez faptul că numele bazei de date, al coloanelor sau al tabelelor, precum și o parte din tipurile de date, nu sunt obligatoriu să fie definite cum au fost prezentate mai sus. În cadrul capitolului următor vă voi prezenta modul cum am ales să definesc înăuntrul codului aceste tabele astfel încât oricine cu acces la server să le poată modifica.

Dezvoltarea soluției C#

Pentru scrierea unei aplicații c# se creează, în mediul de programare Visual Studio, o soluție care urmează să conțină proiectele aplicației. Aceasta se poate crea chiar la adăugarea primului proiect așa cum am prezentat în figura 5.18. În partea stângă este un meniu pentru a alege categoria din care face parte proiectul pe care dorim să îl adăugăm. După cum se poate observa, Visual Studio are suport pentru Visual Basic, C#, C++, F# și câteva proiecte adiacente, de tipul database(reține informații despre baza de date curentă) sau typeScript.

Crearea unui proiect de tip consolă și a unei soluții noi

Am ales ca soluția mea, numită SecuritySystem, să includă următoarele proiecte:

• SecuritySystem.Common

• SecuritySystem.Logic

• SecuritySystem.Repository

• SecuritySystem.Web

Proiectul Common este unul de tip Console Application din categoria C#. acest tip de proiect este un proiect simplu, de bază, în care se pot crea diverse elemente, cele mai folosite fiind clasele C# (cu extensia .cs). Din cadrul acestor clase nu se face afișarea pe pagini WEB a informațiilor ci doar prelucrarea și organizarea datelor care urmează să fie afișate.

După cum se poate observa, denumirea proiectelor a fost aleasă cât mai sugestiv [11] și conține numele soluției. În cazul deschiderii proiectelor în alte soluții, se va cunoaște originea lor și vor fi mai ușor de gestionat.

În cadrul proiectului cu denumirea Common voi structura dosare(eng. folders) precum cele de Logging și Utils. În acestea se găsesc clase generale care sunt comune întregului cod. Aceste clase folosesc la logarea erorilor apărute în program, setarea unor proprietăți generale care se folosesc prin întreaga aplicație și clase ajutătoare, de exemplu StringsHelper, care ajută anumite string-uri(tip de dată sub forma de text) prin editarea lui sau serializarea și deserializarea XML pentru asigurarea siguranței datelor utilizatorilor.

Pentru adăugarea unui proiect nou am selectat soluția din Solution Explorer și, apăsând click-dreapta, am adăugat un nou proiect.

Proiectul cu denumirea SecuritySystem.Logic este tot unul de tip Console Application și cuprinde câteva elemente folositoare pentru logica de gestionare a datelor pentru a le transforma în informații relevante pentru cei care folosesc programul. Aici se găsesc dosarele Enums și Models. În cadrul folder-ului Enum am adăugat elemente cu extensia .cs dar care nu sunt clase cu logica interioara ci enumeratori(tipuri de date definite de programator). Acești enumeratori i-am folosit pentru a mă asigura că valoarea introdusă în baza de date, în anumite cazuri, este exact cea definită în enumerator și nu o altă valoare, pe care utilizatorul a introdus-o greșit. În plus, enumeratorul poate fi folosit pentru organizarea ordinii unor elemente precum tipurile de utilizator din exemplul următor:

namespace SecuritySystem.Logic.Enums

{

public enum UserType

{

Admin = 1 ,

Regular,

Guest

}

}

Pentru a stabili ordinea doar primul element enumerat va primi o valoare urmând ca celelalte să se incrementeze automat și să se identifice cu numărul lor de ordine. Se poate seta și o valoare specifică pentru fiecare element.

Acest proiect cuprinde și modelele. Acestea sunt reprezentări, sub formă de obiecte, a unor entități predefinite, de exemplu, cea de utilizator. Așa cum se vede în exemplul ce urmează, un model al utilizatorului retine datele necesare despre un utilizator pentru ca acestea să fie mai ușor gestionate în aplicație.

public class User

{

public string UserID { get; set; }

public string UserName { get; set; }

public string Password { get; set; }

public string PhoneNumber { get; set; }

public UserType { get; set; }

public string Mail { get; set; }

public string IdentifierNr { get; set; }

public string Info { get; set; }

}

Crearea acestui model s-a făcut printr-o clasa numita User care are proprietățile utilizatorului curent. Este, de asemenea, posibil să fie reținute mai puține date nu toate cele care reprezintă utilizatorul în baza de date. De exemplu:

public class CurrentUser

{

public string UserID { get; set; }

public string UserName { get; set; }

public UserType UserType { get; set; }

}

Acesta reține doar datele necesare pentru a cunoaște ce permisiuni are acesta în aplicație. UserType este o valoare din enum-ul arătat mai sus, UserName este numele utilizatorului și este afișat în partea dreapta sus, în pagina web iar UserId este identificatorul unic din baza de date, cu ajutorul căruia extragem informațiile dorite. Astfel eu voi salva un obiect de tip CurrentUser pe o sesiune în momentul autentificării unui utilizator în aplicație și la fiecare modificare a conținutului în site-ul pentru sistemele de securizare, voi verifica UserType-ul utilizatorului curent. Dacă acesta are permisiunea de a avansa, va putea accesa pagina dorită, altfel va fi redirectat la o pagină de eroare, deși din interfață, un utilizator care nu are permisiuni la o pagină, nu va vedea în meniul respectiv opțiunea de a accesa pagina respectivă.

SecuritySystem.Repository este proiectul prin care se face legătura cu baza de date. Acesta cuprinde o serie de clase care fac scrierea, citirea, ștergerea sau modificarea elementelor din baza de date. Acestea sunt aranjate astfel încât există câte un repository pentru fiecare tabel principal care este accesat. Pentru a fi mai simplu de urmărit care clasă de repository este accesată dacă vreau citirea evenimentelor cu datele asociate lor, voi scrie codul în EventsRepository iar dacă doresc interogarea dispozitivelor, DevicesRepository este clasa potrivită.

SecuritySystem.Web este o aplicație de tip Empty Web Application(Figura 5.19) pentru C#.

Adăugarea proiectului de tip Web Application

Aici se va reține legătura cu utilizatorul și aceasta este aplicația care trebuie pornită, printr-o pagină creată în ea pentru a fi văzută de client.

Pentru ca URL-ul site-ului să nu afișeze portul de localhost pe care l-am rulat ci să ruleze pe un site specific și să se afișeze în browser ca în figura 5.20, am schimbat proprietățile implicite ale acestui proiect.

URL-ul pagini WEB

Pentru a seta proprietățile am deschis cu click dreapta pe proiect fereastra din figura 5.21 și pe tab-ul WEB am ales Serverul să fie Local IIS și pentru Project Url-ul definit de mine am creat un director nou astfel încât, în cadrul programului de IIS Manager, sub pagina web standarde(Default Web Site) s-a creat pagina SecuritySystem de pe care voi porni aplicația.

Aceste modificări pot fi făcute doar deschizând Visual Studio ca administrator și acordând drepturile necesare utilizatorului numit „IIS APPPOOL/DefaultAppPool” în baza de date pentru că acum aplicația va rula cu acest utilizator virtual. Drepturile se acordă la crearea unui nou „Log In” în cadrul dosarului numit „Security”.

Tot la proprietăți am ales și pagina de unde va porni aplicația. Deoarece am ales pagina numită Login.aspx, de fiecare dată când voi rula aplicația se va deschide aceasta. Dar un utilizator va putea să schimbe, după preferințe, în URL-ul programului, acest text. De aceea am făcut verificările utilizatorului curent log-at în toate paginile la care un vizitator clasic(care are cel mai mic nivel de permisiuni) nu le poate vedea. Orice încercare de a schimba URL-ul într-o pagină la care el nu are acces, îl va redirecționa automat la pagina de eroare.

Configurare proprietăți pentru afișarea pe WEB

Tot în aplicația SecuritySystem.Web se găsesc și paginile web conținute de aplicație în care am scris atât codul HTML5 pentru aranjarea în pagină, combinat cu tag-uri specifice limbajului .NET care încep și se termină cu expresia „asp”, precum tabelul(Grid-ul) din exemplul următor:

<asp:GridView ID="MainGrid" runat="server" Visible="false"

SortDirection="DESC"

OnSorting="MainGrid_Sorting"

AllowSorting="True"

AllowPaging="True"

CellPadding="4" GridLines="Horizontal"

Font-Underline="False" BackColor="White"

BorderColor="#CCCCCC" BorderStyle="None"

BorderWidth="1px" ForeColor="Black">

<FooterStyle BackColor="#CCCC99" ForeColor="Black" />

<HeaderStyle BackColor="CornflowerBlue"

Font-Bold="True" ForeColor="White" />

<PagerStyle BackColor="White" ForeColor="Black"

HorizontalAlign="Right" />

<SelectedRowStyle BackColor="#CC3333"

Font-Bold="True" ForeColor="White" />

<SortedAscendingCellStyle BackColor="#F7F7F7" />

</asp:GridView>

Acesta este un Grid general dintr-o pagină cu extensia .aspx și are proprietățile lui predefinite care pot să fie setate. ID-ul este folosit pentru a-l identifica unic în cadrul paginii curente, vizibilitatea este inițial falsă pentru ca el să apară doar când se încarcă cu date și conținutul lui este populat, SortDirection este o proprietate definită de mine care va fi folosită pentru a seta direcția ordonării rândurilor din tabel, OnSorting este un eveniment care va apela metoda MainGrid_Sorting" atunci când se va face sortarea pe Grid printr-un click pe antetul coloanei și mai există multe alte proprietăți care pot să fie setate. Pe lângă acestea, se observa că are suport pentru a aranja felul cum arată tabelul, acestea fiind tag-uri separate în cadrul Grid-ului sau proprietăți setate chiar pe tag-ul principal.

Gridul, la fel ca restul elementelor .NET poate primi și o clasa CSS pentru a aranja interfața.

În cadrul proiectului de web am adăugat și un folder de Script pentru fișiere cu extensia .js unde este codul Javascript și câteva fișiere cu ultimele variante ale suportului general pentru librăria JQuery. Acestea pot fi adăugate direct de pe site-ul oficial pentru JQuery dar și cu ajutorul managerului de pachete NuGet care le descarcă și include automat în directorul Script. De asemenea, am adăugat folder-ul Syles pentru fișierele cu extensia .css care conțin cod de aranjare CSS și am ales să creez o temă specifică pentru câteva elemente de JQuery, pe care am descărcat-o de pe site-ul oficial JQuery UI[18].

Toate paginile web sunt cuprinse într-o pagină Master(.master). aceasta conține atât HTML, tag-uri Asp cât și cod scris în spatele rulării aplicației care va face diferența între paginile accesate, meniul afișat în funcție de permisiunile utilizatorului și alte elemente generale tuturor paginilor din aplicație.

Un site profesionist are o structură clară și ușor de urmărit pentru utilizator(vezi subcapitolul 5.3.1.2 Master Page). De aceea, urmând schema propusă am făcut programul să urmărească această structură, precum se poate descoperi și în figura 5.22.

Site-ul creat pe baza Master Page

În cadrul acestui proiect se pot găsi, de asemenea, elemente ca setul de date sau rapoarte, pentru crearea rapoartelor și Web.config, fișierul principal pentru setări și configurarea aplicației. Acesta este un document XML și conține informație despre modul de funcționare a aplicației.

Metode de aranjare și structurare a codului

Codul curat și aranjat lungește perioada de viață a unei aplicații foarte mult. Este mult mai ușor de înțeles și simplu de extins pe viitor. El conține mai puține constrângeri, este ușor de înțeles pentru un programator care nu cunoaște mersul programului și nu are nevoie de prea multe comentarii pentru a explica semnificația metodelor sau a altor alegeri de programare pe care programatorul principal le-a făcut.

Mulți consideră scrierea codului curată și elegantă ca fiind o artă și o necesitate totodată. [10] În această modalitate de programare o serie foarte largă de termeni trebuie luați în considerare însă codul poate fi îmbunătățit semnificativ doar prin urmarea unor pași clari și a unor reguli stabilite în prealabil, chiar de la începutul scrierii codului. Structurând codul clar, în proiecte și clase bine determinate care au rolul lor specific, denumind clasele, metodele, variabilele din cadrul codului, făcând funcții eficiente și eliminând redundanța, urmărind anumite design patterns() și având grijă la prinderea și logarea excepțiilor, codul poate fi unul mai eficient, mai rapid și mult mai ușor de extins.

Structura

Codul l-am structurat atent. Clasele au roluri specifice și clare. Ele sunt adunate în dosare în funcție de rolul lor.

Pe lângă acest aspect, am ales ca o posibilă companie care ar dori ca produsul lor să fie intern, ei să vadă alertele apărute, fără a se conecta la internet și pe o bază de date locală stocată pe un server intern, ei pot să folosească programul fără a avea legătură cu lumea exterioară. De asemenea, dacă specificațiile bazei de date se modifică, aceste modificări sunt foarte ușor de adăugat proiectului și toate aceste avantaje vin din faptul că nu am folosit cuvinte cu codare informatică impusă(hard-coded) ci am folosit chiar cuvintele alese de un administrator de server.

Pentru a fi mai explicită, am setat în fișierul web.config o serie de setări sub formă de chei cu valori atribuite pe care le citesc pentru a construi informațiile din baza de date și cele necesare în program. După cum se vede și în figura 5.23 din web config am setat conexiunea la baza de date, numele de tabele, numele de coloane utilizate(am folosit inclusiv coloane cu spațiu în nume), datele despre ce tip de severitate a log-urilor să fie scrisă în baza de date și, aici, se pot adăuga orice informații relevante în cazul extinderii aplicației, care pot fi setate la alegere de către un administrator. Dacă, de exemplu, se dorește schimbarea numelui coloanei de status al unui eveniment, este suficientă modificarea în baza de date și schimbarea cheii numită „EventStatusColumn” în numele dorit iar aplicația va funcționa fără probleme. În plus, modul în care am luat informațiile de aici este unul ușor de extins deoarece am adăugat în proiectul Common clasa numită SettingsProvider care are rolul de a seta proprietăți cu valorile acestor chei returnând informația către aplicație, la fel ca în exemplul următor:

public string ConnectionString

{

get {

return ConfigurationManager.AppSettings["ConnectionString"];

}

}

Setări în Web.config

Structura nu este doar la nivel de clase sau proiecte. Interiorul unei clase trebuie, de asemenea, structurat. [10] Am ales să fac asta prin definirea de regiuni sugestive precum constructori, membrii, proprietăți sau metode și chiar mai detaliate regiuni precum „Grid Management” pentru gestiunea tabelelor afișate în pagini. În plus, metodele sunt aranjate în ordine în funcție de locul în pagina pe care îl afectează sau în funcție de ordinea în care sunt apelate.

Nume specifice

„Numele unei variabile, al unei funcții sau al unei clase ar trebui să răspundă la toate marile întrebări. Acestea ar trebui să iți spună de ce există, ce fac, și cum este utilizată acea entitate. Dacă un nume necesită un comentariu, atunci numele nu dezvăluie intenția pe care o are.”[11] Din aceste motive am ales nume de clase care să conțină cuvinte cheie, de exemplu ”Repository” pentru apelurile la baza de date și „ILogger” cu „I” pentru interfață. Numele metodelor conțin cuvinte precum „Get” pentru a extrage niște date sau „Try” pentru metodele care conțin blocuri de try-catch. Dacă o metodă returnează un tip de dată boolean, atunci metoda are numele care răspunde la întrebare este sau are și returnarea este pe logica de adevărat de exemplu :„UserHasPerimision” îmi returnează „true” dacă utilizatorul are permisiune să acceseze acea parte din program.

Chiar și numele variabilelor private sunt alese cu grijă, de exemplu „reportDataTable” este numele unei variabile care reține tabelul virtual (DataTable) pentru un raport.

Cu astfel de denumiri în cadrul codului nu mai am nevoie de comentarii care să explice ce am încercat să rezolv în acea parte din cod ci codul citit este chiar explicația funcționalității și acesta trebuie să fie cât mai apropiat de vorbirea naturală. Astfel încât secvența de cod care urmează se citește: Dacă utilizatorul are permisiuni, rezolvă interfața utilizatorului altfel trimite ca răspuns redirectarea lui la pagina de eroare.

if (UserHasPerimisions()){

ResolveUI();

}

else{

Response.Redirect(ERROR_PAGE);

}

Codul scris trebuie să țină cont și de diferențierea între litere mari și mici astfel încât ERROR_PAGE este o constantă, metodele și numele unei clase sau a unei proprietăți încep cu litere mari și fiecare cuvânt din denumire începe la rândul lui cu literă mare. Membrii globali ai unei clase sunt, de fapt, atribute așa că încep cu literă mică, la fel ca atributele private ale metodei, însă, spre deosebire de acestea, au ca prefix caracterul ”_”, de exemplu: _currentPage.

Metodele și logica lor

Metodele sunt funcțiile din cadrul programării în C# și, în general, a programării orientate pe obiect.

„Prima regulă a funcțiilor este faptul că ele trebuie să fie mici. A doua regulă este că acestea trebuie să fie și mai mici de atât.” [11]

Metodele trebuie să îndeplinească un singur rol și să fie cât mai restrânse, cu un număr cât mai mic de parametri și cu denumiri clare, care să le definească clar scopul. Ele pot conține apelul către alte funcții însă nu este bine să conțină logica de pe mai multe niveluri.

Folosirea logicii pozitive(verificarea în blocul if-else a unei condiții pozitive), în general, este un atu pentru înțelegerea codului însă în cazul în care vrem să oprim execuția unui program la descoperirea unei valori negative într-o verificare, aceasta trebuie pusă în prealabil. Am returnat sau rupt forțat parcurgerea printr-o buclă sau metodă în cazul în care aceasta a primit informația necesară logicii astfel încât codul se execută mai repede.

Indentațiile le-am organizat astfel încât codul să nu ocupe prea mult spațiu dar să fie ușor de urmărit.

Codul este scris de sus în jos și citirea se face la fel, astfel încât declararea unei variabile sau amplasarea unei metode sunt în conformitate cu apariția lor în cod.

În cazurile în care ar fi trebuit să folosesc prea multe verificări cu if am ales să utilizez blocul de switch.

Am folosit metode abstracte pentru a asigura suprascrierea și utilizarea lor în clasele pe care le moștenesc.

Deși este mai costisitor ca memorie, la prima inițializare am ales funcția de string.Format în loc de adăugarea clasica cu „+” pentru a adaugă o serie de parametrii unui string însă când aceștia erau prea mulți am ales clasa StringBuilder care necesita mai multe resurse de memorie și timp la inițializare însă la un număr mai mare de adăugări la un string ea este mai eficientă din aceste puncte de vedere.

De asemenea, am ales DataTables în locul matricelor sau a listelor de obiecte pentru un număr mare de date deoarece ele sunt ușor de înțeles și ocupă mult mai putină memorie. Un DataTable este o asociere a unui tabel format din coloanele și rândurile asemănătoare sau copii ale celor din baza de date.

Astfel, am ales clase specifice și metode speciale pentru a face codul mai rapid, mai ușor de extins și de înțeles.

Design Patterns

Design Patterns sunt metode prestabilite prin care se pot rezolva anumite probleme generale apărute într-o aplicație. Un exemplu de design pattern pe care l-am folosit în programul creat de mine este Singleton. Acesta l-am folosit pentru a nu instanția de mai multe ori un singur obiect.

Inițializarea Lazy(leneșă sau întârziată) [28] folosită în clasa SettingsProvider pentru a nu fi nevoie să instanțiez clasa din exterior, la folosire folosește clasa generică numită Lazy<T> ca în figura 5.24 și setează o instanță a clasei exact atunci când este nevoie de ea. Mai apoi informația dintr-o proprietate din clasa SettingsProvider este returnată cu numele clasei, instanța curentă și proprietatea: SettingsProvider.Instance.ConnectionString.

Inițializare Lazy prin Singleton

Clasele sau metodele generice accepta au ca tip de data parametrul care este dat la apelarea sau instanțierea lor.

Operații cu baza de date

Datele folosite în aplicație sunt stocate într-o bază de date și pentru a le accesa sau modifica din cadrul interfeței cu utilizatorul trebuie să fac cereri la baza de date care îmi returnează câteodată anumite informații.

Conectarea la baza de date

Pentru conexiunea la baza de date programul scris în C# are nevoie de următoarele:

O baza de date valida cu informațiile necesare și structura tabelelor în conformitate cu aplicația

ConnectionString format din numele serverului, numele bazei de date și atributul de Trusted_Connection setat pe adevărat sau numele și parola celui care încearcă să acceseze baza de date

Permisiuni în baza de date a utilizatorului pe care o accesează atât pentru autentificare și acces cât și pentru ștergere, alterare sau citire.

Pentru conexiune am ales să folosesc o clasa numita SQLConnection care folosește librăria System.Data.SqlClient și care are un constructor care primește ca parametru ConnectionString-ul definit de mine.

Aceasta este inclusă într-o declarație de tip „using” care se asigură ca în cadrul unui bloc de cod acea conexiune va fi folosita însă la terminarea execuții acelei bucăți de cod conexiunea va fi ștearsă și eliminata din memorie pentru a nu ocupa spațiu și a slabi performanțele programului.

Pentru ca aceasta să fie folosită, trebuie nu doar creata ci și deschisa cu comanda connection.Open(); ea poate fi și închisă însă în cazul în care nu se folosește connection.Close(); ea va fi distrusa oricum așadar și închisă.

Ea va fi dată unei comenzi astfel SqlCommand command = new SqlCommand(query, connection); și alături de un query(textul comenzii SQL) ca constitui comanda către baza de date.

Construirea comenzilor pentru baza de date

Comanda către baza de date este un text scris în codul SQL care va fi trimis și interpretat de baza de date pentru a efectua o acțiune sau a returna o valoare sau un set de valori cerute.

În cod, textul comenzii la baza de date se numește „query”. Acesta este dat unei comenzi care mai apoi este executata. Pentru a intersectat tabele am folosit instrucțiunea de JOIN (echivalent la INNER JOIN) în funcție de o coloana cu valori comune în ambele tabele(cheie străină) precum se vede în figura 5.25. INNER JOIN selectează doar valorile comune, FULL OUTER JOIN valorile care nu sunt comune celor două tabele, LEFT JOIN cele comune plus valorile din tabelul din partea stângă(primul definit) și RIGHT JOIN rândurile cu cheia străină comună plus valorile din al doilea tabel definit(din partea dreapta).

Instrucțiunea JOIN

Acestea pot fi făcute pe un tabel existent sau pe un tabel parțial format din selectarea a mai multor coloane din mai multe tabele și ele intersectate între ele.

Un exemplu de comanda SQL este cea din figura 5.26.

Query SQL

Query-ul poate fi scris direct din cod și trimis ca parametru la comandă sau, comanda poate primi numele unei proceduri stocate alături de parametrii pe care aceasta ii primește și procedura stocata va fi salvată direct în baza de date.

3.5.6 Legătura între programul local și cel Web

Pentru legătura între programul local cu Windows Form și programul Web ținut pe un server este necesară crearea unui serviciu Web care poate fi apelat din programul local, pe soluția programului Web, în cadrul proiectului SecuritySystem.Web. așadar, aici am adăugat un nou element de tip Web Service(ASMX) cu extensia .asmx. Implicit acesta are o metodă numită HelloWorld care are deasupra ei indicația că este o metodă web. Pe această metodă am rescris-o cu structura de mai jos:

[WebMethod]

public string ManageNewEvent(string deviceID, string eventType, string userInput)

{ …

}

Metoda primește informațiile necesare de la programul local prin parametrii săi și returnează un string(informație sub formă de text) care anunță programul local dacă s-a realizat sau nu cu succes operația de inserare și verificare în baza de date a informațiilor. Din această metodă se apelează și sub metode care rezolvă operațiile cu baza de date precum introducerea unui eveniment apărut nou sau verificarea permisiunilor unui om care a introdus o parolă la tastatura fizică. Cu ajutorul funcției trim(funcție care elimină din textul dat caracterele specificate) aici se verifică dacă utilizatorul a folosit caracterele rezervate ‚#’ sau ‚*’ pentru armarea sau dezarmarea sistemului.

Această metodă conține și o sub-metodă pentru verificarea codului de pe cardul de acces, care poate să conțină un număr mai mare de caractere, potrivit pentru dezvoltarea ulterioară a aplicației.

Pentru a apela această metodă care este ținută într-un serviciu web, direct pe server, aplicația locală trebuie să conțină o referință către acest serviciu. Referința se adaugă prin selectarea Add Service Reference => Advanced => Add Web Reference moment în care o fereastră care arată ca cea din figura 5.27.

În câmpul URL se scrie adresa Url a serviciului de pe server ce urmează a fi apelat. Am selectat săgetuța pentru încărcarea serviciului dar, pentru ca acesta să fie vizibil, site-ul respectiv trebuie pornit în prealabil pentru a fi citit prin internet și atunci aspectul serviciului va apărea în fereastra de sub câmpul URL. Aici se pot vedea metodele web care pot fi apelate. Orice modificare apare în metode sau în serviciu, acesta trebuie repornit și atunci când aplicația locală va încerca sa îl contacteze se va aduce la zi cu ultimele modificări.

Câmpul Web Reference Name este pentru numele referinței. După adăugare referința va fi vizibilă în soluție într-un dosar nou crea,t numit Web References.

Fereastră pentru adăugarea referinței la serviciu Web

Pentru a apela referința nou creată, se creează o instanță nouă a ei, asemenea introducerii unei instanțe a unei clase și se apelează metoda precum în exemplul următor.

ArduinoLinkWebService webservice = new ArduinoLinkWebService();

string result =

webservice.ManageNewEvent(SettingsProvider.Instance.LinkedDevice3, "KeyPadLogIn", loginPassword);

Astfel parametrii trimiși sunt trecuți între paranteze iar rezultatul sub formă de text se află în variabila result. În funcție de acest rezultat se poate comanda în continuare sistemul de securizare prin accesul porturilor seriale.

Legătura programului local cu plăcuța

Pentru a avea acces la porturile seriale ale calculatorului local se folosește librăria System.IO.Ports; și, prin aceasta, se poate crea în cadrul programului un SerialPort. Acesta este o clasă publică care moștenește clasa Component și care are constructor care primeste parametrii astfel:

SerialPort(string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits)

Unde portName este numele portului(de exemplu „COM4”) iar baudRate este rețeaua binară setată în codul Arduino(aici 9600).

Pentru a nu scrie de mână fiecare port posibil și pentru a parcurge toate porturile la care este legată o plăcuță, am apelat metoda SerialPort.GetPortNames() și le-am parcurs pe toate găsite. Portul găsit trebuie deschis și închis cu metodele .Open() respectiv .Close().

Pentru a face citirea se folosește următoarea sintaxă:

int count = _currentSerialPort.BytesToRead;

string returnMessage = "";

while (count > 0)

{

intReturnASCII = _currentSerialPort.ReadByte();

returnMessage = returnMessage + Convert.ToChar(intReturnASCII);

count–;

}

Astfel informația se citește cu fiecare Byte parcurs iar pentru scriere(trimiterea informației) către plăcuță se foloseste metoda .Write(parametrii doriți).

În codul Arduino, în metoda setup() trebuie pornită banda pentru comunicarea serială: Serial.begin(9600); iar citirea și scrierea se fac în metoda loop() pentru a fi apelate încontinu astfel:

if (Serial.available()> 2)

{

inputByte_0 = Serial.read();

}

if(inputByte_0==34){

Serial.print("34");

….

}

Prin aceste metode și prin multe alte elemente de logică am reușit să creez un sistem de securizare, cu dispozitive specifice, comandat de o plăcuță Intel Galileo Gen 2 care este controlată prin codul scris în Arduino și care comunică serial cu un program local care conține un Windows Form și care, la rândul său, comunică cu un server principal printr-un serviciu Web pe care este ținută o bază de date relaționară pentru reținerea informațiilor, interogată și gestionată cu o soluție .Net scrisă în C#. soluția pornește un Site Web pentru gestiunea la distanță, în funcție de permisiuni, a datelor sistemelor de securizare.

TESTARE ȘI VALIDARE

În cadrul acestui capitol voi prezenta o serie de teste realizate pentru a verifica și valida funcționalitatea proiectului. Aceste teste se refera la tot ansamblul, incluzând partea fizică a sistemului de securizare, programul local pentru controlarea sistemului de securizare dar și programul online.

Testarea se va realiza prin metoda cutiei negre. [27]

Aceasta presupune faptul că funcționalitatea proiectului va fi pusă la test fără a cunoaște procesele interioare a aplicației. Prin perspectiva unui utilizator, fără a cunoaște pașii parcurși de cod sau de sistem, se analizează datele de ieșire prin trecerea de la o stare a alta a sistemului.

Scenariul 1: Acest scenariu reprezintă cazul ideal care a fost testat de la un capăt la altul.

Sistemul de securizare este armat astfel mecanismul de blocare/deblocare a ușii este în poziția blocat.

Deschiderea ușii nu funcționează = testare cu succes.

Utilizatorul cu permisiuni introduce corect parola pentru dezarmarea sistemului astfel încât mecanismul pentru securizarea ușii se deblochează și senzorul de prezență este dezactivat.

Pe ecran apare informația de sistem dezarmat = testare cu succes.

Utilizatorul trece prin aria senzorului Pir dar acesta nu se activează deoarece a fost dezactivat = test validat.

Utilizatorul pornește Site-ul online pentru a vedea informațiile personale.

Utilizatorul nu este automat autentificat, motiv pentru care are acces doar la paginile statice și nu vede alte informații = test validat.

Accesând pagina de autentificare utilizatorul introduce corect numele și parola si apasă butonul pentru a fi recunoscut de sistem.

Programul îl redirecționează la pagina de Acasă având acces în meniul principal și la butonul pentru managementul evenimentelor personale = testare cu succes.

Utilizatorul interoghează evenimentele personale selectând opțiunea din meniul principal.

Programul îl trimite la pagina cu evenimentele personale=testare cu succes.

Pagina cu evenimentele personale conține și o informație cu autentificarea de la tastatură care tocmai a avut loc=testare cu succes.

Utilizatorul intră în secțiunea de rapoarte și apasă butonul pentru salvarea în Excel a informațiilor despre evenimente.

Pe calculator se descarcă un document Excel= testare cu succes.

Documentul conține și ultima înregistrare cu autentificarea recentă=testare cu succes.

Documentul are formatul dorit, culorile tabelului și informațiile complete= testare validată.

Utilizatorul șterge evenimentul din tabelul de evenimente apăsând butonul X.

Evenimentul se șterge imediat din tabelul de evenimente și la verificarea în pagina pentru generarea graficelor, evenimentul nu mai există= testare validată.

În continuare urmează o serie de scenarii mai scurte prin care s-au făcut validări.

Scenariul 2: Sistemul de securizare fizic nu mai este funcțional din cauza unei pene de curent.

Un intrus încearcă să pătrundă în clădire.

Mecanismul de blocare a ușii este în poziția de blocat și nu poate deschide ușa= scenariu validat cu succes.

Scenariul 3: Senzorul Pir are o defecțiune și nu mai funcționează.

Infractorul intră în clădire forțând ușa.

Un locatar al clădiri acționează butonul de panică și alarma se pornește = test trecut cu succes.

Alerta este vizibilă pentru utilizatorul cu drepturi și pentru administratori în site-ul online pentru o posibilă intervenție=scenariu validat cu succes.

Scenariul 4: Accesul persoanelor neautorizate pe sistemul fizic de securizare.

Omul nu are o parolă validă deoarece nu are cunoștințe despre sistemul de securizare pe care încearcă sa îl dezarmeze și introduce o parolă greșită.

Acțiune de autentificare eșuată, sistemul rămâne blocat = validare testată cu succes.

Scenariul 5: Greșirea parolei unui client cu permisiuni pe sistemul fizic de securizare.

Clientul introduce greșit secvența caracterelor parolei, folosind caracterele speciale la finalul sau mijlocul secvenței parolei, deși el are o parolă corectă.

Acțiune de autentificare eșuată, sistemul rămâne blocat = validare testată cu succes.

Clientul primește un mesaj de eroare si poate încerca din nou introducerea corectă a parolei.

Scenariul 6: Autentificarea cu o parolă greșită în programul online de gestiune a sistemelor de securizare a clădirilor.

Utilizatorul introduce o pereche de parolă și nume de utilizator greșite sau care nu au permisiuni în programul de securizare.

În figura 6.1 se observă cum accesul este restricționat și doar la introducerea corectă a unei informații de autentificare, accesul în funcție de permisiuni este permis = testare cu succes.

Accesul interzis în aplicație la introducerea unei informații greșite.

Scenariul 7: Accesarea paginilor cunoscând adresa lor, fără a deține permisiunile necesare.

Un om care nu are permisiuni pentru a vedea în program anumite date despre rutinele sistemelor de securizare dar care cunoaște adresa paginilor web la care nu are acces încearcă să o scrie în Url-ul paginii.

Proiectul a fost testat atât de mine cât și de câteva persoane care au fost de acord să participe la faza de testare a proiectului. Validările necesare au fost făcute dar pentru o viitoare întreținere a proiectului, în special al Site-ului Web s-a creat un tabel în baza de date pentru a ține informații legate de eventualele excepții apărute de-a lungul execuției pentru a putea interveni imediat și punctual și a rezolva problemele imediat. În plus nu toate excepțiile pot să apară datorită unor erori de program ci și din cauza unor date greșit introduse și cu ajutorul acestei tabele pot determina zonele în care nu s-a înțeles bine felul în care datele pot fi introduse.

CONCLUZII

Realizări

După multă analiză și muncă realizată cu atenție acest proiect a fost implementat cu succes și poate fi folosit în lumea reală.

Soluția prezentată include un sistem de baza pentru securizarea clădirilor controlat de un program încărcat pe un site web, creat special pentru gestiunea sistemelor de securizare a clădirilor.

Acest proiect oferă utilizatorilor posibilitatea de a-si securiza clădirile printr-o serie de senzori, alarme și dispozitive care interacționează cu utilizatorii iar aplicația sub forma de site web permite acestor utilizatori să își vizualizeze, modifice, șterge sau adăuga noi evenimente pentru a salva și completa statistici și rapoarte pe baza lor.

Aceste evenimente sunt prezentate într-un mediu plăcut de utilizat, simplu și cu consistentă pe toate paginile web.

Ceea ce este special la acest proiect este faptul că este atât de modular și configurabil. El este, de asemenea, fiabil, ușor de extins sau întreținut pe viitor și folosește cele mai noi tehnici de programare într-un mod curat, aranjat și profesional.

Programul online care este creat pentru gestionarea sistemului de securizare este unul ușor de extins, de înțeles și de continuat sau dezvoltat și de alți programatori din cauza codului scris atent și curat, a consistentei și clarității pe care o menține pe toate paginile. Acesta este foarte util și poate afișa un număr mare de date într-o manieră în care sunt foarte ușor de citit și analizat.

Îndeplinirea obiectivelor

Toate obiectivele propuse au fost îndeplinite astfel:

Obiectivul principal a fost îndeplinit prin realizarea celor două elemente componente ale soluției prin pașii prezentați în capitolul despre analiza și implementarea proiectului.

Acest obiectiv principal a fost împărțit într-o serie de obiective conexe, secundare care au fost și ele duse la îndeplinire.

Autentificarea în cadrul sistemului de securizare se face cu ajutorul cititoarelor de carduri RIFD și a tastaturii 4X4 pe care poate fi introdusă o parolă. Cu un nume de utilizator și o parolă se face și autentificarea în cadrul programului scris în C#. Verificarea acestora se face o dată direct, fără cerere la baza de date și presupune existența unor caractere valide, o combinație mai mare de 6 caractere atât pentru numele utilizatorului cât și pentru parolă. În cazul în care această verificare este confirmată, se citește din baza de date, dacă există, utilizatorul și parola lui asociată. Un vizitator nu trebuie să dețină permisiuni în baza de date însă în cazul în care nu se autentifică nici nu va putea interacționa cu aplicația pentru a citi datele sale personale sau ale altor utilizatori. S-au făcut verificările necesare astfel încât în acest program să aibă acces doar utilizatorii autentificați corect, în funcție de permisiunile lor.

Integritatea și consistenta datelor au fost verificate pentru sistemul de securizare iar în cazul programului WEB s-au făcut verificări din cod și constrângeri astfel încât să nu se poată introduce date eronate.

Fiabilitatea a fost asigurată prin faptul că sistemul de securizare este modular astfel încât la distrugerea unui element din cadrul lui, restul sistemului funcționează în continuare. Programul online verifică excepțiile ce pot să apară și pot să oprească rularea codului și le rezolvă pentru a nu genera erori.

Diagnoza automată se face tot prin prinderea și rezolvarea dar și înregistrarea posibilelor erori, astfel încât, dacă o problemă apare, aceasta este documentată împreună cu locul exact unde a apărut și poate fi rezolvată rapid.

Posibilitatea de personificare a sistemului fizic de securizare există tot datorită gradului înalt de modularizare, astfel încât, fiecare sistem poate să fie creat după cererea clientului. De asemenea costurile variază în funcție de aparatura aleasă pentru a implementa un sistem. Iar posibilitatea de a extinde acest sistem apare pentru un număr foarte mare de senzori și dispozitive pentru că fiecare locație nouă are un nou program local și astfel server-ul principal nu este prea încărcat dar la o locație pot exista și mai multe dispozitive pentru gestionarea informațiilor apărute in sistemele de securizare, câte unul pentru o plăcuță.

Configurabilitatea programului web s-a făcut posibilă prin evitarea folosirii numelor din baza de date a tabelelor, coloanelor și altor aspecte modificabile într-un mod pre configurat ci acestea sunt scrise într-un fișier numit web.config de configurare a lor astfel asigurându-se și o confidențialitate și o flexibilitate la crearea bazei de date.

Tot datorită faptului că sistemul este modular, el este și redundant astfel încât la defectarea sau dorirea înlocuirii unei componente din sistem, se poate înlocui doar aceea și nu e nevoie de schimbarea tuturor dispozitivelor, iar în ceea ce privește programul de gestiune a sistemelor de securizare, acesta este, de asemenea, unul ușor de dezvoltat deoarece codul a fost scris într-o manieră curată, aranjată și care nu creează prea multe constrângeri, clasele și metodele fiind destul de general aplicabile.

Aceasta duce la o posibilitate bună de a extinde și dezvolta pe viitor proiectul.

Interfața este una plăcută, dispozitivele configurabile și la alegerea clientului nu ocupă mult spațiu iar interfața utilizatorului cu aplicația este consistenta și clara datorită structurii de master-slave a paginilor web astfel încât fiecare pagină are și un element master pentru a afișa meniurile și detalii suplimentare.

S-au realizat rapoarte care pot fi văzute în prealabil și apoi exportate toate cele trei formate: Excel, Word și PDF pentru utilizatorii autentificați.

Îndeplinirea acestor obiective și implicit a obiectivului principal a dus la realizarea acestui proiect și deschiderea unor cai de extindere pentru dezvoltarea viitoare a lui, îmbunătățirea și extinderea pentru a face față avansului rapid tehnologic și informatic.

Comparație cu alte aplicații existente

Unele companii din România și din lume prezintă sisteme de securizare foarte puțin configurabile. Ele au pachete statice care se aplică tuturor utilizatorilor și nu oferă posibilitatea vizualizării online evenimentelor apărute în sistemul personal și gestiunea lor. În plus majoritatea sistemelor sunt prea scumpe, deoarece utilizează tehnologiile cele mai costisitoare și utilizatorul nu are posibilitatea să își aleagă altele mai ieftine decât la alegerea unui sistem întreg care este mai ieftin, dar poate și mai ineficient.

Alte firme care există pe piață vând doar produsele care oferă sisteme separate, însă greu de montat și de configurat pentru utilizatorii neexperimentați și care nu lucrează în domeniu. Acestea nu au, de asemenea, un site online pentru vizualizarea evenimentelor, compania punând pauză colaborării cu utilizatorii în momentul livrării echipamentelor.

Firmele locale de securizare din România răspund greu și au pachete atât de standard configurate încât este foarte ușor să fie sparte sau ocolite. În plus orice neregularitate care a fost rezolvată este încheiată și, în cele mai multe cazuri, nu persistă în baza de date. În cazul în care un utilizator dorește să elimine un eveniment propriu din cauză că acesta a fost o eroare umană și nu o intrare prin efracție, el trebuie să depună cereri și să aștepte un termen lung de timp până ce firma de securizare va face ceva în această privință, chiar dacă au date care sunt stocate în baza de date.

Prea mare procentul de securizare exclusivă prin forța umana și prea mulți oameni care lucrează birocratic, neorganizat și greoi la gestiunea sistemelor de securizare există. Acești oameni sunt supuși frecvent la erori umane care duc la inconsistenta datelor și la dificultatea rezolvării infracțiunilor.

Din aceste motive, soluția prezentată în acest proiect este utilă și reprezintă o idee de viitor în domeniul securizării clădirilor.

Aceasta, gestionată de o firmă serioasă care se ocupă de sisteme de securizare, va putea să își fidelizeze clienții pe termen lung datorită flexibilității de care dispune și să se dezvolte în continuare datorita tehnologiilor moderne și a clarității cu care programul și sistemul au fost înzestrate.

Posibilități de extindere în viitor

Acest proiect poate fi ușor dezvoltat și extins pe viitor, acesta fiind unul din principalele sale avantaje.

Această extindere se poate realiza prin adăugarea unor noi dispozitive față de cele deja existente, prin înlocuirea celor vechi sau stricate cu altele noi, fără a înlocui întreg sistemul, astfel firma de securizare care utilizează acest sistem poate să își creeze clienți fideli care investesc progresiv în elemente tot mai sofisticate, însă un sistem de bază este accesibil și pentru clienții mai puțin pretențioși.

Astfel se poate realiza și extinderea proiectului la scală mai mare, tot datorită faptului ca acesta este împărțit pe module.

La fel ca orice site care are o bază de date foarte mare, în cazul extinderii proiectului la scală mare, baza de date poate fi împărțita pe două servere deoarece dintr-un program scris în C# se pot lua date din mai multe baze de date. Aceasta poate fi, de asemenea, extinsă în Oracle la alegre, codul pentru interogarea celor două fiind similar, doar accesul trebuie făcut în alt mod.

Proiectul curent are un set limitat de tipuri de rapoarte create în funcție de datele citite din baza de date însă pe viitor se pot adăuga multe alte tipuri de rapoarte, într-un mod similar, în funcție de cererile clienților și a celor care dețin sistemele de securizare.

Îmbunătățirea interfeței este, de asemenea, posibila și în funcție de modificarea tendințelor în ceea ce privește aspectul paginilor, acestea trebuie doar să fie editate din cadrul codului CSS sau pe pagina de master care deține structura și aspectul celei mai mari părți din aplicație, astfel eliminându-se scenariile în care bucăți mari de cod se repetă și trebuie modificate peste tot și se păstrează consistența pe paginile web ale aplicației, denotând profesionalism și claritate.

Bibliografie

[1] Markus Schumacher, Eduardo Fernandez-Buglioni, Duane Hybertson, Frank Buschmann, Peter Sommerlad, „Security Patterns: Integrating Security and Systems Engineering”, John Wiley & Sons, 2005;

[2] James Michael Stewart, Ed Tittel, Mike Chapple, „CISSP® Certified Information Systems Security Professional Study Guide Fifth Edition”, John Wiley & Sons, 2011;

[3] Adrian Atanasiu, „Securitatea Informației. Protocoale de Securitate (vol.2)”, Infodata, 2009;

[4] Thomas Norman, CPP, PSP, CSC, „Integrated Security Systems Design A Complete Reference for Building Enterprise-Wide Digital Security Systems Second Edition”, Butterworth-Heinemann, 2014;

[5] Matt Richardson, „Make: Getting Started with Intel Galileo”, Maker Media, 2014;

[6] Manoel Carlos Ramon, „Intel Galilo and Intel Galileo Gen 2 API Features and Arduino Projects for Linux Programmers”, Apress Open, 2015;

[7] Maik Schmidt, „Arduino: A Quick Start Guide”, The Pragmatic Bookshelf, 2015;

[8] Petre G. Pop, „Tehnologii software C/C++ si C# pentru aplicații dedicate”, Risoprint, 2005;

[9] Doru Tiliuțe, „Proiectarea aplicațiilor pe Web, Javascript, PHP, Mysql”, Infodata, 2013;

[10] Andrew Hunt, David Thomas, „The Pragmatic Programmer: From Journeyman to Master”, Addison-Wesley, 2000;

[11] Robert Cecil Martin, „Clean Code: A Handbook of Agile Software Craftsmanship”, Pearson Education, 2008;

[12]http://ec.europa.eu/eurostat/statistics-explained/index.php/Crime_statistics/ro, 05.20.2015

[13]http://www.instantsecuritypolicy.com/Introduction_To_Security_policies.pdf, 05.22.2015

[14] http://distantwriting.co.uk/technicaldetail.html, 06.11.2015

[15] http://www.autowebbed.com/services/security-systems/, 06.11.2015

[16] http://www.bip.ro/index.php, 06.11.2015

[17] http://www.helinick.ro/ro/sisteme-integrate/, 06.11.2015

[18] https://jqueryui.com/, 05.25.2015

[19] http://stackoverflow.com/

[20] https://msdn.microsoft.com/en-us/default.aspx

[21] http://www.pluralsight.com/

[22] http://www.w3schools.com/

[23] https://support.office.com

[24] http://www.arduino.cc/

[25]http://www.intel.com/content/www/us/en/embedded/products/galileo/galileo- overview.html

[26] http://www.robofun.ro/

[27] http://softwaretestingfundamentals.com/black-box-testing/, 14.06.2015

[28]http://www.codeproject.com/Tips/620215/Four-Ways-to-Implement-Lazy-Loading-in-Csharp

Acronime

ASPX – Active Server Page Framework

COM – Common (conectat mereu la această intrare)

CSS – Cascading Style Sheets

GSM – Global System for Mobile Communications

HTML – HyperText Markup Language

IIS – Internet Information Services

IT – Information Technology

LAN – Local Area Network

MAN – Municipal Area Network

NC – Normal Close

NO – Normal Open

RAM – Random-access memory

RFID – Radio-frequency identification

SQL – Structured Query Language

URL – Uniform Resource Locator

USB – Universal Serial Bus

V – Volți

WAN – World Area Network

Similar Posts