Sunteți pe pagina 1din 33

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

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.

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

generală și diagrame detaliate ale cazurilor de utilizare Diagrama generală Figura 1. Diagrama generală a cazurilor

Diagrama generală

detaliate ale cazurilor de utilizare Diagrama generală Figura 1. Diagrama generală a cazurilor de utilizare În

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ă).

3

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

cu sistemul (utilizatorul aplicației mobile) . Diagrame detaliate ale cazurilor de utilizare În această

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.

opera ț iile ce se pot efectua asupra invitațiilor. Figura 2. Diagrama detaliată a cazului de

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:

listă localuri” este prezentată în figura de mai jos: Figura 3: Diagra ma detaliată a cazului

Figura 3: Diagrama detaliată a cazului de utilizare „Actualizează listă localuri”

4

1.2.2. Descrierea textuală a cazurilor de utilizare

1.2.2. Descrierea textuală a cazurilor de utilizare Descrierea textuală a cazului general de utilizare Element al

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.

Precondiții

Utilizatorul are un telefon mobil cu sistemul de operare Android și are descărcată aplicația. Aplicația trebuie să fie pornită

Postcondiții

Nunta a fost planificată cu succes, iar utilizatorul are o nuntă așa cum și-a dorit fără să uite niciun detaliu.

Declanșator

Utilizatorul se logodește și dorește să își planifice nunta cu ajutorul unei 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

Fluxuri alternative

A: 1. Utilizatorul furnizează informații privind nunta (buget, data nunții, locație, număr invitați) 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

5

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

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

Descriere

Presupune gestionarea listei cu persoanele care vor fi prezente la eveniment (au acceptat invitația) sau cu persoanele invitate dar care nu au oferit încă un răspuns.

Precondiții

Utilizatorul are aplicația pornită și este logat în sistem Utilizatorul trebuie să se afle în modul de vizualizare: vizualizare listă invitați

Postcondiții

Lista de invitați a fost realizată și gestionată cu succes și utilizatorul are 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”

6

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

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

Descriere

Presupune gestionarea listei cu posibile locații pentru realizarea nunții, vizualizarea rapidă a detaliilor fiecărei locații și alegerea locației localuri.

Precondiții

Utilizatorul are aplicația pornită și este logat în sistem Utilizatorul trebuie să se afle în modul de vizualizare: vizualizare listă invitați

Postcondiții

Lista cu locații pentru petrecerea corespunzătoare evenimentului a fost 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

Fluxuri alternative

A: 1. Se încheie scenariul 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

7

2. Analiza sistemului informatic 2.1. Diagrame de activitate Diagrama de activitate pentru descrierea operațiilor

2. Analiza sistemului informatic

2.1. Diagrame de activitate

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

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

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

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

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

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

Diagrama de activitate pentru descrierea operațiilor efectuate asupra unei locațiipentru cazul de utilizare „Actualizare date eveniment” Figura 6: Diagrama de activitate pentru descrierea

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

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

9

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.

Utilizator și celelalte clase există relații de asociere. Figura 7: Diagrama de clase fără atribute și

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

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 descrierea operațiilor efectuate asupra unui invitat

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

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 țiilor efectuate asupra unei locații

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

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

11

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ță.

acestui subcapitol voi prezenta trei diagrame de secvență. Diagrama de secvență pentru descrierea scenariului

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.

poate include localul la favorite dacă dorește. Figura 10: Diagrama de secvență pentru detalierea

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

Diagrama de secvență pentru detalierea scenariului „Adăugare invitat” Diagrama de secvență prezentată în figura

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.

este negativ se poate ș terge invitatul din baza de date. Figura 11 : Diagrama de

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

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

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.

primite se actualizează informațiile des pre eveniment. Figura 12: Diagrama de secvență pentru detalierea

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

2.5. Rafinarea diagramelor UML

Rafinarea diagramei generale a cazurilor de utilizare2.5. Rafinarea diagramelor UML Figura 13 . Diagrama generală rafinată a cazurilor de utilizare Rafinarea diagramei

UML Rafinarea diagramei generale a cazurilor de utilizare Figura 13 . Diagrama generală rafinată a cazurilor

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

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

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

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

15

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

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

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 invitatunui local 2.6. Diagrame de procese și colaborare BPMN Figura 16. Diagrama de proces pentru actualizare

colaborare BPMN Diagrama de proces pentru actualizare invitat Figura 16. Diagrama de proces pentru actualizare invitat

Figura 16. Diagrama de proces pentru actualizare invitat

Diagrama de colaborare pentru trimitere feedback Figura 17. Diagrama de colaborare pentru trimitere feedback 17

Diagrama de colaborare pentru trimitere feedback

Diagrama de colaborare pentru trimitere feedback Figura 17. Diagrama de colaborare pentru trimitere feedback 17

Figura 17. Diagrama de colaborare pentru trimitere feedback

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ță.

de clase prezentată în figura 7, dar și de la diagramele de secvență. Figura 18: Diagrama

Figura 18: Diagrama de clase detaliată

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ă.

sunt reprezentate printr -un dreptunghi cu margine simplă. Figura 19: Entitățile modelului de date - identificarea

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;

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.

unic instanța unei entități (atributele cheie) sunt marcate prin subliniere. Figura 20: Atributele entităților 20

Figura 20: Atributele entităților

- 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.

lucreză cu 6 tabele care gestionează între ele mai multe relații. Figura 21: Schema logică a

Figura 21: Schema logică a bazei de date

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.

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 .

faptul că am proiectat această diagramă folosind www.draw.io . Figura 22: Diagrama interfețelor utilizator 23

Figura 22: Diagrama interfețelor utilizator

23

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.

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

Figura 23: Diagrama de componente

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.

web, dispozitivul mobil cu sistemul de operare Android. Figura 24: Diagrama de desfășurare 4. Implementarea

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

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 jocuri 1 . 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 Tiobe 3 ;

- 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/ >

- 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 Kotlin 5 , 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 JavaScript 6 .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 Chrome 7 . 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/>

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 lume 8 , 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>

-

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.

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”.

parola, apăsând butonul „ Forgot your password”. Figura 25: Fereastra de înregistrare Figura 26: Fereastra

Figura 25: Fereastra de înregistrare

your password”. Figura 25: Fereastra de înregistrare Figura 26: Fereastra de autentificare În cazul în care

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.

avea loc nunta). Fereastra este prezentată în figura 27. Figura 27: Fereastra în cadrul căreia se

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

30

Î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).

meniul de setări ( prezentată în partea dreapta sus). Figura 28: Fereastra principală Figura 29: Fereastra

Figura 28: Fereastra principală

în partea dreapta sus). Figura 28: Fereastra principală Figura 29: Fereastra Feedback Meniul de setări permite

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ă.

este îndeplinită o sarcină utilizatorul trebuie doar să bifeze respectiva sarcină. Figura 30: Fereastra Tasks 31

Figura 30: Fereastra Tasks

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.

, numărul de telefon și adresa de email a invitatului. Figura 31: Fereastra Creare invitat Figura

Figura 31: Fereastra Creare invitat

de email a invitatului. Figura 31: Fereastra Creare invitat Figura 32: Fereastra Actualizare invitat Utilizatorul poate

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.

Figura 33: Fereastra Lista costuri Figura 34: Fereastra Creare cost Meniul „Venues” îî permite utilizatorului

Figura 33: Fereastra Lista costuri

Figura 33: Fereastra Lista costuri Figura 34: Fereastra Creare cost Meniul „Venues” îî permite utilizatorului să

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”.

adăuga la favorite orice local prin intermediul ferestre i „Actualizare local”. Figura 35: Fereastra Creare local

Figura 35: Fereastra Creare local