Aplicatie Pentru Evidenta Activitatilor de Administrare Si Suport
Index de notații si abrevieri:
Capitolul 1. Introducere
Evidența angajaților și a ceea ce întreprind ei este unul din cele mai importante puncte in organizarea în special a companiilor mari. Primul pas în a tine evidența este de a asigura o aplicație cât mai ușor de utilizat și cât mai rapidă pentru a nu îngreuna munca angajaților. Cu cât numărul angajaților este mai mare, cu atât pontajele sunt mai complexe, și crește necesitatea înregistrării datelor.
Una dintre cele mai bune soluții pentru gestiunea timpului de lucru este pontajul on-line.
Sistemele de pontaj on-line sunt o soluție eficienta de a înregistra, evalua si administra prezența angajaților dintr-o companie. În comparație cu sistemul manual de pontaj, cel on-line are avantaje notabile cum ar fi:
Înregistrarea timpului, procesarea datelor de pontaj si generarea rapoartelor mai rapid si mai exact
Eliminarea erorilor umane
Diminuarea timpului de procesare a salariilor prin furnizarea datelor de pontaj într-un format pregătit pentru a fi preluat imediat de sistemele de salarizare
Reducerea costurilor departamentului de HR prin distribuirea activităților de colectare si verificare a pontajelor către responsabilii de echipe/departamente
Reducerea absenteismului, creșterea productivității
Reducerea costurilor de salarizare prin eliminarea nevoii de ore suplimentare
Minimizarea riscului de neconformitate cu legislația sau cu regulamentele interne prin accesul facil, in timp real, la datele de pontaj ce permite corectarea acestor situații in timp util
Anticiparea costurilor neprogramate (orele suplimentare, de exemplu)
Accesarea facilă a datelor de pontaj de la distanță precum si administrarea angajaților aflați la distanță, in alte locații.
În această lucrare este prezentată o aplicație pentru pontaj on-line care încearcă să înglobeze toate avantajele enumerate mai sus.
Structura lucrării:
Capitolul 2 prezintă o descriere amplă a tehnologiilor folosite în dezvoltarea aplicației și modul in care acestea sunt folosite.
Capitolul 3 este structurat în mai multe părți în funcție de părțile majore ale aplicației si descrie detaliat aplicația si funcționalitățile acesteia.
Capitolul 4 prezintă concluziile lucrării și motivele pentru care companiile ar opta pentru achiziționarea și folosirea acestui tool.
Tema proiectului
Tema proiectului o constituie realizarea unei aplicații destinată în special companiilor mari și medii din aria IT care oferă posibilitatea unui pontaj cât mai ușor și rapid pentru toți utilizatorii. Pentru dezvoltarea aplicației s-a dorit utilizarea de programe și softuri de ultimă generație, dar care oferă în același timp și posibilitatea posibililor utilizatori de a-și menține propriile softuri sau de a putea alege dintr-o multitudine de soluții în cazul programelor necesitate pentru instalarea aplicației.
Pe lângă ușurința de utilizare, o altă trăsătură obligatorie care s-a luat în considerare a este ușurința în managementul aplicației, asta incluzând atât folosirea unor limbaje de dezvoltare cât mai accesibile și mai ușor de învățat, cât și posibilitatea de a folosi o multitudine de soluții pentru instalarea programului, neforțând utilizatorii, în instalarea și adoptarea unor programe noi.
În proiectarea aplicației s-a plecat de la o listă de cerințe care au fost considerate ca fiind obligatorii pentru a crea o aplicație cât mai performantă și mai accesibilă pentru utilizator.
Specificațiile aplicației sunt următoarele:
Crearea unei aplicații care să ajute utilizatorul să elimine din timpul pierdut pe care îl folosește în înregistrarea și raportarea muncii pe care o întreprinde și de asemenea și în managementul aplicației
Împărțirea aplicației pe module în funcție de funcțiile principale ale aplicației
Posibilitatea utilizatorului de a opta pentru suport pentru aplicație sau de a-și putea asigura singur suportul.
Folosirea unui limbaj de programare modern, dar uzual în același timp și ușor de învățat pentru a nu fi nevoie de o perioadă lungă de învățare în cazul înlocuirii progrmatorilor.
Viteză cât mai mare în execuție având în vedere că poate fi accesatî de o multitudine de utilizatori în același timp.
Număr nelimitat de utilizatori care pot accesa aplicația în acleași timp
Instalarea ușoară pe o singură mașină, iar accesarea prin rețea de pe mașini multiple.
Configurarea aplicației să fie cțt mai accesibilă utilizatorilor pentru a putea opta fiecare pentru configurarea dorită
Folosirea unei baze de date pentru stocarea și accesarea datelor.
Posibilitatea de folosi un sistem de baze de date dorit de utilizator și posibilitatea schimbării sistemului bazei de date fără a obliga modificări în codul sursă al aplicației.
Autentificarea automată în aplicație pentru a reduce timpul pierdut de utilizator la fiecare logare.
Protejarea anumitor date prin crearea mai multor accese cu drepturi diferite.
Posibilitatea de a vizualiza înregistrările proprii introduse în baza de date și modificarea lor.
Generarea rapoartelor într-un mediu care să permită utilizatorului vizualizarea cât mai ușoară a acestora și care oferă și posibilitatea de a printa rapoartele.
Accesul tutror utilizatorilor la adăugarea anumitor date folosite în adăugarea înregistrărilor de pontaj.
Managementul datelor din baza de date să fie făcut de utilizatorii cu drepturi de Administrator, dar care pot face și altceva, fără a trebui să se aloce anumite persoane exclusiv pentru acest lucru.
Introducerea mai multor tipuri de pontaj pentru a asigura acoperirea tutror activităților de aministrare și suport.
Capitolul 2. Fundamentare Teoretică
Aplicația se dorește a fi una de ultima generație cat mai ușor de utilizat dar in același timp si cat mai ușor de întreținut, modificat si îmbunătățit. De aceea s-a ales folosirea unor tehnologii de ultima generație si cât mai populare. Tehnologiile și mediile de dezvoltare populare asigură deci ca programul construit pe baza acestora să fie de nivel înalt și să conțină ultimele noutăți în domeniu.
Astfel am ales ca aplicația să fie dezvoltată in PHP, un limbaj de programare foarte popular cu puternice implanturi de Javascript si AJAX.
Pentru administrarea datelor și stocarea lor am ales cel mai fiabil și cunoscut sistem de administrare a bazelor de date relaționale, MySQL.
Pentru a ușura instalarea atât a serverului Apache cat si a serverului de Mysql am folosit o platformă ce înglobează ambele opțiuni și anume XAMPP.
Autentificarea automată modulul ”mod_authnz_ldap” pentru server Apache, care oferă posibilitatea de autentificare automată a utilizatorilor printr-un director LDAP. De asemenea este integrată cu ADODB care este o librărie cu baza de date abstractă pentru PHP si Python bazată pe același concept ca si Microsoft's ActiveX Data Objects si Windows Integrated Authentification. ADODB permite conexiunea la Active directory prin intermediul unor obiecte COM.
2.1 PHP
PHP – este un limbaj de scriptare server-side înglobat în HTML proiectat pentru dezvoltare web, dar, de asemenea, folosit ca un limbaj de programare cu scop general. PHP este instalat pe mai mult de 244 milioane site-uri web și 2,1 milioane de servere de web. [Ach97]
Intr-o pagina HTML poate fi înglobat cod PHP care va fi executat la fiecare vizitare a paginii. Codul PHP este interpretat pe serverul Apache si generează un cod HTML care va fi văzut de utilizator (clientului browserului) fiindu-i transmis numai cod interpretat ca si HTML). [Iva05]
Figura 2.1: Modul de funcționare al PHP
Apache este un server web cu o contribuție notabilă la dezvoltatea Internetului (world wide web). Apache a reprezentat prima alternativă viabilă la Netscape Communications Corporation, și a evoluat rapid în funcționalitate și performanță ca un rival competitiv pentru alte servere web bazate pe Unix.
PHP a fost conceput in anul 1994 si a fost inițial munca unui singur om, Rasmus Lerdorf. A fost adoptat de alți oameni talentați și a trecut prin trei rescrieri importante pentru a ajunge la produsul clar si matur de astăzi.
PHP este un produs Open Source, cu acces la codul sursa. Se poate folosi, modifica si redistribui, toate acestea in mod gratuit. Inițial, PHP era acronimul de la Personal Home Page, dar a fost modificat pentru a se alinia la conversia de numire recursiva GNU si acum este acronimul pentru PHP Hypertext Preprocessor.
PHP este axat în principal pe scripting server-side, astfel încât să puteți face orice alt program CGI, cum ar fi colectarea datelor din forme, generarea conținutului dinamic al paginilor sau trimiterea și primirea de cookies.
Există trei domenii principale, unde scripturile PHP sunt utilizate:
Server-side scripting. Acesta este cel mai tradițional și de bază domeniu al PHP. E nevoie de trei lucruri pentru a face acest lucru. Analizatorul PHP (CGI sau modul de server), un server web și un browser web. Trebuie rulat serverul de web, cu o instalare PHP conectată. Puteți accesa ieșirile programului PHP cu navigatorul web, vizualizând pagina PHP prin server.
Scripting linie de comandă. Se poate crea un script PHP să ruleze fără un server și navigator. Este nevoie doar de analizatorul PHP pentru al utiliza în acest mod. Acest tip de utilizare este ideal pentru script-uri executate în mod regulat cu cron (pe Unix sau Linux) sau Task Scheduler (pe Windows). Aceste script-uri pot fi, de asemenea, utilizate pentru sarcini simple de procesare a textelor.
Scrierea aplicațiilor de birou. PHP nu este, probabil, cel mai bun limbaj pentru a crea o aplicație de birou cu o interfață grafică de utilizator, dar dacă cunoașteți PHP foarte bine și doriți să utilizați unele facilități avansate ale PHP în aplicații de partea clientului, puteți utiliza, de asemenea, PHP-GTK pentru a scrie astfel de programe. De asemenea, aveți posibilitatea de a scrie aplicații cross-platform în acest fel. PHP-GTK este o extensie a PHP, care nu este valabil în principal de distribuție. [Ach97]
PHP poate fi utilizat pe toate sistemele de operare importante, inclusiv, mai multe variante de Linux Unix (inclusiv HP-UX, Solaris și OpenBSD), Microsoft Windows, Mac OS X, RISC OS, și probabil altele. PHP de asemenea susține majoritatea server-elor web existente în prezent. Aceasta include Apache, Microsoft Internet Information Server, serverul web personale, Netscape și servere iPlanet, Oreilly servere Website Pro, Caudium, Xitami, OmniHTTPd, și multe altele. În același timp una dintre cele mai puternice și semnificative facilități ale PHP este suportul său pentru o gamă largă de baze de date. Scrierea unei pagini web bazelor de date este incredibil de simplă. [Ger05]
2.2 MySql
Este un sistem relațional de management al bazelor de date. Este foarte rapid si robust. Serverul MySQL controlează accesul la date pentru a garanta ca mai mulți utilizatori pot lucra simultan cu acestea. MySQL este oferit sub licență gratuită și este open-source, codul este făcut public și îmbunătățit de milioane de programatori din întreaga lume [MySQL]
Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Java, Perl, PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip spefic API. O interfață de tip ODBC denumită MyODBC permite altor limbaje de programare ce folosesc această interfață, să interacționeze cu bazele de date MySQL cum ar fi ASP sau Visual Basic. În sprijinul acestor limbaje de programare, unele companii produc componente de tip COM/COM+ sau .NET (pentru Windows) prin intermediul cărora respetivele limbaje să poată folosi acest SGBD mult mai ușor decât prin intermediul sistemului ODBC. Aceste componente pot fi gratuite (ca de exemplu MyVBQL) sau comerciale.
Licența GNU GPL nu permite încorporarea MySQL în softuri comerciale; cei care dor
Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Java, Perl, PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip spefic API. O interfață de tip ODBC denumită MyODBC permite altor limbaje de programare ce folosesc această interfață, să interacționeze cu bazele de date MySQL cum ar fi ASP sau Visual Basic. În sprijinul acestor limbaje de programare, unele companii produc componente de tip COM/COM+ sau .NET (pentru Windows) prin intermediul cărora respetivele limbaje să poată folosi acest SGBD mult mai ușor decât prin intermediul sistemului ODBC. Aceste componente pot fi gratuite (ca de exemplu MyVBQL) sau comerciale.
Licența GNU GPL nu permite încorporarea MySQL în softuri comerciale; cei care doresc să facă acest lucru pot achiziționa, contra cost, o licență comercială de la compania producătoare, MySQL AB.
2.3 XAMPP
Este o platformă server web, soluție open-source, constând în principal din Apache HTTP Server, baze de date MySQL, și interpreți pentru scripturi scrise în PHP și limbaje de programare Perl. Foarte ușor de instalat și folosit, este updatat la ultimele versiuni de Apache, MySql, PHP și Perl. [W3Sch]
2.4 JavaScript
JavaScript este mai popular limbaj de programare din lume. JavaScript este un limbaj de programare utilizat pentru a face pagini web interactive. Se rulează pe calculatorul oricui și nu are nevoie de descărcări constant de la site-ul dumneavoastră. [W3Sch]
JavaScript este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor. Este folosit mai ales pentru introducerea unor funcționalități în paginile web, codul Javascript din aceste pagini fiind rulat de către browser. Limbajul este binecunoscut pentru folosirea sa în construirea siturilor web, dar este folosit și pentru acesul la obiecte încastrate (embedded objects) în alte aplicații. A fost dezvoltat inițial de către Brendan Eich de la Netscape Communications Corporation sub numele de Mocha, apoi LiveScript, și denumit în final JavaScript.
În ciuda numelui și a unor similarități în sintaxă, între JavaScript și limbajul Java nu există nicio legătură. Ca și Java, JavaScript are o sintaxă apropiată de cea a limbajului C, dar are mai multe în comun cu limbajul Self decât cu Java.
2.5 AJAX
Ajax = Asynchronous JavaScript and XML. AJAX este o tehnică pentru crearea de pagini web rapidă și dinamică. AJAX permite paginilor web să fie actualizate asincron prin schimbul de cantități mici de date cu serverul din spatele scenei. Aceasta înseamnă că este posibil să actualizeze părți ale unei pagini web, fără a reîncărca toată pagina. [W3Sch]
Intenția este să facă paginile web să devină mai rapide și deci mai acceptate, prin schimbul în fundal al unor cantități mici de date cu serverul, astfel încât să nu fie nevoie ca pagina să fie reîncărcată la fiecare acțiune a utilizatorului. Aceasta are ca scop creșterea interactivității, vitezei și ușurinței în utilizare a aplicațiilor web.
Capitolul 3. Specificațiile Aplicației.
3.1 Schema-bloc a sistemului. Scurtă descriere a aplicației.
Aplicația a fost construită pentru a putea fi utilizată cu multă ușurință de către orice utilizator astfel încât si schema-bloc a sistemului este una simplă si ușor de înțeles pentru cei care încearcă să înțeleagă funcționarea programului in vederea modificării sau îmbunătățirii.
Figura 3.1 Schema-bloc a sistemului.
În figura 3.1 Schema-bloc a sistemului este reprezentată interfața programului și modul cum utilizatorul intră în contact cu programul pentru a-și ponta orele de lucru și pentru a gestiona și administra datele.
Există 2 tipuri de drepturi pentru utilizatori și anume:
Administrator – în mod normal liderii de echipe sau managementul care pot administra și alte informații privind angajații.
User – utilizatorul normal care are dreptul doar de a-și adăuga eforturile.
Datele de intrare sunt datele introduse de către fiecare utilizator, în funcție de rolul lui și acestea reprezintă pontajul aferent fiecărei zile a fiecărui angajat. În cazul managerilor care au funcție de administrator, se pot adăuga si alte informații folositoare în special pentru utilizatorii normali.
După introducerea datelor pot fi generate rapoarte în funcție de dorințele utilizatorului, existând mai multe filtre pentru a extrage doar informația dorită. Pentru a putea urmări informațiile cât mai ușor rapoartele vor fi generate în format ”xls” și anume fișiere de tip Microsoft Office Excel. În funcție de nevoie aceste rapoarte pot fi atât printate cât si transmise în format electronic către alte departamente pentru folosirea datelor.
3.2 Funcțiile sistemului
Programul fiind dezvoltat în PHP, un program de ultimă generație ce permite și dezvoltarea aplicațiilor orientate pe obiecte, pentru fiecare funcție ca va fi amintită se creează o clasă, care conțin informațiile legate de codul propriu-zis care îndeplinește cu exactitate scopul și operațiunea necesară pentru care a fost scris. Excepție face funcția de logare în program pentru care există o librărie specială, logarea fiind Autentificare Integrată cu Windows, și care ușurează munca utilizatorului, deoarece acestuia fiindu-i recunoscute numele și drepturile automat fără a trebui să introducă aceste date manual.
Utilizatorul intră in contact cu funcțiile sistemului în mod direct prin interfața cu utilizatorul a programului. Funcțiile sunt bine definite fiecare așezate in meniul din partea stângă a programului. În funcție de nevoile utilizatorilor fiecare funcție a sistemului are un submeniu ce conține alte opțiuni specifice.
In figura 3.2 Funcțiile sistemului sunt definite funcțiile principale, aflate în dreptunghiurile roșii, și cele secundare ale sistemului situate în chenarele de culoare albastră.
Figura 3.2 Funcțiile sistemului.
Funcțiile principale ale aplicației sunt:
Înregistrarea în program. Chiar daca nu e o funcție vizibilă utilizatorului deoarece se face automat prin Autentificarea Integrată prin Windows, este una dintre cele mai importante funcții ale aplicației. Aceasta funcție ajută utilizatorul să se autentifice in program și să poată accesa toate resursele aplicației stabilite de rolul atribuit.
Meniul Booking conține trei opțiuni secundare: Support, Administration și MKS Support. Meniul Booking conține toate datele referitoare a pontaj și oferă utilizatorului posibilitatea de a le folosi pentru a-și adăuga eforturile, în funcție de activitatea pe care acesta o întreprinde.
Meniul Reports conține două opțiuni: Monthly și Specific. Acest meniu este special creat pentru generarea de rapoarte în legătură cu pontajul unuia sau mai multor angajați. Submeniul Monthly oferă posibilitatea de a genera un raport pe o durată de timp de o lună, în timp ce opțiunea Specific oferă posibilitatea de a genera rapoarte pe o perioadă de timp aleatorie, în concordanță cu dorința utilizatorului. Ambele opțiuni oferă mai multe filtre pentru ușoara filtrare a rapoartelor dorite de către utilizator.
Meniul Settings. Acesta conține cinci opțiuni: Locations, Projects, MKS Projects, Actions și Users, fiecare din aceste opțiuni având submeniuri de afișare și adăugare. Accesând opțiunea de afișare utilizatorii, mai regăsesc două opțiuni foarte importante și anume ștergere și modificarea unor date deja existente. Astfel prin meniul Settings utilizatorii au posibilitatea de a adăuga, modifica sau șterge pe scurt a gestiona toate datele existente in baza de date utilizate la operațiunile de adăugare pontaj sau generare de rapoarte.
3.3 Interfața cu utilizatorul
Interfața cu utilizatorul este modalitatea prin intermediul căreia utilizatorii interacționează cu sistemul informatic. Aceasta trebuie să fie plăcută la vedere, ușor de accesat, ușor de înțeles, simplă și foarte practică. Totul trebuie să fie bine structurat astfel încât utilizatorul să poată găsi și accesa ceea ce caută cu ușurință.
Astfel pentru o ușurință cât mai mare in proiectarea interfeței s-a folosit un fișier de tip CSS, unde sunt definite mai multe stiluri de formatare a datelor care sunt direcționate către utilizator. În definirea acestor stiluri s-au folosit culori cât mai plăcute ochiului uman pentru a nu obosi utilizatorul, dar în același timp bine conturate și nu foarte stridente. Culorile trebuie să fie un pic spre închis deoarece ziua se vad bine iar noaptea acestea nu orbesc privitorul. Astfel marea majoritate a culorilor alese pentru fundal sunt nuanțe de albastru pentru meniu si partea de sus a aplicației, dar nu aceeași nuanța pentru a diferenția faptul că in fiecare parte se oferă alt tip de informații, iar pentru așa zisa fereastră de lucru s-a păstrat culoarea alb deoarece nu s-a vrut o încărcare de culoare, care ar obosi utilizatorul și l-ar putea deruta.
Pentru aranjarea in pagină a tuturor elementelor este folosit un sistem tabelar. Acesta ajută la distribuirea uniformă a informației pe ecran, cât și la concentrarea informației de aceleiași categorii, intr-o parte e ecranului pentru a nu deruta utilizatorul.
Fereastra principală este constituită din trei părți:
Partea de sus unde sunt oferite date despre utilizator, cum ar fi numele si rolul acestuia cât si data curentă. Pentru aceasta parte s-a folosit o nuanță distinctă de albastru, iar pentru a scoate în evidență informațiile acestea folosesc culoarea verde.
Partea din stânga care conține meniul principal, care este bine definit prin care utilizatorul va avea acces la funcțiile principale ale programului și care datorită faptului că reprezintă o altă parte distinctă a programului este scos in evidență folosind o altă nuanța de albastru față de cea folosită in partea de sus.
Ultima parte constituie este fereastra de lucru, unde se vor afișa atât toate datele cerute se utilizator cât va și permite utilizatorului să întreprindă acțiunile dorite.
Deoarece s-a dorit o accesare cât mai ușoara a datelor de către utilizator, indiferent de pagina dorită de utilizator, toate paginile vor avea comun partea de sus cu afișarea informațiilor despre utilizator și meniul principal.
Meniul principal este organizat în funcție de necesitățile și importanța funcțiilor pe care utilizatorul le va folosi. Acesta este structurat ierarhic, fiecare opțiune principală conținând submeniurile sale. Pentru a nu se crea confuzie între opțiunile principale si cele secundare ele sunt formatate cu un anumit font si o anumită culoare în funcție de importanța lor.
Ferestrele de lucru care sunt accesate din meniul principal vor fi toate de aceeași mărime și vor avea toate aceeași structură și organizare. Astfel totul va arăta bine pus la punct, profesional și modern. Datorită faptului ca pe fiecare pagină a aplicației vor apărea și informațiile despre utilizator și meniul principal, toate ferestrele de lucru vor avea aceeași dimensiune. Fiecare fereastră de lucru va conține în partea de sus un titlu sugestiv, si anume numele funcției pe care aceasta o va executa.
Butoanele folosite în program vor avea un nume specific si bine definit pentru a nu deruta utilizatorul. Pentru butoanele de editare și ștergere a datelor s-au folosit imagini sugestive și care reprezintă funcția pe care acestea o definesc. Butoanele au mărimi diferite separate de funcția pe care o îndeplinesc.
Mesajele de eroare respectă criteriul de calitate al mesajelor de eroare și anume faptul că conținutul mesajelor de eroare trebuie să fie relevante, clare și să specifice natura erorii (sintaxă, format) și a acțiunilor necesare pentru corectarea acestora [Ber89].
Interfața cu utilizatorul a fost creată pentru a ușura comunicarea dintre program și utilizator. S-a încercat proiectarea ei cât mai bine după regulile proiectării interfețelor de utilizator și grafice bazându-ne în primul rând pe interacționarea cât mai simpla între utilizator și program, comunicarea fiind esențială în orice domeniu.
Figura 3.3 Interfața cu utilizatorul.
3.4 Structuri de baze de date și fișiere
Proiectarea bazei de date se va face după o atentă si riguroasă analiză a necesităților acesteia și se va normaliza folosind cele patru forme ale normalizării pentru a reduce redundanța bazei de date la maxim si anume:
Analiza aplicației: analiza circuitului informațional, studierea intrărilor si ieșirilor, stabilirea claselor de utilizatori.
Analiza semanticii atributelor din entități: identificarea atributelor si a sensului lor funcțional, gruparea atributelor în relații pe entități, stabilirea cheilor primare si externe.
Normalizarea relațiilor obținute la punctul anterior: micșorarea redundantei prin gruparea atributelor în relații conform definițiilor pentru formele normale, stabilirea de constrângeri pentru eliminarea anomaliilor de actualizare.
Scoaterea din relațiile principale a atributelor care au peste 70% valori nule. [Ger05]
Baza de date va conține următoarele tabele și câmpuri de date:
Tabela tb_action folosită pentru stocarea tipurilor de acțiuni pe care utilizatorul le întreprinde și conține câmpurile id, name, type.
Tabela tb_action_booking folosită pentru a face legătura dintre tabelele tb_action și tb_booking și conține id_action, id_booking
Tabela tb_user folosită pentru stocarea utilizatorilor și conține câmpurile id, uid, first_name, last_name, email, role.
Tabela tb_recc_team folosită pentru stocarea utilizatorilor din echipa care a creat aplicația și conține câmpurile id, uid, first_name, last_name, email, role.
Tabela tb_project folosită pentru stocarea proiectelor și conține câmpurile id, name, RH_name, PV_name.
Tabela tb_mks_project folosită pentru stocarea proiectelor pentru un alt tip de pontaj și conține câmpurile id, location, name, RH_name, PV_name.
Tabela tb_location folosită pentru stocarea locațiilor și conține câmpurile id, name.
Tabela tb_booking folosită pentru stocarea pontajelor pe care utilizatorul le adaugă și conține câmpurile id, type, id_requester, id_owner, id_project, id_location, duration, comments, date
3.5 Analiză de risc
Programul oferă mai multe niveluri de securitate pentru siguranță deplină a datelor critice, drepturile și restricțiile utilizatorilor, mergând până la nivelul câmpurilor din baza de date.
Se recomandă ca în timpul activității desfășurate pe baza acestei aplicații, utilizatorul să salveze periodic datele introduse.
În cazul în care datele dintr-un formular nu au fost salvate înainte de închiderea acestuia, utilizatorul va fi informat că operația de salvare s-a efectuat automat la închiderea ferestrei prin intermediul unei căsuțe de dialog.
Este recomandată achiziționarea unei surse stabilizatoare de tensiune (UPS) pentru serverul care ține aplicația și baza de date. Aceasta are rolul de a proteja calculatorul de evetualele vârfuri de tensiune și, în cazul unei pene de curent, oferă utilizatorului șansa de a salva datele și de a închide aplicația și calculatorul, fără a provoca pierderi.
Capitloul 4. Proiectarea de Detaliu
4.1 Arhitectura Programului
Acest capitol prezintă felul în care aplicația operează și modul de lucru al aplicației la un nivel detaliat. Fiind o aplicație web, pentru a putea fi accesată ea va trebui să fie pusă pe un calculator din rețeaua la care au acces utilizatorii. Datorită faptului că s-a dorit a fi o aplicație simplă nu necesită instalare ci doar instalarea unei soluții care să conțină cele 2 componente de care aplicația are nevoie să ruleze și anume un server Apache și a unei baze de date MySQL.
Întreaga aplicație se bazează pe pagina principală (index). Controlul fluxului aplicației se bazează pe o țintă și o acțiune care procesează toate cererile pe care le face utilizatorul și îi oferă acces acestuia sa navigheze în aplicație. Ținând cont de cererea pe care o face utilizatorul se va seta o țintă care definește care cerere din partea stângă a meniului a fost aleasă. Și bazându-se pe țintă vor fi incluse alte fișiere in index. Acțiunea definește în special cererea făcută din managementul aplicației, adăugare date, ștergere date si actualizare date.
Orice cerere pe care o face utilizatorul va fi setată ca țintă întâi și apoi se va seta o acțiune, apoi toate vor fi procesate in pagina de index, după cum se poate vedea si in Figura 4.1 Modul de lucru al aplicației
Figura 4.1 Modul de lucru al aplicației.
Pe lângă ceea ce este prezentat mai sus programul are un mod de funcționare special pentru fiecare cerere făcută de către utilizator. Aceste cereri pot fi de adăugare de ștergere, de afișare sau editare a unor informații din baza de date a aplicației. Aceste cereri făcute de utilizator împreună cu răspunsul pe care îl primesc și conectarea la baza de date pentru extragerea informațiilor constituie arhitectura programului, prezentată în figura 4.2 Arhitectura Programului.
Figura 4.2 Arhitectura programului.
După cum menționam mai sus cererile făcute de utilizator constau în adăugarea unor informații în baza de date, in editarea sau ștergerea unor informații deja existente în baza de date, si de afișare a unor informații din baza de date.
Meniul principal este împărțit în trei părți, fiecare cu funcțiile sale.
Prima parte – Pontajul înglobează și cea mai importantă funcție a sistemului, aceea de adăugare a pontajului. Felul în care aplicația funcționează în momentul creării unei noi intrări de pontaj este descris în figura 4.3 Adăugarea pontajului și este următorul: în momentul apăsării butonului de submit se va verifica dacă toate câmpurile obligatorii sunt completate. Apoi se va verifica dacă utilizatorul există deja în baza de date. Dacă utilizatorul nu există în baza de date, el va fi adăugat în baza de date, în funcție de informațiile cerute de către un query LDAP despre user la baza de date din Active Directory. Următorul pas este verificarea câmpului ”Other”, care definește o acțiune inexistentă in baza de date. Dacă acesta este completat acțiunea va fi de asemenea adăugata în baza de date convertirea duratei în minute și rezultatul adăugat la numărul din câmpul “Minutes”. Dacă toate cererile au fost făcute cu succes, cererea utilizatorului este adăugată în baza de date a aplicației. Id-ul cererii este memorat și este adăugat împreuna cu id-urile acțiunilor selectate intr-o altă tabelă din baza de date. Aceasta este metoda care creează legătura many-to-many între tabela de pontaj si tabela de acțiuni din baza de date. Dacă cererea a fost înregistrată cu succes, se va afișa pagina de adăugare a pontajului și un mesaj corespunzător, cum că cererea a fost adăugată cu succes.
Dacă nu sunt completate toate câmpurile obligatorii, când utilizatorul trimite cererea, aplicația generează o căsuță de alertă. Căsuța îl avertizează pe utilizator că nu toate câmpurile obligatorii sunt completate și îl redirecționează înapoi pe pagină.
Figura 4.3 Adăugarea pontajului
Meniul Rapoarte, oferă posibilitatea utilizatorilor de a vizualiza înregistrările pe care le-a făcut de-a lungul unei perioade, și în același timp dacă se dorește o printare se pot exporta într-un fișier de tip Microsoft Office Excel. Rapoartele pot fi filtrate cu ajutorul câmpurilor puse la dispoziția utilizatorului. In același timp dacă utilizatorul dorește să genereze un raport, nu trebuie să completeze nici un câmp, deoarece câmpul “Owner” este completat automat. Nici un alt câmp nu este obligatoriu. Dacă utilizatorul trimite cererea, se va genera un document Excel. Documentul poate fi vizualizat sau salvat.
Ultimul submeniu din meniul Principal este Managementul aplicației și oferă posibilitatea utilizatorului cu privilegii de administrator dreptul de a adăuga modifica sau șterge orice date din baza de date.
Afișarea datelor se face alegând unul din butoanele ce conțin cuvântul ”List” în numele lor. La accesarea unui link se face o cerere către baza de date cu ceea ce dorește utilizatorul să vizualizeze, iar datele sunt afișate in partea din dreapta sub forma tabelară. În dreptul fiecărei intrări vor exista 2 butoane ”Add” și ”Delete” care daca sunt accesate declanșează acțiunile de editare sau ștergere a acelei informații.
Ștergerea datelor : butonul de ștergere face o cerere pentru a șterge informația din baza de date a aplicației. Datele au un id in baza de date care este memorat. Acest id este un identificator unic pentru fiecare dată din baza de date. Înainte de a se face cererea de ștergere se generează o căsuță de alertă. Această căsuță întreabă utilizatorul dacă este sigur că vrea să șteargă datele respective. Daca utilizatorul chiar dorește ștergerea datelor își va da acceptul, iar daca nu dorește acțiunea poate fi anulată. Căsuța are ca rol evitarea ștergerii datelor importante din greșeală.
Editarea datelor: Butonul de actualizare îi permite utilizatorului modificarea atributelor datelor selectate de către utilizator. Utilizatorul este direcționat către un formular cu toate atributele standard unde utilizatorul le poate modifica. Când utilizatorul trimite cererea, aplicația va lua index-ul informației din baza de date. Se execută o cerere. Aceasta face modificările corespunzătoare. Toate câmpurile trebuie completate. Daca unul din câmpuri este gol, aplicația generează o un mesaj de eroare și nu permite utilizatorului sa facă modificările. Căsuța îl informează pe utilizator, deoarece câmpurile nu pot rămâne goale. Dacă toate câmpurile sunt completate, este afișată noua listă cu datele actualizate si un mesaj daca s-au făcut modificări sau nu.
Adăugarea datelor reprezintă o opțiune separate în meniul din stânga al aplicației și redirecționează utilizatorul către un formular. Acest formular conține o listă de atribute legate cu datele pe care utilizatorul dorește să le adauge.
Când cererea este trimisă, aplicația se va uita dacă toate câmpurile sunt completate. Daca doar un câmp este gol, aplicația nu permite utilizatorului adăugarea noilor date și o căsuță de alertă este generată. Căsuța informează utilizatorul că cel puțin un câmp este gol si redirecționează utilizatorul înapoi la formular.
Dacă toate câmpurile sunt completate, aplicația ia noile date introduse de utilizator. Se face o verificare pentru a se stabili dacă datele introduse nu există deja in baza de date a aplicației. Dacă există deja, noile date nu vor fi introduse in baza de date si se afișează un mesaj corespunzător. Dacă datele nu există în baza de date a aplicației, atunci acestea se adaugă in baza de date. Dacă datele au fost adăugate in baza de date, se va afișa noua listă cu toate datele și se va afișa un mesaj, cum că operațiunea a fost realizată cu succes. Modul de lucru al aplicației în cazul adăugării datelor este descris in figura 4.4 Adăugarea datelor.
Figura 4.4 Adăugarea datelor.
Pe lângă funcțiile menționate o atenție specială o are funcția de autentificare care introduce utilizatorul în program, și îi oferă privilegiile care i-au fost setate.
Este realizată cu ADODB care este o librărie cu baza de date abstractă pentru PHP si Python bazată pe același concept ca si Microsoft's ActiveX Data Objects si Windows Integrated Authentification. ADODB permite conexiunea la Active directory prin intermediul unor obiecte COM. Cu ajutorul unor interogări de la LDAP, sunt extrase toate informațiile privind uid (user id) care se găsește in aplicație prin Windows Integrated Authentification.
$AdoConn = new COM("ADODB.Connection") or die("Cannot start ADODB.Connection");
$AdoComm = new COM("ADODB.Command") or die("Cannot start ADODB.Command");
$AdoRS = new COM("ADODB.Recordset") or die("Cannot start ADODB.Recordset");
$AdoConn->Provider = "ADsDSOObject";
$AdoConn->Open("Ads Provider");
$AdoComm->ActiveConnection = $AdoConn;
$QStr = "";
$QStr="<LDAP://DC=proiect,DC=com>;(&(objectCategory=Person)(objectClass=user)(sAMAccountName=".$uid."));sAMAccountName,sn,givenName,mail;subtree";
Tot pentru autentificarea automata mai avem nevoie și de modulul ”mod_authnz_ldap” pentru server Apache, care oferă posibilitatea de autentificare automată a utilizatorilor printr-un director LDAP.
Procesul de funcționare este in felul următor: După ce toate datele utilizatorului sunt extrase din Active Directory utilizatorul este adăugat in baza de date a aplicației pentru a nu mai fi necesar ca aceasta operație să fie executată de fiecare dată, deoarece este mai rapid utilizarea informației direct din baza de date a aplicației decât să se conecteze din nou si să se extragă informația din AD.
Dacă utilizatorul care încearcă sa se conecteze la baza de date nu există in baza de date a aplicației sau in Active Directory, aplicația nu îi va permite să se conecteze. Schema de funcționare a autentificării este prezentată in figura 4.5 Autentificarea automată
Figura 4.5 Autentificarea automată
4.2 Descrierea componentelor.
Pe lângă calculatorul pe care se pune aplicația si rețeaua din care face calculatorul parte, aplicația are nevoie de câteva componente importante pentru ca aplicația să funcționeze si să fie accesibilă tuturor utilizatorilor.
Serverul Apache – Apache este un server HTTP de tip open Source. Apache a jucat și joacă un rol important în dezvoltarea webului, fiind folosit în prezent în circa 50% din paginile web. Cuvântul "Apache" este numele unor triburi de indieni nord-americane importante.
Apache este dezvoltat de o comunitate deschisă de programatori sub emblema Apache Software Foundation. Aplicația este disponibilă pentru o mare varietate de sisteme de operare incluzând Unix, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows si OS/2. Apache suportă o mare varietate de module care îi extind funcționalitatea, acestea variază de la server side programming și până la scheme de autentificare. Câteva limbaje suportate sunt: mod_perl, mod_python, Tcl si PHP., [Bow07]
Serverul Apache interpretează codul PHP si generează un cod HTML care va fi văzut de utilizator (clientului (browserului) fiindu-i transmis numai cod interpretat ca si HTML).
De asemenea la serverul Apache mai avem nevoie de modulul ”mod_authnz_ldap”. Modulul menționat oferă posibilitatea de autentificare automata a utilizatorilor printr-un director LDAP.
Serverul MySQL – MySQL este un sistem de gestiune a bazelor de date relațional, produs de compania suedeza MySQL AB și distribuit sub Licența Publică Generală GNU. Este cel mai popular SGBD open-source la ora actuală, fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP). Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major.
MySQL este componentă integrată a platformelor LAMP sau WAMP (Linux/Windows-Apache-MySQL-PHP/Perl/Python). Popularitatea sa ca aplicație web este strâns legată de cea a PHP-ului care este adesea combinat cu MySQL și denumit Duo-ul Dinamic.
Pentru a administra bazele de date MySQL se poate folosi modul linie de comandă sau, prin descărcare de pe internet, o interfață grafică: MySQL Administrator și MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicația gratuită, scrisă în PHP, phpMyAdmin.
MySQL poate fi rulat pe multe dintre platformele software existente: AIX, FreeBSD, GNU/Linux, Mac OS X, NetBSD, Solaris, SunOS, Windows 9x/NT/2000/XP/Vista. [MySQL]
Active Directory de care avem nevoie pentru a putea autentifica și acei utilizatori care nu au fost adăugați manual de către utilizatorii cu privilegii de administrator –
Active Directory este o implementare a serviciilor de directoare LDAP, folosită de Microsoft în cadrul sistemelor de operare Windows. Astfel "Active Directory" pune la dispoziția administratorilor un mediu flexibil cu efect global pentru: asignarea permisiunilor, instalarea programelor, înnoirea securității. Toate aceste operațiuni pot fi aplicate atât la rețele mici, cât și la rețele complexe.
Active Directory (AD) este o ierarhie de câteva obiecte, unde obiectele se împart în trei categorii: resurse (ex: imprimantă), servicii (ex: poșta electronică), resurse umane (ex: utilizatori, grupe de utilizatori). Scopul tehnologiei "Active Directory" este de a pune la dispoziție informații despre aceste obiecte, organizarea obiectelor, controlul accesului, setarea securității..
Fiecare obiect indiferent de categorie reprezintă o entitate și atributele ei, unde 'entitate' poate fi – "Utilizator", "Calculator", "Imprimantă", "Aplicație" sau "Resursă Partajată". Mai mult decât atât, un obiect poate să conțină și alte obiecte. Atributele obiectului (structura de bază a obiectului în sine) sunt definite de o "schemă", care la rândul ei definește și tipul obiectelor care pot fi stocate ca sub obiecte în obiectul dat. [Des08]
4.3 Structuri de baze de date și fișiere.
Proiectarea bazei de date, a fost făcută respectând regulile principale ale proiectării unei baze de date și anume:
Analiza sistemului sau a domeniului economic pentru care se realizează baza de date
Proiectarea structurii bazei de date care constă în:
Alegerea SGBD-ului in care se va crea baza de date
Realizarea schemei conceptuale conform limbajului de descriere a datelor impus de SGBD-ul ales (dacă este cazul, fată de modelele realizate in etapa de analiză se poate face o verificare si o modificare a acestor modele)
Proiectarea schemei externe a bazei de date. Aceasta este o viziune a utilizatorilor bazei de date asupra datelor. Aici se creează o serie de tabele virtuale prin care se acorda acces la date utilizatorilor, și se implementează mecanisme de securitate și protecție a bazei de date
Proiectarea schemei interne (fizice): se definește structura datelor, folosind limbajele specifice SGBD-ului și ținând cont de mecanismele sale de memorare sau procesare.
Încărcarea datelor în baza de date
Exploatarea și întreținerea bazei de date presupune administrarea bazei de date prin implicarea administratorului, modificarea obiectelor, etc. [Ger05]
Baza de date este locul unde toată informația cum ar fi: lista de utilizatori, lista de acțiuni, lista locațiilor si toate cererile utilizatorilor este stocată. Inițial a fost concepută folosind MySQL. Instrumentul de management al bazei da date folosit a fost PHPMyAdmin.
Având în vedere că aplicația poate fi folosită de mai multe companii,și pentru ca fiecare să poată configura aplicația după bunul plac, în crearea bazei de date s-a folosit standardul Ansi SQL.
Standardul American National Standards Institute SQL a fost creat in 1986 și permite utilizatorilor de a crea query-uri și a le folosi indiferent de sistemul de baze de date pe care îl folosesc. Astfel prin folosirea standardului ANSI SQL s-a dat posibilitatea ca fiecare cumpărător al aplicației să aibă posibilitatea de a-și alege propriul sistem de baze de date și de a nu-I constrânge pentru a cumpăra alte licențe de software în cazul în care respectivul folosește un sistem de baze de date diferit.
În continuare vom prezenta schema generală a bazei de date și vom explica amănunțit rolul și specificațiile fiecărei tabele în parte. Fiecare tabelă are un nume sugestiv, reprezentând datele pe care aceasta le stochează.
Figura 4.6 Structura bazei de date.
În figura 4.6 este prezentată structura bazei de date cu toate tabele pe care baza de date le conține și legăturile dintre ele care asigură reducerea redundanței bazei de date. Câmpul din partea de sus a fiecărei tabele reprezintă numele tabelei, iar câmpurile așezate sub numele tabelei sunt câmpurile pe care tabela le conține.
Baza de date conține următoarele tabele:
Tabela tb_action. Este folosită pentru stocarea tuturor acțiunilor pe care le pot întreprinde utilizatorii în munca de zi cu zi. Există anumite acțiuni predefinite, uzuale, dar ele pot fi adăugate și de către utilizatori. Câmpurile tabelei sunt: id (int 255, auto increment, cheie primară), care este un identificator unic al fiecărei acțiuni în baza de date, name(varchar 255), care reprezintă numele fiecărei acțiuni, type(varchar 255) si care definește tipul acțiunii.
Tabela tb_action_booking. Este folosită pentru a crea legătura many-to-many între tabela de pontaj si tabela de acțiuni din baza de date. În momentul în care se face o cerere, id-ul cererii este memorat și este adăugat împreună cu id-urile acțiunilor selectate în tabele tb_action_booking. Câmpurile tabelei sunt: id_action (int 255, foreign key), id_booking (int 255, foreign key),
Tabela tb_user. Este folosită pentru a stoca utilizatorii care au accesat cel puțin odată aplicația și informațiile despre aceștia. Câmpurile tabele sunt: id (int 255, auto increment, cheie primară), care este un identificator unic al fiecărei utilizator în baza de date, uid(varchar 255), care este numele de logare al utilizatorului în domeniu, first_name(varchar 255), reprezintă prenumele utilizatorului, last_name(varchar 255), reprezintă numele de familie utilizatorului, email(varchar 255), câmpul care conține adresa de email a utilizatorului.
Tabela tb_recc_team. Este folosită pentru a stoca utilizatorii care fac parte din echipa care a creat aplicația și informațiile despre aceștia. Câmpurile tabele sunt: id (int 255, auto increment, cheie primară), care este un identificator unic al fiecărei utilizator în baza de date, uid(varchar 255), care este numele de logare al utilizatorului în domeniu, first_name(varchar 255), reprezintă prenumele utilizatorului, last_name(varchar 255), reprezintă numele de familie utilizatorului, email(varchar 255), câmpul care conține adresa de email a utilizatorului.
Tabela tb_project. Este folosită pentru stocarea proiectelor la care utilizatorii lucrează. Câmpurile tabelei sunt: : id (int 255, auto increment, cheie primară), care este un identificator unic al fiecărui proiect în baza de date, name(varchar 255), conține numele proiectului, RH_name(varchar 255), reprezintă numele proiectului într-un alt sistem de pontaj în cazul în care s-a făcut migrare la actualul, sau se merge în paralel cu două sisteme de pontaj, PV_number(int 255), reprezintă un identificator unic al fiecărui proiect.
Tabela tb_mks_project. Este folosită pentru stocarea proiectelor de un alt tip la care utilizatorii lucrează. Câmpurile tabelei sunt: : id (int 255, auto increment, cheie primară), care este un identificator unic al fiecărui proiect în baza de date, name(varchar 255), conține numele proiectului, RH_name(varchar 255), reprezintă numele proiectului într-un alt sistem de pontaj în cazul în care s-a făcut migrare la actualul, sau se merge în paralel cu două sisteme de pontaj, PV_number(int 255), reprezintă un identificator unic al fiecărui proiect.
Tabela tb_location. Este folosită pentru stocarea tuturor locațiilor pentru care se întreprinde acțiunea de suport. Locațiile sunt predefinite în funcție de zona unde compania are oficii. Câmpurile tabelei sunt: id (int 255, auto increment, cheie primară), care este un identificator unic al fiecărei locații în baza de date, name(varchar 255), care reprezintă numele fiecărei locații.
Tabela tb_booking. Este folosită pentru a stoca toate înregistrările de pontaj pe care utilizatorii le adaugă. Pentru a reduce redundanța tabela conține mai multe chei externe, care fac legătura cu cheile primare din celelalte tabele. Câmpurile tabelei sunt: id (int 255, auto increment, cheie primară) și este legat de cheia externa id_booking din tabela tb_action_booking, care este un identificator unic al fiecărei înregistrări în baza de date, type(varchar 255), care reprezintă tipul de activitate pe care utilizatorul l-a întreprins, id_requester(int 255, foreign key), este legat de câmpul id din tabela tb_user și reprezintă identificatorul unic al celui care face înregistrarea, id_owner este legat de câmpul id din tabela tb_user și reprezintă identificatorul unic al celui pe numele căruia se face înregistrarea, id_project(int 255 foreign key), este legat de câmpurile id din tabele tb_project și tb_mks_project și reprezintă identificatorul unic al proiectului pentru care se face înregistrarea, id_location(int 255 foreign key), este legat de câmpurile id din tabele tb_location și reprezintă identificatorul unic al locației pentru care se întreprinde acțiunea de suport, duration(int 255) stochează valoarea duratei acțiunii pe care utilizatorul a întreprins-o, comments(varchar 255) care conține alte comentarii asupra înregistrării, în cazul în care utilizatorul dorește să adauge, date(date) , câmp care stochează data în care a fost făcută înregistrarea.
4.4 Proceduri(funcții, subrutine).
Elementul principal al aplicației este indexul acesteia si mai exact fișierul ”index.php”. Aproape toate cererile sunt făcute sunt făcute folosind pagina de index. Aici se vor executa funcțiile sau metodele claselor care implementează și soluționează operațiile necesare cererilor.
În continuare vor fi prezentate funcțiile și clasele necesare pentru rularea programului în funcție de localizarea lor și apelarea în program.
Funcția getUserInfoFromAD – este una din cele mai importante funcții ale programului deoarece permite conectarea la Active Directory.
$AdoConn = new COM("ADODB.Connection") or die("Cannot start ADODB.Connection");
$AdoComm = new COM("ADODB.Command") or die("Cannot start ADODB.Command");
$AdoRS = new COM("ADODB.Recordset") or die("Cannot start ADODB.Recordset");
$AdoConn->Provider = "ADsDSOObject";
$AdoConn->Open("Ads Provider");
$AdoComm->ActiveConnection = $AdoConn;
$QStr = "";
$QStr="<LDAP://DC=proiect,DC=com>;(&(objectCategory=Person)(objectClass=user)(sAMAccountName=".$uid."));sAMAccountName,sn,givenName,mail;subtree";
ADODB permite conexiunea la Active Directory prin intermediul unor obiecte COM. Cu ajutorul unor interogări de la LDAP, sunt extrase toate informațiile privind uid (user id) care se găsește in aplicație prin Windows Integrated Authentification.
După conectarea la Active Directory, funcția mai are rolul de a extrage informațiile referitoare la utilizatorul care se accesează aplicația si de a-l autentifica pe acesta. Funcția returnează un tablou asociativ cu informațiile despre user.
$user['uid'] = $AdoRS->Fields("sAMAccountName")->value;
$user['firstname'] = $AdoRS->Fields("givenName")->value;
$user['lastname'] = $AdoRS->Fields("sn")->value;
$user['email'] = $AdoRS->Fields("mail")->value;
return $user;
Funcția getUserInfoFromADforAjax are următoarele caracteristici:
Returnează informații despre un utilizator pe baza uid de utilizator din Active Directory pentru cererile AJAX
Are un timp rezonabil de execuție, pe baza unor criterii aproximativ 0.015-0.020 secunde, pentru o interogare
Returnează un tablou asociativ cu informațiile despre user.
Clasa DBHelper – Clasă care creează o instanță ADOdb pentru MySQL și alte operațiuni de ajutor pentru baza de date. Această clasă ar trebui să servească drept punct de flexibilitate atunci când managerul bazei de date se schimbă. Conține următoarele metode:
DBHelper – care este constructorul clasei.
createAdoDbInstance – Creează o instanță a ADOdb cu parametrii de conexiune la db_conf.php. Returnează instanța clasei ADOdb
$pwd = urlencode(DB_PASS);
$connexionString = DB_ENGINE."://".DB_USER.":".$pwd."@".DB_HOST."/".DB_NAME;
if(DB_OPTIONS != "")
$connexionString .= DB_OPTIONS;
$this -> db = &ADONewConnection($connexionString);
return $this -> db;
Funcția generate_select generează o formă select.
Funcția generate_select_users generează o formă select cu numele utilizatorilor din baza de date și returnează toate informațiile legate de acel utilizator
Funcția generate_multiple_select generează o formă select cu alegeri multiple.
Funcția generate_duration_select generează o formă select cu valorile definite pentru durata.
Funcția generate_months_select generează o formă select cu valorile definite pentru lunile anului.
Clasa Action. Clasă care gestionează acțiunile și operațiile care se pot executa asupra lor (adăuga, edita, șterge, afișa). De asemenea, comunică și utilizează alte clase auxiliare, după caz. Conține următoarele metode:
Action – constructorul clasei, care creează o instanță a clasei bazei de date.
function Action()
{
$this -> dbHelper = new DBHelper();
$this -> db = $this -> dbHelper -> createAdoDbInstance();
}
checkActionExists – verifică dacă o acțiune există deja în baza de date pe baza a doi parametrii pe care îi primește și care reprezintă numele și tipul acțiunii. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
addAction – adaugă o acțiune în baza de date pe baza a doi parametrii pe care îi primește și care reprezintă numele și tipul acțiunii. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării. Înainte de a adăuga acțiunea apelează funcția checkActionExists pentru a verifica dacă acțiunea nu există deja și a nu crea duplicate după care execută un query asupra tabelei tb_action pentru adăugarea acțiunii în baza de date.
if($this -> checkActionExists($actName,$actType))
return false;
$sqlInsert ='INSERT INTO '.' tb_action '.
'(name, type)'.
'VALUES '.
"(".$this->db->qstr($actName). ",".$this->db->qstr($actType).")";
if($this -> db -> Execute($sqlInsert)==false)
return false;
return true;
deleteAction – șterge o acțiune din baza de date pe baza identificatorului unic al acțiunii din baza de date pe care îl primește ca parametru. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
editAction – modifică informațiile referitoare la o acțiune deja existent în baza de date pe baza a trei parametrii pe care îi primește și care reprezintă identificatorul unic al acțiunii care se dorește modificată și noile informații privind numele și tipul acțiunii. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării. Înainte de a adăuga acțiunea apelează funcția checkActionExists pentru a verifica dacă noile informații nu există deja în baza de date pentru nu crea duplicate după care execută un query asupra tabelei tb_action pentru adăugarea acțiunii în baza de date.
getAllActions – returnează un tablou asociativ conținând lista tuturor acțiunilor din baza de date.
getActionNameById – returnează numele unei acțiunii al cărei identificator unic este primit ca parametru al funcției.
getActionTypeById – returnează tipul unei acțiunii al cărei identificator unic este primit ca parametru al funcției.
getActionIDByNameAndType – returnează identificatorul unei acțiuni pe baza a doi parametrii pe care funcția îi primește și care reprezintă numele și tipul funcției.
getAllActionsForSelect – returnează un array pentru o funcție generată care conține identificatorul și numele tuturor acțiunilor a căror tip "Administration".
Clasa User. Clasă care gestionează utilizatorii și operațiile care se pot executa asupra lor (adăuga, edita, șterge, afișa). De asemenea, comunică și utilizează alte clase auxiliare, după caz. Conține următoarele metode:
User – constructorul clasei, care creează o instanță a clasei bazei de date.
checkUserExists – verifică dacă un utilizator există deja în baza de date pe baza identificatorului unic uid pe care funcția îl primește ca parametru. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
addUser – adaugă un utilizator în baza de date. La adăugarea utilizatorului se vor transmite următoarele informații uid-ul, numele și prenumele utilizatorului, emailul și privilegiile utilizatorului în aplicație. Aceste informații sunt primite ca parametrii funcției. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării. Înainte de a adăuga un utilizator se apelează funcția checkUserExists pentru a verifica dacă utilizatorul cu uid-ul specificat nu există in baza de date și a nu crea duplicate după care execută un query asupra tabelei tb_user prin care se adaugă utilizatorul în baza de date.
deleteUser – șterge o u utilizator din baza de date pe baza identificatorului unic din baza de date pe care îl primește ca parametru. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
editUser – modifică informațiile legate de un utilizator deja existent în baza de date. Pentru recunoașterea utilizatorului care trebuie modificat se folosește identificatorul unic din baza de date, restul datelor fiind transmise de către utilizator și primate de funcție ca parametrii Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
getAllUsers – returnează un tablou asociativ conținând lista tuturor utilizatorilor din baza de date. Funcția execută o interogare asupra bazei de date, care trimite comanda SQL spre server, după care cu ajutorul funcției mysql_fetch_row se extrage succesiv câte o linie cu date din tabelă și se adaugă în tablou.
$sqlGet = ' SELECT '.' * '.
' FROM '.' tb_user ';
$usersArr = array();
$i =0 ;
$this -> db->SetFetchMode(ADODB_FETCH_ASSOC);
$result = $this -> db -> Execute($sqlGet);
while($row = $result->FetchRow())
$usersArr[$i++] = $row;
return $usersArr;
getUserOptionById – returnează unul din următoarele câmpuri asociate unui utilizator: UID, prenumele, numele, e-mail sau rolul de utilizator a cărui identificator unic din baza de date este trimis.
getUserOptionByUId – returnează unul din următoarele câmpuri asociate unui utilizator: prenumele, numele, e-mail sau rolul de utilizator a cărui identificator unic și anume câmpul uid este transmis.
addUserforBooking – adaugă un utilizator în baza de date în momentul în care este făcută o înregistrare de pontaj în cazul în care persoana pentru care se face înregistrarea de pontaj nu există în baza de date. Informațiile sunt preluate în urma executării funcției care returnează informațiile despre utilizator din Active Directory.
addUserinReccTeam – adaugă un utilizator în baza de date în tabela tb_recc_team . La adăugarea utilizatorului se vor transmite următoarele informații uid-ul, numele și prenumele utilizatorului, emailul și privilegiile utilizatorului în aplicație. Aceste informații sunt primite ca parametrii funcției. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării. Înainte de a adăuga un utilizator se apelează funcția checkUserExistsinReccTeam pentru a verifica dacă utilizatorul cu uid-ul specificat nu există in baza de date și a nu crea duplicate după care execută un query asupra tabelei tb_recc_team prin care se adaugă utilizatorul în baza de date.
deleteUserFromReccTeam – șterge un utilizator din tabela tb_recc_team pe baza identificatorului unic din baza de date pe care îl primește ca parametru. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
editUserFromReccTeam – modifică informațiile legate de un utilizator deja existent în tabela tb_recc_team. Pentru recunoașterea utilizatorului care trebuie modificat se folosește identificatorul unic din baza de date, restul datelor fiind transmise de către utilizator și primate de funcție ca parametrii Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
checkUserExistsinReccTeam – verifică dacă un utilizator există deja în baza de date în tabela tb_recc_team pe baza identificatorului unic uid pe care funcția îl primește ca parametru. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
getAllUsersFromReccTeam – returnează un tablou asociativ conținând lista tuturor utilizatorilor din baza de date din tabela tb_recc_team. Funcția execută o interogare asupra bazei de date, care trimite comanda SQL spre server, după care cu ajutorul funcției mysql_fetch_row se extrage succesiv câte o linie cu date din tabelă și se adaugă în tablou.
Clasa Project. Clasă care gestionează proiectele și operațiile care se pot executa asupra lor (adăuga, edita, șterge, afișa). De asemenea, comunică și utilizează alte clase auxiliare, după caz. Conține următoarele metode:
Project – constructorul clasei, care creează o instanță a clasei bazei de date.
checkProjectExists – verifică dacă un proiect există deja în baza de date. Verificarea se face verificând câmpurile name, RH_name și PV_number. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
addProject – adaugă un proiect în baza de date pe baza informațiilor introduse de către utilizator, care sunt transmis ca parametrii ai funcției. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării. Înainte de a adăuga proiectul apelează funcția checkProjectExists pentru a verifica dacă acțiunea nu există deja și a nu crea duplicate după care execută un query asupra tabelei tb_project pentru adăugarea acțiunii în baza de date.
deleteProject – șterge un proiect din baza de date pe baza identificatorului unic al proiectului din baza de date pe care îl primește ca parametru. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
editProject – modifică informațiile legate de un proiect deja existent în baza de date. Pentru recunoașterea proiectului care trebuie modificat se folosește identificatorul unic din baza de date, restul datelor fiind transmise de către utilizator și primite de funcție ca parametrii Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
getAllProjects – returnează un tablou asociativ conținând lista tuturor proiectelor din baza de date.
getActionNameById – returnează numele unui proiect al cărei identificator unic este primit ca parametru al funcției
getProjectIdByName – returnează identificatorul unui proiect al cărui nume unic este primit ca parametru al funcției
getProjectPV_NumberById – returnează numărul PV al unui proiect al cărei identificator unic este primit ca parametru al funcției.
getAllProjectsForSelect – funcție cu rolul de a returna un tablou numele proiectelor pentru a fi folosit la generarea unui form de tip select.
Clasa Location. Clasă care gestionează locațiile și operațiile care se pot executa asupra lor (adăuga, edita, șterge, afișa). De asemenea, comunică și utilizează alte clase auxiliare, după caz. Conține următoarele metode:
Location – constructorul clasei, care creează o instanță a clasei bazei de date.
checkLocationExists – verifică dacă o locație există deja în baza de date. Verificarea se face verificând dacă numele locației există. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
addLocation – adaugă o nouă locație în baza de date pe baza informațiilor introduse de către utilizator, care sunt transmis ca parametrii ai funcției. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării. Înainte de a adăuga locația apelează funcția checkLocationExists pentru a verifica dacă acțiunea nu există deja și a nu crea duplicate după care execută un query asupra tabelei tb_location pentru adăugarea acțiunii în baza de date.
deleteProject – șterge o locație din baza de date pe baza identificatorului unic al proiectului din baza de date pe care îl primește ca parametru. Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
$sqlDelete = 'DELETE'.' FROM '.' tb_location '.
' WHERE '.' id='."'".$locId."'";
if($this -> db -> Execute($sqlDelete)==false)
return false;
return true;
editLocation – modifică informațiile legate de o locație deja existentă în baza de date. Pentru recunoașterea locației care trebuie modificată se folosește identificatorul unic din baza de date, restul datelor fiind transmise de către utilizator și primite de funcție ca parametrii Returnează o valoare de tip Boolean adică adevărat sau fals în funcție de rezultatul căutării.
getAllProjects – returnează un tablou asociativ conținând lista tuturor locațiilor din baza de date.
getLocationNameById – returnează numele unei locații al cărei identificator unic este primit ca parametru al funcției.
getLocationIdByName – returnează identificatorul unei locații al cărei nume este primit ca parametru al funcției.
Clasa Booking. Clasă care gestionează operațiile de adăugare a pontajului. De asemenea, comunică și utilizează alte clase auxiliare, după caz. Conține următoarele metode:
Booking – constructorul clasei, care creează o instanță a clasei bazei de date.
addAdministrationBooking – funcția care este apelată în cazul în care utilizatorul dorește adăugarea unei noi înregistrări de pontaj de tip ”Administration”. Funcția preia datele introduse de către utilizator și creează o nouă înregistrare în baza de date.
addSupportBooking – funcția care este apelată în cazul în care utilizatorul dorește adăugarea unei noi înregistrări de pontaj de tip ”Support”. Funcția preia datele introduse de către utilizator și creează o nouă înregistrare în baza de date.
addActionBooking – adaugă identificatorul înregistrării de pontaj și identificatorul acțiunii cu care s-a făcut înregistrarea de pontaj în tabela tb_action_booking care creează legătura de many-to-many între tabelele tb_action sit tb_booking
selectBookingRequests – execută o interogare asupra bazei de date și returnează toate înregistrările de pontaj.
selectBookingRequestsSorted – execută o interogare asupra bazei de date și returnează toate înregistrările de pontaj sortate în ordine crescătoare în funcție de unul sau mai multe dintre câmpurile pe care utilizatorul le dorește. Funcția are anumiți parametrii care sunt setați în mod implicit pe false, aceștia activându-se doar în cazul în care utilizatorul transmite informații către funcție.
updateBookingRequestsForAdministrationType – funcția care este apelată în cazul în care utilizatorul dorește modificarea unei înregistrări de pontaj de tip ”Administration”. Funcția preia datele introduse de către utilizator și modifică datele înregistrării al cărei identificatorul unic îl va primi ca parametru.
updateBookingRequestsForSupportType – funcția care este apelată în cazul în care utilizatorul dorește modificarea unei înregistrări de pontaj de tip ”Support”. Funcția preia datele introduse de către utilizator și modifică datele înregistrării al cărei identificatorul unic îl va primi ca parametru.
Clasa Report. Este clasa responsabilă cu extragerea rapoartelor. Conține următoarele metode:
Report – constructorul clasei, care creează o instanță a clasei bazei de date
ReportSortedByOwner – returnează un tablou care conține toate cererile de pontaj aparținând unui utilizator identificat după ID-ul de utilizator din baza de date.
ReportSortedByType – returnează un tablou care conține toate cererile de pontaj sortate după tipul pontajului
ReportSortedByMonth – returnează un tablou care conține toate cererile de pontaj dintr-o anumită lună a anului introdusă de către utilizator.
monthlyReportCombined – returnează un tablou care conține toate cererile de pontaj dintr-o anumită lună a anului introdusă de către utilizator, ale unui utilizator și care aparțin unui anumit tip de pontaj.
specificReportCombined – returnează un tablou care conține toate cererile de pontaj dintr-o anumită perioadă de timp introdusă de către utilizator, ale unui utilizator și care aparțin unui anumit tip de pontaj.
mksSpecificReportCombined – returnează un tablou care conține toate cererile de pontaj dintr-o anumită perioadă de timp introdusă de către utilizator, ale unui utilizator și care sunt de tipul ”MKS Support”.
mksMonthlyReportCombined – returnează un tablou care conține toate cererile de pontaj dintr-o anumită lună a anului introdusă de către utilizator, ale unui utilizator și care sunt de tipul ”MKS Support”.
monthlyReportCombinedForAll – returnează un tablou care conține toate cererile de pontaj dintr-o anumită lună a anului introdusă de către utilizator, ale tuturor utilizatorilor ce aparțin echipei care a creat aplicația și care sunt de un anumit tip.
specificReportCombinedforALL – returnează un tablou care conține toate cererile de pontaj dintr-o anumită perioadă de timp introdusă de către utilizator, ale tuturor utilizatorilor ce aparțin echipei care a creat aplicația și care sunt de un anumit tip.
Clasele amintite anterior nu conțin și partea de design a interfeței grafice. Interfața grafică este formatată separat folosind limbaj HTML si CSS.
Capitolul 5. Utilizarea Sistemului
5.1 Prima rulare a programului
Programul este gândit în așa fel încât orice utilizator nou să poată să folosească programul cu o foarte mare ușurință, să poată să înțeleagă foarte ușor modul de lucru și felul în care programul operează.
Deoarece programul este gândit și creat pentru a veni în ajutorul utilizatorului, acesta nu are alte setări de făcut și permite utilizatorului a-și începe munca imediat după accesarea aplicației.
În momentul în care utilizatorul accesează aplicația el nu are nevoie de autentificare manuală, el va fi autentificat automat iar numele de autentificare si rolurile lui vor fi afișate in partea din stânga sus a ecranului, iar în partea din dreapta va fi afișată data curentă
5.2 Înregistrarea pontajului
Adăugarea pontajului se referă la partea unde utilizatorii pot să își înregistreze munca, fie ei administratori sau simpli utilizatori.
Sunt definite 3 tipuri de pontaj:
Pontajul de administrare
Pontajul de suport
MKS
Adăugarea Pontajului de tip Administration
Pagina de adăugare a pontajului de administrare este un chestionar, unde utilizatorii trebuie să completeze câteva câmpuri cu detalii despre munca lor. Ca urmare informația introdusă de utilizator va fi adăugată in baza de date a aplicației la apăsarea butonului Add.
Figura 5.1 Adăugarea pontajului de tip Adminstration
La fiecare cerere utilizatorul trebuie sa completeze câmpurile. Unele câmpuri sunt obligatorii, cum ar fi: “Location”, altele au dependențe precum: “Action” cu “other” și “Duration” cu “Minutes”, iar unele pot rămâne goale, precum: “Comentarii”. În cazul în care unul dintre câmpuri nu este completat cum trebuie va fi generat un mesaj de eroare. Dacă înregistrarea a fost făcută cu succes utilizatorul va fi redirecționat înapoi la formular și va fi afișat un mesaj corespunzător.
Adăugarea Pontajului de Support
Pagina de adăugare a pontajului de suport este de asemenea un chestionar, aproape identic cu pagina de adăugare a pontajului de tip Adminsitration.
Figura 5.2 Adăugarea pontajului de tip Support
5.3 Generarea rapoartelor
Generarea rapoartelor oferă posibilitatea utilizatorului să vizualizeze toate cererile sale și de a le exporta intr-un document Microsoft Office Excel.
Sunt doua tipuri de rapoarte bazate pe durata aleasa de utilizator:
Monthly, pe o perioada de o lună
Specific, pentru o perioadă care nu este fixă
Dacă utilizatorul vrea să genereze un raport, are la dispoziție câteva opțiuni(câmpuri).
Aceste opțiuni ajută utilizatorul să filtreze rezultatul si să obțină doar informația care îl interesează.
Formularul de raport are 4 câmpuri pentru a filtra rezultatul:
Owner(proprietarul pontajului)
Period(perioada pentru care s-a făcut pontajul)
Type(tipul pontajului: administrare, suport, MKS)
Project
Dacă utilizatorul dorește generarea unui raport, nu este obligat să completeze nici un câmp, deoarece câmpul “Owner” este completat automat. Nici un alt câmp nu este obligatoriu. Dacă utilizatorul trimite cererea, se va genera un document Excel. Documentul poate fi vizualizat sau salvat. Raportul va conține toata informația pe care a introdus-o utilizatorul când a făcut o cerere de pontaj.
Figura 5.3 Generarea rapoartelor
5.4 Managementul aplicației
în aplicație sunt definite două tipuri de roluri: administrator, care are acces la toată informația si utilizatorul care are acces limitat.
Management-ul Aplicației este unul din capitolele majore ale aplicației. Aici este gestionată toată informația depozitată în baza de date a aplicației (utilizatori, locații, acțiuni, proiecte). Este disponibil doar pentru administratori.
Este împărțit in patru părți:
Locations
Projects,
Actions
Users.
Toate cele 4 părți au același sistem de funcționare.
List Links (Afișarea elementelor) afișează lista din baza de date a aplicației cu utilizatori, proiecte sau orice opțiune alege utilizatorul.
Figura 5.4 Afișarea obiectelor.
Ștergerea datelor – Butonul de ștergere face o cerere ca informația din baza de date a aplicației să fie ștearsă. Înainte de a se face cererea de ștergere se generează o căsuță de alertă conținând un mesaj corespunzător pentru a se asigura că informațiile nu au fost șterse din greșeală
Figura 5.5 Ștergerea datelor
Modificarea datelor – Butonul de actualizare îi permite utilizatorului să modifice atributele datelor selectate de utilizator. Utilizatorul este direcționat către un formular cu toate atributele standard unde utilizatorul le poate modifica. Toate câmpurile trebuie completate. Dacă unul din câmpuri este gol, aplicația generează o căsuță de alertă și nu îi permite utilizatorului să facă modificările. Dacă toate câmpurile sunt completate, este afișată noua lista cu datele actualizate și un mesaj dacă s-au făcut modificările sau nu.
Adăugarea datelor – Adăugarea datelor este o opțiune în meniu care redirecționează utilizatorul către un formular. Acest formular conține o listă de atribute legate cu datele pe care utilizatorul dorește să le adauge. Toate câmpurile trebuie completate. Dacă unul din câmpuri este gol, aplicația generează o căsuță de alertă și nu îi permite utilizatorului să adauge datele. Daca toate câmpurile sunt completate, aplicația verifică dacă datele introduse nu există deja în baza de date a aplicației. Dacă există, noile date nu vor fi introduse în baza de date și se afișează un mesaj corespunzător. Dacă datele nu există, atunci acestea se adaugă în baza de date. În cazul în care datele au fost adăugate, se va afișa noua listă cu toate datele și se va afișa un mesaj corespunzător, cum că operațiunea a fost realizată cu succes.
Capitolul 6. Realizarea, punerea în funcțiune și rezultate experimentale
6.1 Realizarea programului și punerea în funcțiune
În realizarea programului s-a încercat respectarea principalelor de dezvoltare ale unui sistem software:
Analiza cerințelor
Proiectarea sistemului
Implementarea
Instalarea și integrarea
Operarea și mentenanța
Testarea și validarea
Managementul
Astfel în prima fază s-a avut în considerare cui se adresează aplicația, mergându-se pe ideea de a se adresa companiilor mari, de aici și ideea de a fi integrată cu Active Directory, majoritatea companiilor folosesc infrastructura bazată pe server fie ea Windows sau Linux.
Următorul pas a fost crearea unui prototip HTML, pentru a putea delimita mai ușor fiecare funcție principal a sistemului și pentru a ușura de asemenea și scrierea specificațiilor.
S-a trecut la scrierea documentului de specificații a aplicației. După scrierea specificațiilor s-a trecut la împărțirea aplicației pe module de unde au ieșit și funcțiile principale ale sistemului și anume:
Autentificarea
Pontajul
Rapoarte
Managementul aplicației.
Următorul pas a fost implementarea fiecărui modul. Primul modul implementat a fost modulul de autentificare deoarece s-a ajuns la concluzia că celelalte module sunt mai strâns legate unul de celălalt și implementarea lor va trebui gândită pentru a se crea mai ușor legăturile dintre ele.
Odată implementarea terminată s-a trecut la simularea unei infrastructuri pe care ar rula aplicația. Pentru simularea infrastructuri au fost instalate mașini virtuale folosind VMWare. Pe una din mașinile virtuale s-a instalat Windows Server 2003 cu opțiunile de Domain Controller, Domain Name Service și instalarea serviciului de Active Directory. Pe server s-a trecut la instalarea unei soluții și anume XAMPP care înglobează atât serverul Apache, cât și serverul de MySQL. De asemenea a fost nevoie de implementarea la serverul Apache a modulului ”mod_authnz_ldap”, care oferă opțiunea de autentificare automata a utilizatorilor printr-un director LDAP.
După setarea tuturor modulelor aplicația a fost instalată pe server , asta însemnând copierea aplicației în directorul care reprezintă calea de localhost a serverului Apache, localhot-ul fiind una din setările care s-au făcut pentru serverul Apache.
Testarea aplicației a constat în verificarea fiecărei specificații în parte.
Capitolul 7. Concluzii și direcții de dezvoltare.
6.1 Concluzii
Aplicația este una performantă de ultimă generație,care folosește tehnologii de ultimă performanță și care oferă posibilitatea utilizatorilor de a-și alege propriile soluții pentru instalarea sistemului.
Este o aplicație foarte ușor de folosit pentru orice utilizator al calculatorului, chiar dacă este destinată utilizatorilor din aria IT.
Managementul ușor al aplicației, nu necesită neapărat o persoană pentru a adăuga anumite informații ci se adaugă singure în momentul rulării anumitor funcții.
În cazul în care nu se dorește suport pentru aplicație codul este documentat foarte bine, plin de comentarii și ușor de înțeles.
Deține un număr mare de funcții și oferă utilizatorilor funcții atât pentru adăugarea pontajului, pentru generarea rapoartelor cât și pentru managementul tuturor datelor aplicației.
Este extrem de folositor pentru companiile din aria calculatoarelor.
Elimină din timpul pierdut prin managementul ușor al aplicației, prin ușurința cu care este folosită și prin faptul că nu necesită un training pentru învățarea folosirii aplicației.
6.2 Direcții de dezvoltare
Privind spre viitor se dorește o extindere a pieței de desfacere și a clienților spre care se adresează aplicația. În acest sens s-au luat în considerare anumiți pași pe care aplicația ar trebui sa îi urmeze și anumite acțiuni care trebuie făcute în acest sens.
Astfel având în vedere că aplicașia se adresează companiilor ân special cu infrastructură bazată pe servere, se dorește o implementare a unei autentificări manuale pentru ca orice companie indiferent de infrastructura pe care o folosește să poată utiliza aplicația.
Deasemenea s-a luat în considerare extinderea de tipuri de pontaj spre toate activitățile pe care o companie din aria software și servicii IT le poate asigura, aici fiind incluse și dezvoltarea și testarea de software, crearea de infrastructuri și rețele și operașiuni de mentenață.
Bibliografie:
[Iva05] Ivascu V (2005) Initere in php&mysql
[Ull06] Ullman L (2006) PHP si MySQL pentru site-uri dinamice
[Ber89] Bertin J – Bertin (1989) Graphics and Graphics Information Processing
[Ach97] Achour M, Betz F, Dovgal A, Lopes N, Magnusson H, Richter G, Seguy D, Vrana J (1997-2013) php manual – http://php.net/manual/en/index.php
[Ger05] Gerner J, Naramore E, Owens M, Warden M (2005) Professional LAMP: Linux, Apache, MySQL and PHP5 Web Development
[MySQL] http://dev.mysql.com
[W3Sch] http://www.w3schools.com/
[Bow07] Bowen R, Coar K (2007) Apache Cookbook, 2nd Edition
[Des08] Desmond B, Richards J, Allen R (2008) Active Directory, 4th Edition
Designing, Deploying, and Running Active Directory
Bibliografie:
[Iva05] Ivascu V (2005) Initere in php&mysql
[Ull06] Ullman L (2006) PHP si MySQL pentru site-uri dinamice
[Ber89] Bertin J – Bertin (1989) Graphics and Graphics Information Processing
[Ach97] Achour M, Betz F, Dovgal A, Lopes N, Magnusson H, Richter G, Seguy D, Vrana J (1997-2013) php manual – http://php.net/manual/en/index.php
[Ger05] Gerner J, Naramore E, Owens M, Warden M (2005) Professional LAMP: Linux, Apache, MySQL and PHP5 Web Development
[MySQL] http://dev.mysql.com
[W3Sch] http://www.w3schools.com/
[Bow07] Bowen R, Coar K (2007) Apache Cookbook, 2nd Edition
[Des08] Desmond B, Richards J, Allen R (2008) Active Directory, 4th Edition
Designing, Deploying, and Running Active Directory
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Aplicatie Pentru Evidenta Activitatilor de Administrare Si Suport (ID: 149461)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
