Titlu lucrare (obligatoriu în limba română) Coordonator Absolvent Grad didactic, Mihnea Moisescu Cristian -Rareș Conea Anul absolvirii ( 2019) 2… [626981]
Universitatea POLITEHNICA Bucure ști
Facultatea Automatică și Calculatoare
Departamentul Automatică și Informatică Industrială
LUCRARE DE LICENȚ Ă
Titlu lucrare (obligatoriu în limba română)
Coordonator Absolvent: [anonimizat], Mihnea Moisescu Cristian -Rareș Conea
Anul absolvirii ( 2019)
2
Cuprins (orientativ)
1. Introducere (de ex.: justifica rea alegerii temei, descrierea succintă a conținutului
fiecărui capitol)……………………………………………………………………………………………… …. 3
2. Prezentarea domeniului din care face parte lucrarea……….. ……………………………………… 5
3. Descrierea problemei abordate și a metodei de rezolvare propuse…………………………… 14
4. Documentație tehnică – prezentarea aplicației, echipamentelor, algoritmilor, experimen –
telor etc. și a rezultatelor obținute ………………………………………………………………………. 25
4.1. Echipamente utilizate…………………………………………………………………………………. 30
4.2. Tehnolo gii software…………………………………………………………………………………….40
4.3 Rezultate obținute……………………………………………………………………………………….50
5. Concluzii și dezvoltări ulterioare (contribuții originale, domenii de utilizare posibile,
comparații cu realizări similare – cu sublinierea avantajelor, performanțelor etc. -, alte
aspecte relevante) …………………………………………………………. …………………………………. 59
7. Bibliografie……………………………………………………………………………………………….. ……. 64
8. Anexe (cu fragmente de cod software sau/și diagrame sau alte elemente, dacă este cazul)
3 1. Introducere
Lucrarea de fata prezinta detalii despre crearea unei aplicatii de rezervare a
camerelor din hoteluri si pensiuni . Proiectul este structurat in doua parti, o parte backend
realizata in limbajul de progr amare Java cu frameworkul Spring Boo t si o parte front -end
realizata cu ajutorul platformei Android Studio si destinata tuturor dispozitivelor ce ruleaza
cu sistemul de operare Android.
Am ales sa folosesc Spring Boot pentru partea back -end deoarece este un
framework puternic, bine documentat, capabil sa puna pe picioare un serviciu intr -un timp
foarte scurt.
Platforma Android este deasemenea una populara si bine documentata. Device -urile
ce ruleaza cu sistemul de operare Android sunt in numar foarte ma re.
Pe langa cele doua enuntate mai sus, aplicatia va utiliza si o baza de date relationala
SQL la care se va face conectarea din partea back -end folosind frameworkul Hibernate
ORM .
Lucrarea este structurata pe capitole, astfel:
Capitolul 1 prezinta, pe scurt, doua aplicatii asemanatoare celei pe care am
implementat -o si eu. Prezentarea fiecarei solutii esti constituita din modul in care se poate
interactiona
Capitolul 2
Capitolul 3
Capitolul 4
Capitolul 5
Capitolul 6
Capitolul 7
4
1. Studiul soluțiilor existente
Cum nimeni nu ar trebui incurajat sa reinventeze roata ci sa imbunătățească ceea ce
este existent, atat cat se poate îmbunătăți, o bună abordare în vederea dezvoltării unui
produs, fie el de tip hardware sau software, consta i n analizarea soluțiilor deja existente pe
piață. Se identific ă acele soluții care se pliază p e modelul gandit de noi, se iau părțile bune
si se incearcă imbunătățirea lor dar se pot adaugă și funcționalități noi. Analiza unei soluții
existente este utilă s i datorită faptului că poate aduce o rezolvare a uneia sau a mai multor
probleme pe care le putem î ntalni pe parcursul procesului de dezvoltare.
În urma analizei făcute am identificat drept soluții ce abordeaza aceeasi problemă
următoarele : Booking și Airbnb.
Booking este una dintre cele mai mari si mai populare aplicaț ii ce permit
utilizatorilor rezervarea unei camere int r-un hotel sau pensiune. Aplicaț ia a fost lansata in
anul 1996, iar in prezent ofera posibilitatea rezervarii unei camere in mai mult d e 227 de
țări de pe glob [1].
Booking e ste disponibil atat ca platformă web cat si mobile pentru d ispozitivile cu
sistem de operar e Android sau iOS. Pentru a putea utiliza aplicatia, atat pe mobil cat si web,
este necesar crearea unui cont de utilizator . Procesul de creare necesită adăugarea atat a
informații lor personale precum numele, prenumele, data nașterii cat si a informații lor
bancare precum numărul cardului de credit, codul CVV si proprietarul . Cardul este necesar
pentru a putea facilita plățile.
Procesul de rezervare este unul foarte simplu, aplicatia permite introducerea, de
catre utilizator, a locatiei unde doreste sa faca o rezervare , conform figurii 1.1.
Fig. 1.1 Introducere informații căutare
Aplicația ii intoarce utilizatoru lui o listă cu rezultate ce corespund criteriilor de
căutare. Un rezultat este alcătuit din informații precum numele hotelului, prețul de la care
pleacă o cameră, locația exactă a hotelului cat si detalii despre facilitățile camerei si ale
hotelului , confo rm figurii 1.2 .
5
Fig. 1.2 Listă cu rezultate căutare
Inainte sau dupa intoarcerea listei cu rezultate utilizatorul poate introduce o serie
de criterii de că utare precum pretul minim si/sau maxim, numă rul de stele al hotelului,
tipul de cameră , conform figurii 1.3 . In urma selectării camerei dorite si confirmării , plata
se retrage automat de pe cardul ale cărui date au fost introduse in timpul procesului de
înregistrare sau, in unele cazuri, proprietatea ce oferă camera spre rezervare permite plată
la proprietate.
Fig. 1.3. Adăugare criterii căutare
Fiecare unitate de cazare poate oferii spre inchiriere mai multe camere care
să corespunda cu criteriile introduse de utilizator dar in lista cu rezultate va aparea doar cel
cu prețul cel mai mic, a stfel, pentru a putea vedea si celelalte oferte ale unității de cazare
6 va trebui sa intrăm pe camera ce apare in lista de rezultate si să le cautăm si pe celelalte,
conform figurii 1.4 .
Fig. 1. 4 Celelalte camere ale unității
Pe lănga inchirierea c amerelor, Booking permite si rezervarea transportului de la
aeroport la unitatea de cazare.
Airbnb este a doua soluție ce tratează problema rezervării de camere. Diferența
intre această soluție si anterioară este că cea din urmă oferă spre inchiriere, nu in totalitate
dar in mare măsură, camere ce aparțin de hoteluri sau pensiuni pe cand Airbnb oferă spre
inchiriere camere din apartamente, case sau chiar intregul apartament sau intreaga casă ce
aparțin unei persoane fizice ce doreste să adauge u n venit in bugetul personal prin punerea
bunului propriu la dispoziția altora.
Această soluție oferă posibilitatea utilizării atat prin intermediul unui site web dar si
a unei aplicatii mobile, pentru Android si iOS. Pentru a putea beneficia de cele oferite de
Airbn b este necesară înregistrarea. Legarea contului cu un card bancar de pe care se vor
retrage sumele aferente plăților este obligatorie.
Utilizarea aplicației este simplă, prima etapa necesară unei rezervări este
introducer ea orașului, conform figurii 1.5 .
7
Fig. 1.5 Introducerea orașului
In urma introducerii, aplicația va căuta in baza de date cu unități de cazare si le va
returna pe acelea care corespund criteriului de cautare, mai exact al orașului introdus. Un
rezultat va veni insoțit de o imagine c u camera, numele unității un și un rating, conform
figurii 1.6 .
Fig. 1.6 Rezultatele căutării
8 Pentru a facilita o căutare mai usoară este posibilă adăugare ce noi criterii
de căutare care să reducă numărul de rezultate si să le pastreze doar pe cele care se apropie
de preferințele utilizatorului, conform figurii 1. 7 .
Fig. 1.7 Criterii de filtrare
Informațiile suplimentare precum numărul de paturi, băi dar si o scurtă
descriere se regăsesc in ecranul de vizualizare al unui singur rezultat, conf orm figurii 1.8 .
9
Fig. 1.8 Detaliile unei singure camere
Detaliile legate de preț se regăsesc alături de perioadele in care camera este
disponibilă pentru a fi rezervată, conform figurii 1.9 .
Fig. 1.9 Pret si date disponibile
10 2.Tehnologii folosit e
2.1 Java
Java este un limbaj de programare orien tat obiect, foarte popular si utilizat,
dezvoltat de Sun Microsystems in anul 1991 , destinat dezvoltarii de solutii software pentru
dispozitivele electronice. Dezvoltare acestui limbaj a avut la baza nea junsurile limbajelor C
si C++ care aveau probleme in ceea ce priveste fiabilitate si portabilitatea. Java a pornit de
la versiunea 1, in prezent se dezvolta versiunea 13.
Caracteristicile care fac ca limbajul Java sa fie atat de popular si de folosit sun t [1] :
Este un limbaj atat interpretat cat si compilat, este primul limbaj care a adus aceasta
caracteristica, toate celelalte limbaje erau fie interpretate fie compilate .
Este un limbaj portabil, ce poate rula pe orice sistem de operare, fiind independen t
de platforma .
Este un limbaj orientat obiect si vine cu un set de clase ale caror functionalita pot fi
folosite si de catre programatori prin mostenire.
Este robus t si sigur, nu lasa probleme legate de tipuri de date sa treaca de faza de
run-time elimina nd riscul de alterare al sistemului.
De cele mai multe ori isi curata singur memoria de variabilele nefolosite,
programatorul nu mai are grija de a dealoca orice variabila pe care nu o mai
foloseste pentru a nu incarca memoria.
Este distribuit, poate acces a resurse atat de pe internat cat si din sistemul local
Are o sintaxa de scriere foarte usoara, eliminand codul redundant, pointerii,
suprascrierea operatorilor si mostenirea multipla.
Suporta multithreading putand rula mai multe taskuri simultan
Este un limbaj de inalta performanta
Este un limbaj scalabil
Fig. 2.1 .1 Features of java 1
1 https://www.codejava.net/java -core/features -of-the-java-programming -language
11 2.2 Spring framework
Spring Framework este o platforma java ce faciliteaza crearea de aplicatii
enterprise folosind doar obiecte Java. Spring se concentreaza pe arhite ctura in timp ce tu te
concentrezi pe aplicatie [2].
Spring Framework este considerat o colectie de sub-frameworkuri.
Cele mai importante caracteristici ale frameworkului sunt [3]:
Containerul IoC: Furnizeaza referinta unei clase la runtime. Contine co d assembler
ce faciliteaza managementul configuratiei in ceea ce priveste obictele aplicatiei.
Fig. 2.2.1 IoC Container 2
Accesul la date: Furnizeaza dezvoltatorilor, cu ajutorul api -uri de persistenta
precum JDBC si Hibernate, o modalite de a persista date intr -o baza de date. Ii
scoteste pe dezvoltatori de probleme ce apar la conectarea cu o baza de date,
probleme precum pierderea conexiunii, deschiderea de mai multe conexiuni sau
uitarea unei conexiune deschise.
2 https://dzone.com/articles/springs -bean -container
12 Arhitectura Model -View -Controller3: Permite crearea de aplicatii WEB bazate pe
arhitectura MVC in care toate cererile trec mai intai prin controller, iar apoi sunt
expediate catre paginile JSP corespunzatoare.
Fig. 2.2. 2 Arhitectura MVC 4
Managementul tranzactiilor: Ajuta la manipularea tr anzactiilor fara a afecta codul.
Se realizeaza cu ajutorul JTA5.
Spring Web Service: Genereaza endpointuri bazanduse pe clasele Java.
Nivelul abstract JDBC: Ajuta utilizatorii sa trateze erorile cu baza de date intr -o
maniera usoara si eficienta.
Contextul pentru teste: Faciliteaza scrierea de teste unitare si de de integrare
punand la dispozitie intregul context al aplicatiei.
Arhitectura Spring Framework se bazeaza pe module [4] :
3 https://en.wikipedia.org/wiki/Model%E2%80%93view%E2% 80%93controller
4 https://www.tutorialsteacher.com/mvc/mvc -architecture
5 https://en.wikipedia.org/wiki/Java_Transactio n_API
13
Fig. 2.2.3 Module Spring6
Modulul Core este modulul principal al Fram eworkul, este ce care ofera containerul
IoC. In cadrul acestui modul intalnim doua implementari ale conainerului IoC,
prima implementare este Bean Factory iar a doua Application Context. Bean
Factory es te implementarea care ajuta la decuplarea specificatiilor de logica
programului. Bean Factory este responsabila de instantierea obiectelor .
Modulul AOP este similar cu OOP prin faptul ca permite spargerea aplicatiei in
aspecte prin adnotarea claselor cu @A spect. Aceste aspecte ajuta la managamentul
tranzactiilor, logarea erorilor si monitorizarea aplicatiei.
Modulul ORM este responsabil pentru accesul la datele persistate intr -o baza de
date. Ofera api -uri pentru manipularea bazelor de date cu ajutorul fram eworkurilor
de genul JDO, Hibernate. Modulul ORM ofera suport pentru DAO7 ceea ce
faciliteaza create de interfete simple, transparente in tratarea erorilor, sigura in
lucrul cu threaduri, pentru persistarea datelor.
6 https://docs.spring.io/spring -framework/docs/3.0.0.RC3/spring -framework -reference/html/ch01s02.html
7 https://en.wikipedia.org/wiki/Data_access_object
14 Modulul web MVC impleme nteaza arhitectur a MVC si separa codul pentru model
de componentele aplicatiei WEB. In arhitectura MVC, atunci cand se trimite o
cerere din browser, primul loc unde va ajunge aceasta este in DispatcherServlet
care o va trimite catre controlerul corespunzator utilizand un t abel cu mapari ale
handlerelor. Controlerul in care a ajuns cererea va extrage si procesa date din
aceasta , va genera un raspuns pe care il va trimite inapoi catre DispatcherServlet
care, utilizanduse de un rezolveri pentru viewuri, va afisa raspunsul cel ui care a
trimis cererea.
Modulul Web Flow este o extensie a modulului web MVC si se ocupa cu generarea
de fisier XML sau clase Java ce faciliteaza flowul de lucru intre paginile unei
aplicatii web.
Modulul Web DAO ofera suport DAO folosinduse de tehnologi i precum JDBC,
Hibernate sau JDO. Acest model ofera o abstractizare JDBC ce elimina necesitea
de scriere de cod pentru interactiunea cu baza de date. Exista implementari ale
modulului DAO pentru fiecare tehnologie de acces la date suportata de Spring
Frame work.
Modulul Context este bazat pe modului Core si ofera functionalitatea de
comunicare prin mesaje in cadrul aplicatiei.
2.3 Spring Boot
Spring Boot reprezinta o extensie a frameworkului Spring ce elimina necesitatea
configurarii manuale a aplicatiei [5]. Daca pentru Spring framework erau necesarea create
de clase si de fisiere pentru configuratia aplicatia si pentru a inregistra beanurile, cu
ajutorul Spring Boot avem la indemana module starter precum web, jpa, security etc ce ne
scapa de necesitatea definirii manuale in clasa sau file. In cazul in care avem nevoie de
ceva in plus fata de ceea ce ofera modulul starter va trebui sa definim manual, dar, de
obicei, in modului starter este inclus cam tot ce avem nevoie pentru a pune in picioare un
microse rviciu. Spring Boot vine insotit si de un server incorporat Apache Tomcat ce ne
permite rularea aplicatiei in mediul local, fara a mai fi nevoie sa punem noi in picioare un
server pe care sa adaugam war -ul aplicatiei.
15 5.Concluzii și dezvoltări u lterioare
5.1 Concluzii generale
Dezvoltarea unei solutii luand ca referinta una deja existenta usureaza munca
dezvoltatorilor.
Cum tehnologia evoluaza intr -un ritmul accelerat si apar cat mai multe aplicatii ce
tintesc un anumite domeniu, cea care fac atrage cat mai mult atentia publicului este cea
care va aduce ceva noi in prim plan, ceva ce celelalte aplicatii nu au introdus inca. In cazul
meu, am decis ca posibilitatea unei recenzii specifice unei camere anume cat si
posibilitatea inchirierii une i anumite camere, dupa numarul acesteia, va scuti utilizatorii de
grija cum ca unitatea de cazare arata publicului doar camerele bune si le ascunde pe cele
mai putin bune.
5.2 Dezvoltari ulterioare
Imbunatatirile continue sunt ceea ce fac ca un solutie software sau hardware , sa
ramana in atentia utilizatorilor. In ceea ce priveste aplicatia dezvoltata de mine exista
cateva puncte care ar trebui atinse intr -o dezvoltare ulterioara.
Avand in vedere ca orice aplicatie va avea la inceput un numar mic de u tilizatori
anumite imbunatatiri ar fi crescut mult prea mult timpul necesar dezvoltarii cat si, in cazul
in care aplicatia ar fi fost facuta de o firma privat a, costul necesar dezvoltarii .
Imbunatarile despre care voi vorbi in continuare tin atat de arhi tectura aplicatiei ,
dezvoltarea unei solutii web, a unei solutii pentru dispozitivele cu sistem de operare iOS
cat si de adaugarea de noi functionalitati. In continuare voi prezenta pe scurt ce ar trebui
facut in continuare pentru aplicatie:
– Arhitectura: Arhitectura aplicatiei backend ar trebui sa treaca de la una
monolith la una bazata pe microservicii. Acest lucru ar usura scalarea,
posiblitatea introducerii unui load balancer ar deveni simpla si utila. O aplicatie
bazata pe microservicii nu este usor de realizat, mai intai va trebui sa ne gandim
cum sa spargem aplicatia in componente cat mai slab cuplate pentru a evita ca o
problema intr -un serviciu sa se propage si in celelalte.
– Solutie WEB: In prezent aplicatia ruleaza doar pe dispozitivele ce function eaza
pe sistemul de operare Android. Un site web dezvoltat in una dintre multele
tehnologii web prezente ar creste popularitatea cat si numar ul de utilizatori.
– Solutie iOS: Asemeni solutiei WEB, este necesara dezvoltarea unei aplicatii
pentru dispozitivele ce functioneaza pe sistemul de operare iOS.
– Noi functionalitati: Posibilitatea rezervarii unui mijloc de transport de la
aeroport, in cazul in care se calatoreste cu avionul, la hotel, dar si invers.
16 3. Bibliografie
[1] https://dzone.com/articles/java -tutorial -to-learn -java-programming
[2] https://docs.spring.io/ spring/docs/3.0.x/spring -framework –
reference/html/overview.html
[3] https://www.geeksforgeeks.org/introduction -to-spring -framework/
[4] https://docs.spring.io/spring -framework/docs/3.0.0.RC3/spring -framework –
reference/html/ch01s02.html
[5] https://ww w.baeldung.com/spring -vs-spring -boot
17 Anexa 1 – Listă figuri
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: Titlu lucrare (obligatoriu în limba română) Coordonator Absolvent Grad didactic, Mihnea Moisescu Cristian -Rareș Conea Anul absolvirii ( 2019) 2… [626981] (ID: 626981)
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.
