Documente Academic
Documente Profesional
Documente Cultură
Bucuresti 2018
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
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.
3
Miezu Anca Theodora
Bucuresti 2018
Diagrama generală
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).
Î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.
5
Miezu Anca Theodora
Bucuresti 2018
6
Miezu Anca Theodora
Bucuresti 2018
7
Miezu Anca Theodora
Bucuresti 2018
8
Miezu Anca Theodora
Bucuresti 2018
Figura 4: Diagrama de activitate pentru descrierea operațiilor efectuate asupra unui invitat
9
Miezu Anca Theodora
Bucuresti 2018
Figura 6: Diagrama de
activitate pentru descrierea
operațiilor efectuate asupra
unei locații
10
Miezu Anca Theodora
Bucuresti 2018
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:
11
Miezu Anca Theodora
Bucuresti 2018
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.
Figura 8: Diagrama de stare pentru descrierea operațiilor efectuate asupra unui invitat
Figura 9: Diagrama
de stare pentru
descrierea
operațiilor efectuate
asupra unei locații
12
Miezu Anca Theodora
Bucuresti 2018
13
Miezu Anca Theodora
Bucuresti 2018
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.
14
Miezu Anca Theodora
Bucuresti 2018
Figura 12: Diagrama de secvență pentru detalierea scenariului „Actualizare date eveniment”
15
Miezu Anca Theodora
Bucuresti 2018
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
17
Miezu Anca Theodora
Bucuresti 2018
18
Miezu Anca Theodora
Bucuresti 2018
19
Miezu Anca Theodora
Bucuresti 2018
- 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ă.
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.
21
Miezu Anca Theodora
Bucuresti 2018
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.
22
Miezu Anca Theodora
Bucuresti 2018
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 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
24
Miezu Anca Theodora
Bucuresti 2018
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:
25
Miezu Anca Theodora
Bucuresti 2018
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).
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:
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.
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ă:
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.
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
Î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:
30
Miezu Anca Theodora
Bucuresti 2018
Î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.
31
Miezu Anca Theodora
Bucuresti 2018
32
Miezu Anca Theodora
Bucuresti 2018
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
34