Aplicatie Web Pentru Managementul Proiectelor Software

Introducere

Într-o perioada in care productivitatea este punctată, ne vedem obligați să folosim diferite mijloace pentru a creste productivitatea zi de zi. Un domeniu in care putem să remarcam o pondere foarte mare a programelor de productivitate si de management este domeniul IT.

Aplicația în discuție dorește sa vină în sprijinul acelora care sunt la începutul unei cariere in dezvoltarea aplicațiilor software. Aceasta va pune la dispoziție toate funcționalitățile necesare pentru un management de resurse pe proiect, un management de proiecte, echipe si un management de task-uri pe proiect.

Ne dorim să evidențiem pe această cale că programele de management de resurse și task-uri sunt de un real ajutor și ne pot simplifica existenta.

Managementul proiectelor este procesul de a planifica, organiza, motiva și a controla resurse, proceduri și protocoale pentru a rezolva anumite probleme științifice sau de rutină.

Un plan bine pus la punct poate scuti de foarte multă bataie de cap atunci când trebuie să acționăm. De la început timpurilor au existat astfel de planuri pentru a facilita buna decurgere a unui proiect.

Într-o era în care productivitatea este principala grijă atât a companiilor mari, cât și a micilor întreprizători, platforma de față vine in sprijinul micilor antreprenori pentru a crește productivitatea din companiile lor sau chiar în cadrul unor proiecte personale.

Produsul de față aduce posibilitatea de a crea mai multe proiecte, de a atribui sarcini utilizatorilor invitați pe platfomă și de a contoriza sarcinile active care mai există la momentul respectiv pe proiect. Platforma dorește să soluționeze unele neajunsuri în modul de lucru întâmpinat în alte soft-uri de aceeași natură. Produsul este usor extensibil datorită limbajelor de programare și framework-urilor alese, care au o documentație foarte bine pusă la punct.

Proiectele software pot avea un timp de dezvoltare foarte variat, de la câteva

zile, la câțiva ani de zile. Datorită acestui factor variabil, este important ca manangementul pe proiect să fie făcut cu seriozitate și răbdare. Un manangement slab poate duce la năruirea muncii intregii echipe, ceea ce este de evitat în orice moment. Companiile de prestigiu au înțeles importanța unui manangement de calitate și că în lipsa lui nu se pot lansa produse software de înaltă calitate.

Obiectivul acestui proiect este de a crea un sistem de centralizare a tuturor

informațiilor care țin atât de manangementul resurselor umane, cât și a informațiilor

legate de proiecte, cum ar fi task-uri.

Managementul cerințelor și procesului în sine este o activitate ce stă la baza

tuturor proiectelor. Acesta trebuie implementat având în vedere faptul că cerințele

proiectului se pot modifica pe parcursul lui.

CAP 1. TEHNOLOGII FOLOSITE

1.1 PHP

PHP este un limbaj de programare care permite modificarea unei pagini web înainte ca aceasta să fie transmisă către browserul unui utilizator. În momentul în care utilizatorul accesează o pagină web construită cu PHP, mai întâi este rulat scriptul PHP, după care partea de HTML, iar apoi rezultatul este trimis înapoi utilizatorului sub forma HTML care este randat pe browser.

PHP-ul este un project open-source, ceea ce înseamnă că avem acces la codul sursă, putem să-l modificăm și să-l redistribuim fară costuri adiționale.

1.2 JAVASCRIPT

Javascript este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor. Fiind un limbaj pentru dezvoltare pe parte de client, este rulat în interiorul browserului fără acces direct la server. Javascript este folosit pentru a dezvolta diferite funcționalități în interiorul paginilor web. Folosind acest limbaj de programare, putem manipula obiecte din DOM (Document Object Model) astfel încât să oferim utilizatorului o experiență cât mai naturală și intuitivă fără a mai fi nevoie să mai reîncărcăm toată pagina web.

1.3 HTML și CSS

HTML este un limbaj de tip markup language bazat pe etichete (tag-uri, marcaje). Este practic esența fără de care nici o pagină web nu ar putea fi interpretată de către browser.

CSS este o modalitate sau un standard pentru formatarea elementelor HTML. Este foarte folosit de către dezvoltatorii de interfețe web, iar în prezent sunt foarte puține pagini web care nu beneficiază de CSS.

1.4 BOOTSTRAP

În momentul de fată există cinci mari browsere folosite pe PC-uri – Internet Explorer, Firefox, Chrome, Safari și Opera – și fiecare dintre aceste browsere necesită ajustări pentru a avea un rezultat pixel perfect. Pe lângă aceste browsere se adaugă și un număr mare de dispozitive mobile cu diverse rezolutii. Atunci situația se complică și timpul utilizat pentru repararea inconsistențelor pe browsere și dispozitive creste.

Framework-ul ne vine in ajutor, încercând să soluționeze aceste probleme de inconsistență între dispozitive și browsere.

Bootstrap vine cu un grid predefinit care utilizează 12 coloane. Cu gândul la dezvoltarea aplicațiilor web pentru dispozitivele mobile, dezvoltatorii de la Twitter au creat un grid responsive, accentul căzând pe dispozitive în primă fază și apoi de ecranele mari.

Bootstrap este un framework pentru front end, matur și bine documentat. Acesta reduce timpul de dezvoltare și în consecință și costurile dezvoltării interfețelor grafice. Folosește un grid responsive de 12 coloane și vine cu un număr mare de componente prestilizate.

1.5 AJAX

AJAX (Asynchronous Javascript and XML) este o metodă prin care se construiesc aplicații web interactive și care procesează apelurile utilizatorului instantaneu fără a mai reîncarca intreaga pagina de pe server, ci doar anumite bucăți de informații. Acest proces mărește viteza de răspuns al site-ului și oferă o experiența fluidă utilizatorlui, fără timpi morți de așteptare. AJAX combină mai multe unelte precum Javascript, DHTML, XML, CSS, DOM si obiectul XMLHttpRequest.

1.6 LARAVEL

În ziua de azi dezvoltarea aplicațiilor web se face foarte modular, iar pentru fiecare modul în parte există cel puțin o librărie dedicată. Fiindcă ar fi foarte costisitor din punct de vedere al timpului să implementăm toate modulele de la zero, am decis să folosim un framework care lucrează cu aceste module.

Laravel este un framework open source gândit și construit pentru a lucra cu modulele “packagist” prin “composer”. Folosește arhitectura Model View Controller și este dezvoltat in php avand posibilitatea de a lucra cu diferite baze de date precum mysql, postgresql, sqlite etc.

Cateva din punctele tari ale acestui framework sunt:

Bundles

Eloquent ORM

Query Builder

Application Logic

REST-ful Routing

REST-ful Controllers

Class Autoloading

View Composers

Blade template engine

IoC Container (Inversion of Control)

Migrations

Database Seeding

Unit Testing

A fost gândit astfel încât să îmbunătățească calitatea aplicațiilor, dar in același timp să reducă costurile pentru dezvoltarea inițială, dar și pentru întreținerea ulterioară, prin utilizarea unei sintaxe expresive și a unor funcționalități de bază, car pot salva din timpul de implementare. Framework-ul este clădit pe fundația unor componente din framework-ul Symfony, făcând ca aplicația pe care o scriem sa aibă la baza cod bine testat și matur.

Laravel este unul dintre putinele framework-uri care ofertă cu adevarat posibilitatea de a modulariza codul. Asta se efectuează printr-o combinatie de drivere și bundle-uri. Driverele iți permit să extinzi și să modifici funcționalitățile pentru caching, sesiune, baza de date și autentificare. Folosind bundle-uri, ai posibilitatea de-a împacheta orice fel de cod pentru propria refolosire sau pentru a împarți codul cu comunitatea Laravel.

Laravel pune la dispozitie tool-uri pentru interactiune cu baza de date. Migrarile de baze de date va permit să proiectați și să modificați o baza de date într-o manieră independentă de platforma. Migrările pot rula pe oricare tip de bază de date suportată de Laravel (MySQL, PostgreSQL, MSSQL și SQLite).

Tool-ul denumit Fluent Query Builder abstractizează diferențele dintre tipurile de baze de date. Este folosit pentru construirea și executarea de interogări robuste.

Implementarea Active Record folosita in Laravel este denumita Eloquent. Interacționarea cu o baza de date într-un mod obiectual este standardul modern.

Laravel vine echipat cu o interfață in linia de comandă denumită Artisan. Cu ajutorul Artisan, un dezvoltator poate interacționa cu aplicația sa pentru a rula migrări, teste unit și pentru a rula task-uri programate. Artisan este complet extensibil așa că putem să scriem orice fel de funcționalitate dorim pentru a ne ușura munca cât se poate de mult.

Laravel are un sistem de rutare ușor de folosit care ne permite sa ne manageriem ușor URL-urile site-ului.

Motorul pentru crearea de template-uri se numește Balde. Acesta îmbunătățește lizibilitatea codului prin punerea la dispoziție de înlocuitori pentru sintaxele PHP astfel încât view-urile vor fi mai usor de citit și de înteles.

1.7 SELENIUM WEBDRIVER

Selenium Webdriver este un framework pentru testare web. Webdriver acceptă comenzi trimise prin ClientAPI și apoi le trimite mai departe către browser. Acest process este implementat printr-un driver specific care trimite comenzi spre browser și asteaptă răspunsul. Webdriver suportă ca limbaje de implementare Python, Ruby, Java si C# insă există suport neoficial și pentru limbaje precum php care au fost dezvoltate de către comunitate.

1.8 JAVA

Java este un limbaj de programre oritentat obiect, puternic tipizat. Limbajul împrumută o parte din sintaxă de la C și C++, dar are un model al obiectelor mai simplu și prezintă mai puține facilități de nivel jos. Un program dezvoltat în Java și compilat poate să ruleze fără modificări pe alte platforme care au instalat Java Virtual Machine.

CAP 2. Obiective

2.1 Obiective principale

Platforma de față dorește să vină in sprijinul companiilor mici și antreprenorilor care doresc să crească productivitatea. Aceasta pune la dispoziție posibilitatea de a controla activitățile pe proiecte, creând task-uri, asignând utilizatori la proiecte.

Platforma este cu circuit închis, în sensul că toate conturile de utilizatori sunt vizibile la nivel de retea, deci se recomandă utilizarea ei intr-o retea inchisă.

Începând de la crearea proiectului până la finalizarea acestuia, toate activitățile trebuiesc controlate și înregistrate pentru a putea ține în evidență stadiul proiectului. Această aplicație, în urma procesului de proiectare va furniza informații legate de stadiul actual, date privind crearea proiectului, taskurile finalizate sau nefinalizate.

Unul dintre principalele obiective urmărite în dezvoltarea aplicației a fost simplitatea utilizării. Acest lucru a fost posibil datorită folosirii unor limbaje de programare de ultimă oră, care au permis crearea unei interfețe ușor de utilizat de către toți membrii apartenți proiectelor.

2.2 Cerințe Funcționale

CF1: Crearea unui cont  – Utilizatorul care are acces la platformă prin accesarea URL-ului, poate să se înregistreze prin completarea formularului de înregistrare.

CF2: Crearea unei echipe – Fiecare utilizator este adminul propriului cont și poate să creeze echipe pe care le poate gestiona și aloca pe proiecte.

CF3: Asignarea unui utilizator unei echipe  – Dacă utilizatorul a fost creat cu succes, acesta poate fi adaugat în una sau mai multe echipe.

CF4: Crearea unui proiect  – Utilizatorul poate să creeze și să altereze proiecte doar create de el. Un utilizator nu poate să altereze un proiect care a fost creat de un alt utilizator și la care a fost invitat să participe și el.

CF5: Crearea unui task – Utilizatorul are posibilitatea de a crea un task pentru el însusi sau pentru un alt membru al echipei din care face parte. Un task va avea o estimare temporală pentru ca utilizatorul asignat task-ului să aibă o idee asupra complexității și a volumului de lucru. Task-ul va fi asignat unui utilizator.

CF6: Estimările temporale – Task-urile vor fi estimate temporar de către un utilizator.

CF7: Asingarea unui utilizator unui proiect: Asignarea se face doar prin intermediul echipelor și doar utilizatorul care a creat echipa poate să adauge noi utilizatori în echipă. Un Utilizator nu poate să fie direct asignat unui proiect.

CF8: Asingarea unei echipe unui proiect: Utilizatorul care a creat echipa trebuie să asigneze o echipă proiectului pe care vrea să il creeze. Dacă nu asignează nicio echipă, proiectul nu poate fi creat. Odată asignată echipa nu mai poate fi schimbată cu o alta echipă, ci doar modificată.

CF9: Vizualizarea Diagramelor: Un utilizator poate să vizualizeze diagramele doar pentru echipele și proiectele pe care le-a creat. Diagramele conțin informații referitoare la numărul de task-uri raportate la echipă, proiecte sau utilizatori.

2.3 Cerințe NON-Funcționale

Cerințele non-funcționale ale Aplicației de Management al Proiectelor sunt următoarele:

CNF1: Uzabilitate – Sistemul are o interfata prietenoasa, usor de utilizat care este optimizată si poate fi folosită atât pe calculator cât și pe tablete sau telefoane.

CNF2: Disponibilitate – Sistemul functioneaza continuu, fara intreruperi.

CNF3: Flexibilitate – Sistemul este implementat usor modular. Se poate adăuga funcționalitate nouă datorită implementării REST pe fiecare pagină, a modulelor “Blade” pentru randarea interfețelor și datorită ORM-ului “Eloquent” care mapează automat relațiile dintre tabele in formă obiectuală, iar la adăugarea sau scoaterea unei funcționalități nu se intervine pe cod SQL. Cea mai mare parte se datorează framework-ului Laravel care incurajează flexibilitatea.

CNF4: Eficientă – Pentru instalarea aplicatiei nu este nevoie de un spatiu mare pe hard disk. Avem nevoie de o bază de date, putand lucra cu mai multe tipuri de baze de date, in functie de ce ne pune la dispozitie sistemul, datorita ORM-ului Eloquent, pus la dispozitie de Laravel.

CNF5: Portabilitate – Soft-ul poate fi instalat cu usurinta pe orice sistem ce pune la dispozitie un server de apache si o baza de date.

CNF6: Integritate – Sistemul poate fi accesat doar prin folosirea unor credentiale valide. Fiind dedicat pentru rețele închise, odată instalat oricine din acea rețea poate să-și creeze un cont, paltforma fiind gândită pentru o instanță per companie.

CNF7: Performanță – Aplicația are o viteza de raspuns foarte mica, fiind o aplicație de mici dimensiuni și foarte simplistă. Fiind testată cu un volum de pana la 1000 task-uri pe proiect, aplicația răspunde aproape instantaneu.

CNF8: Mentenabilitate – Aplicația este usor de întreținut datorita faptului că este construită intr-un mod structurat atât în privința fișierelor cât și a obiectelor php, al obiectelor mapate din baza de date și structura bazei de date.

CNF9: Robustețe – În ciuda faptului că aplicația este gandită pentru rețele inchise, iar securitatea nu ar fi o problemă atat de importantă, aplicația face față oricărui tip de tentativă de spargere, fiind protejată la nivel de apel printr-un “middleware” care filtrează și răspunde corespunzător oricărui apel neautorizat.

2.4 Descrierea utilizatorilor

Proiectul de față este intenționat pentru firmele de dimensiuni mici care doresc un soft ușor pentru managementul proiectelor. Fiindcă cele mai multe aplicații de acest tip folosesc un sistem de roluri, aplicația de față vine cu o idee care încurajează simplitatea. Aplicația suporă două tipuri de roluri implicite, care nu pot fi modificate sau asignate de către utilizatori:

Owner (Gazdă)

Member (Membru)

Rolul de “Owner” se atribuie implicit utilizatorului care crează o echipă respectiv un proiect, el fiind singurul care poate interveni pentru a modifica echipa / proiectul.

Rolul de “Member” se atribuie implicit utilizatorului care este adaugat la o echipă de către un alt utilizator cu rol de “Owner”.

Pentru crearea / modificarea task-urilor toți utilizatorii care au acces la task prin proiect, pot să altereze în mod egal task-ul respectiv, deci toți au rol de “Owner”.

Deși pare rigid la prima vedere, acest sistem este foarte liniar și usor de folosit nemaifiind nevoie de implementări suplimentare pentru roluri speciale. Totuși, aplicația poate suporta astfel de modificări de implementare fără prea mult efort.

CAP 3. Studiu bibliografic

3.1 Dezvoltarea aplicațiilor web

Crearea proiectelor bazate pe interfețe Web ca și disciplină științifică este influențată în totalitate de dezvoltare acestor aplicații. Dezvoltarea aplicațiilor poate devine nestructurată sau ad-hoc în lipsa folosirii unor metode de dezvoltare adecvate. Proiectele Web devin din ce în ce mai complexe și o abordare ad-hoc conduce la reducerea calității. Aplicațiile web reprezintă un nou domeniu de aplicații cu propriile sale provocări asupra dezvoltării software-ului.

Construirea ciclului de viață al aplicațiilor Web este vitală precum și prezentarea conceptelor, metodelor și utilitarelor pentru dezvoltarea corectă a aplicațiilor. Internetul, aplicațiile Web precum și comunitatea internetului a crescut foarte mult în ultima vreme, fiind necesară renunțarea la abordările nestructurate și adoptarea principiilor proiectării aplicațiilor Web.

La nivel de infrastructură, web-ul este un spațiu creat prin intermediul unor limbaje și protocoale specificate formal. Deși oameni sunt implicați în crearea paginilor și utilizarea legăturilor dintre acestea, interacțiunea acestora formează un model web la scară macroscopică. Dezvoltarea aplicațiilor web este rezultatul unor afaceri complexe și este esențial ca proiectarea care sprijină această dezvoltare să fie bine realizată. Acest lucru va permite studenților și specialiștilor să proiecteze aplicații web de o calitate superioară pe baza principiilor de proiectare software experimentate și de încredere.

O abordare metodologică și structurată trebuie considerată în cazul dezvoltării proiectelor Web în contrar cu abordarea ad-hoc. Proiectarea aplicațiilor Web, similar cu proiectarea aplicațiilor software necesită utilizarea unei abordări sistematice pentru realizarea specificațiilor, realizarea cerințelor de performanță și realizarea cerințelor de implementare pentru a proiecta o aplicație de nivel superior. Din punct de vedere al istoricului dezvoltării și complexității distingem anumite tipuri de aplicații web: orientate pe documente, interactive, tranzacționale, cu caracteristici ubicue sau trăsături ale web-ului semantic. Cerințele specifice proiectării aplicațiilor Web rezultă din caracteristicile speciale din sfera produselor software, din dezvoltarea și utilizarea acestora. Internetul din zilele de azi are influențe enorme asupra vieții noastre de zi cu zi: industria, economia, educația, sănătatea și divertismentul sunt automatizate și astfel Internetului a fost vital o abordare structurată. Acest fenomen a fost inevitabil, Internetul fiind disponibil pentru toată lumea, fluxul de informație devenind astfel mult mai rapid decât în trecut.

Ca o noțiune principală, Internetul a fost imaginat ca fiind pur informațional, dar după un timp a evoluat în mediul aplicațiilor. Aplicațiile web din prezent sunt aplicații complexe, care oferă servicii interactive accesibile oricărui tip de utilizator prin intermediul unor dispozitive specifice. Oferă posibilitatea de a crea tranzacții între utilizatori sau utilizator și server, iar datele sunt stochate într-o bază de date. Elementul distinctiv al aplicațiilor web comparativ cu aplicațiile software tradiționale este modul în care este utilizat web-ul: tehnologiile și standardele sale sunt utilizate ca o platformă de dezvoltare și ca platformă utilizator în același timp.

O aplicație web poate fi definită astfel: O aplicație web este un sistem software bazat pe tehnologiile și standardele Internetului, mai precis al lui World Wide Web (W3C), care oferă resurse specifice prin intermediul unei interfețe utilizator numită browser web. Această definiție include în mod explicit tehnologiile și interacțiunea cu utilizatorul. De aici putem deduce că, tehnologii precum serviciile web nu sunt aplicații web, dar pot fi o parte a acestora, iar paginile web lipsite de componente software (paginile HTML statice) nu sunt considerate aplicații web.

Legătura strânsă dintre aplicațiile web sporește pericolul răspândirii problemelor de la o aplicație la alta. Cauza acestei situații este complexă și poate fi abordată din mai multe perspective:

abordarea centrată pe document: Dezvoltarea aplicațiilor web este încă deseori considerată a fi centrată pe document – o activitate de authoring care include crearea și realizarea legăturilor din siturile web și includerea elementelor grafice. Deși anumite tipuri de aplicații web (de exemplu paginile principale, ziarele online) aparțin acestei categorii, o abordare de tip authoring nu este adecvată pentru dezvoltarea de aplicații web concentrate pe software;

presupusa simplitate a dezvoltării aplicațiilor web: Disponibilitatea largă a diferitelor utilitare, (cum ar fi editoarele HTML sau generatoarele de formulare) permite crearea de aplicații web simple, fără a fi necesare cunoștințe de specialitate. De obicei, accentul se pune pe proiectarea vizuală și nu pe structurarea internă sau programare. Aceasta duce la inconsistențe și redundanță.

cunoștințele specifice din discipline relevante nu pot fi aplicate sau nu sunt utilizate: Există o concepție greșită conform căreia dezvoltarea aplicațiilor web este similară cu dezvoltarea aplicațiilor tradiționale și din acest motiv pot fi utilizate metodele din Ingineria Software, în sensul abordării sistematice, cu măsuri adecvate de control a calității. Acest lucru este neadecvat în majoritatea cazurilor datorită caracteristicilor speciale ale aplicațiilor web. În plus, concepte și tehnici din domenii relevante (cum ar fi hypertext-ul sau interacțiunea om-calculator) nu sunt aplicate într-o manieră consecventă. Standardele de dezvoltare pentru aplicațiile web de calitate sunt inexistente, acest lucru datorându-se și relativ scurtei istorii a web-ului.

În figura următoare sunt prezentate categoriile de aplicații Web în funcție de istoricul de dezvoltare și gradul de complexitate după care exemple pentru fiecare categorie:

Figura 1 – Categorii de aplicații

Document centric: pagini web statice, web radio, site-ul web al unei companii

Interactiv: site pentru planificarea călătoriilor, site pentru știri

Tranzacțional: online banking, cumpărături online, system de biblioteci

Bazat pe flux: administrație sau guvern web

Colaborativ: camere de chat, servicii P2P (peer-to-peer), platforme de învățare

Orientat pe portal-uri: portal de comunitate, portal de business

Omniprezent: servicii personalizate, servicii de localizare

Web Semantic: managementul cunoștințelor, sistem de recomandări

Web Social: partajări virtuale, filtrare colaborativă, jurnale de web

În urma analizei cerințelor aplicației s-a constatat că aplicația poate fi pusă în categoria aplicațiilor bazate pe flux și omniprezente.

Din punct de vedere al Ingineriei Software, dezvoltarea aplicațiilor web este un nou domeniu al aplicațiilor. În ciuda anumitor simplitudini cu aplicațiile tradiționale, caracteristicile speciale ale aplicațiilor web necesită o adaptare a multor abordări ale Ingineriei Software sau chiar dezvoltarea unor abordări complet noi.

Proiectarea aplicațiilor web nu este un proces imediat, este un proces îndelungat realizat pe tot parcursul ciclului de viață al proiectului. Proiectare web poate fi abordată in două moduri diferite:

Proiectarea web reprezintă aplicarea unor abordări sistematice și cuantificabile (concepte, metode, tehnici, utilitare) în analiza cerințelor, proiectarea, implementarea, testarea, exploatarea și întreținerea aplicațiilor web de calitate superioară

Proiectarea web reprezintă și disciplina științifică implicată în studiul acestor abordări. Termenii din literatură asociați sunt Proiectarea siteurilor web, Proiectarea hipermedia, Proiectarea documentelor, Proiectarea conținutului și Proiectarea software-lui Internet. Prin comparație, ”Proiectarea web” este un termen concis, deși dacă vorbim în mod strict nu este foarte precis: nu web-ul este proiectat, ci aplicațiile web [1]

3.1 caracteristicile aplicațiilor web

Similar Posts