Sistem informatic pentru livr ări din supermarket la [619304]

Universitatea de Medicină, Farmacie,
Științe și Tehnologie din Târgu Mureș
Specializare: Informatică

LUCRARE
DE LICENȚĂ

Sistem informatic pentru livr ări din supermarket la
domiciliu

Îndrumător științific: Student: [anonimizat]

2019

2

3
UNIVERSITATEA DE MEDICINĂ, FARMACIE, ȘTIINȚE ȘI TEHNOLOGIE DIN TG. MUREȘ
LUCRARE DE LICENȚĂ
FACULTATEA DE ȘTIINȚE ȘI LITERE Candidat: [anonimizat]:
Programul de studii: Informati că Calin Ionuț Valentin
Anul absolvirii : 2019

Conducătorul științific : Viza facultății
Dr. ing. Barna Iantovics

a) Tema lucrării de licență/disertație :

Sistem informatic pentru livrări din supermarket la domiciliu

b) Problemele principale tratate :
– Studiu de fezabilitate
– Securitate
– Efectuarea plăților electronice
– Construirea unei arhitecturi scalabile.
– Implementarea soluției folosind tehnologii moderne.

c) Bibliografia recomandată :
[1]Dan Harkey – Client/Server Survival Guide, 3rd Edition – John Wiley & Sons, 1999
[2] William S. Vincent – Django for Beginners: Build websites with Python and Django – Amazon Digital
Services LLC, 2018

d) Termene obligatorii de consultații :
Săptămânale

e) Locul și durata practicii :
Laboratoarele A301/303. 4 săptămâni.

Primit tema la data de : Mai 2018

Termen de predare : Iunie 2019

Semnătura directorului de departament Semnătura conducătorului

Semnătura candidat: [anonimizat]

4

Cuprins
Capitolul 1 – Introducere ………………………………………….. ……..7
1.1 Descrierea problemei pe care o rezolv ă sistemul
informatic ………………………………………………… ……7
1.2 Motivația pentru care am ales această
temă …………………………. …………………………… ……..7
1.3 Descrierea felului în care platforma rezolvă
problema ………………………………………………….. ……9
1.4 Structura lucrării ……………………………………….. ……9
Capitolul 2 – Studiu de fezabilitate ………………………….. ………10
2.1 Piața internațională – aplicații similare / analiz a competiție / modele de
business …………………………………………………. …….10
2.2 Piața românească – aplicații similare / analiz a
competiție i…………………………………………………. …12
2.3 Piața mureseană – aplicații similare / analiz a
competiție i…………………………………………… ……….12
2.4 Poziționarea pe piata a sistemului ……………. ………13
2.5 Portretul clientului potențial ……………………. ………13
Capitolul 3 – Tehnologii folosite ……………………………….. …….14
3.1 Python …………………………………………………….. ……14
3.2 Server: Django ……………………………………….. ……..16
3.3 Client aplicatie mobila: Android ……………….. ……..18
3.4 Client web: html, css ………………………………… …….22
3.5 Bază de date : PostgreSQL ………………………….. ……22
3.6 Geolocatie: Google Maps …………………………… ……22
3.7 Procesator de plata: Stripe …………………………… …..23

5
Capitolul 4 – Scalabilitate sistemului informatic ……………. …..24
4.1 De ce este scalabilitatea asa de importantă în contextul acestui sistem?
……………………………………………………………………………… ……… 24
4.2 Cum poate scalabilitatea fi obținută? …………… …….24
Capitolul 5 – Proiectarea aplicației ……………………………. ……… 25
5.1 Cerințe le aplicației actuale ……………………….. ……… 25
5.2 User experience ……………………………………… ………. 25
5.3 Caracteristici ………………………………… …………. …….26
5.4 Arhitectura aplicației ………………………………………. 27
Capitolul 6 – Aspecte referitoare la securitatea sistemului
informatic ……………………………………………………………………….30
6.1 Securitate online ……………………………………. ………..30
6.2 Verificarea efectuării comenzii ………………… ……….30
Capitolul 7 – Studiul modalități lor de plată …………………. ……..32
7.1 Plata electronică …………………………………………. …..32
7.2 Descrierea procesului de plată …………………………. ..32
Capitolul 8 – Implementare a sistemului informatic propus ……33
8.1 Medii de lucru ……………………………………………… …33
8.2 Server ………………………………………………………….. ..34
8.3 Client Web …………………………………. …………….. …..35
8.4 Autentificare cu Facebook …………………………… …..40
8.5 Git ………………………………………………………….. …….41
8.6 Heroku ………………………………………………………. ….41

6
8.7 Postman ………………………………………………….. …….42
8.8 Client Android ……………………………………… ………..42
Capitolul 9 – Probleme non-software care pot ap ărea………….. 43
9.1 Probleme și soluții ………………………………………….. 43
Capitloul 10 – Deployment ……………………………………………… 44
10.1 Host ……………………………………………………………. 44
10.2 Google Play ……………………………………………….. ..44
Capitolul 11 – Modalități de raporta re a problemelor care pot apărea în utilizarea
sistemului …………………………………………………………………….. 45
11.1 Cum se poate face raportarea unei probleme ?….45
11.2 Tipuri de probleme care pot apărea ………………… 45
11.3 Sortarea problemelor ……………………………………. 46
Capitolul 12 – Concluzii ………………………………………………… .47

Bibliografie …………………………………………………. ………………48

7
Capitolul 1 – Introducere

1.1 Descrierea problemei pe care o rezolv ă sistemul informatic
Timpul a fost si va fi intotdeauna un capital deosebit de important. Acest sistem informatic vine
practic ca si raspuns la nevoia oamenilor de a castiga timp renuntand la necesitatea de a -si face
singuri cum părăturile din supermarket.
Platforma va juca practic rolul de intermediar i ntre persoanele care vor să dea la schimb un
capital, adica banii pentru a castiga un alt capital, timpul și vice -versa.
Acest sistem va fi intr -o măsură destul de mare asemănător cu alte aplicații care au ajuns in
Mainstream precum Uber Eats, singura diferență majoră este ca acesta va fi specializat pe
supermarket -uri și nu pe restaura nte.

1.2 Motivatia pentru care am ales aceasta tema
Principalele motive pentru care am ales sa dezvolt aceasta platforma sunt următoarele:
– cumpărăturile uzuale pe care le facem in general din magazine sunt un consumator mare
de timp
– sunt un proces repetitiv si plictisitor
– majoritatea mergem cel puțin o data pe săptămâna la supermarket

În continuare vă voi prezenta câteva studii care fac relevantă existența unui astfel de sistem.
1. Aproape 84% din români cumpără din supermarketuri, hypermarketuri, cash&carry și
magazine de discount – studiu (2015)

8

Figura 1. 1 Date statistice referitoare la felul in care își fac românii cumpărăturile (Sursa:
MagazinulProgresiv)

Figura 1. 2 Date statistice care ilustrează principalii factori la care românii sunt atenți
atunci când aleg supermarket -ul din care fac își fac cumpărăturile (Sursa:
MagazinulProgresiv)

Dupa cum se poate observa și în figura 1.1 pe locu l 3 ca și importanță în ceea ce priveste
alegerea locului de unde românii iși fac cumpărăturile , se află distanța față de locuință
deci în mod evident, cu toții incercam să reducem pe căt posibil timpul și
resursele(combustibil, energie) pe care le alocăm mersului la supermarket.

2. Studiu : Românii petrec aproape cinci ore zilnic pe internet. 95% dintre tinerii din mediul
urban utilizează internetul

9

1.3 Descrierea felului în care platforma rezvolă problema
Ideea aplica ției este aceea de a conecta persoanele care doresc sa li se livreze produsele din
magazine acasă cu cele care vor să câstige un venit suplimentar făcând aceste livrări.

Discutând in linii mai concrete, clientul își alege magazinul și produsele pe care le vrea , apoi
plasează comanda ; după ce comanda a fost plasată curierii fară comandă vor primi o notificare
prin care li se va atrage atenția că există comenzi noi iar cel care o va prelua cel mai repede o va
și livra.

Comenzile vor fi initial verificate în mod manual de un moderator și abia apoi vor putea fi
văzute de curieri. Motivul ține de prevenirea situațiilor in care clienții nu sunt serioși.

1.4 Structura lucrării
Capitolele 1 si 2 – prezintă scopul, tema lucrării și fezabilitatea sistemului
Capitolul 3 – evidențiază tehnologiile folosite în construirea sistemului
Capitolele 4, 5, 6, 7 – surprind elementele de design ale sistemului
Capitolul 8 – conține elemente de implementare ale aplicației
Capitolul 9 – exemplifică principalele p robleme non -software care pot apărea
Capitolul 10 – scoate în evidență opțiunele pentru hosting
Capitolul 11 – prezintă modalitățile principale de raportare a neregulilor
Capitolul 12 – este preprezentat de concluzii

10
Capitolul 2 – Studiu de fezabilitate
2.1 Piața internațională – aplicații similare / analiză competiție / modele de business
Pe plan internațional acest tip de business se afla undeva între stadiul incipient și cel de
maturitate. Există deja o competiție destul de solidă. Bariera de intrare este destul de ridicată.
Șansa de reușită a unui astfel de produs pe plan internațional este destul de mică fără un capital
destul de solid pentru promovare și co nstruirea unei infrastructuri informatice pe măsura.
Trendul de utilizare a unui astfel de serviciu este unul ascendent. În statele unite aproximativ
5.5% din totalul de cumpărături dintr -un supermarket se facea u printr -un serviciu de ,,online
grocery sho pping ” în vara lui 2018 . Din 2017 până în 2018, valoarea cumpărăturilor făcute
printr -un astfel de serviciu s -a mărit de la 28% la 46% din totalul de cumpărături făcute din
supermarket -uri.
Modele de business
În principiu există două tipuri de modele de business pentru acest tip de serviciu :
• sistemul joacă rolul de intermediar între clienți, supermarket -uri și curieri (1)
• sistemul de livrări este deținut de un retailer(2)

Avantajele si dezavantajele primului tip de model de business
Avantaje:
– diversitate produselor care se pot livra este mai mare pentru că livrează din mai multe
magazine
– la o comandă mare clienții pot opta pentru un astfel de serviciu pentru că pot găsi mai
usor cele mai bune oferte, fiindcă produsele din toate magazinele sunt puse la un loc
– se pot face livrări din mai multe locuri la o singură comandă
– curierii primesc rating deci felul in care se poartă cu clienții va fi important pentru ei
– clienții pot suna curierul și il pot ruga să mai cumpere ceva dacă au uitat să pună produsul
respectiv pe lista de cumpărături

11
Dezvantaje :
– livrarea comenzii dureaz ă mai mult
– costul de livrare este mai mare
Avantajele si dezavantajele celui de al doilea model de business
Avantaje:
– livrare mai rapid ă
– durata livrării se poate estima mult mai exact
– prețul produselor se cunoaște cu exactitate
– costul livrării este mai mic
Dezavantaje:
– curierii nu primesc rating
– clien ții nu pot suna curierul în cazul în care au uitat să treacă un produs pe lista de
cumpărături
– diversitatea produselor este mai mică
Cei mai mari jucători de pe plan internațional care au aplicații cu caracter similar sunt următorii:
• Instacart
• Shipt
• Tesco
• Glovo
• Amazon Grocery
• Amazon Fresh
• DoorDash
• FoodPanda
• UberEats
• SnappFood
• Deliveroo

12
Majoritatea jucătorilor de pe piață au mii de angajati și au raportat cifre de afaceri de miliarde de
dolari. Un lucru important de menționat este că deși cifrele de afaceri sunt mari profitul este în
general destul de mic. Este un business din care se câstiga putin de la multe comenzi.
Instacart și Amazon sunt cei mai mari jucători din SUA. Complexitatea unui astfel de sistem nu
stă neaparat în complexitatea aplicației propriu -zise ci mai mult în managementul datelor și
scalabilitatea acesteia. Câstigurile cu un astfel de sistem vin din vol umul comenzilor deci
scalabilitatea e un must -have.
Pe piața din Europa se remarcă Glovo și FoodPanda. O particularitate în ceea ce privește cele
două companii este că în genere, livrările la ei se fac cu bicicleta – așadar nu sunt chiar așa de
potriviți pentru a face livrări din supermarket -uri.

2.2 Piața românească – aplicații similare / analiză competiție
Piața românească este incă foarte tânără în ceea ce privește serviciile de acest tip. Principalele
orașe unde există servicii de online grocery deli very sunt: București, Cluj și Iași.
Jucători cei mai mari sunt: Glovo, Bringo(cumpărat de Carrefour), Mega Image și Cora. În
general cumpărătorii sunt multumiți de aceste servicii.
Atunci când exista, m otive le cele mai des întâlnite de nemultumire pe piata românească țin de
livrarea lentă și de faptul că în unele situații produsele perisabile ajung stricate la client.
Orașul unde acest serviciu este cel mai cunoscut și folosit este București.

2.3 Piața mureseană – aplicații similar e / analiză competiție
Piața mureșeană este relativ neexploatată. Principala companie care face astfel de livrări este
Corallia iar pe lângă aceasta mai există câteva persoane fizice care își fac promovare prin
paginile de facebook la care poți suna și cân d sunt la magazin le spui ce anume dorești să iți
cumpere. Problema principală este ca procesul este destul de lent și complicat.
Dezavantajele principale ale celor de la Coralia țin de diversitatea relativ scăzută a produselor
față de retailerii mari din oraș și de preturile pentru produse destul de ridicate.

13
Avantajul lor principal e că pot livra relativ repede.

2.4 Poziționarea pe piață a sistemului
Acest sistem informatic este gândit doar pentru a face livrări din supermarket la domiciliu, iar
motivul principal este că e mai simplu să mergi pe o singură direcție decât în mai multe. Glovo
face livrări și din fast food -uri și din altfel de magazine iar pe partea de supermarket -uri trebuie
să te întelegi cu livratorul la telefon.
Dezvantajul princi pal al celorlalți mari retaileri precum Carrefour sau Mega Image țin de faptul
că serviciile lor nu există decât in București, restul cererii din țară fiind neacoperită.
Avantajele principale ale sistemului meu sunt următoarele:
– se pot face comenzi din ma i multe supermarket -uri
– diversitatea produselor este mai mare
– curierii primesc un rating, ceea ce va ține standardul de calitate al livrărilor mai sus
– tariful este dinamic și în funcție de mărimea comenzii se stabilește și comisionul
2.5 Profilul clientul ui potențial
În general acest sistem este gândit pentru două tipuri de clienți destul de diferiți:
– cu venituri mari si pu țin timp liber care cumpără relativ la impuls
– cu venituri medii/mari dar pragmatici, care își fac cumpărăturile în mod regulat – în
general cumpără cam aceleași produse

14
Capitolul 3 – Tehnologii folosite
În momentul în care ne apucăm de construirea unui proiect informatic tehnologiile pe care le
folosim joacă un rol deosebit de important. În scenariul prezent, aplicația pe care o construiesc
are două cerințe de design foarte importante și anume: scalabilitatea și securitatea , din acest
motiv am ales pentru construirea serverului, framework -ul Django .

3.1 Python
Este un limbaj de programare multi -scop. A aparut la inceputul anilor 90. Filozofia din
spatele acestui limbaj este aceea de a face codul usor de citit.

Figura 3.1 (Sursa: Edureka)

In figura 2.1 se pot observa câteva dintre subdomeniile informaticii în care acest limbaj
este utilizat. Unul dintre aceste subdomenii în care se remarca în mod special Python este
cel al analizei volumelor foarte mari de date și cel al inteligenței artificiale.
Python este folosit de companii precum: Google, NASA, IBM, NETFLIX.

15
Sintaxa limbajului este gandită în asa fel înc ât dacă ar fi să scriem același program in două
limbaje de programare diferite și unul dintre ele ar fi Python, acesta din urmă să aiba mai puține
linii de cod.

Figura 3.2 Ilustrează diferența în necesarul de linii de cod pentru un program similar între Java și
Python (Sursa: BeliSoft)

16
3.2 Server: DJANGO
Django este un framework pentru dezvoltare WEB care are la bază Python.
Câteva dintre avantajele acestui framework sunt:
– facilitează dezvoltarea rapida
– este foarte scalabil
– securitatea este tratată serios
– se poate folosi pentru tot felul de aplicații : de la CMS -uri pană la platforme pentru
calcule științific

Figura 3.3 (Sursa : Django)

17
Cum funcționeaza mai exact acest framework?
În primul rând va trebui să creăm structurile de date cu care vom lucra. Aceste
structuri de date le vom scrie in fisierul models.py . Pentru fiecare clasă scrisă în
models.py Django va crea în mod automat o tabelă iar pentru fiecare atribut al
unei clase din models.py va exista un atribut corespondent în tabela generată în
mod automat pentru clasă

Următorul element important din acest puzzle este reprezentat de fi șierul urls.py .
Aici vom scrie url -urile care se vor putea folosi de către clienții web.

În continuare avem fișierul views.py , aici este locul în care scriem funcțiile de care avem
nevoie în proiect.

views.py este de asemnea și locul de unde controlăm ce anume sa rendăm în clienților
conectați la server.

18

Când cineva accesează un url , Django returneaza un view corespondent url -ului
respectiv. View -ul proceseaza request -ul și interoghează baza de date dacă este
cazul, apoi afisează informația într -un template html.

3.3 Client aplicatie mobila: ANDROID
Este un sistem de operare bazat pe o versiune modificată a kernelul -ui Linux și a altor software –
uri open source. A fost gândit să functioneze cu precădere pe dispozitivele cu
touchscreen(telefoane,tablete).

Figura 2.4(Sursa : Business Insider)

19
Numai in anul 2018, au fost vandute aproximativ 1.56 miliarde de dispozitive mobile, 1.3
miliarde dintre acestea aveau ca și sistem de operare, Android.
Arhitectura sistemului de operare Android se poate vedea în Figura 2.5, aflata mai jos.

Figura 3.5(Sursa : Android)

20

Cele mai importante componente ale unei aplicații Android
Activitatea
– aceasta reprezintă o interfață pentru interacțiune cu utilizatorul, este oarecum similară cu
o pagină web
– o aplicație android poate avea oricâte activități
– aceste activități au un ciclu de viață care este independent de cel al procesului aplicației
– activitățile pot fi pornite atât din aplicația curentă cât și din alte aplicații dacă acestea
permit

Figura 3.6 Ilustrează ciclul de viată al unei activități (Sursa: Android)

21
Intent
– reprezintă o entit ate care este folosită pentru a descrie o anumită operațiune ce urmează
să fie executată
– are rolul de mesaj transmis către o altă componentă pentru anunța o nouă operațiune
– este asincron

Figura 3.7 Evidențiaza felul în care funcționeaza Intent -urile (Sursa: Android)

Service
– un task ce se execut ă în fundal, fără să existe vreo interacțiune cu utilizatorul
– este gestionat de o instanță a clasei Service

Content provider
– este un API care se foloseste pentru a manageria datele private ale aplicației
– este o soluție pentru controlul si partajarea transferului de date între aplicații

22
3.4 Client web: html, css, javascript
Html: se folose ște pentru construirea paginilor web pe care le putem afișa intr -un browser
CSS: il folosim pentru a creea stilul paginilor web
Javascript : rolul acestui limbaj este de a face paginile web interactive

Figura 3.6(Sursa: 1training)

3.5 Baza de date: PostgreSQL
Este un sistem de baze de date relaționale open -source. Versiunea inițiala a fost lansată în anul
1996.
Printre userii care folosesc PostgreSQL se numără : Reddit, Skype, Instagram, Yandex, Amazon
Redshift

3.6 Geolocatie: Google Maps API
Este un serviciu online specializat in cartografierea globului p ământesc. Cu ajutor ul acestui
serviciu putem calcula distanțele rutiere sau geografice între două puncte alese de pe hartă.

23
Acest lucru este foarte util in contextul acestui sistem informatic deoarece atât curierii cât și
clienții au nevoie de astfel de informații.

Figura 3.7(Sursa : Google)

3.7 Procesator de plata: Stripe
Stripe este o companie cu baz a în San Francisco care permite persoanelor fizice și companiilor să
trimiă și să primească bani prin intermediul internetului.

24
Capitolul 4 – Scalabilitate sistemului informatic
Scalabilitatea unui sistem informatic este reprezentată de capacitatea de a permite folosirea în
parametri optimi a unei platforme unui număr foarte mare de clienți conectați în mod simultan la
sistem. Acest aspect devin e relevant pentru aplicații precum Facebook, Instagram, Uber și mai
puțin pentru cele de tip științific sau în care numărul de utilizatori este foarte restrâns.

4.1 De ce este scalabilitatea asa de importantă în contextul acestui sistem?
Profitul tuturor serviciilor de acest tip din lume, vine din volumul comenzilor. Este imperativ
așadar ca sistemul să suporte un număr foarte mare de utilizatori simultan. Având in vedere că
produsul este dezvoltat pentru piata din România sistemul ar treb ui să suporte măcar un număr
de 500.000 de utilizatori conectati simultan.

4.2 Cum poate scalabilitatea fi obținută?
• Simplificarea sistemului informatic
• Renunțarea la caracteristicile care nu sunt cu adevărat importante (funcția de geolocație
ar putea fi de exemplu mai importantă pentru curier și mai puțin importantă pentru client)
• Scalare orizontală și nu verticală. Există o limită vis -a-vis de cât de mare poate un server
să fie, prin urmare în unele situații adăugarea unui al doilea server ar pu tea fi o idee bună
daca primul nu mai face față.
• Folosirea unor api -uri externe acolo unde este posibil.
• Folosirea resurselor device -urilor clienților conectați la server, de asemenea, acolo unde
este posibil.
• Folosirea cahce -urilor. În principiu, cahce -urile sunt rezultate stocate care ne pot ajuta să
nu mai folosim resursele de procesare iar si iar.
• Folosirea serviciilor Cloud pentru stocarea datelor

25
Capitolul 5 – Proiectarea aplicației
Proiectarea unei aplicații informatice joacă un rol cu un grad mare de importanță în dezvoltarea
acesteia. Acesta este stadiul in care se trasează în linii mari felul în care aplicația va funcționa și
care sunt cele mai importante aspecte privitoare la aplicație, ca de asemenea ce anume ar trebui
să se pri oritizeze și ce anume contează mai puțin. În unele proiecte ai nevoie de scalabilitate, în
altele de precizie de calcul, iar în altele de ambele. Este imperativ să se ia prima dată în
considerare pentru ce fel de problemă se construiește sistemul iar plecâ nd de acolo se vor lua
diferite decizii legate de felul în care va fi construită aplicația.

5.1 Cerințe le aplicației actuale
• Sistemul trebuie să aib ă un server la care să fie legată o bază de date
• Vor exista doi clienți: o aplica ție web pentru controlul p latformei și o aplicație mobilă
pentru clienți si curieri
• Va fi necesară implementarea unui serviciu de plăți online
• Trebuie să existe un sistem de rating atât pentru clienți cât si pentru curieri
• Sistemul trebuie să fie sigur din toate punctele de vedere, trebuie gasite soluții inclusiv
pentru scenariile unde se aplică metode de tip social engineering
• Tehnologia folosită trebuie să fie scalabilă pentru că felul în care ar câstiga această
aplicație bani ar fi bazat pe câstiguri mici la fiecare comand ă dar pe un volum mare de
comenzi

5.2 User experience
• Interfațetele cu care interacționează userii, indiferent dacă sunt manageri de magazine,
clienți sau curieri trebuie să fie intuitive și cât se poate de usor de folosit
• Felul in care se selecteaza cump ărăturile din aplica ție trebuie să fie intuitiv și natural
• Curierul trebuie s ă aibă acces rapid la informa ții esentiale în momentul in care face
cump ărăturile (ar trebui sa poat ă face swipe left si right intre comenzi diferite și swipe up
si down pentru a vedea lista de cump ărături cu poza + detaliile importante precum pre țul
și cantitatea care trebuie cump ărate + totalul de plata la final de lista)

26
• Clientii trebuie să poată comunica într-un mod flexibil cu curierii, după ce comanda a
fost pr eluată ar trebui să poată vedea numărul de telefon al persoanei care livrează si
vice-versa
• Dacă un livrator a sc ăzut sub 4 stele va primi o avertizare iar dac ă primeste o stea
cump ărătorul va fi sunat și va fi întrebat ce anume s -a întamplat – daca povest ea se repet ă
de doua ori intr -o sapt ămâna livratorul va fi blocat permanent

5.3 Caracteristici
• sistem de gestiune al comenzilor – comenzile trebuie să se poată adauga, vizualiza,
sterge, modifica și să rămână intr -o secțiune de istoric pentru eventuale nereguli
• sistem de gestiune al lanțurilor de magazine – administratorii de sistem trebuie să poată
adăuga, sterge și updata produse, precum și să poată vedea raporte vis -a-vis de produsele
cele mai bine vândute sau cele mai puțin vândute
• geoloca ție – curierii trebuie să poată vedea în timp real unde anume trebuie să livreze
produsele
• plată electronic ă – din motive de siguranță clienții vor putea achita contravaloarea
comenzilor doar prin intermediul unui astfel de plăți, după ce acești au achitat banii, suma
va fi transferată în contul curierilor numai dupa minim 7 ore, în așa fel încât să se poata
acționa în cazul unor nereguli
• sistem de raportare al neregurilor și a neconcordantelor – va fi reprezentat de o rețea
separată de computere fără acces direct la server
• sistem de rating – daca clienții doresc vor putea da un rating curierilor
• autentificare cu Facebook

27
5.4 Arhitectura aplicației

Figura 5.0 (Descrierea genereala a sistemului)

Sistemul va avea următoarele componente
Server:
– va asigura comunicarea între clienți și baza de date
– va face posibilă comunicare cu procesatorul de plată
– va oferi posibilitatea de comunicarea cu Google Maps și cu alte api -uri externe

28
Doi clienți :
– o aplicație web care va fi folosită pentru administrarea la nțurilor de magazine
– o aplicație mobilă care va fi folosită atât de cumpărători cât și de curieri

Figura 5.1 – Diagrama Use Case

29

Figura 5.2 (Diagrama de activitate)

30
Capitolul 6 – Aspecte referitoare la securitatea sistemului informatic
6.1 Securitate online
Sistemul trebuie construit după filozofia că “all the inputs are evil”

Mai jos sunt prezentate câteva atacuri relativ comune impreună cu soluțiile acestora
DDOS – pentru aceste tipuri de atacuri se v a folosi pe lăngă securitatea platformei Heroku un
serviciu de genul CloudFare care se va integra pe server cu Django
Man-in-the-middle – o soluție este reprezentată de folosirea unui protocol HTTPS pentru
encriptarea datelor
Brute -force -attack – aici există două solu ții:
1. autentificarea în doi pași
2. limitarea numărului de incercări pentru ca un user să se logheze cu opțiunea
de verificare a identității pentru recuperarea acessului către cont
Buffer Overflow – parolele vor trebui să respecte niste parametri pentru a trec e procesul de
validare , adică mai exact vor avea o limită superioară și una inferioară din punct de vedere al
numărului de caractere

Alte tipuri de atacuri sunt cele de tip social engineering prin care un user va incerca să trimită un
keylogger sau un alt tip de malware computerelor de pe rețeaua conectată la server în așa fel
încât cu un pic de răbdare să obțină accesul partial/total asupra sistemului.

Pentru prevenirea acestor tipuri de atacuri va exista o delimitare clară între rețeaua de la care se
permite accesarea serverului și cea de pe care se permite răspunderea la mail -uri. Inclusiv
computerele vor fi altele. În mod obligatoriu, pentru a se răspunde la mail -urile care conțin
fișiere atașate și nu numai, se vor folosi mașini virtuale de pe care nu se va permite decât să se
răspundă la mail -uri.

31

Alte măsuri de securitate :
– toate componentele software ale server -ului și clienților trebuie sa fie mereu actualizate la
ultima versiune.
– se va folosi principiul ,,celui mai mic priviligeiu”
– nu se va ac cepta să se folosească un cont cu acces la mai multe baze de date
– input -ul userilor se va valida doar dacă este in concordanță cu tipul de date acceptat
– se vor folosi filtre pentru stabilirea corectitudinii inputului
– mesajele de eroare ale server -ului nu vor fi trimise clienților, unii dintre ei ar putea profita
de o astfel de vulnerabilitate

6.2 Verificarea efectuării comenzii
Unii useri ar putea folosi aplicația ca și curieri cu scopuri mai puțin bune. Din acest motiv, în
momentul în care un user cu statut de curier va solicita plata i se va cere un email la care să
atașeze un bon cu produsele pe care le -a cumpărat + un clip de 10 secunde în care să filmeze
coșul cu produsele cumpărate.
În mod suplimentar – curierii nu vor putea folosi apl icația fără să aibă locația activată la t elefon.
Va exista în mod suplimentar un contor pentru distanța pe care acestia au parcurs -o și dacă la
finalizarea comenzii nu concordă cu distanța calculată de sistem, evident, intr -o limită anomalia
va fi raportat ă.

32
Capitolul 7 – Studiul modalităților de plată
Plata cu cardul a devenit una dintre cele mai răspândite modalități de plată, în anumite tări cum
ar fi cele Nordice, plata cu bani cash a devenit aproape o raritate. Un avantaj în contextul acestui
sistem informatic este că plata electronică facilitează și face posibilă existenta serviciului de
curierat din supermarket la domiciliu – fară un astfel de tip de plata acest tip de serviciu pur și
simplu nu ar mai fi avut cum să existe în forma gă ndită aici.

7.1 Plata electronică
Plata comenzilor se va putea realiza doar electronic. Aceasta modalitate de plată implică un “3th
party “, care va primi anumite request -uri din partea server -ului și va realiza plata în funcție de
aceste request -uri.
Din motive de sigruanță, după ce userul alege să dea o comandă acesta va fi redirecționat către
website -ul procesatorului de plată și doar de acolo va putea finaliza tranzacția. O modalitate prin
care userii își pot spori securitatea este prin tr-o cerere către banca de care aparțin pentru a li se
facilita plata în doi pași. Avantajul major este acela că până când nu își dau acceptul de pe un
dispozitiv mobil aflat la îndemnâna lor pentru finalizarea tranzacției plata nu se va putea realiza.
Această măsură de securitate suplimentară crește foarte mult nivelul de securitate pentru
tranzacțiile online. Sansele ca cineva să aibă acces atât la datele cardului cât și la dispozitivul
mobil sunt destul de scăzute.

7.2 Descrierea procesului de plată
După ce un cumpărător a ales ce anume vrea să cumpere și și -a finalizat plata, banii acestuia nu
vor intra direct în contul curierului. Practic, inițial curierul cumpără produsele din banii lui.
Va exista un timp de 7 ore de la finalizarea plății până când b anii vor trece din contul
cumpărătorului în cel al curierului. Motivul este acela că în situația în care apar nereguli
neintenționate sau intenționate acestea să se poată rezolva corespunzător fără ca vreo parte
implicată pe această platformă să iasă în pi erdere dacă nu a greșit cu nimic.

33
Capitolul 8 – Implementarea sistemului informatic propus
8.1 Medii de lucru
Pentru construirea server -ului s -a folosit un mediu virtual în care s -au adăugat toate pachetele,
framework -urile si librăriile necesare dezvolt ării.

Figura 8.0
Motivul pentru care am folosit un mediu virtual este acela că pot stabili mult mai usor ce
versiune de python să ruleze, de ce pachete am nevoie strict pentru un anumit proiect iar în cazul
în care apar conflicte între versiuni sau erori foarte greu de depanat e mult mai simplu de creat un
mediu virtual nou decât de reinstalat totul folosind setări globale .
De asemenea setările pentru un software de management al versiunilor se pot face tot dintr -un
astfel de mediu virt ual ca și deployment -ul pe host.

34
Figura 8.1
În figura 8.1 avem comanda cu care putem stabili versiunea de python utilizată pentru un anumit
mediu virtual . Acest lucru este deosebit de important în special dacă dezvoltăm și testăm o
aplicație iar versiunile framework -urilor si librăriilor cu care lucrăm trebuie să aibă o anumită
versiune ca să nu apară diferite conflicte.

Câteva dintre comenzile uzuale pe care le -am folosit în construirea server -ului au fo st:
– django -admin startproject [denumire] – cu ajutorul acestei comenzi putem construi un
server
– django -admin startapp [denumire] – cu aceast ă comandă putem construi o aplicație pe
care să o legăm la serve r
8.2 Server
După ce serverul și prima aplicație legată de server au fost create trebuie să o instalăm pentru a o
putea folosi. Instalarea se face prin declararea numelui aplicației în fisierul settings.py al
serverului la secțiunea installed apps .

Figura 8.2
Acum că serverul este creat și aplicațiile sunt instalate se pot folosi urm ătoarele comenzi :

35
– python manage.py runserver – pentru a rula serverul
– python manage.py createsuper user – pentru a crea un user cu drepturi depline asupra
serverului
După ce am pornit serverul cu ajutorul comenzii python manage.py runserver putem vedea toate
requesturile care se fac de către useri la acesta și nu numai la acesta.

8.3 Client Web
Pentru a putea folosi aplicațiile din proiect va trebui să declarăm url -urile acestora în f isierul
url.py al serverului și să importăm de asemenea toate pachetele de care avem nevoie.

Figura 8.3
Apoi putem scrie în fișierul views.py funcțiile de care avem nevoie în aplicație.

36

Figura 8.4
În fișierul models.py putem scrie clasele de care avem nevoie pe server. Django va creea în mod
automat un corespondent în baza de date pentru toate atributele.

Figura 8.5

37

Figura 8.6

Figura 8.7

38
Fișierul forms.py al unei aplicații Django este foarte util pentru clientul Web, aici putem practic
declara câmpurile pe care avem nevoie să le completăm

Figura 8.8

Figura 8.9

39
În figura 8.9 se poate vedea implementarea clasei UserFormEdit din figura 8.8 intr -un template.
În următoarele două figuri voi exemplific a faptul că template -urile aplicației web au fost gândite
pentru reducerea redundaței pe cât este posibil în așa fel încât să se scrie cât se poate de puțin
cod iar atunci când ceva trebuie modificat, schimbările să se poate face cât se poate de usor.

Figura 8.10

Figura 8.11

40
8.4 Autentificarea cu Facebook
Autentificarea cu ajutorul platformei Facebook se face prin intermediul unei librării cu funcții
speciale pentru Django.
Creearea unui cont si logarea se fac prin intermediul unui token de acces emis de pe platforma
Facebook(vezi figura 8.12), așadar userul nu este absolut deloc expus în afara contextului
aplicației unde folosește acest tip de autentificare, practic este aproape imposibil ca cineva să
obțina acces la pagina lui de Facebook chiar și da că obține acces asupra contului dintr -o aplicație
nesigură unde s -a permis autentificarea cu Facebook.
Acces token -ul pe care il emite platforma Facebook este valabil și poate fi folosit doar în
contextul aplicației pentru care s -a emis acesta.

Figura 8. 12

41
8.5 GIT
Este o platforma care ajută la controlul versiunii software -ului. Este un instrument deosebit de
folositor atât in stadiul de dezvoltare cât și în cele de testare și mentenanță pentru că este mult
mai ușor să afli ce anume s -a modificat și când anume.

Figura 8.13

Cu ajutorul comenzilor din figura de mai jos putem pune în mod automat pe Git schimbările din
ultima versiune pe care ne interesează să le facem în software -ul nostru.

Figura 8.14
8.6 Heroku
Heroku printre altele este un serviciu care oferă hosting gratis pentru testarea și dezvoltarea
aplicațiilor cu condiția să nu se depăsească anumite plafoane în ceea ce priveste nivelul de trafic
și capacitate de calcul utilizată.
Pentru a salva ultimele schimbări din ap licație pe host trebuie doar să folosim comanda: git push
heroku master iar pentru a porni aplicația de pe host: heroku open.
Un aspect foarte important vis -a-vis de folosirea acestui instrument este c ă deși în unele situații
url-urile din aplicațiile web care rulează în localhost funcționează ca și cum nu ar fi case –
sensitive pe Heroku sunt case -sensitive iar din păcate detectarea unei astfel de erori poate fi
greoaie.

42
8.7 Postman
Postman – este un serviciu cu ajutorul căruia poți trimite request -uri la server fără să ai construit
un client propriu -zis sau o anumită funcționalitate pe care ar urma s -o implementezi abia în
curând. Este o unealtă extraordinară pentru dezvoltarea și test area aplicațiilor.

Figura 8.15
8.8 Client Android
Conectarea la server se poate face doar punând server -ul live pe un Host dacă aplicația rulează de
pe un telefon și nu de pe un emulator.

Figura 8.16
Dezvoltarea aplicației mobile seamnănă aproape în totalitate cu cea a website -ului, singura
diferență ține de felul în care se construiește o aplicație web de una mobilă.

43
Capitolul 9 – Probleme non -software care pot apărea
Câteva dintre situațiile neplăcute care pot apărea nu sunt de natură software dar pot creea
probleme care să oprească buna fu ncționare a întregului angrenaj dacă nu sunt gândite soluții în
avans pentru ele.
Mai jos am scris câteva dintre aceste probleme și în mod respectiv soluțiile lor.
9.1 Probleme și soluții
Ce se int âmplă dacă livratorul nu gase ște în magazin toate produsele care erau trecute pe list ă?
a) livratorul sun ă clientul si cumpar ă un produs similar
b) clientul va face poza bonului fiscal cu tot ceea ce este pe el(inclusiv ora si data emiterii)
și iși va primi contravaloarea produselor comandate de pe site dar neg ăsite în magazin
înapoi pe card
Livratorul preia o comanda dar nu o onoreaz ă.
a) clientul minte – livratorul va fi sunat si va trebui s ă facă o poza bonului fiscal
b) livratorul minte – în lipsa dovezii de plat ă a bonului fiscal acesta nu i și va primi banii
înapoi

Produsele cumparate nu corespund.
Livratorul va fi bun de plat ă. Clientul își poate cere banii înapoi.

Livratorul a distrus o parte din produse in momentul livr ării.
Livratorul va fi bun de plat ă. Clientul își poate cere banii înapoi.

44
Capitloul 10 – Deployment
Alegerea locului în care se face deployment este un lucru care trebuie cântărit destul de bine
pentru că hostul trebuie să facă față traficului din punct de vedere al conexiunii și să poată oferi
de asemenea puterea de procesare n ecesară serverului.
10.1 Host
După finalizarea server -ului acesta a fost urcat impreună cu clientul web pe Heroku. Motivul
pentru care am ales această platformă este acela că cel puțin în stadiul de dezvoltare și testare al
aplicației această găzduire este complet gratuită. Plata se face doar în momentul în care traficul și
resursele consumate depășesc un anumit plafon.
În situația în care aplicația se folosește cu adevărat pentru uz comercial, Google Cloud ar putea fi
o variantă mai bună – pentru că pe lângă un pret mai mic oferă și alte servicii precum protecție
anti-DDOS gratuită.
10.2 Google Play
Pentru ca aplicația mobilă să poată fi folosită mai usor și/sau in scop comercial aceasta va trebui
să treacă prima dată de standardele de testare ale celor de la Google Play.
Înainte de a deveni posbilă aplicarea pentru o astfel de testare a aplicației va fi mai întâi necesară
plata unei sume de 25$ pentru a se facilita accesul pe platformă.
Urcarea aplicației mobile aici este foarte utilă din tre i motive evidente:
– e mult mai simplu s ă o instalezi pe telefoanele utilizatorilor
– este posibil ca Google să îți ofere trafic organic
– se poate folosi Google Ad Mob pentru generarea de venituri suplimentare din reclame

45
Capitolul 1 1 – Modalități de raportare a problemelor care pot apărea în
utilizarea sistemului
Numărul de probleme care pot apărea este destul de ridicat, acestea pot fi de diverse tipuri, unele
software altele non -software. În orice caz, trebuie să existe o modalitate de a le raporta pentru a
face sistemul sa funcționeze mai bine. Sistemul de raportare se va afla pe un computer și o rețea
diferită fată de server. Din motive de securitate toate mail -urile se vor deschide folosind o mașină
virtuală.
11.1 Cum se poate face r aportarea unei probleme?
Raportarea unei probleme se va face trimițând un email sau folosind butonul de raportare din
aplicație care va redirecționa userul direct către aplicația de email din telefon. Email -ul va fi
trimis către un adminsitrator dacă problema ține de o nefuncționalitate a platforme. Dacă
problema este în schimb una mai urgentă care implică plățile și sau userii va fi necesar ca la
email să fie atașate poze cu dovezile.

11.2 Tipuri de probleme care pot apărea
• Bug-uri negăsite ale platformei
• Aplicația nu funcționează corect pe un anumit tip de dispozitiv mobil
• Aplicația se încarcă anormal de greu
• Contul unui user a fost spart
• Au fost găsite breșe de securitate
• Userii nu se pot înregistra cu un API extern
• Probleme de plată – sistemul de plată nu funționează
• Probleme legate de comandă – aici intră situațiile în care un curier pretinde banii
pe o comandă pe care nu a livrat -o sau situațiile în care un client nu răspunde dar
și situațiile în care din oricare motiv un client refuză comanda
• Probleme legate de stocurile magazinelor
• Tentative de înselăciune

46

11.3 Sortarea problemelor
Sortarea neregurilor se va face în mod manual de către un operator cu acces la platformă.
Cu cât impactul/grativ tatea neregulii va fi mai mare cu atât va primi o prioritate mai mare și se
va incerca rezolvarea ei mai rapidă.

47
Capitolul 12 – Concluzii
Sistemul a fost realizat cu scopul de a crea un serviciu inovativ care să vină ca răspuns la cererea
încă neacoperită din România , pentru c ă piața este încă într -un stadiu foarte incipient aici .
Cu toate că ideea acestui proiect nu este una complexă, punerea ei în practică este pentru că,
aplica ția trebuie să fie scalabilă, plățile se pot realiza doar electronic iar securitatea trebuie să fie
luată cât se poate de în serios .
Pentru construirea unui sistem similar cu cel construit de mine Allib Rom SRL , a cheltuit
aproximativ 300.000 euro iar la proiect a lucrat o echipă intreagă de programatori.
În urma construirii acestui sistem am reușit să înteleg mult mai bine concepte precum design -ul
unui sistem informatic, scalabilitatea, felul în care trebuie să selectăm o tehnologie pentru un
anumit proiect și multe alte lucruri interesante și utile .
De asemenea aș putea să menționez faptul că mi -am imbunătățit cunoștințele în ceea ce priveste
programarea Web și cea a dispozitivelor mobile , cunoștințe pe care le consider destul de
valoroase în contextul actual.

48
Bibliografi e
[1] Python Documentation – https://docs.python.org/3/ (06.2019)
[2] William S. Vincent – Django for Beginners: Build websites with Python and Django –
Amazon Digital Services LLC , 2018
[3] Android Developers Documentation – https://developer.android.com/ (06.2019)
[4] Django Documentation – https://docs.djangoproject.com/en/2.2/ (06.2019)
[5] Jon Du ckett – Web Design with HTML, CSS, JavaScript and jQuery Set – Wiley , 2014
[6] Dan Harkey – Client/Server Survival Guide, 3rd Edition – John Wiley & Sons , 1999
[7] Ian F. Darwin – Android Cookbook: Problems and Solutions for Android Developers –
O'Reilly , 2017
[8] Google Maps API – https://developers.google.com/maps/documentation/ (06.2019)
[9] Stripe Documentation – https://stripe.com/docs (06.2019)
[10] Studiu despre comert 2015 – https://www.magazinulprogresiv.ro/articole/aproape -84-dintre –
romani -cumpara -din-supermarketuri -hypermarketuri -cashcarry -si-magazine -de

Similar Posts