Aplicație Pentru Generarea de Statistici Privind Proiectele Derulate

UNIVERSITATEA POLITEHNICA BUCUREȘTI

FACULTATEA DE AUTOMATICĂ ȘI CALCULATOARE

DEPARTAMENTUL CALCULATOARE

PROIECT DE DIPLOMĂ

Aplicație pentru generarea de statistici privind proiectele derulate

BUCUREȘTI

2016

POLITECHNICA UNIVERSITY OF BUCHAREST

FACULTY OF AUTOMATIC CONTROL AND COMPUTERS

COMPUTER SCIENCE DEPARTMENT

DIPLOMA PROJECT

Ongoing Project Statistics Generation Software

BUCHAREST

2016

Aș dori să mulțumesc companiei Capgemini România pentru coordonarea și susținerea lor în această lucrare. De asemenea, doresc să îmi exprim recunoștința fată de profesorul coordonator al acestei lucrări,

Mariana Mocanu, pentru timpul acordat.

Abstract

De-a lungul timpului, în companii s-a dorit o soluție integrată de afaceri care să ajute la conducerea acestora. Din moment ce se dorește cunoașterea business-ului cât mai bine, un grad de atenție deosebit trebuie acordat nivelului organizatoric. O astfel de abordare asigură, de asemenea, și o coordonare foarte bună, atât din partea managerilor, cât și din partea echipelor asignate pe diverse proiecte. Implementarea unei astfel de aplicații asigură flexibilitate managerului, deoarece permite accesul instantaneu la orice informație gestionată în cadrul platformei. Această lucrare explorează proiectarea și implementarea conceptelor de Business Intelligence, analizarea și aplicabilitatea tehnicilor de BI în cadrul unei companii. Procesul de management ajunge la un alt nivel, mult mai eficient față de cel anterior, rezultatele conducând atât la progresul companiei, cât și la productivitatea angajaților. Obiectivul proiectului este îmbunătățirea coordonării activităților desfășurate într-o organizație, prin luarea de decizii mai eficiente pe baza statisticilor și a rapoartelor.

Cuprins

1. Introducere

Scopul proiectului

Datele existente într-o companie au o importanță foarte mare în analiza activităților desfășurate. Datele pot fi utilizate pentru a analiza eficiența și timpul alocat dezvoltării proiectelor și capacitatea de livrare a acestora. În plus, acestea pot fi folosite și pentru a organiza o planificare mai bună a activităților și pentru a testa devotamentul angajaților.

La un moment dat, managementul nu mai deținea suficient control asupra companiei și, ca rezultat, au apărut dezavantaje precum: lipsa de eficiență, întarziere a obținerii rapoartelor privind desfășurarea activităților companiei, pierderi de profit etc.

Pentru rezolvarea acestor probleme s-a dezvoltat conceptul de Business Intelligence (BI), un software dezvoltat pentru a analiza și accesa datele, pentru a genera rapoarte si dashboard-uri cu scopul de a monitoriza performanța. Utilizarea unei aplicații BI a devenit foarte importantă de-a lungul timpului pentru coordonarea activităților unei companii. În urma analizelor și a rapoartelor rezultate, orice manager poate lua o decizie în privința unei probleme și poate oferi resursele adecvate nevoilor rezultate, ceea ce conduce la evoluția companiei.

Proiectul prezentat în această lucrare vizează principiile unei aplicații de Business Intelligence. Mai mult decât atât, utilitatea principală a acestuia este salvarea timpului pierdut, permițând dezvoltarea companiei prin analiza eficientă a volumui mare de date si a activităților desfășurate de către angajatii companiei.

Principalele obiective pe care le urmarește acest proiect sunt:

Coordonarea foarte bună a companiei

Creșterea productivității angajaților

Estimarea capacității de livrare a unui proiect

Flexibilitatea managerului în ceea ce privește accesul la informație

Timp foarte scurt de livrare a rapoartelor

Luarea de decizii corecte pe baza analizei statisticilor

Scopul acestui proiect este de a analiza capacitatea și randamentul echipelor asignate pe anumite proiecte în vederea unei transparențe crescute la nivel administrativ. O transparență crescută și o abordare analitică a datelor anterioare conduce implicit la o capacitate mai bună de organizare a companiei.

Motivație

Odată cu creșterea volumului mare de date în companii de-a lungul anilor, managerii nu mai puteau coordona activitățile într-un mod intelligent. Astfel, apăreau probleme care nu mai puteau fi înțelese sau justificate. Din acest motiv s-a ajuns la nevoia de sisteme de Business Intelligence, concepute pentru a sprijini luarea de decizii. Aceste decizii conduc atât la creșterea performanței angajaților, cât și la înțelegerea cât mai clară a activităților desfașurate într-o organizație.

Datele acumulate pe diferite segmente într-o companie reprezintă o parte importantă a afacerii în ceea ce privește activitatea managerilor. Din acest motiv, cererea de BI a fost într-o continuă creștere conform studiilor de la [2].

Business Intelligence se bazează pe aplicații software de tip ERP, CRM, pe baza cărora se extrag datele necesare. În plus, reprezintă o modalitate de a accesa informații complete, referitoare la întreaga activitate a unei companii. Informațiile sunt expuse prin funcționalități ușor de analizat sau de interpretat, atât de către manageri, cât și de către utilizatori.

În această situație, un rol important il dețin indicatorii de performanță a angajaților. Aceștia sunt expuși într-un dashboard sau un view de statistică, care constituie un raport folosit pentru analizarea rezultatelor obținute pentru capacitatea, efortul și costurile angajaților. De aceea, folosind acest sistem, se înglobează întreaga activitate a companiei, oferind analize manageriale cu privire la activitățile desfășurate.

BI a devenit necesar mai ales pentru a crește productivitatea companiei și a angajaților, pentru a reduce timpul de livrare și creare a rapoartelor, pentru a analiza profitul obținut și suficiența resurselor investite în angajați.

În colaborarea cu Capgemini România s-a dorit implementarea unei soluții similare, având la bază principiile BI. Necesitatea acesteia se regăsește în dorința de a evalua performanțele angajaților, capacitatea de livrare a proiectelor asignate, timpul și efortul depus, și de a analiza resursele investite și profitul obținut. Aplicația este structurată in trei parți: dashboard admin, rapoarte manageriale și statistici.

Obiectivul acestei soluții de BI este de a îmbunătăți resursele și performanța companiei în cazul procesului de decizie. Acest sistem va fi folosit din dorința de a înțelege fluxul desfășurării activităților și modul de derulare a acestora de-a lungul unei anumite perioade de timp în companie.Aplicația va oferi informații în ceea ce privește distribuirea efortului între tipurile de activități desfășurate în cadrul unui proiect, tendințe de creștere în performanță și capacitatea de livrare.

Structura lucrării

Proiectul este structurat în continuare în felul următor :

Capitolul 2: Analiza – in acest capitol vor fi prezentate realizările similare în domeniu, studii ale tehnologiilor folosite și metodologia de lucru abordată.

Capitolul 3: Arhitectura și implementare – în această secțiune se va descrie arhitectura și implementarea sistemului și modul de abordare al funcționalitățiilor propuse.

Capitolul 4: Evaluare – această secțiune cuprinde evaluarea soluției privind rezultatele obținute.

Capitolul 5: Concluzii și activități viitoare – această secțiune cuprinde concluziile privind stadiul final al aplicației și funcționalitățile viitoare ce se doresc a fi implementate.

2. Analiză

Realizări similare în domeniu

În această secțiune sunt prezentate și analizate cele mai importante aplicații de Business Intelligence de pe piața, conform lucrărilor și articolelor studiate.

Din cauza creșterii exponențiale a volumului mare de date din ultimul deceniu, au devenit necesare platforme de întreprindere, de analiză si explorare operațională a datelor complexe dintr-o companie. De asemenea, se dorește analizarea performanței angajaților, din moment ce datele au un rol major în ceea ce privește capacitatea de a înțelege ceea ce se întâmplă în cadrul activităților desfașurate într-o companie.

Fig.1 Evoluția Afacerilor Inteligente(Business Intelligence)

În figura 1, este prezentată evoluția procesului de Bussiness Intelligence. Următorul pas în evoluția acestui proces este de a înțelege și de a analiza ceea ce este probabil să se întâmple și anume realizarea de analize predictive. Analizele predictive vor oferi companiilor un avantaj competitiv unic.

Domeniul de Business Intelligence este destinat, în principiu, marilor companii care doresc sa facă afaceri inteligente, precum Oracle, Microsoft, IBM, Capgemini etc. Pe baza acestui principiu, companiile dezvoltă aplicații BI, ERP sau CRM pentru a analiza cât mai eficient progresul companiei.

Oracle Business Intelligence 12c

Oracle Business Intelligence 12c este o aplicație BI dezvoltată de Oracle, care reunește mai multe funcționalități: analiza vizuală, raportare și „dashboarding”, analiza operațională puternică, performanță bună, toatea acestea fiind încapsulate într-o platformă unică ușor de gestionat.

Vizualizarea datelor într-o platformă conduce la o analiză a activităților mult mai rapidă și mai ușoară. În Oracle Business Intelligence 12c, vizualizarea datelor este foarte detaliată și întreaga experiență a utilizatorului este raționalizată, ceea ce face ca Oracle Business Intelligence 12c să ofere, pe langă flexibilitate si rapiditate în analiza datelor, o interfață placută și intuitivă. Actualizările care au loc de fiecare dată în platformă conduc la eficiență și capacitate crescută de analiză a datelor.

Interfața pentru pagina de „home” si „dashboard” au o structură simplificată, care ajută utilizatorul să se concentreze foarte bine asupra datelor și să analizeze ce este cel mai important. Partea de vizualizare și datele sunt conectate în mod implicit, ceea ce oferă utilizatorului posibilitatea de navigare, explorare și căutare foarte rapidă.

Oracle Business Intelligence 12c oferă „self-service” pentru încărcarea datelor fară a necesita modelare, ceea ce implică analiză foarte rapidă pentru toți utilizatorii din companie.[1]

IBM Cognos Software

IBM Cognos Software reprezintă o aplicație Business Inteligence de management al performanței dezvoltată de IBM. Acest software este proiectat pentru a permite utilizatorilor să extragă date corporative, să le analizeze și să le asambleze în rapoarte.

Software-ul Cognos a fost proiectat pentru a ajuta companiile sau organizațiile de afaceri să ia decizii care pot atinge rezultate foarte bune în afaceri și în viitor.

Acestă aplicație oferă un set de instrumente pe bază de rapoarte, dashboard-uri, analiză de date și monitorizare de evenimente. Cognos este construit pe standare deschise, produsele software putând fi folosite cu surse de date relaționale și multidimensionale de la furnizori multipli precum Microsoft, SAP sau Oracle.

IBM Cognos Software include functionalități ca:

abilitatea de a crea rapoarte online și offline, care funcționează în modul deconectat

un sistem care conectează oameni, idei și cunoștințele lor pentru a imbunătăți procesele de afaceri

comoditatea de cloud fară a fi nevoie ca datele să fie mutate

IBM Cognos Business Intelligence traduce volumul mare de date în cunoștințe relevante necesare analizelor manageriale cu privire la întreaga activitate a companiei. De asemenea, informația este prezentată într-un format personalizat, unde managerii sau utilizatorii aplicației pot să analizeze și să colaboreze pe baza detaliilor prezentate într-un singur dashboard. În plus IBM Cognos prezintă aceste funcționalități și pe partea de aplicații mobile, ceea ce le permite utilizatorilor posibilitatea de a accesa informații de pe iPhone, iPad sau Android.

Oracle Hyperion Software

Oracle Hyperion este cunoscut pentru procesele de Business Intelligence și pentru managementul corporativ de performanță. Platforma Oracle Hyperion include numeroase functionalități pentru planificare și prognoză, pentru managementul financiar, raportare financiară, managementul bazelor de date etc. Oracle Hyperion este lider în software-ul de management al performanței și permite integrarea rapidă a numeroase produse.

Board Software

Board Software reprezintă un sistem de Business Intelligence care combină managementul performanței corporative și analiza de business. Este destinat companiilor mijlocii pentru diferite arii industriale, prezintă funcționalitate de raportare, permițând utilizatorilor să extragă date și să genereze rapoarte pe baza lor. Rapoartele pot fi exportate în mai multe formate diferite, cum ar fi: CSV, HTML, PDF etc. De asemenea, sistemul dispune și de funcționalități extinse pe mai multe limbi.

Prin interacțiunea cu aplicația de dashboard se permite utilizatorilor o experiență complet personalizată. În plus, prin intermediul acestui software, compania poate vizualiza datele într-un mod relevant, ceea ce conduce la luarea de decizii de afaceri inteligente pe viitor.

Clementine Data Mining Workbench From SPSS

Software-ul Clementine a fost unul dintre primele produse dezvoltate pentru a aduce machine learning spre business intelligence. Aceasta este o platformă de SPSS pentru soluții de data mining. În plus, această platformă oferă funcționalități de utilizare pentru afacerile prezente, fiind folosit în special în analiza web și text mining.[2]

BestApps Software – Studiu de caz

În această secțiune este prezentat un studiu de caz în care se explică procesele aplicării metodologiei de Business Intelligence asupra dezvoltarii de software la nivel global și rezultatele obținute în urma acestor procese. In figura 1, este reprezentat procesul de luare a deciziilor în dezvoltarea de software prin aplicarea de Business Intelligence.

În primul pas, se analizează obiectivele de afaceri pentru a stabili relațiile lor și, în același timp, se identifică procesele care sunt responsabile pentru realizarea acestor obiective. În urmatorul pas, factorii de decizie, respectiv managerii, sunt intervievați pentru a analiza informațiile necesare în timpul procesului de luare a deciziilor. Ulterior se identifică influențele identificatorilor individuali, care sunt incluse intr-un model de obiective de afaceri extinse pentru a prezenta o imagine a impactului deciziilor luate. În continuare, sunt inspectate sursele de date disponibile pentru a analiza calitatea datelor, urmând ca factorii de decizie și managerii să analizeze informațiile agregate. În final, se elaborează un set de dashboard-uri cu statistici care iau în considerare relațiile dintre obiectivele individuale pe baza cărora managerii iau decizii.[3]

Fig.2 Pașii pentru aplicarea BI asupra GSD(Global Software Development)

Există multiple roluri, implicate în managementul dezvoltării de software, fiecare contribuind la succesul proiectelor și la atingerea celor mai înalte obiective de business. În acest studiu de caz sunt prezentate 3 roluri principale implicate în managementul dezvoltarii software și anume: Project Manager, Scope Manager si Quality Manager.[3]

Project Manager-ul are trei obiective strategice precum: gestionarea și distribuirea efortului între diferitele task-uri ale proiectelor, evitarea abaterii de la planul specificat și creșterea productivității angajaților.

Fig.3 Informații de care are nevoie un Project Manager

Scope Manager-ul este axat pe menținerea stabilității proiectului prin gestionarea modificărilor care apar asupra cerințelor. Cele două obiective principale ale sale sunt: asigurarea stabilității proiectului și obținerea aprobării clientului. Pentru obținerea acestor obiective el este cel care trebuie să decidă daca să accepte sau nu modificările cerințelor, după care să ajungă la un acord cu clientul.

Quality Manager-ul asigură faptul ca dezvoltarea software-ului respectă standardele de calitate ale companiei. Principalele sale obiective sunt creșterea calității produsului și imbunătățirea calității testelor de eficacitate.

În concluzie, analizând toate aceste aplicații de Business Intelligence existente pe piață, aplicația descrisă în această lucrare oferă funcționalități asemănătoare cu cele similare din domeniu, însă prezintă avantajul ușurinței în utilizare deoarece unele aplicații de BI sunt foarte dificil de folosit și foarte încărcate din punct de vedere al interfeței. Ea prezintă simplitate, interfață interactivă și eficiență.

Spre deosebire, de alte aplicații BI, interfața acesteia nu este foarte incarcată astfel încat sa îngreuneze înțelegerea funcționalităților și încărcarea paginilor. Funcționalitățile sunt împărțite în mai multe secțiuni astfel încât sa fie cât mai clară utilizarea aplicației.

Tehnologii folosite

În acest subcapitol, sunt prezentate noțiunile teoretice și tehnologiile necesare cu ajutorul carora s-a realizat acest proiect.

2.2.1 Configurare WildFly-JBoss Tools

Pentru configurarea mediului de lucru s-a folosit drept server de aplicație WildFly 8. WildFly este o arhitectură modulara, open-source, un server de aplicații Java Enterprise Edition. În trecut, acesta purta numele de JBoss Application Server, iar în prezent el inca ramane cel mai popular server de Java Enterprise. Datorită ușurinței de utilizare și administrare centralizată a interfeței, gestiunea și execuția unei aplicații Java este simplificată. WildFly suportă tehnologii web precum sockeți web și API non blocant. Avantajele acestui server de aplicații se reflectă în faptul că WildFly este un server rapid, ușor de gestionat și flexibil.

JBoss Tools este folosit în conjuncție cu tehnologii precum: Hibernate, JBoss AS, CDI, Doker, JSF, (X)HTML, Maven etc.

Pentru configurarea mediului de lucru și pentru rularea serverului WildFly s-au instalat urmatoarele pachete software:

SDK Eclipse

JDK8 (Java Development Kit 8)

WildFly 8

MySQL

Maven

În figura de mai jos, este reprezentată structura servarului de aplicație.

Fig.4 Arhitectura modulară a server-ului WildFly 8

Configurarea serverului de aplicație a fost realizată in fișierul de configurare default: standalone.xml.

Kernel-ul serverului se bazează pe doua module principale:

Modulul de JBoss: proiectul include o clasă de resurse încarcata în container

MSC(Modular Service Container): acest proiect deține o modalitate de a instala, dezinstala si gestiona serviciile folosite de server. MSC mai degrabă permite injectarea de resurse în servicii și gestionarea de dependințe între servicii. [4]

Fig.5 Arhitectura de bază a kernel-ului server-ului WildFly 8

2.2.2 Primefaces GUI Framework

Primefaces reprezintă o bibliotecă open-source, un framework de UI pentru JavaServer Faces, care este folosit pentru a dezvolta rapid aplicații sofisticate în domeniul afacerilor. Acest framework oferă peste 100 de componente JSF individuale incluzând diverse widget-uri, Ajax, butoane, comenzi de afișare a datelor, panouri, meniuri, diagrame, dialoguri etc. Primefaces facilitează explorarea mediului de afaceri, fiind dedicat dezvoltarii în mod eficient a aplicațiilor și oferind o interacțiune placută și intuitivă. Scripturile client de Primefaces se bazează pe cele mai populare biblioteci de JavaScript și jQuery.[5]

Avantajele acestui framework sunt:

Ușurința de utilizare

Compatibilitatea cu alte biblioteci

Integrarea facilă de componente

Majoritatea componentelor se bazează pe jQuery, ceea ce permite compatibilitate cu toate browser-ele

Are o complexitate ridicată, dar iși menține flexibilitatea

De asemenea, este folosit de marea majoritate a companiilor mari și de succes precum Accenture, Oracle, Dell, nVidia etc. Prin utilizarea acestui framework, dezvoltatorii pot crea interfețe foarte bogate și interactive.

În figura 6 și figura 7 este reprezentată o parte din implementarea aplicației în ceea ce privește acțiunea pe butoanele din grid-ul ce conține lista de account-uri din sistem. În aceste imgaini se arată cum se face legătura dintre controller-ul implementat în Java cu componentele framework-ului de Primefaces.

Fig.6 accountsPage.xhtml

Fig.7 AccountsController.java

În controller sunt implementate trei funcții care conțin logica pentru acțiunea butoanelor de delete, approve și reject din secțiunea Dashboard a aplicației. Aceste funcții sunt apoi apelate în fișierul de accountsPage.xhtml pe componenta de PrimeFaces și anume <p:commandButton>. În acest mod se stabilește legatura dintre componentele framework-ului și implementarea în limbajul Java.

2.2.3 JavaServer Faces

JavaServer Faces este un framework Web bazat pe Java, cu scopul de a simplifica integrarea dezvoltarii de interfețe web. JSF este folosit pe partea de server, ca parte din standardul Java EE. O aplicație JSF ruleză într-un container web, adică foloseste un server precum Tomcat, WildeFly, sau Jetty. O astfel de aplicație este compusă din pagini web cu componente JSF UI. De asemenea, se bazează pe paradigma MVC (Model-View-Controller), acesta fiind un șablon de proiectare cu o structură complexă și foarte eficientă, folosit în industria software.

JSF prezintă urmatoarele caracteristici principale:

Se bazează pe conceptul de Model-View-Controller

Suport pentru observatori pe componentele de UI

Oferă suport pentru validarea datelor, legarea datelor și comunicarea lor între UI si model

Separă functionalitatea unei componente de afișarea componentei

Fig.8 MVC Design Pattern

Modelul reprezintă partea logică, informația necesară aplicației. View-ul se ocupă de partea de afișare a datelor la nivel de UI, iar controller-ul reprezintă conexiunea dintre model și view și gestionează logica aplicației.

2.2.4 Java Programming Language

Java este un limbaj de programare de nivel înalt, dezvoltat de către James Gosling si Bill Joy. Este un limbaj de programare orientat obiect care este folosit pe majoritatea dispozitivelor.

Prezintă următoarele caracteristici:

Este un limbaj compilat și interpretat

Prezintă robustete

Simplitate

Portabilitate

Performanță

Multithreading (execuția mai multor thread-uri în același pipeline)

Scalabilitate și reutilizare

Java este referit ca platformă independentă. De asemenea, folosește o masină virtuală numita JVM (Java Virtual Machine), ceea ce îi conferă abilitatea de a funcționa pe mai multe platforme. Este similar cu C din punct de vedere al funcționalităților limbajului. În Java, codul sursă este transformat în instrucțiuni binare simple. Codul compilat este apoi executat de către un interpretor Java. Clasele dețin o structură pentru desemnarea și crearea obiectelor și reprezintă un template pentru crearea unui obiect. Un obiect în Java încapsulează date și operații, iar pentru a controla încapsularea se folosesc modificatorii de acces.

Java este folosit și pentru a dezvolta aplicații embedded pe pagini web precum Applet-urile și aplicații server side. Eliberarea de memorie în Java se face în mod automat de catre Garbage Collector.

Pentru aplicația de Business Intelligence s-a folosit Java Enterprise Edition (Java EE). Java EE este standardul de întreprindere definit pentru a construi servicii de afaceri scalabile pentru aplicații web și mobile. Java EE implică maximizarea alegerii și minimizarea riscurilor. În plus, Java EE aduce o colecție de API-uri și tehnologii destinate pentru a oferi suport aplicațiilor de întreprinderi.

Acest standard are la bază tehnologii precum: JDBC, EJBs, JSP, XML, JMS, JTA, STC, JAF etc. Dintre acestea, s-au folosit EJB-uri (Enterprise JavaBeans). Un EJB reprezinta o componentă server side pentru platforma Java SE. Această tehnologie permite dezvoltarea rapidă și simplificată a aplicațiilor distribuite, sigure și portabile, bazate pe Java.

2.2.5 Java Development Kit 8

Java Development Kit deține instrumentele necesare pentru a crea aplicații Java. Instalarea acestui JDK include JRE (Java Runtime Environment), necesar pentru a rula aplicații Java.

JDK 8 este o versiune revoluționară folosită de limbajul Java, acesta incluzând functionalități pentru productivitate, ușurința în utilizare, securitate și performanță sporită. Cea mai nouă funcționalitate pe care JDK 8 o aduce limbajului Java sunt expresiile Lambda. Acestea permit programarea funcțională și scrierea de cod mult mai compact și flexibil, facilitează programarea paralelă și dezvoltarea de API-uri mult mai generice și reutilizabile. Acesta include și metode „default”, interfețe funcționale și „stream” API.

2.2.6 Eclipse IDE

Acesta este un mediu de dezvoltare integrat folosit în dezvoltarea software. Este unul dintre cele mai folosite medii de dezvoltare Java, însa cuprinde și un sistem de pluginuri care poate fi folosit și pentru dezvoltarea de aplicați în alte limbaje precum C, C++, Haskell, Perl, Ruby etc.

SDK-ul de Eclipse include instrumentele de dezvoltare Java Eclipse (JDT), oferind o structură completă a fișierelor sursă Java.

Această aplicație a fost dezvoltată în Eclipse Mars, aparut in 2015. Acesta prezinta următoarele caracteristicile:

Vizualizarea ierarhică a proiectelor imbricate

Îmbunătățiri de viteză pentru căutare de text

Instrumente pentru întreținerea containerelor Docker

Pe langă integrarea cu Maven, acesta permite și integrarea cu Gradle, ceea ce face mai ușoară gestionarea lui din Eclipse

Suport îmbunătățit pentru Maven

Autocompletare avansată în editorul POM.

2.2.7 Integrare Maven Apache

Maven este un framework pentru construirea și gestionarea oricarui proiect bazat pe Java, facilitând procesul de construire a proiectului. Unul dintre avantajele principale în ceea ce privește utilizarea acestui instrument este oferirea de informații utilizatorilor cu privire la starea completă a efortului de dezvoltare.

Astfel, Maven incearca sa ofere:

Furnizarea de informații de calitate proiectului

Furnizarea unui sistem constructiv uniform

Construirea mult mai ușoară a proiectului

Furnizarea unui ghid pentru cele mai bune practici de dezvoltare software

Migrare transparentă pentru noi funcționalități

Maven oferă acest sistem constructiv uniform deoarece permite construirea unui proiect folosind un fișier de configurare care conține toate informațiile necesare (dependințele de proiect), acest fisier fiind POM (Project Object Model). În plus, Maven oferă o cantitate de informație utilă proiectului, o parte din informație fiind luată din acest fișier de configurare POM.

Acest framework poate oferi lista de dependințe, lista de discuții, rapoartele testelor unitare, și facilitează etapele de lucru la proiect prin managementul de release. Cele mai bune practici de teste unitare folosite ca tehnici de ghidare au fost:

Menținerea codului sursă de testare într-o structură arborescentă separată, dar paralel cu sursa

Folosirea de convenții de nume pentru a localiza și executa teste.

2.2.8 MySQL

O baza de date reprezintă o colectie simplă de date. Într-o bază de date relațională, datele sunt organizate în tabele.

MySQL (Structured Query Language) reprezintă un limbaj open-source foarte popular de manipulare a bazelor de date. Este utilizat pentru interogări de date, livrare rentabilă, performanță și scalabilitate a aplicațiilor web de baze de date. Pe langă ușurința de utilizare, performanța crescută și fiabilitate, utilizatorii pot beneficia de funcționalități avansate, unelte de management și suport tehnic pentru a dezvolta, executa și gestiona o aplicație bazată pe MySQL.

MySQL este un sistem de management de baze de date, el având un shell interactiv pentru crearea de tabele și inserarea de date. Cel mai important aspect în ceea ce priveste MySQL este preluarea datelor. De asemenea, el suportă operații precum: select, insert, update, delete, join, order by, group by, limit, having etc.

Motivul pentru care am ales să lucrez cu acestă bază de date relatională este:

Poate fi utilizată fară niciun cost

Interactiunea cu shell-ul ușor de folosit, pentru a crea sau interoga tabele

Oferă scalabilitate și flexibilitate, flexibilitatea platformei fiind o caracteristică importantă pentru susținerea sistemelor de Linux, UNIX si Windows. În plus, pentru că este open-source, permite personalizarea completă pentru cei care doresc să adauge cerințe unice serverului de baze de date.

Performanță ridicată

Suport tranzacțional robust, oferind una dintre cele mai puternice baze de date de pe piață

Compatibilitate cu Web și Data Warehouse, datorită motorului său de interogare de înaltă performanță și capacitate extrem de rapidă pentru inserarea de date.

Protecția datelor

Ușurința gestionarii bazei de date

Agile-Scrum Framework

Metodologiile Agile au devenit foarte populare în rândul marilor companii, fiind un mecanism care oferă creșterea capacității de a gestiona schimbările condițiilor dinamice de pe piață. Dezvoltarea Agile a fost menționată în anul 2001, dupa care a atins un mare succes. Agile presupune reducerea cât mai mare a complexității, în comparație cu metodele tradiționale de dezvoltare software, cu scopul de a promova accelerarea termenelor de proiect, modificari ale cerințelor utilizatorilor și răspuns rapid la modificările aparute pe parcursul dezvoltarii produsului.

Fig.9 Procesul de dezvoltare software[6]

Diferențele dintre dezvoltarea Agile și metodele tradiționale de dezvoltare sunt[6]:

Adaptabilitatea – în acest caz, Agile oferă prioritate adaptabilității în raport cu modelul tradițional, unde se pune accent pe predictibilitate. În cazul unei metode tradiționale de dezvoltare, atunci când se începe un proiect, managerii se gândesc în primul rând la o documentație foarte detaliată. Partea de design și dezvoltare sunt separate, în timp ce, la metoda Agile, partea de documentație, design și cerințele de implementare se pot modifica pe parcursul dezvoltării produsului.

Lucrul in echipa – în cazul procesului tradițional, comunicarea este foarte scazută, iar managerul este cel care preia atribuțiile acestui process. La procesul Agile, modalitatea de lucru este împărțită în echipe mici, ceea ce oferă flexibilitate și creșterea eficienței angajațiilor.

Această metodologie se adresează în special managerilor și oamenilor dintr-o companie sau organizație. Aceștia urmaresc satisfacerea și câștigarea încrederii clientului prin realizarea unui produs software care să respecte cerințele clientului și să fie stabil din punct de vedere funcțional.Beneficiul utilizării acestui instrument de către companii este salvarea timpului și a resurselor finaniciare.

Avantajele utilizarii metodologie Agile sunt:

Rezultatele previzibile

Control strict asupra situației

Calitate ridicată a producției

Risk de Management foarte bun

Echipele de dezvoltare software care experimentează acest proces se concentrează pe livrarea rapidă a business-ului. Cerințele trebuie să fie foarte clare, deoarece acesta este un proces iterativ, iar la întalnirile și discuțiile cu clientul trebuie avut în vedere feedback-ul clientului.

Avantajul acestui process iterativ este imbunătățirea rapidă a calității produsului, deoarece, pe parcursul acestor întâlniri, apar de cele mai multe ori modificări asupra produsului. Pe o anumită perioadă de timp au loc întâlniri iterative atât cu clientul, cât și cu echipa de dezvoltare, toate acestea aducând valoare și satisfacție clientului și profit bun companiei. Clientul câștigă încrederea companiei și observă că cerințele sale pentru dezvoltarea acestui produs sunt respectate.

Unul dintre principiile care stă la baza metodologiei Agile este faptul că satisfacerea clientului are prioritate maximă prin livrarea continuă a funcționalităților produsului software care se dorește dezvoltat.

În realizarea acestei aplicații am colaborat cu compania Capgemini România, colaborarea având la bază una dintre metodele Agile, și anume Scrum.

Scrum a fost pentru prima dată practicat în Easel în anul 1993. Acesta este indicat pentru dezvoltarea de software pentru care cerințele sunt dificil de prezis. Acest proces necesită cercetare, creativitate și încercări în realizarea business-ului respectiv și este ideal pentru dezvoltarea proiectelor de producție. Procesul Scrum oferă dezvoltatorilor de software flexibilitate, comunicare și cooperare foarte stransă pentru a rezolva dificultățiile întâmpinate.

In figura de mai jos, este reprezentat procesul Scrum, un proces iterativ pe o perioadă de 2-4 saptamani. Fiecare iterație a ciclului se numește sprint. Realizarea unui produs software pornește de la cerințele clientului, urmând ca echipa de dezvoltare să depună efort pentru a obține rezultate în fiecare ciclu. Au loc întâlniri de 15 minute cu fiecare echipă de dezvoltare pentru a analiza progresul și pentru a se discuta dificultățile întâlnite pe parcursul dezvoltării, astfel încât să se ia o decizie în privința următoarelor task-uri.[6]

Fig.10 Procesul Scrum[6]

Există trei roluri în procesul Scrum:

„Scrum master”

„Scrum team”

„Product owner”

Fig.11 Roluri în Procesul Scrum

Rolul de „Product owner” este atribuit unei persoane care deține „product backlog”. Acesta este vocea clientului și este responsabil de definirea cerințelor de „business”, conduce echipa, stabilește ceea ce este prioritar din punct de vedere al funcționalitățiilor și decide pe baza informațiilor comunicate de echipă data fiecarui sprint.

Rolul de „Scrum master” implică administrarea procesului Scrum, facilitând comunicarea între echipa de dezvoltare și oamenii din exterior.

Rolul de „Scrum team” i se atribuie unei echipe formate din 5-9 persoane. Fiecare membru are aceeași responsabilitate și autoritate si nu există roluri bine definite. După formarea echipei, membrii discută pentru atribuirea sarcinilor. Scopul echipei Scrum este livrarea produsului la timp.

În concluzie, modelul de dezvoltare bazat pe metodologia Scrum a fost adecvat pentru realizarea proiectului. Întâlnirile cu coordonatorii din compania Capgemini Romania, în care au fost stabilite noi funcționalități sau în care s-a decis reimplementarea unora existente, au avut loc de-a lungul unor iterații Scrum.

3. Arhitectură și implementare

Arhitectura aplicației

3.1.1 Module și interfețe

Aplicația descrisă în această lucrare conține mai multe module, unul dintre ele fiind modulul GUI care conține JSF-uri, acestea bazându-se pe o arhitectură MVC.

Fig.12 Arhitectură aplicație

În figura 12, este prezentată arhitectura aplicației construită pe baza unei arhitecturi de tip MVC (Model-View-Controller) având următoarele module:

Presentation Layer – acesta reprezintă un set de instrucțiuni de control care decide cum trebuie să arate interfața aplicației. Pentru construirea logicii View-ului am folosit JSF(JavaServer Faces) care reprezintă o componentă bazată pe framework-ul MVC. De asemenea JSF dispune și de FacesServlet folosită pentru a gestiona cererea-raspunsul catre Controller. Pentru a lega View-ul de Model am folosit componente JSF.

Navigation Layer – acesta se ocupă cu navigarea între paginile web ale aplicației.

Business Logic Layer – acesta reprezintă modulul care efectuează operațiile ce țin de logica aplicației, cum ar fi secțiunea de înregistrare în aplicație.

Data Layer – acesta reprezintă modulul care manipulează baza de date folosind operațiile CRUD precum: create, read, update și delete. Acest modul specifică totodată comunicarea dintre baza de date și aplicație precum și accesul la datele stocate în bază.

3.1.2 Cazuri de utilizare

Aplicația s-a dorit a fi cât mai ușor de folosit din punct de vedere al utilizatorului astfel încât să se înțeleagă funcționalitățiile aplicației.

Un caz de utilizare al aplicației ar fi următorul:

Un user poate avea rol de Admin sau PJM (Project Manager) în aplicatie, Adminul fiind un Manager al aplicației care gestionează ceilalți Manageri de proiect(Project Managers).

Un user trebuie să își creeze un cont în secțiunea de înregistrare pentru a se putea loga în aplicație

Un user se loghează cu credențialele sale (nume și parola), pe care le-a obținut la înregistrare, în secțiunea de login a aplicației.

Dacă user-ul are rolul de Admin, acesta are permisiuni pe toată aplicația, în special în secțiunea de Dashboard, unde adminul gestionează lista de cont-uri prezentă în sistem, statusul unui account( Approved sau Rejected), precum și opțiunea de ștergere a unui account din aplicație. De asemenea, Adminul poate gestiona secțiunea de Project Management Selection, secțiunea de rapoarte și statistici.

Daca user-ul are rolul de PJM și statusul Approved în aplicație, acesta are permisiuni de Read și Write, la toate secțiunile aplicației mai puțin la cea de Dashboard, deoarece doar user-ul cu rolul de Admin are acces la acea secțiune.

Daca user –ul are rolul de PJM și statusul Rejected, acesta are doar permisiuni de Read, putând doar să vizualizeze rapoartele și statisticile aplicației.

Odată logat în aplicație, user-ul cu rol PJM și status Approved poate selecta doar proiectele asignate de Admin, release-ul, sprint-ul și setarea capacității per sprint-ul respectiv pentru dezvoltarea proiectului. Pe baza acestor date, user-ul poate genera rapoarte care pot fi filtrate în funcție de release și proiect. De asemenea, poate vizualiza statistici care analizează numarul total de story points acumulat per release și capacitatea totală per release.

Un user se poate deconecta din aplicație prin apăsarea butonului de LogOut.

3.1.3 Diagrama de activități

În figura 13 este reprezentată diagrama de activități a aplicației. Aceasta expune pașii de utilizare a întregii aplicații, modelează fluxul aplicației începând de la procesul de înregistrare pană la acțiuni precum : asignare proiect per account, setare capacitate per sprint, statistici și rapoarte.

Fig.13 Diagrama de activități

Aceasta descrie următoarele acțiuni:

Daca un utilizator are deja un cont înregistrat acesta se poate loga în aplicație în secțiunea de Login

Daca un utilizator nu are un cont înregistrat acesta trebuie să își creeze un cont în secțiunea Register

Daca utilizatorul are rolul de Admin, acesta are permisiuni în toată aplicația și poate face acțiuni precum atribuire proiecte per utilizator sau setare capacitate per sprint.

Daca utilizatorul are rolul de PJM(Project Manager) acesta are doar anumite permisiuni în aplicație precum permisiunea de a seta capacitatea per sprint. De asemenea, poate să aleagă proiectele și release-urile asignate proiectelor respective.

De asemenea, atât utilizatorul Admin cât și utilizatorul PJM pot vizualiza rapoarte și statistici expuse în aplicație.

3.1.4 Baza de date

Primul pas în construirea bazei de date a fost crearea ei și adaugarea entităților necesare aplicației precum: account, accountprojects, sprint, release, storypint, categorytype, item, project, projectrelease, projectreleasesprint. În figura de mai jos, este prezentată diagrama de entități de legatură a bazei de date.

Fig.14 Diagrama entitate-relație a bazei de date

În continuare este prezentată structura bazei de date.

În tabela “account” sunt stocați utilizatorii aplicației. Aceștia sunt fie administratorii aplicației, ce pot să atribuie proiecte project-managerilor, însa pot fi și project-manageri , ce pot vedea diverse statistici pe baza proiectelor ce vin din Jira.

Pentru asocierea utlizatorilor cu proiectele, se folosește tabela “accountprojects”, ce este în relatie de 1:n cu fiecare dintre tabelele “account” și “project”.

Tabelele “project”, “release” și “sprint” cuprind toate denumirile de proiecte, release-uri și sprint-uri înregistrate, ce provin din Jira

În tabela “projectreleasesprint” se adaugă, pentru release-urile stocate în tabela “projectrelease”, sprint-urile și capacitatea pe un sprint.

Tabela “projectrelease” este în relație de 1:n cu tabela “project” și cu tabela “release”. Aici se vor stoca, pentru fiecare proiect, release-urile sale și în ce an au avut loc fiecare. Între “projectrelease” și “projectreleasesprint” există o relație de n:1, iar între tabela projectreleasesprint” si tabela “sprint” exista o relatie de 1:n.

În tabelele “categorytype” și “item” sunt stocate toate denumirile de categorii și item-uri ce provin din Jira. Între aceste două tabele și tabela “storypoint” există o relatie de n:1.

În tabela “storypoints” sunt adăugate story point-urile ce provin din Jira. În tabela account, se află datele de înregistrare, respectiv authentificare, precum credențialele name și password, respectiv rolul și statusul atribuit fiecărui utilizator din aplicație.

În tabela categorytype sunt stocate categoriile pe care sunt împarțite proiectele mari, ce provin din Jira.

3.2 Implementare Aplicație

Pentru implementarea aplicației am folosit tehnologii bazate pe web, pe care le-am descris în subcapitolul 2.2. Aplicația cuprinde următoarele funcționalități:

Procesul de înregistrare pentru noi utilizatori: enrollment

Procesul de login în aplicație

Lista de account-uri prezente în sistem

Gestiunea de roluri și permisiuni în sistem

Setare status per account

Asignare proiect per account

Opțiunea de delete account

Opțiunea de reject și approve pentru un account în sistem

User project management: selectare release, proiect și setare capacitate

Generare rapoarte

Generare statistici

Aplicația are la bază următoarele dimenisuni:

Project + People + Time + Effort

Folosind aceste date, aplicația oferă informații cu privire la creșterea în performanță a companiei, capacitatea de livrare a echipei, distribuirea efortului între tipurile de activități efectuate în proiect.

Aceste dimenisiuni se bazează pe metoda Agile – Scrum, ceea ce înseamnă că planificarea proiectelor este împărțită în sprint-uri, fiecare sprint având asociat câte un release. Fiecare proiect conține câte o categorie a proiectului, iar fiecare categorie conține câte un item(task) la care se asignează un dezvoltator sau o echipă de programatori.

Un sprint reprezintă organizarea timpului în mai multe perioade de dezvoltare a proiectului de către echipa software. Fiecare sprint are asociat un număr de story point-uri care reprezintă complexitatea proiectului. Efortul reprezintă capacitatea echipei de dezvoltare și terminare a proiectului, pe care echipa il poate depune până la release-ul proiectului.

Fig.15 Structură aplicație

Conform imaginii de mai sus, nivele pe care este structurată aplicația sunt urmatoarele:

Nivelul de bază de date – MySQL.

Nivelul de JPA – se creează entitățile pe baza tabelelor.

Nivelul de servicii EJB – prin intermediul căreia se fac interogări în baza de date.

NIvelul de controller aferent paginilor – view-uri.

Nivelul de view – se creează fișiere “.xhtml” construite cu ajutorul bibliotecii “PrimeFaces”. JFS folosește fișiere cu extensia “.xhtml” (Facelets), iar PrimeFaces sunt componente sau biblioteci de JFS care sunt folosite peste JFS.

3.2.1 Diagrama de componente

Aplicația este formată din 4 componente, așa cum este prezentată în figura 12. Prima componentă este modulul de Java EE, care comunică atât cu baza de date, cât și cu partea de client. A doua componentă este baza de date, care comunică cu server-ul aplicației de Java WildFly și cu modulul de integrare cu alte aplicații sau API-uri. A treia componentă o reprezintă partea de client, care comunică, de asemenea, cu server-ul aplicației, iar a patra componentă, care este o componentă separată de restul aplicației, este reprezentată de un API care va aduce datele proiectelor software ale companiei din Jira și le va salva în baza de date.

Jira reprezintă un tool folosit de către companii pentru urmărirea și gestionarea proiectelor și a task-urilor asignate, planificate de către managerul de poriect al echipelor de dezvoltare software.

Fig.16 Diagrama de componente

Compania dorește ca aplicația sa poată fi integrată și cu alte sisteme(aplicații) sau API-uri cu privire la alte funcționalități ce urmează a fi implementate. În prezent aplicația se integrează cu un API dezvoltat pentru a aduce datele reale din Jira și pentru a le salva în baza de date. Aplicația conține aceste date pe baza cărora se fac analize și predicții în ceea ce privește performanța companiei, efortul depus de echipele de dezvoltare și profitul obținut. Pe baza acestor date se generează rapoarte și statistici folosite în managementul companiei.

3.2.2 Autentificare

Procesul de autentificare constă în înregistrarea unui cont în secțiunea de Registration a aplicației. Formularul conține trei input-uri text: pentru username, password și confirm password. Un utilizator care dorește să își facă cont trebue să introducă toate aceste credențiale conform imaginii 17. De asemenea, formularul conține și un indicator pentru a seta și a vedea cat de rezistentă este parola respectivă, conform imaginii 18.

Fig.17 Formular de înregistrare

Fig.18 Indicator de rezistență a parolei

Pentru securitatea user-ului, am optat pentru introducerea de validări la crearea

parolei. Validările sunt puse pe partea de front-end, inainte ca parola să ajungă pe server. User-ul este forțat de aceste validări, în crearea unei parole strong, astfel crescând nivelul de securitate al contului.

Fig.19 Validare Formular Înregistrare

După ce un utilizator își creează cont, acesta trebuie să se logheze în secțiunea de Login a aplicației, dupa cum se vede și în imaginea 20. Utilizatorul introduce credențialele pe care și le-a creat în secțiunea de înregistrare. De asemenea, pentru formularul de Login, am setat validările corespunzătoare conform imaginii 21. În plus, un utilizator nu se poate loga în aplicație daca nu și-a creat mai intâi un cont, conform imagini 22.

Fig.20 Formular Login

Pentru a ajunge în pagina de login, user-ul are mai multe posibilități: fie intră din bara de meniu, fie este redirectat de pe prima pagină în pagina de login, atunci cand este pornită aplicația.

Fig.21 Validare parolă

Când se face autentificarea în aplicație, datele introduse în inputurile de Username și Password, sunt trimise pe server, după care se fac căutări în baza de date după contul introdus. În situația în care se gasește contul, se verifică în continuare dacă parola introdusă este cea corectă. În schimb, dacă nu se gasește contul în baza de date sau parola nu este cea aferentă contului, apar notificari ale validarilor corespunzătoare (Fig. 21 si Fig. 22)

Fig.22 Validare user

3.2.3 Admin Dashboard

În această secțiune, utilizatorul cu rolul de Admin gestionează lista de account-uri prezentă în aplicație, după cum se observă și în Fig 23. În plus, adminul are permisiuni în toată aplicația.

Admin Dashboard conține un grid list care permite paginare și sortare după coloana cu numele utilizatorilor. Acest grid conține toți utilizatorii care s-au înregistrat și logat în aplicație, lista de roluri și lista de proiecte, precum și statusul fiecărui utilizator.

Fig.23 Admin Dashboard

Rolul unui utilizator poate fi:

ADMIN

PJM

Statusul unui utilizator poate fi:

APPROVED

REJECTED

Permisiunile unui utilizator pot fi:

READ

WRITE

În această secțiune doar adminul poate gestiona asignarea de proiecte, selectând proiecte din coloana Projects și roluri pentru fiecare utilizator, din coloana Role.

După cum se observă și din imaginea de mai jos, adminul este cel care poate șterge un utilizator din aplicație prin apăsarea butonului Delete, și, de asemenea, poate seta statusul unui utilizator, apăsând butonul de Approve, respectiv butonul de Reject, rezultatul acțiunii punându-se în coloana cu numele Status.

Daca statusul unui utilizator este setat ca approved și are rol de PJM(Project Manager), el are permisiuni de READ și WRITE în aplicație, ceea ce înseamnă că își poate seta capacitatea pentru proiectul asignat de catre Admin și poate vizualiza rapoartele și statisticile din aplicație.

Daca statusul unui utilizator este setat ca rejected și are rol de PJM, acesta are permisiuni doar de READ în aplicație, ceea ce înseamnă ca poate doar vizualiza ceea ce este în aplicație și nu poate face acțiuni precum selectare release și sprint sau setare capacitate per proiect.

Fig.24 Acțiuni Admin

Utilizatorul cu rolul de PJM nu are permisiuni asupra secțiunii de Accounts din Admin Dashboard, de aceea, atunci când se va loga în aplicație, această secțiune va fi ascunsă, utilizatorul respectiv putând vizualiza doar secțiunea de project management selection din Dashboard.

3.2.4 Project Selection Management

În această secțiune, atât adminul cât și Project Manager-ul asignat cu status-ul Approved au acces în selectarea proiectului cu release-ul și sprint-ul respectiv, după care pot asigna capacitatea pentru proiectul respectiv. De asemenea, utilizatorul cu rolul Admin poate vedea ce capacitate a setat fiecare utilizator pentru fiecare proiect.

Fig.25 Setare capacitate per sprint

După ce un utilizator a selectat unul dintre proiectele asignate de către admin, acesta poate alege release-ul și sprintul proiectului după care poate seta capacitatea pentru sprint-ul respectiv. Pe baza acestor selecții se vor genera statisticile referitoate la perfomanța angajaților.

3.2.5 Rapoarte

În această secțiune se află două rapoarte formate din două grid-uri, care conțin paginare, iar primul grid conține și sortare după an.

Primul raport conține urmatoarele informații: anul release-ului, denumirea release-ului, numele proiectului, categoria și item-ul(task-ul) proiectului respectiv la care s-a lucrat, sprint-ul și story point-urile alocate proiectului respectiv.

Al doilea raport conține doar anul, release-ul și numele proiectului, respectiv totalul de story point-uri calculate pe release-ul și proiectul respectiv. Toate aceste date provin din Jira prin integrarea aplicației cu API-ul respectiv.

Fig.26 Filtrare rapoarte după proiecte

După cum am mai specificat, cele două multiselect-uri au rolul de a filtra proiectele și releas-urile ce se doresc a fi analizate. În primul tabel se poate vizualiza numărul de story-point-uri aferente release-urilor selectate pentru fiecare sprint în parte, iar în cel de al doilea tabel sunt calculate story-point-urile totale pe toate sprint-urile unui release. (Fig. 26 si Fig. 27)

Fig.27 Filtrare rapoarte după release

În figura 27, rapoartele se pot filtra atât după un proiect sau toată lista de proiecte derulate, respectiv dupa un release sau toata lista de release-uri.

Fig.28 Rapoarte

În figura 28 sunt prezentate rapoartele filtrate după toate proiectele derulate și după toate release-urile. Ele sunt populate cu date din Jira, stocate în baza de date. De asemenea, ele pot fi exportate ca fișiere .xls prin apăsarea butonului “Export”.

Fig.29 Raport cu proiectele derulate

Fig.30 Raport privind totalul de story point-uri per release

Rapoartele rezultate în urma selectării proiectelor și a release-urilor sunt prezentate în Fig. 29 și Fig. 30. Coloanele excel-ului sunt corespondente coloanelor celor două tabele din aplicație.După cum am mai spus, popularea acestor excel-uri se face cu date provenite din Jira, ce au fost stocate în baza de date, iar aceasta a fost interogată de către server-ul aplicației.

3.2.6 Statistici

Statisticile au un rol important în această aplicație pentru managementul companiei, întrucât pe baza lor se pot lua decizii mult mai bune în ceea ce privește progresul companiei și al angajaților.

În această secțiune există:

statistici generale referitoare la numărul total de story point-uri (Fig 24)

statistici referitoare la capacitatea asignată fiecarui proiect per sprintul și release-ul respectiv(Fig. 27)

Fig. 31 Raport cu toate proiectele derulate

Așa cum am arătat în tab-ul anterior al aplicației, se selectează proiecte și release-uri ce se doresc a fi analizate. Pe baza acestor alegeri, în secțiunea General Analysis Projects, se generează un grafic unde pe axa Y este pus numarul total de story point-uri aferent unui release, iar pe axa X sunt reprezentate release-urile și anul release-ului, pentru fiecare proiect.

Fig.32 Statistici privind proiectele derulate în funcție de numărul total de story point-uri

În secțiunea General Analysis Project din aplicație, se pot vedea statisticile generate pe baza rapoartelor din secțiunea Reports. În figura 32 sunt generate statisticile pe baza raportului care conține toate proiectele derulate. Graficul arată gradul de complexitate al proiectelor în funcție de numărul total de story point-uri per release.

În secțiunea Performance Analysis, se pot vizualiza statistici referitoare la capacitatea asignată fiecarui proiect per sprint, prin selectarea proiectului și a release-ului din cele două select-uri existente în view.

Fig.33 Performance Analysis

Pe baza acestor statistici se poate analiza performanța echipelor de dezvoltare software. Se poate observa capacitatea acumulată pe fiecare sprint corespunzătoare proiectului si realease-ului respectiv.

Fig.34 Statistici privind capacitatea fiecarui sprin per proiect si release

Pe baza acestor statistici se poate analiza performanța echipelor de dezvoltare software. Se poate observa capacitatea acumulata pe fiecare sprint corespunzatoare proiectului si realease-ului respectiv.

4. Testarea Aplicației

Aplicația a fost testată pe parcursul implementării funcționalităților pentru a verifica dacă aceasta functionează corect. Pentru testarea aplicației pe server am folosit debugger-ul din Eclipse Mars. De asemenea, am testat și baza de date pentru a verifica valorile inserate. Aplicația a fost testată si pe un volum mai mare de date iar rezultatele obținute au fost bune, iar conform rezultatelor, aplicația functionează corect și eficient. De asemenea, paginile web ale aplicației se încarcă rapid.

Fig.34 Testare funcționalitate Login

4.1 Rezultate

Rezultatele aplicației constau în realizarea următoarelor functionalități:

Procesul de înregistrare

Procesul de logare

Secțiunea de Dashbord: gestiunea listei de utilizatori prezentă în aplicație de către Admin, asignare roluri și permisiuni, asignare proiecte, setare status utilizator, ștergere utilizator din aplicație.

Project management selection: setare capacitate per sprint-ul și release-ul proiectului respectiv.

Rapoarte privind proiectele derulate, filtrare rapoarte după proiect și release, export rapoarte în excel.

Statistici privind numarul total de story point-uri ale proiectelor derulate și capacitatea de dezvoltare a proiectelor pe fiecare sprint.

5. Concluzii și dezvoltare ulterioară

În acest capitol sunt prezentate concluziile referitoare la evaluarea aplicatiei, precum și funcționalitățile viitoare, ce urmează a fi extinse.

Concluzii

Aplicația descrisă în această lucrare este o aplicație de management pentru evaluarea performanțelor unor echipe pe un anumit proiect pe parcursul unei perioade de timp.

În această aplicație am implementat funcționalitatea de Admin Dashboard pentru administrarea account-urilor în sistem, asignarea de proiecte și gestionarea rolurilor, astfel încât doar admin-ul să aiba permisiunea de a gestiona toată aplicația.

Am creat funcționalitățile de:

Securitate a aplicației: înregistrare și logare.

Status al unui account care poate fi setat de către admin-ul aplicației

Management al proiectelor: în functie de rolul asignat, un account înregistrat în aplicație își poate seta capacitatea, sprint-ul și release-ul per proiectul asignat de către admin.

Rapoarte, ele putând fi filtrate după release și proiect și exportate ca fisiere xls.

Statistici

Aplicația descrisă în această lucrare este foarte utilă în cazul managerilor pentru coordonarea activităților desfășurate. Este o aplicație usor de folosit din punct de vedere al interfeței datorită utilizării framework-ului de Primefaces și oferă eficiență în ceea ce privește timpul generării de rapoarte și statistici.

Aplicația a fost testată si evaluată, iar rezultatele obținute vor fi folosite în procesul de planificare a dezvoltării în cadrul companiei Capgemini Romania.

Pe parcursul dezvoltării proiectului am întâmpinat și dificultăți legate de configurări ale proiectului și de framework –ul de Primefaces, care este un framework performant, însa este dificil de depanat programul atunci când apare o eroare, deoarece nu oferă prea multe detalii.

În pus, dezvoltarea proiectului pe baza metodologie Scrum, a avut un rol foarte important in atingerea si intelegerea cat mai clara a functionalitatilor, dezvoltarea lor fiind organizata in iteratii de cate 2-4 saptamani, dupa care am avut intalniri cu arhitectul pe proiect si Product Owner –ul acestui proiect. Cu Product Owner-ul, aveam intalniri scurte in ceea ce priveste rezultatul obtinut la fiecare sprint si ceea ce se mai dorea pe parcurs a fi dezvoltat. Cu arhitect-ul am avut discutii de-a lungul unor iteratii Scrum pentru a depana problemele si dificultatile intalnite pe parcursul dezvoltarii proiectului.

Avantaje

În comparație cu alte aplicații, această aplicație de BI este ușor de folosit din punct de vedere al funcționalităților și al interfeței, ajută la identificarea rapidă a informațiilor pe baza cărora se vor face predicții și se pot lua decizii mai bune, scade gradul de risc de management și crește productivitatea angajaților. Prezintă funcționalități asemănătoare cu alte aplicații deoarece se ghidează dupa principiile BI, însă este o aplicație cu o performanța bună datorită framework-urilor folosite, iar timpul pentru obținerea rezultatelor este foarte scurt.

Dezavantaje

Aplicația prezinta un dezavantaj, acesta fiind reprezentat de costurile ridicate.

Dezvoltare ulterioară

Se dorește ca funcționalitatea descrisă în continuare să fie dezvoltată în vederea obținerii unor informații complete în ceea ce privește managementul companiei. Aceasta funcționalitate se numește Earned Value Management(EVM) și este destinată managerilor pentru a evalua performanța proiectelor desfășurate într-un mod mai avansat.

Earned Value Management(EVM) reprezintă o tehnica de management de proiect pentru măsurarea sau analizarea progresului proiectelor într-un mod obiectiv. Potrivit Biblioteci Centrale NASA, prima versiune de EVM a fost elaborată de către Departamentul de Aparare(DoD) pentru a urmări programele sale în decursul anilor. Din 2005, EVM a reprezentat o parte a proiectului general federal de risc de management, iar în ziua de azi el reprezintă o cerința obligatoarie în guvernul Statelor Unite. Toate aceste studii arată importanța și necesitatea unei asemenea funcționalități.

EVM este, de asemenea, folosit în sectorul privat al companiilor pe diferite arii precum: firme de consultanță, IT sau instituțiile de învatamant. Cele mai cunoscute organizații care folosesc EVM sunt NASA și PMI(Project Management Institute).

Compania Capgemini Romania isi dorește ca pe viitor să extindă funcționalitățile existente ale aplicației descrise în această lucrare, precum și dezvoltarea funcționalității de EVM pentru o mai bună responsabilitate a managerilor, pentru urmărirea performanței proiectelor, pentru a analiza profitul companiei și pentru îmbunătățirea comunicării cu parțile interesate (clienții).

Pentru dezvoltarea acestei aplicații dimensiunile care se doresc a fi folosite sunt:

Scop + Timp + Cost

De asemenea, aplicația va dispune de rapoarte și grafice manageriale pe baza datelor obținute.

Fig. 35 Simulare statistică pe baza celor 3 dimeniuni

PV(Planned Value), EV(Earned Value) si AC(Actual Cost) sunt valorile fundamentale pentru EVPM(Earned Value Project Management), care generează indici de performanța pentru urmărirea programelor sau a proiectelor derulate. Reprezentarea treptată în timp a PV-ului este managementul performanței unui proiect. PV este, de fapt, predictor atat pentru EV, cât și pentru AC. EV reprezintă valoarea cumulată a caștigului, iar AC (Cost Actual) este valoarea costului actual cumulat.[7]

Metoda EVM este indicată pentru măsurarea performanțelor proiectelor derulate. Este cea mai cunoscută metodă folosit pentru controlul și monitorizarea unui proiect. Aceasta integrează scopul, timpul și costul ca dimensiuni în management.

Aplicarea metodei EVM în management necesită înregistrarea sistematică a timpului și a datelor despre cost, de obicei o dată pe săptămâna, în scopul obținerii a două valori, și anume ACWP(Actual Cost Of Work Performed) și BCMP(Budgeted Cost Of Work Performed).

Metoda EVM, poate fi folosită, de asemenea, pentru a oferi suport în luarea de decizii în ceea ce privește schimbările de implementare de design în diferite faze ale proiectului.[10]

Această metodă permite managerilor de proiect să știe daca un anumit proiect are limitări precum costuri prea ridicate sau întârzieri prea mari. Ei pot măsura și verifica progresul proiectului, și detecta abaterile care au loc de la faza de planificare a proiectului.[11]

Cele mai multe metodologii de planificare prezintă un dezavantaj și anume incertitudinea deoarece acestea presupun că duratele de timp ale activităților desfășurate urmează o funcție a statisticilor distribuite. Metoda EVM se bazează și pe analiza Monte-Carlo.

Folosind analiza Monte-Carlo, aceasta permite managerilor de proiect și angajaților să obțină sau să cunoască informații despre durata proiectului final și costul total al acestuia.

Ca și concluzie, metoda EVM poate fi utilizată cu succes nu numai in ceea ce privește gestionarea costurilor dezvoltării proiectelor ci și în utilizarea unor abordări precum gestiunea timpului proiectului și progresul proiectului.[10]

Similar Posts