Sunteți pe pagina 1din 34

Miezu Anca Theodora

Bucuresti 2018

Academia de Studii Economice Bucureşti


Facultatea de Cibernetică Statistică şi Informatică Economică

PROIECT PROIECTAREA SISTEMELOR


INFORMATICE

Student: Miezu Anca Theodora


Grupa: 1072
Seria: B

Bucureşti 2018
Miezu Anca Theodora
Bucuresti 2018

CUPRINS
1. Prezentarea sistemului informatic
1.1.Descrierea generală a sistemului informatic
1.2. Specificarea cerințelor
1.2.1. Diagrama generală și diagrame detaliate ale cazurilor de utilizare
1.2.2. Descrierea textuală a cazurilor de utilizare
2. Analiza sistemului informatic
2.1. Diagrame de activitate
2.2. Diagrama de clase
2.3. Diagrama de stare
2.4. Diagrame de interacțiune
2.5. Rafinarea diagramelor UML
2.6. Diagrame de procese și colaborare în BPMN
3. Proiectarea sistemului informatic
3.1. Diagrama de clase detaliată
3.2. Proiectarea bazei de date
3.3. Proiectarea interfețelor utilizator
3.4. Diagrama de componente
3.5. Diagrama de desfășurare
4. Implementarea sistemului informatic
4.1. Tehnologii utilizate în implementare
4.2. Prezentarea pe scurt a funcționalității sistemului

2
Miezu Anca Theodora
Bucuresti 2018

1. Prezentarea sistemului informatic


1.1. Descrierea generală a sistemului informatic

Se dorește realizarea unui sistem informatic pentru planificarea unei nunți, atât din
punct de vedere al bugetului și al costurilor generate de organizarea acestui eveniment, cât și
din punct de vedere al sarcinilor ce trebuie îndeplinite de miri și al listei de invitați. Ideea de
bază a acestui sistem informatic este de a reuni toate informațiile necesare unei nunți pentru a
facilita organizarea unui eveniment de o asemenea amploare.

Cerințele de bază pe care trebuie să le realizeze sistemul informatic sunt:

- realizarea unei liste ce cuprinde toate costurile aferente pregătirii evenimentului


pentru a ajuta utilizatorul să determine cele mai bune metode de a-și gestiona
bugetul;
- alcătuirea unei liste cu posibile locații pentru desfășurarea nunții și posibilitatea de
a alege locația favorită;
- alcătuirea listei de invitați și posibilitatea de a o modifica cu ușurință (adăugarea
sau ștergerea unui invitat, trimiterea invitațiilor și primirea răspunsului). În plus,
sistemul informatic va oferi un rezumat care va cuprinde numărul de invitați ce au
confirmat prezența la eveniment (împreună cu numărul aferent de însoțitori),
numărul de invitații trimise și numărul invitațiilor din listă ;
- urmărirea în același loc a tuturor obiectivelor ce trebuie îndeplinite prin
intermediul unei liste structurată pe 12 luni ce conține 60 de sarcini predefinite.
Cuplul trebuie să ia sarcinile pas cu pas în funcție de timpul rămas până la
eveniment pentru a evita omiterea unor detali;
- reducerea timpului consumat cu crearea listelor pe foi de hârtie sau în agende.

O altă funcționalitate esențială a sistemului informatic va fi aceea de a gestiona timpul


rămas până la eveniment într-un mod eficient și adaptat pentru fiecare utilizator. Astfel,
fiecare utilizator va avea un cont în sistem prin intermediul căruia va putea să își adapteze
planificatorul de nuntă în funcție de propriile nevoi și resurse. Obiectivul principal urmărit
prin introducerea acestui sistem informatic îl reprezintă asigurarea conducerii cu informații
reale și în timp util, necesare planificării unei nunți.

3
Miezu Anca Theodora
Bucuresti 2018

1.2. Specificarea cerințelor

După prezentarea generală a problemei și după stabilirea cerințelor esențiale ale


acestui sistem informatic, urmează reprezentarea funcționalităților sistemului informatic cu
ajutorul diagramei cazurilor de utilizare. Pe parcursul următoarelor două subcapitole se vor
prezenta diagramele de cazuri de utilizare alături de documentele de descriere succintă a
fiecărui caz de utilizare.

1.2.1. Diagrama generală și diagrame detaliate ale cazurilor de utilizare

Diagrama generală

Figura 1. Diagrama generală a cazurilor de utilizare

În figura 1 este prezentată diagrama principală a cazurilor de utilizare care descrie


modul în care un utilizator extern interacționează cu aplicația informatică (aplicația mobilă).

4
Miezu Anca Theodora
Bucuresti 2018

Această diagramă conturează principalele funcții ale sistemului, dar și principalul actor care
interacționează cu sistemul (utilizatorul aplicației mobile).

Diagrame detaliate ale cazurilor de utilizare

În această parte se face o descriere mai detaliată a unor cazuri de utilizare prezentate în
diagrama generală de mai sus. Astfel, în figura 2 este prezentată diagrama detaliată a cazului
de utilizare „Actualizează listă invitați”. În acest caz de utilizare sunt incluse operațiile ce se
pot efectua asupra invitațiilor.

Figura 2. Diagrama detaliată a cazului de utilizare „Actualizează listă invitați”

Diagrama detaliată a cazului de utilizare „Actualizează listă localuri” este prezentată în


figura de mai jos:

Figura 3: Diagrama detaliată a cazului de


utilizare „Actualizează listă localuri”

5
Miezu Anca Theodora
Bucuresti 2018

1.2.2. Descrierea textuală a cazurilor de utilizare

Descrierea textuală a cazului general de utilizare

Element al cazului de utilizare Descriere


Cod CU01
Stare Schiță
Scop Planificarea unei nunți
Nume Planificare nuntă
Actor principal Utilizator aplicație
Descriere Presupune gestionarea tuturor informațiilor necesare unei nunți pentru a
facilita organizarea unui eveniment de o asemenea amploare.
Utilizatorul are un telefon mobil cu sistemul de operare Android și are
Precondiții descărcată aplicația.
Aplicația trebuie să fie pornită
Nunta a fost planificată cu succes, iar utilizatorul are o nuntă așa cum
Postcondiții și-a dorit fără să uite niciun detaliu.
Utilizatorul se logodește și dorește să își planifice nunta cu ajutorul unei
Declanșator
aplicații mobile corespunzătoare
1. Utilizatorul se conectează [Curs alternativ A: Utilizatorul nu are
un cont] [Punct de extindere: CU04 Resetare parolă]
2. Utilizatorul actualizeză lista de invitați
3. Utilizatorul actualizează lista cu localuri
Flux de bază
4. Utilizatorul îndeplinește una sau mai multe sarcini
5. Utilizatorul actualizează lista de costuri aferente nunții
6. Utilizatorul acordă feedback
7. Nunta e planificată cu succes
A: 1. Utilizatorul furnizează informații privind nunta (buget, data nunții,
locație, număr invitați)
Fluxuri alternative 2. Se continuă scenariul cu punctul 2
Relații Se extinde prin CU04 Resetare parolă
Frecvența utilizării Foarte frecvent
Reguli ale afacerii Utilizatorul poate să schimbe parola accesând link-ul primit prin email
Tabel 1: Descrierea sub formă de șablon a cazului general de utilizare

6
Miezu Anca Theodora
Bucuresti 2018

Descrierea textuală a cazului de utilizare „Actualizare listă invitați”

Element al cazului de utilizare Descriere


Cod CU02
Stare Schiță
Scop Actualizarea listei cu persoanele ce vor fi prezente la nuntă
Nume Actualizare lista invitați
Actor principal Utilizator aplicație
Presupune gestionarea listei cu persoanele care vor fi prezente la
Descriere eveniment (au acceptat invitația) sau cu persoanele invitate dar care nu
au oferit încă un răspuns.
Utilizatorul are aplicația pornită și este logat în sistem
Precondiții Utilizatorul trebuie să se afle în modul de vizualizare: vizualizare listă
invitați
Lista de invitați a fost realizată și gestionată cu succes și utilizatorul are
Postcondiții o imagine clară asupra numărului de persoane și a listei de invitați ce
participă la eveniment
Declanșator Utilizatorul dorește să actualizeze lista de invitați
1. Utilizatorul adaugă un invitat furnizând informații despre numele
și numărul de însoțitori ai acestuia. [Curs alternativ A:
Utilizatorul nu cunoaște aceste informații]
2. Utilizatorul trimite invitație la eveniment
3. Utilizatorul primește răspuns și salvează acest răspuns
4. Utilizatorul sterge invitat
Flux de bază
5. Utilizatorul vizualizeaza raportul care va cuprinde numărul de
invitați ce au confirmat prezența la eveniment (împreună cu
numărul aferent de însoțitori), numărul de invitații trimise și
numărul invitațiilor din listă.
6. Utilizatorul are o imagine clară asupra persoanelor ce vor
participa la nuntă
Fluxuri alternative A: 1. Se încheie scenariul
Relații -
Frecvența utilizării Frecvent
Reguli ale afacerii -
Tabel 2: Descrierea sub formă de șablon a cazului de utilizare „Actualizare listă invitați”

7
Miezu Anca Theodora
Bucuresti 2018

Descrierea textuală a cazului de utilizare „Actualizare listă locații”

Element al cazului de utilizare Descriere


Cod CU03
Stare Schiță
Scop Actualizarea listei cu posibile locații pentru petrecerea aferente nunții
Nume Actualizare lista locații
Actor principal Utilizator aplicație
Presupune gestionarea listei cu posibile locații pentru realizarea nunții,
Descriere vizualizarea rapidă a detaliilor fiecărei locații și alegerea locației
localuri.
Utilizatorul are aplicația pornită și este logat în sistem
Precondiții Utilizatorul trebuie să se afle în modul de vizualizare: vizualizare listă
invitați
Lista cu locații pentru petrecerea corespunzătoare evenimentului a fost
Postcondiții realizată și gestionată cu succes și utilizatorul a ales locația favorită.

Declanșator Utilizatorul dorește să actualizeze lista cu locații

1. Utilizatorul adaugă un local/restaurant furnizând informații


despre datele de contact ale acestuia. [Curs alternativ A:
Utilizatorul nu cunoaște aceste informații]
Flux de bază 2. Utilizatorul alege localul favorit[Curs alternativ B: Utilizatorul
nu are nici un local favorit]
3. Utilizatorul are o listă cu locații pentru petrecerea de nuntă și cu
informațiile de contact ale acestora
A: 1. Se încheie scenariul
Fluxuri alternative B: 1. Se încheie scenariul
Relații -
Frecvența utilizării Frecvent
Reguli ale afacerii -
Tabel 3: Descrierea sub formă de șablon a cazului de utilizare „Actualizare listă localuri”

8
Miezu Anca Theodora
Bucuresti 2018

2. Analiza sistemului informatic


2.1. Diagrame de activitate
Diagrama de activitate pentru descrierea operațiilor efectuate asupra unui invitat

Figura 4: Diagrama de activitate pentru descrierea operațiilor efectuate asupra unui invitat

9
Miezu Anca Theodora
Bucuresti 2018

Diagrama de activitate pentru cazul de utilizare „Actualizare date eveniment”

Figura 5: Diagrama de activitate pentru cazul de utilizare „Actualizare date eveniment”

Diagrama de activitate pentru descrierea operațiilor efectuate asupra unei locații

Figura 6: Diagrama de
activitate pentru descrierea
operațiilor efectuate asupra
unei locații

10
Miezu Anca Theodora
Bucuresti 2018

2.2. Diagrama de clase

Class diagram este un tip de diagramă utilizată pentru descrierea structurii statice,
adică a claselor existente în cadrul sistemului informatic. Aplicația are, după cum se observă
și în figura de mai jos, 6 clase:

- Utilizator → prin obiectele acestei clase sunt accesate informațiile generale


referitoare la nuntă și prin intermediul ei se pot accesa celelalte clase;
- Feedback → prin intermediul acesteia se stochează feedback-urile oferite de
utilizatori;
- Invitat → cuprinde informații despre persoanele invitate la nuntă;
- Task → cuprinde sarcinile ce trebuie îndeplinite de către utilizator;
- Cost → această clasă cuprinde informații despre fiecare cost efectuat de utilizator
în perioada de planificare a nunții;
- Locatie → stochează informații despre posibile locații pentru organizarea petrecerii
nunții.

Între clasa Utilizator și celelalte clase există relații de asociere.

Figura 7: Diagrama de clase fără atribute și operații

11
Miezu Anca Theodora
Bucuresti 2018

2.3. Diagrame de stare

Diagramele de stare sunt utilizate pentru a specifica posibilele stări prin care poate trece
un obiect și modul în care se trece de la o stare la alta. Statechart Diagram reprezintă un al
mod de a vedea un flux ce poate fi modelat exclusiv prin Activity Diagram, realizată pentru a
exprima mai clar trecerile de la o stare la alta.

Diagrama de stare pentru descrierea operațiilor efectuate asupra unui invitat

Figura 8: Diagrama de stare pentru descrierea operațiilor efectuate asupra unui invitat

Diagrama de stare pentru descrierea operațiilor efectuate asupra unei locații

Figura 9: Diagrama
de stare pentru
descrierea
operațiilor efectuate
asupra unei locații

12
Miezu Anca Theodora
Bucuresti 2018

2.4. Diagrame de interacțiune

Există două tipuri de diagrame de interacțiune: diagrama de secvență si diagrama de


comunicare. Deoarece cele două diagrame de interacțiune sunt echivalente și pot fi convertite
din una în cealaltă fără a se pierde informații, în cadrul acestui subcapitol voi prezenta trei
diagrame de secvență.

Diagrama de secvență pentru descrierea scenariului „Adăugare local”

Diagrama de secvență prezentată în figura 10 detaliază scenariul „Adăugare local”. Actorul


implicat în acest proces este Utilizatorul aplicației mobile. Acesta furnizează informații despre local și
după ce sistemul aprobă informațiile primite se creează și se adaugă efectiv localul. În plus,
utilizatorul poate include localul la favorite dacă dorește.

Figura 10: Diagrama de secvență pentru detalierea scenariului „Adăugare local”

13
Miezu Anca Theodora
Bucuresti 2018

Diagrama de secvență pentru detalierea scenariului „Adăugare invitat”

Diagrama de secvență prezentată în figura de mai jos detaliază scenariul „Adăugare invitat”.
Actorul implicat în acest proces este Utilizatorul aplicației mobile. Acesta furnizează informații despre
invitat și după ce sistemul aprobă informațiile primite se creează și se adaugă în baza de date efectiv
invitatul. Pe lângă adăugare, utilizatorul trimite invitație, primește răspuns (dacă participă sau nu la
nuntă) și în cazul în care răspunsul este negativ se poate șterge invitatul din baza de date.

Figura 11: Diagrama de secvență pentru detalierea scenariului „Adăugare invitat”

14
Miezu Anca Theodora
Bucuresti 2018

Diagrama de secvență pentru detalierea scenariului „Actualizare date eveniment”

Diagrama de secvență prezentată în figura 12 detaliază scenariul „Actualizare date eveniment”.


Actorul implicat în acest proces este Utilizatorul aplicației mobile. Acesta furnizează informații despre
eveniment (noile informatii) și după ce sistemul aprobă informațiile primite se actualizează
informațiile despre eveniment.

Figura 12: Diagrama de secvență pentru detalierea scenariului „Actualizare date eveniment”

15
Miezu Anca Theodora
Bucuresti 2018

2.5. Rafinarea diagramelor UML

Rafinarea diagramei generale a cazurilor de utilizare

Figura 13. Diagrama generală rafinată a cazurilor de utilizare

Rafinarea diagramei de stare pentru descrierea operațiilor efectuate asupra unui invitat

Figura 14. Diagrama de stare rafinată pentru descrierea operațiilor efectuate asupra unui invitat

16
Miezu Anca Theodora
Bucuresti 2018

Rafinarea diagramei de stare pentru descrierea operațiilor efectuate asupra unui local

Figura 15. Diagrama de stare rafinată pentru descrierea operațiilor efectuate asupra unui local

2.6. Diagrame de procese și colaborare BPMN

Diagrama de proces pentru actualizare invitat

Figura 16. Diagrama de proces pentru actualizare invitat

17
Miezu Anca Theodora
Bucuresti 2018

Diagrama de colaborare pentru trimitere feedback

Figura 17. Diagrama de colaborare pentru trimitere feedback

18
Miezu Anca Theodora
Bucuresti 2018

3. Proiectarea sistemului informatic

3.1. Diagrama de clase detaliată

Diagrama de clase detaliată prezintă clasele împreună cu atributele și metodele


corespunzătoare acestora. Cu alte cuvinte, această diagramă detaliază descrierea și
comportamentul claselor care intră în componența sistemului informatic, pentru a facilita
înțelegerea funcționalității. Am construit diagrama de clase detaliată ( prezentată în figura de
mai sus) pornind de la diagrama de clase prezentată în figura 7, dar și de la diagramele de
secvență.

Figura 18: Diagrama de clase detaliată

19
Miezu Anca Theodora
Bucuresti 2018

3.2. Proiectarea bazei de date

În cadrul acestui subcapitol se realizează modelarea cerințelor privind datele pornind


de la rezultatele analizei cerințelor sistemului informatic. Această etapă presupune:

- identificarea entităților

Entitățile identificare în urma analizei cerințelor funcționale ale aplicației sunt: Utilizator,
Feedback, Invitat, Task, Cost, Locație. Entitățile Invitat, Task, Cost, Locație depind de
existența unor instanțe din cadrul entității „părinte”: Utilizator. Entitățile pot fi vizualizate și
în figura 19. Menționez faptul că entitațile independente sunt reprezentate printr-un
dreptunghi cu margini duble, iar entitățile dependente sunt reprezentate printr-un dreptunghi
cu margine simplă.

Figura 19: Entitățile modelului de date

- identificarea relațiilor (asocierilor) dintre entități

Pe parcusul acestui pas se stabilește modul în care interacționează entitățile între ele. O dată
identificată o legătură între două entități se stabilește cardinalitatea (unu-la-unu, unu-la-multi,
mulți-la-multi). Asocierile dintre entități identificate sunt următoarele:

 un utilizator poate să ofere un singur feedback, iar un feedback poate avea unul sau
mai mulți utilizatori;
 un utilizator poate să aibă unul sau mai mulți invitați, iar un invitat trebuie să aparțină
unui singur utilizator;

20
Miezu Anca Theodora
Bucuresti 2018

 un utilizator poate să aibă unul sau mai multe costuri, iar un cost trebuie să aparțină
unui singur utilizator;
 un utilizator poate să aibă unul sau mai multe localuri, iar un local trebuie să aparțină
unui singur utilizator;
 un utilizator poate să aibă una sau mai multe sarcini (task-uri), iar o sarcină trebuie să
aparțină unui singur utilizator.
- determinarea atributelor

Se descrie fiecare entitate în parte prin enumerarea atributelor sale. Aceste atribuie pe de o
parte servesc drept mijloace prin care aplicația informatică va transmite interogări către baza
de date, iar pe de altă parte servesc la interpretarea răspunsurilor întoarse de baza de date
pentru a extrage informația dorită, referitoare la o anumită entitate. Atributele entităților
identificate anterior sunt prezentate în figura 20. Menționez faptul că atributele care identifică
în mod unic instanța unei entități (atributele cheie) sunt marcate prin subliniere.

Figura 20: Atributele entităților

21
Miezu Anca Theodora
Bucuresti 2018

- realizarea schemei logice a bazei de date

Primul pas al transformării modelului Entitate-Asociere în model logic constă în transformare


entităților în tabele. Entitatea independentă va deveni tabelă independentă, adică cheile
primare nu vor conține chei externe. Entitățile dependente vor deveni tabele dependente care
vor conține în cheia primară și chei externe. Următorul pas constă în stabilirea cheilor externe.
În cazul prezentat predomină relațiile de tipul unu-la-mulți, iar cheia externă va aparține
tabelei situate pe „partea” de multiplicitate. În cele din urmă, atributele entităților prezentate
în figura 20 vor deveni câmpuri în tabelele corespunzătoare. În plus, se verifică modelul astfel
încât să se elimine redundanțele.

Modelul de date care stă la baza sistemului informațional este unul relațional, schema logică a
bazei de date putând fi observată în figura 21. Menționez faptul că această schemă a fost
generată utilizând Visual Paradigm, iar sistemul informatic lucreză cu 6 tabele care
gestionează între ele mai multe relații.

Figura 21: Schema logică a bazei de date

22
Miezu Anca Theodora
Bucuresti 2018

Tabela UTILIZATOR gestionează datele conturilor de utilizatori, iar cheia primară a


acesteia este formată din câmpul idUtilizator și câmpul idFeedback. Câmpul email trebuie să
fie unic, chiar dacă nu face parte din cheie. Câmpurile sex și sexPartener au lungimea de unu
deoarece va lua valorile „F” sau „M” în funcție de sexul corespunzător. Menționez faptul că
toate câmpurile tabelei sunt obligatorii.

Tabela FEEDBACK are rolul de a stoca toate părerile utilizatorilor în legătură cu


aplicația. Cheia primară a tabelei este câmpul idFeedback, acesta identificând în mod unic un
feedback. Este important de menționat faptul că un utilizator poate oferi un singur feedback.

Tabela INVITAT stochează date cu privire la persoanele invitate la nuntă iar cheia
primară a tabelei este formată din câmpul idUtilizator și câmpul idInvitat. Un utilizator poate
avea unul sau mai mulți invitați, între cele două tabele fiind o relație de „unu-la-mulți”.

Tabela COST are rolul de a stoca date cu privire la costurile aferente pregătirii nunții
iar cheia primară a tabelei este formată din câmpul idUtilizator și câmpul idCost. Câmpul
valoare este de tip double și are ca și valoare implicită valoarea 0. Un utilizator poate avea
unul sau mai multe costuri, între cele două tabele fiind o relație de „unu-la-mulți”.

Tabela TASK stochează informații cu privire la sarcinile ce trebuie îndeplinite pentru


planificarea nunții. Cheia primară a tabelei este formată din câmpul idUtilizator și câmpul
idTask, iar câmpul completat poate lua valorile true (a fost îndeplinită sarcina) sau false (nu a
fost îndeplinită sarcina). Și între tabela Task și tabela Utilizator există o relație de „unu-la-
mulți”.

Tabela LOCATIE are rolul de a stoca informații cu privire la posibile locații pentru
desfășurarea nunții. Existența unei instanțe a tabelei este determinată de existența unei
instanțe utilizator. Cheia primară a tabelei este formată din câmpul idLocație și câmpul
idUtilizator. Câmpul favorit poate lua valorile true (local favorit) sau false.

23
Miezu Anca Theodora
Bucuresti 2018

3.3. Proiectarea interfețelor utilizator

Proiectarea interfețelor utilizatorilor are ca scop identificarea și înțelegerea nevoilor


utilizatorilor finali. În figura 22 este prezentată o hartă a ecranelor aplicației mobile în cadrul
căreia se descrie fluxul aplicației. Menționez faptul că am proiectat această diagramă folosind
www.draw.io .

Figura 22: Diagrama interfețelor utilizator

24
Miezu Anca Theodora
Bucuresti 2018

3.4. Diagrama de componente

Componentele reprezintă module de cod și care în funcție de conținutul lor pot fi:
componente care conțin cod sursă, componente binare sau executabile. Rolul prezentării
componentelor este de a descrie componentele implementate de sistemul informatic, dar și
dependențele ce există între acestea și resursele alocate. Diagrama de componente conține
fișierele sistemului informatic în cadrul cărora se vor utiliza clasele aplicației. Sistemul
conceput are următoarele componente:

- biblioteci de sistem – au extensia .dll și sunt utilizate pentru a le include în diferite


programe sursă;
- program sursă – au extensia .java;
- program executabil – au extensia .exe.
Figura 23: Diagrama de componente

25
Miezu Anca Theodora
Bucuresti 2018

3.5. Diagrama de desfășurare

Diagrama de desfășurare prezintă structura sistemului în momentul execuției. Astfel,


după cum se observă și în figura de mai jos, sistemul informatic pentru planificarea unei nunți
conține elemente precum: serverul web, dispozitivul mobil cu sistemul de operare Android.

Figura 24: Diagrama de desfășurare

4. Implementarea sistemului informatic

4.1. Tehnologii utilizate în implementare

Pentru dezvoltarea sistemului informatic prezentat în cadrul acestui proiect au fost


utilizate următoarele tehnologii și unelte:

 sistemul de operare Android;


 limbajul de programare orientat-obiect Java
 Android Studio, mediul oficial de dezvoltare a aplicațiilor Android, bazat pe
IntelliJ IDEA;
 mediul Node.js care execută partea de server JavaScript;
 MySQL pentru dezvoltarea bazei de date relaționale;
 Protocolul de comunicare REST (Representational State Transfer).

Android este cel mai popular sistem de operare pentru dispozitivele mobile dezvoltat de
compania Google și deținut de Open Handset Alliance. Scopul celei din urmă constă în
accelerarea inovației în domeniul dispozitivelor mobile și în oferirea consumatorilor a unei

26
Miezu Anca Theodora
Bucuresti 2018

mai bune experiențe mobile, la un cost cât mai scăzut, iar Android este mijlocul prin care se
poate realiza acest obiectiv.

Sistemul de operare Android este bazat pe Linux și este folosit în primul rând pentru a
rula pe dispozitive mobile. Cu toate acestea, datorită caracteristicilor sale complexe acesta se
utilizează într-o gamă vastă de dispozitive electronice: televizoare inteligente, camere video,
ceasuri de mână inteligente, automatizări de uz casnic sau console pentru jocuri1. Android este
un sistem de operare independent din punct de vedere hardware și rulează pe diferite
dispozitive indiferent de furnizor, în comparație cu alte sisteme de operare cum ar fi iOS
(compatibil doar cu produsele Apple Inc.) sau Windows OS ( rulează doar pe Windows
Phone).

API-urile Android ( interfațe de programare a aplicațiilor) reprezintă un set complex de


servicii de sistem înglobate în fișiere intuitive, care oferă acces ușor la numeroase funcții, cum
ar fi locația, WiFi, media, camera foto. Important de menționat este faptul că toate
instrumentele necesare dezvoltării unei aplicații mobile Android sunt disponibile în mod
gratuit. Aplicația Android reprezintă o aplicație software mobilă dezvoltată pentru folosirea
pe dispozitive ce rulează pe platforma Google Android. O astfel de aplicație poate fi scrisă în
diverse limbaje de programare, iar aplicația de planificare a unei nunți este scrisă în limbajul
Java.

Sistemul de operare Android este dezvoltat în mod constant și fiecare versiune propusă
reprezintă un nivel de API. În plus, este un criteriu destul de important de care programatorii
trebuie să țină cont atunci când proiectează o aplicație mobilă android deoarece dacă o
aplicație este proiectată pentru ultimul nivel API, atunci aceasta nu va putea fi rulată pe
dispozitive ce rulează versiuni anterioare. Din acest motiv, este recomandat ca o aplicație
mobilă să fie proiectată pe o versiune de Android ce rulează pe majoritatea dispozitivelor
mobile. Pentru proiectarea aplicației „Wedding Planner” am utilizat versiunea KitKat (API
19) deoarece a fost una dintre cele mai răspândite versiune în rândul dispozitivelor ce rulează
pe această platformă în anul 2017 (21,9%)2.

Aplicația mobilă „Wedding Planner” este dezvoltată în limbajul de programare Java, iar
principalele avantaje folosirii acestui limbaj pentru dezvoltarea aplicațiilor Android sunt:

- este un limbaj orientat-obiect;


- Java este cel mai popular limbaj de programare în acest moment, fiind limbajul anului
în 2005 și 2015 conform studiilor efectuate de cei de la Tiobe3;
- portabilitate – datorită platformei Java Virtual Machine (JVM), Java poate rula pe
aproape toate sistemele, iar cum Android este un sistem de operare care poate rula pe
diferite platforme, inclusiv televizoare sau ceasuri inteligente, această caracteristică
devina una foarte importantă;

1
www.lifewire.com, 19.04.2018 <https://www.lifewire.com/what-is-google-android-1616887>
2
www.nascenia.com, 19.04.2018, <http://www.nascenia.com/android-vs-ios-a-comparison-of-the-platforms/>
3
www.tiobe.com , 19.04.2018, <https://www.tiobe.com/tiobe-index/java/ >

27
Miezu Anca Theodora
Bucuresti 2018

- scalabilitate – Java este un limbaj static și de aceea este mai rapid și mai ușor de
întreținut cu cât mai puține bug-uri. Mai mult, versiunile vechi funcționează perfect și
după lansarea unor versiuni noi. În acest sens, James Governor spunea că „ Atunci
când companiile cresc, ele devin magazine Java”4;
- existența unei comunități mari – cu ajutorul comunităților mari de pe Stack Overflow
și GitHub, dezvoltatorii găsesc ajutor la aproape orice problemă cu care ar putea să se
confrunte.

Există și variante de a dezvolta aplicații Android cu ajutorul altor limbaje, cum ar fi


Kotlin5, care susțin dezvoltarea completă sau aproape completă cu ajutorul limbajului de
programare C. Acest lucru este posibil cu ajutorul setului de instrumente Android NDK, care
permite dezvoltatorului să reutilizeze anumite biblioteci C sau C++. Cu toate acestea, Java
reprezintă, din anul 2017, cel mai eficient mod de a dezvolta aplicații Android.

XML (Extensible Markup Language) este un limbaj de programare folosit pentru


codificarea simplă a documentelor. Acesta conține un format foarte simplu, flexibil și scalabil
care poate fi citit atât de om, cât și de compilator. Este un format de date utilizat deobicei pe
Internet, însă resursele Android pre-procesează XML în format binar comprimat și îl
stochează pe dispozitiv. Cu ajutorul acestui limbaj, se poate defini într-un mod rapid și ușor
interfața cu utilizatorul. În Android Studio fiecare activitate are asociat un fișier .xml care
conține diferite elemente de interfață grafică, adică controale (componente vizuale) și
containere (definesc structura vizuală a interfeței utilizator).

JSON (JavaScript Object Notation) este un format de reprezentare și interschimb de date


între aplicații și are la bază limbajul JavaScript6.Obiectele în acest limbaj sunt reprezentate
prin acolade, iar vectorii de valori sunt reprezentați prin paranteze dreptunghiulare. Ca și în
cazul limbajului XML, JSON este un format ușor de citit și scris de către programator, dar și
ușor de parsat de către compilator.

Node.js reprezintă un mediu de rulare JavaScript, adică include toate uneltele necesare
pentru a executa un program scris în acest limbaj și este construit pe motorul V8 JavaScript de
la Chrome7. V8 este scris în C++ și compilează codul sursă JavaScript în codul mașinii native,
în loc să îl interpreteze în timp real. Acest mediu este folosit în primul rând pentru dezvoltarea
de aplicații în rețea folosind comunicația în timp real, necesară în toate punctele finale, fiind
recomandat mai ales pentru aplicațiile cu operații de intrare/ieșire.

Cu ajutorul Node.js, programatorii pot dezvolta servere scalabile, fără a utiliza fire de
execuție. Acesta utilizează un model simplificat bazat pe evenimente, care utilizează call-
back-uri pentru a aduce la cunoștință finalizarea unei anumite sarcini. Cu alte cuvinte, Node.js
îmbină ușurința utilizării unui limbaj de scripting cu puterea de programare a rețelei.

4
www.redmonk.com, 19.04.2018, <http://redmonk.com/jgovernor/2016/10/12/when-web-companies-grow-
up-they-turn-into-java-shops/>
5
www.kotlin.org, 19.04.2018, <https://kotlinlang.org/docs/reference/android-overview.html>
6
www.wikipedia.org, 20.04.2018, <https://ro.wikipedia.org/wiki/JSON>
7
www.nodejs.org, 20.04.2018, <https://nodejs.org/en/>

28
Miezu Anca Theodora
Bucuresti 2018

Platforma Node.js are preinstalat managerul de pachete npm, acesta ajutând la instalarea și
gestionarea diferitelor programe. Suportul npm are la bază un set de componente publice,
reutilizabile, disponibile prin instalarea ușoară într-un depozit online. Printre cele mai utile
module npm se numără:

- express (Express.js) – reprezintă un cadru de dezvoltare web dezvoltat de Sinatra


pentru Node.js și conține mecanisme precum: scrierea unor cereri HTTP la diferite căi
URL, stabilirea setărilor obișnuite pentru aplicații web ( de exemplu: setarea portului
utilizat pentru conectare), adăugarea de suport pentru cookie-uri, sesiuni folosind
middleware Express;
- hapi – un cadru modular, ușor de utilizat;
- socket.io și sockjs – componenta de server;
- forever – este cea mai comuna modalitate de verificare a faptului că un script rulează
continuu;
- MySQL – una dintre cele mai populare baze de date ( mai multe detalii despre acest
modul sunt prezentate în subcapitolul 3.1.5);
- connect – este un cadru extensibil al HTTP oferind o colecție de „plug-inuri” cu o
performanță ridicată cunoscută sub denumirea de middleware.

Cea mai bună modalitate de a gestiona pachetele npm instalate este reprezentată de
crearea unui fișier package.json. Un astfel de fișier afișează sub forma unei liste pachetele de
care depinde aplicația, permite specificarea versiunilor utilizate și face ca aplicația să fie
reproductibilă ( să poată fi împărtășită ușor cu alți programatori). Un package.json conține
metadate relevante pentru proiect și se ocupă de depedențele proiectului. Acest fișier este
situat, în mod obișnuit, în directorul rădăcină a proiectului Node.js și trebuie să conțină
obligatoriu câmpurile nume și versiune. Câmpul versiunii este utilizat pentru a se verifica că
versiunea corectă a pachetului este instalată. În general, are structura major.minor.patch, unde
major, minor, patch sunt numere întregi, care cresc odată cu fiecare lansare.

Este important de menționat faptul că Node.js nu a fost creat pentru operațiuni ce


utilizează intensiv unitatea centrală de procesare, ci a fost creat pentru operațiuni de
intrare/ieșire. O aplicație Node.js rulează într-un singur proces și funcționează asincron.

MySQL este cea mai populară bază de date open source din lume8, aceasta permițând
dezvoltarea eficientă de aplicații de baze de date bazate pe Web. MySQL prezintă următoarele
caracteristici:

- performanță ridicată și scalabilitate – astfel poate răspunde celor mai complexe cerințe
ale utilizatorilor;
- acces SQL și NoSQL pentru efectuarea unor interogări complexe, dar și unor operații
simple și rapide;
- redundanță minimă și controlată;
- prezintă o schemă de performanță pentru monitorizarea performanțelor utilizatorilor, a
aplicațiilor dar și a consumului de resurse;

8
www.oracle.com, 20.04.2018, <http://www.oracle.com/technetwork/database/mysql/index.html>

29
Miezu Anca Theodora
Bucuresti 2018

- permite dezvoltatorilor posibilitatea de a utiliza baza de date pe mai multe sisteme de


operare.

În cadrul implementării acestei aplicații am utilizat MySQL2 pentru crearea unei baze de
date relaționale, care este o continuare a proiectului MySQL nativ. Pe lângă caracteristicile
prezentate anterior, MySQL2 are și câteva caracteristici suplimentare, iar cele mai importante
sunt: performanță mai bună, conturi personalizate, comprimare, suport extins pentru
codificare. În plus, MySQL2 poate fi instalat pe Windows, Linux sau pe sistemul de operare
Mac fără nicio problemă, folosind comanda: npm install –save mysql2.

O bază de date relațională reprezintă un set de date organizat în tabele (relații) împreună
cu legăturile dintre acestea, având la bază modelul relațional propus de către IBM în anul
1969. Structura relațională a datelor prezintă următoarele elemente:

- domeniul – reprezintă ansamblul de valori caracterizat printr-o denumire;


- relația sau tabela – reprezintă un subansamplu al produsului cartezian al mai multor
domenii. Tabela are, de asemenea, un nume și conține tupluri cu semnificație. Este
important de precizat faptul că aceste tupluri trebuie să fie distincte;
- atributul – reprezintă modul cum sunt descrise entitățile, având drept scop tocmai
identificarea entității. Atributele pot fi: complexe, cu o singură valoare, derivate, cu set
de valori sau fără valoare;
- schema – este un tip de entitate compus din numele tipului de entitate, setul de atribuie
și cheile de restricție.

Restricțiile de integritate sunt structurale și comportamentale. Cele structurale sunt


reprezentate de restricția de unicitate a cheii (UNIQUE, PRYMARY KEY), restricția entității
( cheia primară nu poate avea niciodată valoarea NULL) și restricția referențială (FOREIGN
KEY), iar cele cele comportamentale sunt: restricția de domeniu (CHECK) și restricțiile
temporare.

30
Miezu Anca Theodora
Bucuresti 2018

4.2. Prezentarea pe scurt a funcționalității sistemului

La rularea aplicației „Wedding Planner” se deschide fereastra de înregistrare (figura


25), unde utilizatorul își va introduce informațiile pentru crearea unui cont. În cazul în care
acesta deține deja un cont, are posibilitatea de a se conecta apăsând butonul „Already
registered. Login me!” (vezi figura 26). Tot în cadrul acestei activități, utilizatorul poate să își
schimbe parola, apăsând butonul „ Forgot your password”.

Figura 25: Fereastra de înregistrare Figura 26: Fereastra de autentificare

În cazul în care utilizatorul tocmai și-a creat un cont, acesta trebuie să ofere informații
despre eveniment ( numărul de invitați, data nunții, bugetul alocat, orașul unde va avea loc
nunta). Fereastra este prezentată în figura 27.

Figura 27: Fereastra în cadrul căreia se oferă informații despre


eveniment

31
Miezu Anca Theodora
Bucuresti 2018

În urma realizării autentificării cu succes, se deschide activitatea principală (figura 28),


în cadrul căreia sunt afișate numărul de zile rămase până la marele eveniment și numele
mirilor. Utilizatorul poate accesa opțiunile din meniul principal (este prezentat în partea de jos
a activității), dar poate accesa și meniul de setări ( prezentată în partea dreapta sus).

Figura 28: Fereastra principală Figura 29: Fereastra Feedback

Meniul de setări permite utilizatorului posibilitatea


modificării informațiilor personale, dar și a informațiilor
referitoare la eveniment. În plus, tot în cadrul acestui meniu
prin intermediul ferestrei „Feedback”, utilizatorul poate să își
exprime părerea în legătura cu aplicația.

Meniul „Tasks” oferă acces la fereastra de sarcini ce


trebuie îndeplinite de cei doi miri (vezi figura 30). Aceste
sarcini sunt grupate în funcție de prioritatea lor, iar atunci
când este îndeplinită o sarcină utilizatorul trebuie doar să
bifeze respectiva sarcină.

Figura 30: Fereastra Tasks

32
Miezu Anca Theodora
Bucuresti 2018

Meniul „Guests” îî permite utilizatorului să vizualizeze lista de invitați împreună cu


detalii despre aceștia, dar și să actualizeze această listă prin adăugarea unui noi invitat, sau
prin actualizarea unui invitat deja existent. Lista inițială se va schimba pe măsură ce invitații
trimit confirmarea sau refuzul participării la eveniment. În cadrul fereastrei „Creare invitat”
(figura 31) se definește un nou invitat. Informațiile ce pot fi introduse sunt: nume, numărul
partenerilor, numărul de telefon și adresa de email a invitatului.

Figura 31: Fereastra Creare invitat Figura 32: Fereastra Actualizare invitat

Utilizatorul poate actualiza orice invitat prin intermediul ferestrei „Actualizare invitat”
(figura 32). Tot aici, utilizatorul poate șterge un invitat din listă.

În cadrul meniului „Costs” utilizatorul poate să vizualizeze lista de costuri (figura 33)
împreună cu detaliile aferente. În plus, în partea de jos a ferestrei utilizatorul poate vedea un
raport în care se prezintă câți bani din bugetul inițial au fost cheltuiți.

În cadrul fereastrei „Creare cost” (figura 34) se definește un nou cost. Informațiile ce
pot fi introduse sunt: nume, categoria din care face parte obiectul/produsul cumpărat și
valoarea acestuia.

33
Miezu Anca Theodora
Bucuresti 2018

Figura 33: Fereastra Lista costuri Figura 34: Fereastra Creare cost

Meniul „Venues” îî permite utilizatorului să


vizualizeze lista de localuri, dar și să actualizeze această
listă prin adăugarea unui local, sau prin actualizarea unui
local deja existent. Lista inițială se va schimba pe măsură
ce utilizatorul adauga localuri la favorite. În cadrul
fereastrei „Creare local” (figura 35) se definește un nou
local. Informațiile ce pot fi introduse sunt: nume local,
adresă, numărul de telefon și adresa de email. Utilizatorul
poate adăuga la favorite orice local prin intermediul
ferestrei „Actualizare local”.

Figura 35: Fereastra Creare local

34