Table of Contents
Tema de Casă 2
Implementarea modului de relații cu clienții (CRM - Customer Relationship Management) pentru un sistem informatic dedicat unui lanț de restaurante
Termen de Predare: 4 ianuarie 2016, 23:55
Pondere: 15 p / 35
Obiective
Obiectivul temelor de casă este reprezentat de implementarea unui sistem informatic performant şi scalabil pentru gestiunea resurselor unei societăți comerciale de dimensiuni mari. În acest an universitar, organizaţia pentru care se va proiecta şi dezvolta acest pachet de programe este un lanț de restaurante.
Se va realiza implementarea mai multor module din cadrul aplicației ERP, pe parcursul a trei etape independente.
În cadrul acestei etape se va dezvolta o aplicaţie web cu conţinut dinamic care poată fi accesată prin intermediul unui client universal, browser-ul, fără a mai fi nevoie de alte resurse pentru rularea sa. Această aplicație web va fi implementată folosind două tehnologii distincte, urmând ca ulterior să fie comparate performanțele acestora, raportat la timpul de încărcare al paginii Internet.
După rezolvarea temei de casă, studentul va fi capabil să:
- proiecteze o bază de date cu mai multe tabele normalizate, între care există relaţii de dependenţă, gestionând informaţiile reţinute prin intermediul unui sistem informatic;
- realizeze o aplicaţie web (formată din mai multe pagini, între care există legături) care implementează o funcţionalitate complexă, având rolul de interfaţă între utilizator şi baza de date.
Cunoştinţele necesare pentru rezolvarea temei de casă sunt:
- programarea în limbajele Java / JavaScript;
- proiectarea și dezvoltarea unei baze de date folosind sistemul de gestiune MySQL;
- folosirea unei interfețe de programare pentru accesarea informațiilor dintr-o sursă de date (Java Database Connectivity / Java Persistence API);
- utilizarea tehnologiilor Java Servlets / JavaServer Pages și a platformei Node.JS pentru dezvoltarea unei aplicaţii web.
Enunț
Se dorește implementarea modulului de gestiune a relațiilor cu clienții (CRM - Customer Relationship Management) pentru un sistem informatic destinat gestiunii activității dintr-un lanț de restaurante.
Un astfel de modul este destinat clienților lanțului de restaurante care doresc să comande produsele comercializate de acesta spre a fi livrate la o anumită adresă. Acesta va fi accesat prin intermediul unei aplicații web, formată din mai multe pagini Internet, generate dinamic, între care există legături. Vor fi implementate două variante ale aplicației web, una folosind Java Servlets / JavaServer Pages și un server web Apache Tomcat, iar alta folosind Node.JS. Ca sistem de gestiune pentru baze de date se va utiliza MySQL. Performanțele aplicațiilor web folosind cele două tehnologii vor fi comparate folosind mai multe criterii, dintre care unul trebuie să fie timpul de încărcare al paginii Internet. Pe baza acestei comparații, vor fi prezentate concluziile referitoare la cele două tehnologii, într-un text de maxim 10 rânduri.
Accesul în cadrul aplicației web se va realiza securizat, în urma autenficării prealabile, bazată pe un nume de utilizator și o parolă. Utilizatorii care nu dețin un cont vor putea să se înregistreze, furnizând informații precum nume de utilizator și parolă, precum și o serie de informații personale (nume și prenume, cod numeric personal, adresă de poștă electronică, telefon, cont IBAN precum și domiciliul la care se presupune că urmează să fie onorată comanda plasată prin intermediul aplicației). Toate aceste informații sunt obligatorii. Operația de înregistrare va reuși numai în situația în care sunt furnizate toate informațiile solicitate și nu există un alt cont cu aceleași date de autentificare. În caz contrar, vor fi furnizate motivele pentru care operația de înregistrare a eșuat, cu posibilitatea de corectare a informațiilor completate anterior.
În situația în care utilizatorul nu este autentificat, el va putea doar să vizualizeze felurile de mâncare disponibile pentru o anumită dată calendaristică (pe care utilizatorul o poate alege dintr-o listă de selecție), fără a-și putea defini un coș de cumpărături. Meniul este defalcat pe tipuri de mâncare (aperetiv, fel principal, desert), astfel încât felurile de mâncare sunt grupate în funcție de categoria din care fac parte. Pentru fiecare fel de mâncare se va afișa compoziția (ingredientele folosite la prepararea sa precum și cantitatea folosită, exprimată în funcție de o unitate de măsură specifică pentru fiecare componentă), specificația unei porții (greutate sau număr de produse), numărul de produse existente în stoc precum și prețul pentru o porție. Pentru fiecare fel de mâncare se vor asocia și anumite etichete în funcție de care se poate realiza filtrarea.
În cazul în care utilizatorul este autentificat, el va putea să indice câte porții dorește să comande din fiecare fel de mâncare. Pe măsură ce astfel de produse sunt specificate, se va afișa conținutul coșului de cumpărături, împreună cu prețul total. În momentul în care comanda conține toate produsele dorite, ea poate fi finalizată. Acceptarea comenzii este condiționată de existența pe stoc a numărului de porții solicitat. Dacă o comandă nu poate fi onorată din cauza unui număr de produse insuficient, se va afișa un mesaj de eroare prin care se justifică respingerea, iar utilizatorul are posibilitatea de a ajusta cantitățile respective. Pentru comenzile care pot fi livrate, se emite o factură care conține toate produsele care au fost solicitate. Totodată, este necesar să se actualizeze cantitățile disponibile în stoc pentru acele feluri de mâncare care au fost comandate. Utilizatorul are posibilitatea de a-și vizualiza propriile date personale (furnizate în cadrul operației de înregistrare) spre a putea fi actualizate (cu excepția denumirii contului) precum și istoricul comenzilor anterioare (pentru fiecare comandă pot fi vizualizate data la care aceasta a fost plasată și prețul total precum și detaliile - conținutul propriu-zis al comenzii: numărul de porții și denumirea felului de mâncare).
Este necesar să se implementeze și operația de deautentificare prin care se revine la pagina principală a aplicației web.
Precizări suplimentare
NU este permisă folosirea altor tehnologii cu excepția celor specificate în enunţ.
Nu se va ține cont de interfața grafică a paginilor web, accentul punându-se pe funcționalitatea acestora. Pot fi preluate șabloane pentru foile de stil sau pentru proiectarea aspectului disponibile pe Internet, fără ca acest lucru să intre sub incidența regulilor legate de frauda academică.
Pentru gestiunea informațiilor stocate în baza de date se poate utiliza fie JDBC (Java DataBase Connectivity), fie JPA (Java Persistence API) cu orice implementare a acesteia (Hibernate, Eclipse Link).
Criteriile în funcție de care va fi realizată comparația dintre soluțiile oferite de Java Enterprise Edition / Node.JS pentru dezvoltarea de aplicații web trebuie să fie minim trei, la alegere (memoria utilizată - sistemul de colectare a memoriei, ușurința în dezvoltare - facilități oferite pentru programatori, integrarea cu diferite sisteme de operare / navigatoare, funcționalități oferite / posibilitatea de accesare a diferitelor informații din antetele HTTP sau legate de platforma pe care rulează aplicația web, posibilitatea de gestiune a informațiilor dintr-un sistem de gestiune pentru baze de date, ușurința în depanarea aplicației web, posibilitatea de integrare a unor biblioteci, formatele în care pot fi transferate datele).
Etichetele în funcție de care va fi implementat sistemul de filtrare pot viza specificul național al felului de mâncare respectiv, o categorie mai detaliată pentru fiecare tip de mâncare, indicații cu privire la unele restricții în privința ingredientelor sau alte criterii, la alegere. Este vizată implementarea mecanismului de filtrare în funcție de un set de criterii și nu o funcționalitate anume.
Orice specificaţie care nu este menţionată mai sus reprezintă decizie de implementare. Puteţi considera orice simplificare în condiţiile în care enunţul nu precizează altfel.
Barem de corectare și notare
Punctaj | Criterii de acordare | |
---|---|---|
2 p | proiectarea tabelelor în baza de date • conformitatea structurii conceptuale a bazei de date cu o formă normală: 40% • definirea de chei primare, chei străine (legături între toate tabelele bazei de date), constrângeri de integritate pentru formatul atributelor: 25% • populare corespunzătoare: 35% |
|
12 p | implementarea aplicațiilor web • Java Servlets / JavaServer Pages: 50% • Node.JS: 50% | • pagina de autentificare, inclusiv lista produselor cu detalii fără posibilitatea adăugării unor cantități: 15% |
• pagina de înregistrare a unui utilizator: 10% | ||
pagina pentru definirea unui coș de cumpărături: 60% • selecția meniului în funcție de o dată calendaristică: 10% • gruparea în funcție de tipul de mâncare (aperitiv, fel principal, desert): 10% • filtrarea pe baza unor anumite etichete: 10% • gestiunea coșului de cumpărături (adăugare / editare / ștergere): 20% • finalizarea unei comenzi cu semnalarea posibilelor erori: 10% |
||
• pagina pentru vizualizarea detaliilor unui cont: 15% • date personale cu posibilitate de actualizare: 5% • istoric comenzi: 10% |
||
1 p | modularizare • structura aplicaţiei: 30% • aspecte legate de eficiență: 30% • lizibilitatea codului, README: 20% • concluzii legate de comparația privind performanțele tehnologiilor Java Servlets / JavaServer Pages și Node.JS: 20% |
BONUS. Se pot obţine punctaje suplimentare, astfel:
- 0,50 p – predarea şi prezentarea temei cu o săptămână mai devreme (înainte de 13.12.2015, 23:55);
- 0,50 p - posibilitatea de definire a mai multor adrese de livrare pentru un anumit cont; în acest caz, în momentul în care este finalizată o comandă, dacă aceasta poate fi livrată, va exista posibilitatea ca livrarea să se facă la una dintre adresele definite anterior sau să se precizeze o nouă adresă pentru comanda respectivă, urmând ca aceasta să fie asociată în mod automat contului respectiv; de asemenea, va fi necesar ca pentru fiecare comandă să se rețină și adresa la care a fost livrată, această informație fiind disponibilă pentru consultare în istoricul de comenzi;
- 0,75 p - implementarea unui sistem de recomandări: în situația în care pentru un utilizator există comenzi anterioare, i se pot face anumite sugestii cu privire la produsele pe care le poate comanda, fără a mai consulta întregul meniu, folosind un algoritm propriu (posibile criterii fiind: produse reprezentând același fel de mâncare cu cele comandate anterior, cu o cantitate mai mare în stoc; produse cu aceleași etichete ca cele comandate anterior; produse care au fost comandate de alți utilizatori care au solicitat același produse; aceleași produse ca cele comandate anterior sau alte criterii);
- 0,25 p - implementarea unui sistem de istoric al navigării, în care vor fi incluse, ca legături rapide, cele mai recente trei pagini Internet din cadrul aplicației web care au fost accesate.
Condiții de realizare și predare
Tema va fi realizată individual şi va fi prezentată în cadrul laboratorului, până la sfârşitul semestrului. Neprezentarea temei de casă sau un rezultat nesatisfăcător al prezentării (necunoașterea funcționalității aplicației / codului sursă, imposibilitatea de a răspunde la întrebări) atrag după sine anularea punctajului corespunzător acesteia. În cadrul prezentării veţi specifica succint funcţionalităţile pe care le-aţi dezvoltat şi veţi răspunde la întrebări cu privire la modul de implementare al acestora.
Tema va trebui transmisă sub forma unui mesaj la adresa de poștă electronică aipi2015@andreirosucojocaru.ro sub forma unei arhive de tip .zip (având denumirea Grupa34XCX_NumePrenume_Tema2.zip) care să conţină script-ul pentru crearea şi popularea tabelelor din bazele de date (numele bazei de date fiind Grupa34XCX_NumePrenume) – în rădăcina, sursele aplicaţiilor (proiecte Eclipse / NetBeans), precum şi un README în care să explicaţi funcționalitățile dezvoltate, problemele întâlnite și modul de soluționare a acestora. Subiectul utilizat va fi [Tema2][Grupa34XCX][NumePrenume]. Temele care nu respectă convențiile de nume indicate nu vor fi luate în considerare. Prezentarea se poate face numai după ce tema a fost predată sub această formă. În cazul în care aplicaţia este găzduită online, veţi indica URL-ul de unde aceasta poate fi accesată.
Încărcarea pe site nu este redundantă, temele vor fi comparate prin aplicaţii specializate pentru a se depista eventualele fraude. În această situaţie, întreg punctajul pe parcursul semestrului va fi anulat, studenţii implicaţi (atât originalul, cât şi copia / copiile) fiind obligaţi să repete disciplina – cu taxă – în anul universitar următor.