Sistem Software Pentru Managementul Informatiei
Cuprins
Lista figurilor
Lista acronimelor
Introducere
Capitolul 1 – Introducere teoretica si tehnologii utilizate
Limbajul de programare Java
Sistemul de operare Android
Caracteristici Android
Arhitectura sistemului Android
Elemente componente ale unei aplicatii Android
Limbaje de adnotare
1.3.1 HTML
1.3.2 XML
1.4 Sistemul de baze de date PostgreSQL
1.5 Foi de stil CSS
1.6 Serverul Apache
1.7 JavaScript
1.8 Spring Framework
1.9 Hibernate
1.10 AJAX
Capitolul 2 – Implementarea aplicatiei
2.1 Baza de date
2.2 Aplicatia Web
2.2.1 Interfata grafica (partea de client)
2.2.2 Backend (partea de server)
2.3 Aplicatia mobila
2.3.1 Interfata grafica (partea de client)
2.3.2 Backend (partea de server)
Capitolul 3 – Prezentarea aplicatiei (exemple practice)
3.1 Cerinte functionale
3.2 Interfete pe partea Web
3.2.1 Interfata de autentificare
3.2.2 Interfata principala
3.2.3 Interfata Profil
3.2.4 Interfata Vehicule
3.2.5 Interfata Transport
3.2.6 Interfata Rapoarte
3.3 Interfata pe partea mobila
Concluzii
Bibliografie
Anexa 1
Lista de figuri
Lista acronimelor
OOP – Object Oriented Programming
JVM – Java Run Time
WWW – World Wide Web
MVCC – Multi Version Concurrency Control
CSS – Cascading Style Sheets
HTML – HyperText Markup Language
XML – Extensible Markup Language
SGBD – Sistem de Gestiune a Bazei de Date
RDBMS – Relation DataBase Management System
AOP – Aspect Oriented Programming
MVC – Model View Controller
Introducere
CAPITOLUL 1
Introducere teoretica si tehnologii utilizate
Limbajul de programare Java
Limbajul de programare Java a fost initial dezvoltat de James Gosling la Sun Microsystems (acum filiala Oracle) si lansat in 1995. In prezent, Java este considerat unul dintre cele mai importante si complexe limbaje de programare.
Fig.1.1 Logo Java
http://www.ziuaconstanta.ro/images/stories/2015/05/25/Java_620X0.jpg
Limbajul de programare Java este un limbaj:
Orientat pe obiecte: In Java, totul este un obiect, de aici si usurinta cu care poate fi extins.
Independent de platforma: Spre deosebire de multe alte limbaje de programare, inclusive C si C++, Java are capacitatea de a rula aceeași aplicație, fără nici o modificare, pe sisteme diferite cum ar fi Windows, UNIX sau Macintosh.
Simplu: Java este proiectat in asa fel incat sa fie usor de invatat. Odata inteles conceptul de baza al OOP, acesta va fi foarte usor de stapanit. [1]
Sigur: Java ofera un mijloc sigur de a creea aplicatii Internet, ofera modalitate sigura de a accesa aplicatiile web si nu poate afecta alte sisteme, ceea ce il face sigur.
Portabil: Programele Java pot fi executate in orice mediu in care exista un sistem JVM. Acestea pot fi rulate pe orice platforma (Linux, Windows, Mac) si pot fi transferate pe WWW (de exemplu: applet-uri).[2]
Robust: Java face un efort de a elimina situatiile de eroare predispuse, subliniind mai ales pe timpul compilarii verificarea erorilor si verificarea executiei. [1]
Multifir: Java ofera suport integrat pentru programarea multifir. Avand aceasta functie, in Java se pot scrie programe care pot face mai multe sarcini simultan. Aceasta caracteristica de design permite dezvoltatorilor sa construiasca aplicatii interactive.
Arhitectural – neutru: Compilatorul Java genereaza un obiect cu arhitectura neutra care face codul copilat sa poata fi compilat pe mai multe procesoare, in prezenta sistemului de executie Java. Acest limbaj de programare nu este legat de o masina specifica sau de o arhitectura a sistemului de operare, deci limbajul Java este independent de hardware.
Cu performanta ridicata: Cu ajutorul compilatoarelor Just-In-Time, Java permite o performanta ridicata. Deoarece bytecodes sunt foarte optimizate, JVM le poate executa mult mai rapid.
Distribuit: Java este proiectat pentru mediul distribuit al internetului.
Dinamic: Java este considerat a fi mai dinamic decat C sau C++, deoarece este conceput pentru a se adapta la un mediu in continua evolutie. Programele Java poarta cu ele cantitati substantiale de informatii de tip run-time, care pot fi folosite pentru a verifica si rezolva accesul la obiecte in timpul rularii.
1.2 Sistemul de operare Android
Android este un sistem de operare mobil (OS) bazat pe nucleul Linux si dezvoltat in present de Google. Cu o interfata de utilizator bazata pe manipularea directa, Android este destinat in primul rand dispozitivelor mobile cu ecran tactil – “touchscreen”, cum ar fi smartphone-urile si calculatoarelor comprimate, cu interfete specializate de utilizator pentru televizoare (Android TV), autoturisme (Android Auto), tablete, ceasuri de mana etc. In ciuda faptului ca a fost destinat in primul rand pentru utilizare cu touch, acesta a fost ulterior folosit in console de jocuri, camere digitale, PC-uri si alte alectrocasnice. [3]
Fig.1.2 Logo Android
http://cdn2.ubergizmo.com/wp-content/uploads/2015/04/backup-android.jpg
Caracteristici Android
Printre caracteristicile principale ale sistemului Android se numara urmatoarele:
Platforma open source. Sistemul de operare Android este un produs open source, distribuit sub licenta Apache, ceea ce inseamna ca nu este legat de un producator de hardware si/sau un furnizor. Codul sursa Android este disponibil pe http://source.android.com si poate fi atat vizualizat, cat si modificat. Acesta permite producatorilor de telefoane creearea unor interfete perfonalizate(UIS) si adaugarea unor noi caracteristici. Oricine poate accesa codul sursa Android brut. [4]
Conectivitate. Platforma Android suporta o gama larga de tehnologii de conectivitate, inclusiv GSM/EDGE, Wi-Fi, Bluetooth, LTE, CDMA, EV-DO, UMTS, NFC, IDEN and WiMAX.
Portabilitate. Platforma Android permite rularea aplicatiilor pe o gama larga de dispositive.
Configuratii dispozitive. Platforma este adaptabila la configuratii mai mari, VGA, biblioteci grafice 2D, biblioteci grafice 3D si configuratii traditionale pentru telefoanele mobile.
Stocarea de date. Platforma Android permite posibilitatea de a stoca date sub forma unor baze de date SQLite.
Suport media. Sistemul de operare Android suporta o gama larga de formate media audio/video/imagine cum ar fi: MPEG, JPEG, PNG, GIF, AMR, AAC, H.264, MP3.
Impartirea pe sarcini. O aplicatie Android este alcatuita din mai multe componente ce pot fi reutilizate si la alte aplicatii. Aceasta tactica de a ajunge la rezultatul final poarta numele de sarcina (task) in Android.
Google expune o serie de functionalitati in Android, oferind astfel dezvoltatarilor toate instrumentele necesare pentru unor aplicatii mobile cu caracteristici complete.
Fiecare versiune de Android lansata (nivel API) aduce imbunatatiri componentelor deja existente precum si functionalitati noi.
Arhitectura sistemului Android
Sistemul de operare Android reprezinta o stiva de component software care este impartita aproximativ in cinci sectiuni si patru straturi principale ce comunica intre ele, dupa cum se vede si in diagrama de arhitectura de mai jos:
Fig.1.3 Arhitectura sistemului Android
Aplicatii
Aplicatii Framework
Librarii
Android RUNTIME
Nucleul Linux (“Linux Kernel”)
Elementele componente ale unei aplicatii Android
Componentele aplicatiei sunt blocurile de baza ale unei aplicatii Android. Fiecare componenta reprezinta un alt punct prin care sistemul poate introduce aplicatia. Nu toate componentele sunt puncte de intrare reale pentru utilizator, depind unele de altele, dar fiecare exista ca o entitate proprie si joaca un rol specific, care ajuta la definirea comportamentului de ansamblu al aplicatiei.
Exista cinci tipuri diferite de componente de baza. Fiecare tip are un scop si un ciclu de viata distinct, care defineste modul in care o componenta este creata sau distrusa. Acestea sunt:
Activitate (Activity)
Intent
Servicii
Furnizorul de continut (Content Provider)
Receptorul de anunturi (Broadcast Receiver)
Fig.1.4 Elementele componente ale unei aplicatii Android
2
Limbaje de adnotare
XML nu este un inlocuitor pentru HTML, acestea fiin proiectate cu scopuri diferite: XML a fost conceput pentru a descrie date, in timp ce HTML a fost conceput pentru a afisa date. Cu alte cuvinte putem spune ca XML.ul transporta informatia, in timp ce HTML.ul o afiseaza.
1.3.1 HTML
HyperText Markup Language, denumit în mod obișnuit HTML este limbajul de marcare standard utilizat pentru a crea pagini web. Este scris sub formă de elemente HTML formate din tag-uri închise în paranteze unghiulare (cum ar fi <html>). Tag-uri HTML cel mai frecvent vin în perechi, cum ar fi <h1> și </ h1>.
Fig.1.5 Logo HTML
http://4vector.com/i/free-vector-html-logo_101468_HTML_Logo.png
Browser-ele Web citeste fișierele HTML și le transforma in pagini web vizibile sau sonore. Acestea nu afișează etichetele HTML și script-urile, dar le folosesc pentru a interpreta conținutul paginii. HTML descrie structura semantica a unui site web , împreună cu indicii de prezentare făcându-l mai degrabă un limbaj de marcare decât un limbaj de programare.
Elemente HTML formează blocurile constitutive ale tuturor site-uri web . HTML permite imagini și obiecte care odata încorporate pot fi folosite pentru a crea formulare interactive. Acesta oferă un mijloc de a crea documente structurate, cum ar fi titluri , paragrafe, liste , link-uri , citate și alte elemente.
Caracteristici implicite pentru fiecare element de marcare HTML sunt definite în browser , iar aceste caracteristici pot fi modificate sau îmbunătățite prin utilizarea suplimentară a limbajului de programare CSS. [13]
Versiunea curentă a acestuia a ajuns în prezent la HTML5, o versiune cu foarte multe diferențe față de cele anterioare, cu capabilități dinamice. Aceste funcțiuni suplimentare constau în declararea de elemente noi cu atribute complexe, modificarea celor vechi sau excluderea completă a unora, introducerea de API-uri și conceptualizarea DOM-ului.
Exemplu de formatare HTML:
In concluzie, principalele motive pentru care am ales sa folosesc acest limbaj de marcare sunt: este foarte usor de invatat deoarece textul este simplu si foarte usor de editat, necesitand doar un editor de text, este suportat de majoritatea browserelor, daca nu chiar de toate si poate fi folosit pentru a prezenta orice tip de date.
Ca oricare alt limbaj, acesta prezinta si dezavantaje: [14]
Nu este la fel de flexibil ca si alte standard sau tehnologii;
Nu este centralizat, toate paginile sale trebuie editate individual;
Nu este redat correct in toate browserele;
Capacitati de stil foarte limitate.
1.3.2 XML
Limbajul XML este o modalitate de formatare a informatiilor ca sir de caractere pentru ca acestea sa fie prezentate intr-o forma parsabila (citibila) de alte procese sau servicii. Desi in anumite cazuri in care cantitatea de informatie nu este atat de mare limbajul XML este folosit si pentru formatarea informatiilor la stocare, XML nu este recomandat a fi folosit ca o metoda de stocare a informatiilor ci doar pentru prezentarea acestora. Astfel, in general, informatiile vor ramane stocate eventual intr-o baza de date si vor fi formatate de cate ori se cere acest lucru pentru a putea fi puse la dispozitie intr-o anumita forma.
Fig.1.6 Logo XML
https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Text-xml.svg/2000px-Text-xml.svg.png
Limbajul XML structureaza informatia folosind taguri. Fiecare tag poate avea continut innerText si atribute. Fiecare atribut are o singura valoare. Regulile de scriere XML sunt urmatoarele:
fisierul trebuie sa aiba un tag radacina;
numele de taguri si atribute se scriu cu litere mici;
ordinea atributelor intr-un tag nu este importanta;
valorile sunt atribuite atributelor unui tag cu sintaxa atribut="valoare";
valorile sunt puse intotdeauna intre ghilimele simple sau duble;
orice tag se inchide chiar daca are sau nu continut.
Terminologii cheie:
Caracter Unicode: Prin definiție, un document XML este un șir de caractere. Aproape fiecare caracter Unicode legal poate apărea într-un document XML.
Procesorul și aplicatia: Procesorul analizează marcajul și trece informațiile structurate în aplicație. Caietul de sarcini plasează cerințele privind ceea ce un procesor XML trebuie să facă și nu, dar cererea este în afara domeniului său de aplicare.
Marcajul și conținutul: Caracterele care alcatuiesc un document XML sunt împărțite în marcare și de conținut, care se pot distinge prin aplicarea normelor sintactice simple. În general , sirurile de caractere care constituie marcarea fie încep cu caracterul “<” și se încheie cu un “>”, fie încep cu caracterul “&” și se încheie cu un “;”.Siruri de caractere care nu sunt marcaje sunt de conținut.
Eticheta: Aceasta are trei nivele:
start-tags: <section>
end-tags: </section>
emply-element tags: <line-break/>
Elementul: Este acea componenta dintre tag-ul de inceput si cel de final si pot contine marcaje, inclusive alte elemente, care sunt numite elemente copil. Exemplu: <line-break />.
Atributele: Constau intr-o pereche de nume/ valoare care exista intr-un tag. De exemplu:
unde numele atributului este “numarul”, iar valoarea este “3”.
Un atribut XML poate avea doar o singură valoare și poate apărea cel mult o dată pe fiecare element.
Declaratia XML:
[16]
Am ales sa folosesc acest limbaj deoarece ofera urmatoarele avantaje: este o tehnologie independenta, putand fi utilizata de catre orice tehnologie de stocare a datelor, foloseste un format de text simplu, lizibil si usor de inteles, este extensibil ( se pot define noi indicatori daca este nevoie) si ofera utilizatorilor posibilitatea de a-si reprezenta datele intr-un mod independent de aplicatie.[15]
Sistemul de baze de date PostgreSQL
PostgreSQL este un sistem de baze de date relationale. Acesta are mai mult de 15 ani de dezvoltare activa si o arhitectura care a castigat o reputatie puternica pentru fiabilitate, integritatea datelor si corectitudine. PostgreSQL este dezvoltat de o echipa de voluntari din intreaga lume, nu este controlat de nici o corporatie sau alta entitate privata, iar codul sursa este disponibil gratuit. [5]
Fig.1.7 Logo PostgreSQL
2
PostgreSQL ofera multe avantaje fata de alte sisteme de baze de date:
Imunitate la supra-implementare: Supra-implementarea este ceea ce unii furnizori de baze de date o vad ca problema numarul 1 in problema de conformitate a licentei. Cu PostgreSQL, nimeni nu poate incalca acordurile de licenta, deoarece nu exista nici un cost de licentiere pentru software-ul asociat.
Acest lucru are mai multe avantaje suplimentare:
Modele de afaceri mai profitabile cu implementare pe scara larga.
Nici o posibilitate de a fi audiat pentru respectarea licentei in orice moment.
Flexibilitatea de a face cercetarea conceptului si implementari fara a fi nevoie de a include costuri suplimentare de licentiere.
Suport mai bun: PostgreSQL dispune mereu de un sprijin puternic, avand in spate o echipa de profesionisti.
Economisire semnificativa asupra costurilor de personal: Software-ul a fost conceput si creat pentru a avea cerinte mult mai mici de întreținere și reglare decat bazele de date proprietare, dar încă păstrează toate caracteristicile , stabilitatea si performanta acestora. În afară de aceasta, programele de training sunt în general considerate ca fiind mult mai eficiente.
Fiabilitate si stabilitate: Spre deosebire de multe alte baze de date, PostgreSQL se bucura de fiabilitate si stabilitate pe o perioada foarte lunga de timp.
Este un sistem de baze de date extensibil: Codul sursă este disponibil pentru toți în mod gratuit. Orice doreste sau are nevoie de a personaliza sau de a extinde PostgreSQL sunt capabili sa faca acest lucru cu un minim de efort.
Cross-platform: PostgreSQL este disponibil pentru aproape orice marca de Unix ( 34 platforme cu cea mai recentă versiune stabilă ), iar compatibilitatea Windows este disponibil prin intermediul cadrului Cygwin.
Proiectat pentru medii de volum mare: PostgreSQL foloseste o strategie de stocare multipla a datelor, numita MVCC.
Proiectarea bazei de date GUI si instrumente de administrare: Exista multe instrumente GUI de inalta calitate disponibile pentru PostgreSQL.[6]
Foi de stil CSS
CSS (Cascading Style Sheets) este un limbaj de stil folosit pentru descrierea aspectului si formatarea unui document scris intr-un limbaj de marcare. Desi de cele mai multe ori este folosit pentru a schimba stilul paginilor web si interfetelor scrise in HTML si XHTML, acesta poate fi aplicat la orice tip de document XML, inclusive XML simplu, SVG si XUL. Impreuna cu HTML si JavaScript, CSS este o tehnologie fundamentala folosita de cele mai multe site-uri web pentru a crea pagini web, interfete de utilizator pentru aplicatiile web si interfete de utilizator pentru numeroase aplicatii mobile.[7]
Fig.1.8 Logo CSS
http://www.maclife.com/files/u220903/css3_logo_620px.jpg
CSS-ul este destinat in primul rand pentru a permite separarea continutului documentului de continutul documentului, inclusive elemente cum ar fi aspectul, culorile si fonturile. Această separare poate îmbunătăți accesibilitatea conținutului, oferă mai multă flexibilitate și control în specificarea caracteristicilor de prezentare, permite posibilitatea ca mai multe pagini web să poată avea același design, dar si reduce complexitatea structurii conținutului unei pagini web. [7]
Aceasta separare de formatare si continut face posibila prezentarea aceleiasi pagini in stiluri diferite pentru diferite metode de redactare, cum ar fi pe ecran, in print, prin voce. Acesta poate fi de asemenea utilizat pentru a afișa pagina web diferit în funcție de dimensiunea ecranului sau dispozitivul pe care este vizualizat.
Un alt avantaj al CSS.ului este acela că modificările estetice aduse proiectului grafic unui document (sau sute de documente) pot fi aplicate rapid și ușor, prin editarea a câteva rânduri într-un singur fișier, mai degrabă decât printr-un proces laborios și, prin urmare, costisitor de crawling peste fiecare linie.
Caietul de sarcini al CCS.ului descrie o schema de prioritate pentru a determina ce regula de stil se aplica in cazul in care exista mai multe. Acest proces poarta numele de cascada, unde prioritatile sau ponderile sunt calculate si atribuite regulilor, astfel incat rezultatele sa fie previzibile.
Având în vedere faptul că majoritatea paginilor existente pe internet folosesc acest tip de stilizare, el nu vine fără limitări sau erori:
Nu există capabilități de asociere parinte-fiu;
Limitări privind aranjarea pe verticală, ce poate neintuitivă uneori;
Absența expresiilor, valorile atașate regulilor fiind oarecum statice;
Regulile nu pot avea un nume, spre a fi accesate extern de către alte script-uri;
Nu există suport pentru moștenire de reguli.
1.6 Serverul Apache
Serverul Apache este cel mai popular server de web din lume si este dezvoltat de Apache Software Foundation .Acesta este un software open source și poate fi instalat pe aproape toate sistemele de operare , inclusiv Linux , Unix , Windows , FreeBSD , Mac OS X și asa mai departe. [8]
Fig.1.9 Logo Apache Http Server
http://1.bp.blogspot.com/-n9AfJTTcfe0/UkPz31XaSuI/AAAAAAAAAI0/AkcsvHwbKa4/s1600/Apache-Web-Server.png
Am ales sa folosesc acest tip de server deoarece este un server web foarte flexibil si puternic. Acesta mplementează cele mai recente protocoale , inclusiv HTTP / 1.1, este extrem de configurabil și extensibil, poate fi personalizat foarte usor folosind modulul de API Apache si oferă codul sursă complet, venind in plus si cu o licență nerestrictivă.
Un alt criteriu dupa care m-am ghidat in alegerea acestui tip de server este acela ca implementeaza multe caracteristici frecvent solicitate:
Permite cu usurinta protejarea cu parola a paginilor cu un numar enorm de utilizatori.
Poate primi raspunsuri personalizate la erori si problem.
Apache nu are o limita fixa pentru numarul de pseudonime si redirectionari, acestea putand fi declarate in fisierele de configurare. In plus, un motor puternic de rescriere poate fi folosit pentru a rezolva majoritatea problemelor de manipulare URL.
Dispune de gazed virtuale (Virtual Hosts), care permit serverului de a distinge între cererile pentru diferite adrese IP sau nume (mapate la aceeași mașină). [9]
Apache dispune de multe caracteristici intelepte, cum ar fi: multe funcții sunt puse în aplicare ca module compilate pentru a extinde funcționalitatea de bază, compresia paginilor pentru a reduce dimensiunea lor asupra http (aceasta este, de asemenea, realizata printr-un modul extern, unul numit mod_gzip) etc.
Apache este un server bazat pe proces, spre deosebire de multi dintre rivalii sai, care sunt event-based sau asincroni in natura.[10]
1.7 Scripting pe partea de client – JavaScript
Javascript este un limbaj de programare dinamic, care este, în general, implementat pe partea de client a paginilor web, cu scopul de a interacționa cu utilizatorii, manipularea elementelor legate de browser, comunicare asincronă și prelucrarea conținutului documentului existent în pagină. [11]
Fig.1.10 Logo JavaScript
https://sptwentyten.files.wordpress.com/2010/08/javascriptlogo.png
Dezvoltat sub numele de Mocha, Javascript a fost lansat oficial sub numele de LiveScript în 1995, schinbându-și ulterior numele în versiunea actuală în cadrul browser-ului Netscape 2.0B3 din motive de marketing.
Desi prezinta multe asemanari cu limbajul C# si are la baza sintaxe bazate pe limbajul C si conventii de denumire preluate din Java, unul dintre motivele pentru care am ales sa folosesc acest limbaj de programare este acela ca JavaScript ruleaza pe partea de client, pe cand cele din urma influenteaza majoritar partea de server.
Rularea pe partea de client inseamna ca o pagina web nu mai trebuie neaparat sa fie in HTMLstatic, aceasta putand sa include programe care interactioneaza cu utilizatorul, sa controleze browser-ul sis a creeze dynamic continutul HTML. Acest mechanism are multe avantaje fata de scrit-urile traditionale. Codul JavaScript este executat atunci cand utilizatorul trimite formularul, si numai daca toate intrarile sunt valide vor fi depuse la serverul web.
Unul dintre punctele forte ale lui JavaScript este acela ca nu necesita instrumente special de dezvoltare, fiind de ajuns un simplu editor de text. Deoarece este un limbaj interpretat in interiorul contextului unui browser web, nu este necesar nici macar un compilator.
Mai jos voi enumera unele dintre cele mai importante instrumente JavaScript care poat ajuta la crearea unui site web interactive:
Microsoft FrontPage: este un editor HTML dezvoltat de Microsoft, care ofera de asemenea dezvoltatorilor web o serie de instrumente JavaScript pentru a ajuta la crearea unui site web interactiv.
Macromedia Dreamweaver MX: este un HTML si un redactor JavaScript foarte popular. Acesta ofera mai multe precompilari, se integreaza bine cu baza de date si este in conformitate cu noile standard, cum ar fi XHTML si XML.
Macromedia HomeSite 5: Acesta ofera un HTML si un editor JavaScript foarte placut si care poate sa gestioneze foarte bine site-urile personale.
Justificarea alegerii limbajului de programare JavaScript este interactiunea foarte mica cu serverul: validarea datelor introduse de utilizator se poate face inainte de a trimite pagina de pe server, acest lucru economisind traficul. Alte merite ale acestui limbaj de programare sunt interfetele bogate si interactivitatea crescuta.
Chiar dacă JavaScript este o unealtă puternică, prezintă slabiciuni pe alocuri, dar acest lucru nu împiedică utilizatorii sa îl folosească pentru funcționalitățile cu care s-a făcut remarcat.
Dezavantaje legate de securitate:
Atacuri externe bazate pe injectarea de script, în cazul unei conceperi nesecurizate a paginii;
Incapabilitatea de a manipula datele de pe hard disk;
Incapabilitatea de a executa operații în rețea.
1.9 Spring Framework
Spring Framework poate fi considerat cel mai performant middleware din punct de vedere al aplicațiilor extensibile și orientate pe obiecte. Acesta este compatibil cu tehnologia Java. De asemenea a apărut ca și alternativă la modelul EJB. Avantajul principal al acestui produsului este folosirea de containere „Inversion of Control”. Containerele sunt cele care crează, manipulează și dezalocă resursele pentru obiectele Java ce lucrează cu datele persistente. De asemenea mecanismul de control al obiectelor folosește apeluri inverse sau patternuri de programare ca și factory method.
Fig.1.11 Logo Spring
2
Un avantaj îl reprezintă facilitatea de a realiza accesul distribuit la bazele de date datorită implementării de funcționalități compatibile cu standardele CORBA sau RMI. De asemenea modelul MVC arhitectural al framework-ului asigură o ierarhizare și structurare independentă a nivelelor software componente.
Pentru configurarea containerelor se folosesc fișiere XML. Acesta ar fi același dezavantaj ce este prezent și la celelalte middleware-uri prezentate mai sus.
Programarea orientata pe aspecte (AOP)
Spring Framework are propriul sau cadru de programare orientat pe aspecte, care se refera la modularizarea transversala a preocuparilor. Acest fenomen are loc prin adaugarea unui comportament suplimentar codului existent (un sfat), fara modificarea codului in sine, in loc sa se specifice separat ce cod este modificat. Modulele programarii orientate pe aspecte contin codul necesar implementarii unui singur serviciu al sistemului, astfel incat proiectarea sa aiba loc fara prea multa complexitate.
Acest cadru este bazat pe modelul proxy si este configurat in timpul rularii. Acesta elimina necesitatea unei etape de compilare.
Programarea orientata pe aspecte implica descompunearea logica a programelor in parti distincte ( asa numitele zone de coeziune, zone de functionalitate). Aproape toate paradigmele de programare sprijina gruparea si encapsularea preocuparilor in entitati separate, independente, prin furnizarea de abstractiuni (exemplu: functii, proceduri, module, clase, metode), care pot fi utilizate pentru implementarea, abstractizarea si compunerea acestor preocupari.[18]
MVC (Model-View-Controller)
MVC este un model architectural software pentru punerea in aplicare a interfetelor. Acesta imparte o aplicatie software in trei parti interconectate : model, viziune, controler.
Model: Un model stocheaza datele care sunt preluate de controler, acesta manipuland operatiunile logice si de utilizare a informatiei, rezultand o forma usoara de inteles.
Viziune: Viziunea reprezinta exprimarea sau reprezentarea grafica a ultimei forme a datelor. Mai bine spus, aceasta reprezinta interfata grafica ce interactioneaza cu utilizatorul final.
Controler: Acesta controleaza accesul la aplicatie. Un controler poate trimite comenzi pentru a actualiza starea modelului. De exemplu: editarea unui document.
MVC a fost initial dezvoltat pentru calculatoare, apoi a fost adoptat pe o scara larga ca o arhitectura a aplicatiilor web in limbaje de programare majore, cum este folosit si in cazul aplicatiei prezentate in aceasta lucrare. [19]
1.9 Hibernate
Hibernate este un cadru de mapare pentru limbajul de programare Java, care a fost creat de Gavin King in 2001. Acesta este un software gratuit si se gaseste sub licenta GNU Lesser Public License General. Hibernate este util pentru maparea de la clasele Java la baza de date, oferind o solutie rapida si de inalta performanta.
1.12
2
Am ales sa folosesc acest tip de cadru din urmatoarele motive:
Hibernate are grija de maparea claselor Java in tabelele din baza de date fara a scrie vreo linie de cod, folosind fisiere XML;
Ofera API-uri simple de stocare si extragere a obiectelor Java direct la si de la baza de date;
Daca exista o schimbare in baza de date sau in orice tabela, atunci trebuie schimbate doar proprietatile fisierelor XML;
Hibernate nu are nevoie de un server de aplicatii pentru a functiona;
Manipuleaza asociatii complexe de obiecte in baza de date;
Ofera interogare simpla a datelor. [20]
Maparea claselor Java la tabelele din baza de date se realizeaza prin configurarea unui fisier XML sau folosind adnotarile Java. Utilizand un fisier XML, Hibernate genereaza un schelet al codului sursa pentru clasele de persistenta. Acest lucru este necesar atunci cand se utilizeaza adnotarile.
Sunt furnizate facilitatile de aranjare a relatiilor one-to-many sau many-to many. In plus fata de gestionarea asocierilor intre obiecte, Hibernate poate administra , de asemenea, asocierile reflexive intre un obiect care are o relatie one-to-many cu alte cazuri de propriul tip.
Obiectele dintre o aplicatie front-end respecta principiile programarii orientata pe obiecte, in timp ce obiectele din back-end urmeaza principiile de normalizare a bazei de date, care rezulta din diferitele cerinte de reprezentare. Aceasta problema se numeste nepotrivirea impedantei de relationare a obiectelor si se poate solutiona prin mapare.
Hibernate prevede persistenta transparenta a obiectelor, singura cerinta stricta pentru o clasa persistenta fiind un constructor, nu argument, care nu trebuie sa fie neaparat public.[21]
Hibernate cere sa stie in avans unde gaseste informatiile de mapare, care definescmodul in care clase Java sunt relationate cu tabelele din baza de date. Hibernate necesita, de asemenea, un set de setari de configurare legat de baza de date si de alti parametrii conexi. Toate aceste informatii sunt, de obicei, furnizate ca un fisier de proprietati standard Java numit hibernate.properties, sau ca un fisier XML numit hibernate.cfg.xml. [20]
ORM este o tehnica de programare pentru conversia datelor intre bazele de date relationale si limbajul de programare orientat pe obiecte, care este in cazul de fata Java.
Arhitectura Hibernate este urmatoarea:
1.13
2
1.10 AJAX
Ajax reprezinta un grup de tehnici de dezvoltare web, inter-dependente, folosite pe partea de client pentru a crea aplicatii web asincrone. Cu AJAX, aplicatiile web pot primi si transmite date la server, asincron, fara sa influenteze interfata sau modificarea elementelor compunatoare ake acesteia. Datele pot fi recuperate folosind obiectul XMLHttpRequest, care, in ciuda numelui, nu este necesara utilizarea de XML, iar cererile nu trebuie sa fie asincrone.
Lansarea sa oficială a avut loc în anul 2005, prin recunoașterea publică a echipei AJAX, condusă de Jesse James Garrett, printr-un articol. În anul 2006, W3C a lansat primele specificații oficiale cu privire la noua tehnologie.
Ajax nu este o tehnologie in sine, termenul fiind folosit pentru definirea aplicatiilor web ce folosesc un asamblu de tehnologii, pe care le-am definit mai sus: HTML, CSS, JavaScript, XML. HTML si CSS pot fi utilizate in combinatie pentru structura semantica a informatiilor, JavaScript este utilizat pentru afisarea dinamica si permite utilizatorului sa interactioneze cu informatiile prezentate, XML este folosit pentru transferarea datelor intre client si server, iar XMLHttpRequest furnizeaza o metoda pentru schimbul de date asincron intre browser si server pentru a evita reincarcarile complete de pagina.
CAPITOLUL 2
Implementarea aplicatiei
2.1 Prezentare concept
2.2 Arhitectura aplicatiei
2.3 Baza de date
Scopul acestui subcapitol este de a prezenta etapele proiectarii si implementarii unei baze de date relationale, punand in evidenta notiunile teoretice si exemplificandu-le cu exemple concrete pe aplicatia ce se doreste a fi realizata.
Baza de date reprezinta temelia acestui proiect, deoarece fara aceasta nu ar fi posibile functionalitatile principale ale acestei lucrari. Proiectarea si implementarea acesteia s-a realizat in sistemului de baze de date relationale PostgreSQL.
O baza de date relationala este o baza de date formata dintr-o serie de tabele neordonate ce sunt percepute de utilizatori ca o colectie de tabele bidimensionale, in care fiecare linie corespunde unui tuplu si fiecare coloana corespunde unui atribut.
Etapele realizarii unei baze de date
Bazele de date sunt realizate prin luarea unor decizii cu privire la modelarea unor sisteme din lumea reala intr-o baza de date. Exista mai multe etape in acest proces: proiectarea conceptuala, proiectarea logica si proiectarea fizica.
Proiectarea conceptuala a bazei de date include identificarea tipurilor importante de entitati, relatii si attribute.
Proiectarea logica a bazei de date este realizata prin transpunerea proiectarii conceptuale in structura bazei de date si cuprinde urmatoarele etape: transpunerea modelului conceptual local in modelul de date logic local, extragerea relatiilor din modelul de date logic local pentru a reprezenta entitatile si relatiile, normalizarea relatiilor, validarea modelului conform tranzacțiilor utilizatorului pentru a garanta că acesta acceptă și rezolvă operațiile cerute de către model, definirea constrângerilor de integritate.
Proiectarea fizica a bazei de date reprezintă implementarea fizică a structurii logice într-o capacitate de stocare secundară corespunzătoare SGBD-ului țintă. Sistemul de gestiune a bazei de data (SGBD) permite realizarea unor operatii asupra acesteia de urmatorul fel: stergere, actualizare si interogare a datelor.
Proiectarea conceptuala a bazei de date
Aceasta este un model de date la nivel de sinteza, care este cel mai des folosit pe proiecte strategice de date. Datorită naturii sale extrem de abstracte, poate fi menționată ca un model conceptual. Procesul este doar un exercițiu în identificarea datelor relevante. [18]
Două lucruri principale care sunt identificate în proiectarea bazelor de date conceptuale sunt entitățile și relațiile, entitatile fiind obiectele reale, iar relatiile fiind reteaua de conexiune care leaga o cantitate la alt ape termen nelimitat.
Proiectarea conceptuala a bazei de date presupune urmatoarele etape: identificarea entitatilor si a relatiilor dintre acestea si calificarea lor, identificarea atributelor corespunzatoare entitatilor si stabilirea atributelor de identificare a entitatilor.
Proiectarea logica a bazei de date
Proiectare bazei de date este procesul de transformare a unui model de date logic într-o bază de date fizică reală. Un model de date logic este necesar înainte de a putea începe, chiar de a proiecta o bază de date fizică. Acesta creste dintr-un model de date conceptual.
Acest model de proiectare descrie datele cat mai detaliat posibil, indifferent de modul in care acestea vor fi implementate fizic in baza de date.
Caracteristicile proiectarii logice a bazei de date sunt:
Include toate entitatile si relatiile dintre acestea;
Sunt specificate toate atributele pentru fiecare entitate;
Este specificata cheia primara pentru fiecare entitate;
Sunt specificate cheile externe (elementele de identificare a relației dintre diferitele entități);
La acest nivel se produce normalizarea.
Etapele de proiectare logica a bazei de date sunt:
Specificarea cheii primare pentru toate entitatile;
Gasirea relatiilor dintre diferite entitati;
Gasirea tuturor atributelor pentru fiecare entitate;
Rezolvarea relatiilor de tip many-to-many;
Normalizarea.
Comparand modelul logic de date cu cel conceptual, vom vedea principalele diferente dintre cele doua:
In proiectarea logica a bazei de date cheile primare sunt prezente, in timp ce in proiectarea conceptuala acestea nu exista.
Intr-un model de date logic, toate atributele sunt specificate in cadrul unei entitati, pe cand acestea nu sunt specificate in modelul de date conceptual.
Relatiile dintre entitati sunt specificate folosind cheile primare si cheile straine intr-un model de date logic. Intr-un model de date conceptual, relatiile sunt pur si simplu declarate, nu specificate, asa ca stim doar ca doua entitati sunt legate, dar nu cunoastem atributele folosite pentru aceasta relatie.
Proiectarea fizica a bazei de date
Proiectarea fizica a bazei de date reprezintă modul în care modelul va fi construit în baza de date. Acesta prezinta toate structurile, inclusiv numele coloanei, tipul de data al acesteia, constrangerile, cheile primare, cheile externe si relatiile dintre tabele.
Caracteristicile modelului fizic al bazei de date sunt:
Specificarea tuturor tabelelor si a coloanelor;
Cheile straine sunt utilizate pentru a identifica relatiile dintre tabele;
Denormalizarea poate aparea in functie de cerintele utilizatorului;
Proiectarea fizica poate fi diferita in functie de RDBMS-ul folosit;
Conversia entitatilor in tabele;
Conversia atributelor in coloane;
Conversia relatiilor intre cheile externe;
Comparand modelul de date fizic cu cel logic, vom observa mai multe diferente intre cele doua: numele entitatilor sunt acum nume de tabele, atributele sunt nume de coloane si este specificat tipul de date pentru fiecare coloana. [19]
1
2
Entitatea
Entitatea este un aspect al realității obiective, un conținut de sine stătător și este caracterizată prin proprietățile sale, reprezentate de atribute. Entitățile sunt semnificative pentru ceea ce modelăm. Există câteva observații în ceea ce le privește: entitățile, în modelele relaționale devin tabele, sunt substantive, însă nu orice substantiv este o entitate, nu pot exista în aceeași diagramă două entități cu același nume, sau o aceeași entitate cu nume diferite.
Atributele
Atributele sunt proprietati care descriu anumite aspect ale unei entitati sau ale unei relatii. Ele pot fi simple, compuse, cu valori multiple sau derivate. Se pot face câteva observații cu privire la atribute: se face distincția între tipul atributului (care devine coloană în modelele relaționale) și valoarea acestuia (care devine valoare în coloane), pentru fiecare atribut fiind nevoie sa se specific numele si tipul acetuia (int, date, varchar etc.).
Exemple de atribute:
in entitatea companie avem atributele: nume, adresa, numar de contract, numar de telefon;
in entitatea vehicul avem atributele: numar de inmatriculare, culoarea, data de achizitie;
in entitatea user avem atributele: nume, prenume, cnp, ziua de nastere, adresa, orasul, functia.
Tabelele sunt utilizate pentru a reprezenta o entitate. Ele sunt formate din rânduri și coloane, coloanele reprezentând de fapt atributele acelei entități. Un concept important al bazelor de date relaționale, când vine vorba de tabele, este acela că fiecare rând (înregistrare) dintr-o tabelă trebuie sa fie unic, pentru a evita orice fel de problemă sau ambiguitate. Acest lucru se obține prin utilizarea unei chei primare unice pentru fiecare înregistrare.
Relatia
O relatie este o asociere intre doua sau mai multe entitati. Sunt cateva observatii care pot fi facute in legatura cu conceptul de relatie: in modelul relational, aceste relatii sun tabele sau coloane special care prezinta chei primare, in aceeasi diagrama pot exista relatii diferite cu acelasi nume, caz in care le diferentiaza entitatile care sunt associate prin relatia respectiva, pentru fiecare relație se stabilește cardinalitatea (maximă și minimă) relației, adică numărul de tupluri ce aparțin relației. În funcție de acest număr de tupluri, relațiile pot fi de 3 feluri:
One-to-One: o instanta a unei entitati (A) este asociata cu o instanta a altei entitati. In cazul nostru, un exemplu de astfel de relatie este acela dintre masina si sofer ( o masina este asociata unui singur sofer si invers);
One-to-Many: o instanta a unei entitati (A) este asociata cu zero, una sau mai multe instante ale entitatii (B), dar pentru o instanta a entitatii (B) exista o singura instanta a entitatii (A). In cazul nostru, un exemplu de astfel de relatie este acela dintre firma si soferi ( un sofer este angajat la o singura firma, dar o firma poate avea mai multi soferi;
Many-to-Many: o instanta a unei entitati (A) este asociata cu zero, una sau mai multe instante ale entitatii (B) si invers, o instant a unei entitati (B) este asociata cu zero, una sau mai multe instante ale entitatii (A). [20]
Tipuri de chei
Conectarea la baza de date
Implementarea bazei de date
Popularea tabelelor
Vizualizarea tabelelor populate
CAPITOLUL 3
Prezentarea aplicatiei (exemple practice)
3.1 Cerinte functionale
Platforma prezentata aici a fost creata pentru a satisface nevoile unei firme de curierat incluzand toate personajele sale, fiecare cu particularitatile desemnate de functia ocupata.
Vom descrie mai jos functionalitatile aplicatiei referindu-ne la tipurile principale de actori si anume: administratorul aplicatiei, administratorul firmei si soferii.Astfel fiacre dintre actori va avea acces la un cont personalce va include toate drepturile necesare desfasurarii armonioase in cadrul firmei.
Vom contura astfel in cele ce urmeaza, tipurile principale de personaje impreuna cu optiunile pe care le are fiecare la momentul accesului in contul personal:
Administratorul aplicatiei, doar acesta putand adauga noi firme;
Administratorul firmei, care are un cont facut de administratorul aplicatiei imediat dupa ce s-a incheiat un contract intre cei doi si are acces la toate functiile oferite de aplicatie. Acesta este autorizat , de asemenea, sa ofere altor useri administrativi drepturi egale ca si el, tot el fiind si singurul care poate sa creeze si sa adauge un cont nou pentru soferi.
Soferii, care nu au dreptul sa-si creeze singuri cont, nu au acces deloc la aplicatia web, ci doar la cea mobila destinata lor.
3.2 Interfete pe partea Web
3.2.1 Interfata de autentificare
1
Aceasta permite utilizatorilor sa se autentifice, introducandu-si numele si parola. Aplicatia cuprinde trei tipuri de utilizatori:
Cazurile testate cand se doreste autentificarea cuprind: verificarea daca utilizatorul a introdus numele de utilizator, daca acesta exista sau nu in baza de date (mesaj: “Utilizatorul nu exista”), verificarea daca utilizatorul a introdus parola si daca parola este, sau nu, corecta (mesaj: “Parola gresita”). Parola este unica pe firma, este generate de administratorul aplicatiei si nu poate fi modificata. Sirul de caractere introdus in campul destinat parolei este criptat. Astfel parolele nu sunt tinute in clar, ele fiind codificate si oferind un minim necesar de protectie aplicatiei.
Daca si numele de utilizator si parola au fost introduce corect, apasand butonul de “Autentificare”administratorul firmei are acces la intreaga aplicatie, fiind transferat imediat in interfata principal a acesteia.
3.2.2 Interfata principala
1
Dupa autentificarea reusita a unui utilizator (administrator), se deschide fereastra principala a aplicatiei. Aceasta permite accesul catre:
“Admin” – meniu ce permite gestionarea conturilor utilizatorilor si o stergere de tip cascada care va inlatura/actualize inregistrarile care prezinta dependente unele fata de altele in diferite tabele;
“Comanda” – meniu prin intermediul caruia se pot aloca comenzi de transport soferilor;
“Vehicule” – meniu din care se pot vizualiza toate masinile pe care o firma le are in baza de date. Acestea vor fi listate intr-un tabel, pot fi modificate sau sterse. Tot in acest meniu exista optiunea de “Adauga vehicul”, unde poti fi adaugate noi vehicule impreuna cu toate detaliile aferente lor;
“Soferi” – meniu din care pot fi vizualizati toti soferii, impreuna cu detaliile aferente lor. Tot aici exista si formularul de adaugare/editare sofer;
“Tranzactii” – In acest meniu, administatorii firmei pot adauga avansuri soferilor si , de asemenea, pot tine evidenta tuturor tranzactiilor efectuate. Tot aici, sunt arhivate si cheltuielile soferilor.
“Alerte” – meniu prin intermediul caruia se pot adauga si salva alerte, care vor fi trimise mai departe soferilor pe interfata mobile.
3.2.3 Interfata Soferi
1
Aceasta fereastra permite gestionarea datelor referitoare la angajatii (seferii) companiei. Aici vor fi listati sub forma de tabel toti soferii existenti in baza de date, impreuna cu toate detaliile aferente lor: nume, prenume, CNP, e-mail, data angajarii, telefon si disponibilitatea acestora in perioada de fata.
In aceasta interfata exista, de asemenea, un formular de “Adauga sofer”, unde se verifica completarea campului “User” si existent unei inregistrari cu aceeasi valoare, completarea campului “Parola” care este aleasa de administrator si nu poate fi modificata, completarea campurilor “Nume” si “Prenume”, completarea campului “CNP”, unde este introdus Codul Numeric Personal al soferului si este verficata unicitatea acestuia, completarea campului “Email” si “Telefon”, unde este introdus e-mail-ul si numarul de telefon personal al soferului. Si acestor campuri le este verificata unicitatea.
Odata apasat butonul de “Adauga” toate aceste informatii sunt salvate in baza de date si adaugate in tabelul de listare a soferilor.
Interfata este urmatoarea:
1
De asemenea, exista si optiunea de modificare a datelor unui sofer. In dreptul fiecarui sofer, in tabelul de listare, exista o iconita care ,daca este apasata, transforma formularul de “Adauga sofer” in unul de “Editeaza sofer”. Aici toate campurile sunt completate initial cu informatiile salvate in baza de date. Aceasta optiune permite modificarea user-ului, parolei, a numelui, prenumelui, e-mail-ului si telefonului, mai putin modificarea campului destinat CNP-ului, deoarece acesta este unic si a fost introdus corect de la bun inceput.
1
Nu in ultimul rand, interfata permite stergerea unui sofer din baza de date, acest lucru facandu-se foarte simplu, administratorul firmei trebuind doar sa apese pe iconita de “delete” din dreptul fiecarui sofer.
3.2.4 Interfata Soferi
Concluzii
Accesibilitate – Interfata web este accesibila utilizatorilor autorizati de pe orice calculator conectat la Internet, printr-o conexiune securizata
Securitate – Datele sunt accesibile numai utilizatorilor autorizati de administrator, in baza unei combinatii user/parola
Configurare rapida- Datele sunt disponibile imediat, cu un minim de informatii de completat de catre utilizator
Utilizare simpla- Interfata sub forma unei pagini web, la indemana oricarui utilizator, nu necesita cunostinte IT avansate
Arhiva permanenta- puteti accesa oricand datele si rapoartele privind orice perioada de timp arhivata
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Sistem Software Pentru Managementul Informatiei (ID: 163573)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
