Obiectivul temelor de casă este reprezentat de implementarea unui sistem informatic performant şi scalabil pentru gestiunea resurselor unei întreprinderi de dimensiuni mari. Pentru tema de recuperare, organizaţia pentru care se va proiecta şi dezvolta acest pachet de programe este o instituție financiar bancară.
Această aplicație ERP va conține mai multe module, unele fiind accesate de angajați, iar altele de clienți:
Toate modulele vor accesa un sistem de gestiune pentru baze de date pentru a asigura persistența operațiilor care sunt realizate în cadrul lor.
După rezolvarea temei de casă, studentul va fi capabil să:
Cunoştinţele necesare pentru rezolvarea temei de casă sunt:
Se doreşte implementarea unui sistem informatic destinat gestiunii activităţilor dintr-o instituție financiar-bancară.
O astfel de organizație funcționează în cadrul mai multor sucursale, fiecare caracterizată prin denumire, adresă, descriere și programul de funcționare, pentru fiecare zi a săptămânii.
Se dorește implementarea unei aplicații desktop, folosită de angajații băncii, dispunând de o interfață grafică dezvoltată în JavaFX, implementând modulele legate de gestiunea resurselor umane și operațiunile realizate în mod curent, precum și a unei aplicații web, folosită doar de clienți, prin care aceștia pot realiza anumite transferuri bancare, implementată folosind tehnologiile Java Servlets / JavaServer Pages și rulând în contextul unui server Apache Tomcat. Ambele aplicații vor fi integrate prin folosirea unei baze de date unice, implementată în cadrul unui SGBD MySQL.
Sistemul va putea fi accesat, pe baza unui proces de autentificare, de către mai multe tipuri de angajați, operând în departamentele resurse umane sau financiar-contabil. Pentru fiecare utilizator în parte se vor reţine informații precum CNP, nume, prenume, adresa, număr de telefon, email, cont IBAN, numărul de contract, data angajării, funcţia deţinută. Fiecare utilizator își va putea vizualiza datele personale imediat după ce va accesa sistemul informatic, fără a avea însă posibilitatea de a le modifica. Totodată, programul trebuie să ofere și o funcționalitate pentru deautentificare, prin care se revine la fereastra care solicită datele de acces, pentru ca un alt utilizator să îl poată folosi ulterior, fără a fi necesară repornirea sa.
Utilizatorul de tip administrator poate adăuga, modifica şi şterge informaţii în baza de date legate de utilizatori. De asemenea, va exista şi un rol de super-administrator care poate opera inclusiv asupra utilizatorilor de tip administrator.
Pentru un utilizator de tip angajat se va reține salariul negociat, numărul de ore care trebuie realizat în fiecare zi precum și numărul de zile de concediu la care au dreptul, anual. Funcțiile ce pot fi deținute în cadrul instituției financiar-bancare sunt inspector resurse umane sau expert financiar-contabil.
Sistemul ERP va fi format din mai multe module care vor putea fi accesate de angajaţi în funcţie de drepturile pe care le deţin. Astfel, vor fi implementate un modul pentru gestiunea resurselor umane ce vizează gestiunea programului de lucru şi al concediilor angajaţilor și un modul pentru operaţii financiar-contabile prin care sunt operate tranzacții curente pentru diferite conturi.
Toate aceste module vor fi integrate în cadrul aceluiași sistem informatic, sub forma unor meniuri care vor conține funcționalitățile pe care acestea le oferă, disponibilitatea lor fiind însă limitată și de permisiunile pe care le posedă utilizatorul autentificat la momentul respectiv de timp.
Prin intermediul modulului pentru gestiunea resurselor umane, un inspector poate căuta un angajat (de orice tip), în funcție de parametrii pe care îi indică: nume, prenume, funcție. Pentru fiecare angajat se va specifica un orar de lucru. Orarul este caracterizat prin ziua la care se referă (zi a săptămânii), intervalul orar (momentul de început și momentul de sfârșit), locația (sucursala) în care se desfășoară. De asemenea, inspectorul poate gestiona pentru un angajat perioadele de concediu (operații de adăugare, modificare, ștergere), specificând și tipul său (concediu de odihnă, concediu medical – cu un anumit cod de indemnizație, concediu fără plată, concediu special) și pontajul zilnic (câte ore a fost prezent la serviciu în fiecare zi).
Toți angajații vor avea la dispoziție o secțiune în care pot consulta orarul săptămânal și informații despre concediile efectuate (inclusiv numărul de zile de concediu de odihnă rămase). De asemenea, aceștia pot consulta și salariile încasate pentru lunile precedente, calculate proporțional cu numărul de ore lucrate în luna respectivă, luându-se în considerare numărul de zile pentru fiecare lună în parte precum și zilele în care angajatul s-a aflat în concediu.
În cadrul modulului pentru operații financiar-contabile un expert poate realiza operațiuni (tranzacții) legate de conturi, aparținând unor clienți, persoană fizică sau juridică. Pentru fiecare client în parte următoarele informații:
Un client poate avea asociate mai multe conturi. Un cont este caracterizat prin identificatorul său (IBAN), tipul (de debit sau de credit), valuta și valoarea curentă.
Operațiile care pot fi realizate cu un cont de debit sunt depunere și retragere, fiecare având asociate un anumit comision, care va fi aplicat pe suma cu care se realizează operațiunea.
Operațiile care pot fi realizate cu un cont de credit sunt tot retragere și depunere, permițându-se ca la un moment dat soldul să fie negativ, în limita unui anumit plafon. Dacă perioada în care valoarea curentă a contului este negativă nu depășește o anumită perioadă, nu se va percepe nici o dobândă. După ce intervalul de grație s-a terminat, pentru fiecare lună în parte se va percepe o anumită dobândă, care se va calcula pentru întrega sumă care a fost împrumutată.
Un cont poate avea asociat un card bancar, identificat printr-un număr, un cod PIN și o perioadă de valabilitate.
De asemenea, pentru fiecare cont în parte se va percepe un comision lunar, retras automat la o dată fixă ce poate fi configurată.
Operațiunile pe care le poate realiza un expert financiar-contabil sunt legate atât de clienți cât și de conturile asociate acestora (adăugare, modificare, ștergere).
De asemenea, pot fi realizate transferuri între conturi ale diferiților clienți, cu condiția ca acestea să aparțină instituției financiar-bancare sau transferuri cu numerar, în care una din părțile implicate este reprezentată de un cont bancar.
Dacă valutele conturilor între care este realizată operațiunea sunt diferite, se va realiza o conversie de la valuta sursă la valuta destinație, în limita unui plafon prestabilit (pentru fiecare valută în parte), conform unui curs valutar care va fi obținut printr-un serviciu la distanță, publicat la o adresă cunoscută în prealabil. Metodele pe care le va oferi serviciul la distanță sunt:
String[] getCurrencies(); double getExchange(String source, String destination, Date date); double getLimit(String currency);
Un expert financiar-contabil va gestiona și toate tranzacțiile în așteptare, generate de clienți prin intermediul aplicației web, având posibilitatea de a le aproba sau de a le respinge, acestea devenind efective doar din momentul în care starea solicitării respective a fost modificată.
Toate transferurile intrabancare vor fi jurnalizate, reținându-se pentru fiecare în parte data și ora la care au fost realizate, suma, contul sursă, contul destinație, tipul operației și comisionul aplicat.
Sistemul va putea fi accesat, pe baza unui proces de autentificare, și de către clienții care și-au creat un cont de acces care a fost aprobat. Informațiile care trebuie transmise pentru obținerea permisiunii de a folosi aplicația web sunt: credențialele dorite (nume de utilizator și parolă), respectiv CNP-ul / CUI-ul. Gestiunea acestor solicitări se face doar de către un administrator sau super-administrator. Doar după ce acesta a acordat drepturile necesare, aplicația va putea fi utilizată corespunzător de către clienți.
Un client poate vizualiza situația curentă a conturilor sale, pentru fiecare în parte afișându-se IBAN-ul, tipul de cont, valuta și soldul la momentul respectiv.
Pentru fiecare cont în parte, clientul poate genera un raport cu tranzacțiile realizate pentru un anumit interval de timp indicat (dată de început, dată de sfârșit), afișându-se și balanța intermediară după fiecare operațiune în parte. De asemenea, se va afișa situația contului la începutul și la sfârșitul perioadei respective (sold inițial și sold final).
Utilizatorul poate transmite către bancă o solicitare pentru realizarea unei tranzacții, indicând contul său din care dorește să realizeze operațiunea respectivă (în situația în care deține mai multe produse de acest tip, în caz contrar acest lucru nefiind necesar) precum și contul către care se va realiza tranzacția, în cadrul aceleiași instituții financiar-bancare (dacă acesta nu este găsit de sistemul informatic, se va genera un mesaj de eroare). Până la momentul în care tranzacția va fi procesată din aplicația desktop de un expert financiar-contabil, suma de bani respectivă va fi retrasă din contul clientului, însă nu va fi transferată propriu-zis, acest fapt realizându-se doar în momentul când operațiunea respectivă este aprobată; în cazul în care tranzacția este respinsă, suma de bani va fi restituită.
Clientul poate solicita și deschiderea sau închiderea unui cont, specificând, după caz, tipul de cont dorit, respectiv codul IBAN al acestuia. După ce operațiunea va fi realizată (în mod automat), rezultatul va putea fi vizualizat în lista de produse deținute. Solicitarea de deschidere a unui cont de debit va fi aprobată dacă respectivul client nu are deține alte conturi de credit cu sold negativ. De asemenea, solicitarea de deschidere a unui cont de credint nu va fi aprobată dacă utilizatorul mai are un alt cont de acest tip. Închiderea unui cont presupune că suma curentă din cadrul acestuia să nu fie negativă.
De asemenea, se va implementa și un sistem de comunicație, prin intermediul căruia clientul poate transmite un mesaj către bancă, care poate avea drept obiect o solicitare pentru suport tehnic, la care vor răspunde administratorii, respectiv pentru obținerea de informații legate de serviciile oferite, la care vor răspunde experții financiar-contabili. Un astfel de mesaj este caracterizat prin expeditor, subiect, dată și oră, tip, conținut și stare (citit sau necitit).
NU este permină folosirea altor tehnologii decât a celor specificate enunţ. Definiţiile metodelor apelabile la distanţă vor fi descrise în pseudocod. Acestea pot fi modificate la nivelul parametrilor sau rezultatelor întoarse, păstrându-se însă funcţionalitatea lor.
Fiecare fereastră a interfeței grafice va fi definită în cadrul unui fișier FXML generat folosind Scene Builder 2.0.
Popularea bazei de date cu informații trebuie să fie corespunzătoare pentru a putea ilustra funcționalitățile implementate.
Un angajat poate lucra la mai multe sucursale, în zile diferite ale săptâmânii, fapt specificat în cadrul orarului.
Numărul de zile de concediu de odihnă rămase se calculează începând cu data angajării, proporțional cu numărul de zile lucrate în anul respectiv. Un inspector de resurse umane nu poate preciza un concediu de odihnă pentru o perioadă mai mare decât numărul de zile de care dispune angajatul respectiv (numărul de zile de concediu de odihnă rămase), în caz contrar generându-se un mesaj de eroare.
Pentru calculul salariului, se va avea în vedere faptul că un concediu de odihnă este remunerat cu 100% (ca și când angajatul ar fi lucrat), un concediu fără plată cu 0%, iar un concediu medical cu un procent variabil, în funcție de codul de indemnizație (se vor folosi trei valori, la alegerea proprie).
Informațiile furnizate de serviciul la distanță vor fi preluate dintr-o bază de date, în care cursurile vor fi introduse manual (fără a fi necesară o interfață grafică ca intermediar), pentru fiecare dată calendaristică în parte.
În cadrul transferurilor intrabancare, se vor realiza verificările necesare (un cont de debit nu poate avea soldul negativ în urma realizării tranzacției, nu se poate depăși un anumit plafon pentru un tip specific de valută), generându-se mesaje de eroare sugestive în cazul în care nu se pot efectua. Atât sursa cât și destinația transferului pot fi deopotrivă persoane fizice sau persoane juridice.
În cadrul informațiilor legate de jurnalizare, se vor stoca și comisioanele percepute lunar pentru fiecare cont în parte.
Pentru solicitările realizate de client se vor transmite mesaje în mod automat atunci când un expert financiar-contabil le aprobă sau le respinge.
Pentru rapoartele pe care utilizatorul le poate vizualiza legat de operațiunile realizate, tranzacțiile care nu au fost încă analizate de expertul financiar-contabil vor fi marcate ca fiind în așteptare.
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.
PUNCTAJ | CRITERII DE ACORDARE |
---|---|
3 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% |
3 p | realizarea interfeţei grafice1) ♦ aspect: 40% ♦ uşurinţă în utilizare: 60% |
1 p | gestiunea utilizatorilor ♦ autentificare, deautentificare: 20% ♦ operaţii utilizator de tip administrator / super-administrator: 50% ♦ implementare sistem de control al drepturilor de acces al utilizatorilor în cadrul sistemului informatic pe baza rolurilor: 30% |
2,50 p | funcţionalităţi modul pentru gestiunea resurselor umane ♦ căutare utilizator: 10% ♦ specificare informații referitoare la programul de lucru: 15% ♦ gestiune pontaj: 15% ♦ specificare informații cu privire la concedii: 20% ♦ vizualizarea informațiilor despre programul de lucru (orar, prezență zilnică, concedii), pentru fiecare angajat în parte: 20% ♦ calcul salarii și vizualizarea acestora de către angajați: 20% |
4,50 p | funcţionalităţi modul de operaţii financiar contabile ♦ operații legate de gestiunea clienților (adăugare, modificare, ștergere): 15% ♦ operații legate de gestiunea conturilor (adăugare, modificare, ștergere): 15% ♦ operațiuni financiar-bancare (depunere, retragere): 15% ♦ implementarea transferurilor intrabancare: 15% ♦ gestiunea solicitărilor primite de la clienți (operații legate de conturi, tranzacții între diferite conturi, mesaje): 15% ♦ gestiunea comisioanelor lunare: 15% ♦ accesare serviciu la distanță pentru conversie valutară: 10% |
0,75 p | serviciu la distanță pentru gestiunea conversiei valutare ♦ metoda getCurrencies() : 35%♦ metoda getExchange() : 40%metoda getLimit() : 10%♦ proiectarea și implementarea bazei de date aferente: 15% |
4 p | funcționalități modul de asigurare a relației cu clienții ♦ gestiune date de acces (înregistrare, autentificare): 10% ♦ consultare stare conturi bancare: 10% ♦ generare rapoarte operațiuni pentru o perioadă de timp: 20% ♦ transmiterea de solicitări referitoare la tranzacții intrabancare: 20% ♦ transmiterea de solicitări referitoare la operații legate de conturi (deschidere / închidere) 15% ♦ implementare sistem de mesagerie: 25% |
0,25 p | implementarea mecanismului de jurnalizare a tranzacțiilor financiar-contabile |
1 p | modularizare ♦ structura aplicaţiei: 50% ♦ lizibilitatea codului: 20% ♦ comentarii, README: 30% |
0,50 p | validarea datelor ♦ asigurarea consistenţei informaţiilor reţinute în tabele: 50% ♦ mesaje de eroare: 50% |
BONUS. Se pot obţine punctaje suplimentare, astfel:
Tema va fi realizată individual şi va fi prezentată înainte de examenul de restanță, la o dată care va fi anunțată ulterior. 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.
Sunt punctate și implementări parțiale, în sensul că anumite module nu au fost abordate deloc. Sunt obligatorii proiectarea și implementarea bazei de date (complet sau incomplet), respectiv a interfeței grafice.
Tema va trebui încărcată pe site-ul cs.curs.pub.ro sub forma unei arhive de tip .zip (având denumirea Grupa34XCX_NumePrenume_TemaRecuperare.zip) care să conţină script-ul pentru crearea şi popularea tabelelor din baza de date (numele bazei de date fiind Grupa34XCX_NumePrenume) – în rădăcină, sursele aplicaţiei (proiect Eclipse / NetBeans), scripturi ce conţin lansări în execuţie ale aplicației desktop și a serviciului de conversie valutară la distanță, specificând argumentele necesare2) precum şi un README în care să explicaţi funcționalitățile dezvoltate, tehnologiile folosite, problemele întâlnite și modul de soluționare a acestora, eventualele decizii de implementare. Dacă aplicația web este găzduită online, veți indica URL-ul de unde aceasta poate fi accesată. Temele care nu respectă convențiile de nume indicate nu vor fi luate în considerare.
Î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.
java.rmi.server.codebase
, java.rmi.server.hostname
, java.security.policy
, incluzându-se și fişierele ce conţin politica de securitate. Pentru CORBA, se vor preciza parametrii liniei de comandă ORBInitialHost
/ ORBInitialPort
. Dacă se optează pentru JAX-WS, vor trebui indicate locațiile la care vor fi publicate serviciile web.