Sistem Informational de Management al Proiectelor

Lucrarea de față prezintă descrierea realizării și demonstrarea aplicației web destinate managerilor sau persoanelor care lucrează în echipă. Aplicația dată este creată cu scopul de a oferi un mediu flexibil cu posibilitatea de a lucra în echipă on-line, de comunicare între membrii echipei, un management al însărcinărilor personale și însărcinarilor echipei și o gestionare eficientă a procesului de muncă. Aplicația oferă posibilitatea de a crea proiecte rapid, sigur, cu o gestionare eficientă a timpului posibilitatea de a lucra cu lista personală a însărcinărilor și lista însărcinărilor membrilor echipei.

Un sistem informațional de management al proiectelor (SIMP) este un produs soft pentru colectarea, păstrarea și utilizarea informațiilor necesare unei organizații cu scopul realizării proiectelor cu succes. Este folosit ca un instrument de colaborare de către persoane fizice, echipe profesioniste mici, și a întreprinderilor cu mai multe sute de angajati, aceste sisteme sunt utilizate cu succes de zi cu zi în întreaga lume. Importanța acestui manager on-line este esențială pentru planificarea, realizarea și atingerea scopului pas cu pas în dezvoltarea unui proiect de la început pînă la sfîrșit. SIMP diferă ca domeniu utilizat, design și caracteristici în funcție de necesitățile operaționale ale unei organizații.

Motivul alegerii acestei teme îl constituie numărul mic, în prezent, al sistemelor cu un continut asemanător ce înglobează un surplus de funcționalități inutile, deci sistemele sunt mai lente, sau sunt cu plată, motiv care oferă posibilitatea de a ascensiona pe piața produselor din această arie. În plus munca asupra acestei teme imi va oferi posibilitatea de a lucra la un proiect cu finalitate practică care ar putea fi folosit de mii de oameni.

Sistemul creat este o aplicație WEB denumită SIMP are o interfață funcțională, prietenoasă, design adaptiv ce permite rularea aplicației de pe dispozitive cu rezoluții diferite, oferă posibilitatea de a comunica cu echipa întreagă, de a crea un task manager, de a adauga membrii echipei printr-o invitație e-mail.

Principalele aspecte ale temei alese vor fi analizate în primul capitol care cuprinde descrierea noțiunii sistem informațional de management al proiectelor, scopul și obiectivele tezei, metodele utilizate de elaborare.

În capitolul II v-or fi descrise tehnologiile utilizate, etapele realizării aplicației, descrierea grafică și desigur demonstrarea aplicației.

CAPITOLUL I. CERCETAREA DOMENIULUI. ASPECTE TEORETICE

Ce este un sistem informațional de management al proiectelor [1]

În mod tradițional funcțiile de management sunt centralizate și efectuate de către manageri, însă aceasta limitează cantitatea de muncă care se poate face. Internetul a oferit pentru oameni oportunitatea de a lucra împreună la nivel global iar sistemele informaționale on-line oferă o gestionare eficientă a resurselor, colaborarea în timp real, acces la informație de pe mai multe computere sau dispozitive mobile și o productivitate mai înaltă.

Sistemele informaționale pentru management al proiectelor sunt ansamble de instrumente ce oferă acces direct, la informațiile relevante, într-o interfață prietenoasă, ușor de exploatat. Aceste informații oferite în timp real, au o importanță deosebită pentru managerii de nivel superior, pentru fundamentarea deciziilor organizației și pentru exercitarea unui control mangerial corespunzător. Relevanța informațiilor reunește o serie de caracteristici printre care: oportunitate, corectitudine și utilitate, iar interfața unui astfel de sistem trebuie să răspundă cerințelor unor utilizatori care au puțin timp, puțină experiență și deprinderi limitate în utilizarea calculatorului.

Scopul și rolul unui SIMP este de a oferi conducerii superioare (și medii) acces facil și rapid la informațiile despre factorii cheie, decisivi în atingerea obiectivelor generale ale întreprinderii, în exercitarea controlului managerial eficient și eficace. Condițiile care trebuie avute de sistem sunt:

să fie cât mai ușor de utilizat, iar timpul de răspuns să fie imediat. Să folosească intensiv afișarea în mod grafic și să asigure accesul în timp real la bazele de date interne și externe;

să ofere informații despre starea curentă de fapte și tendințele estimate pentru factorii cheie; forma de prezentare a informațiilor să fie conformă cu preferințele managerului ce utilizează sistemul.

Informațiile generate de calculator nu au întotdeauna rolul principal în atingerea necesităților conducerii superioare, așa cum informațiile cele mai prețioase pentru conducerea la vârf sunt informațiile externe, care permit identificarea poziției întreprinderii pe piața globală și analiza mediului exterior, așa cum reiese și din figură. Primele SIMP, caracterizate prin faptul că erau proprietare și foarte scumpe, au fost dezvoltate pe baza sistemelor mainframe. Ele preluau date din sistemele informaționale tranzacționale, pe care le simplificau, rezumau și reprezentau grafic, fiind axate pe indicatori de măsurare a performanțelor și pe evidențierea diferențelor dintre buget sau previziuni și rezultatele efective. SIMP erau dedicate directorilor: financiar, de marketing, de vânzări, ca și directorului general, oferind informații asupra rezultatelor și performanțelor întreprinderii, relevante, rezumate, prezentate într-o formă plăcută, accesibilă. În ceea ce privește rolul acestor sisteme putem spune că ele îndeplinesc adevărate funcții, fiecare având mai multe acțiuni de îndeplinit, printre care se enumără: – funcția de prevedere-prin deducerea informațiilor necesare într-o situație dată, presupunând elaborarea de previziuni funcționale (bilanț previzional, buget de venituri și cheltuieli) și dinamice (programe-mix) pe baza analizei istoricului organizației; – funcția de interpretare

a unor informații primite din mediul real prin care se stabilește starea sistemului, realizată prin analize economico-financiare;

funcția de prelucrare

a informațiilor prin aplicația și-sau procedurile privind: controlul datelor, algoritmizarea metodologiilor de lucru, generarea procedurilor inductive și deductive de selecție a unor alternative decizionale, realizarea interfețelor dintre proceduri și aplicații;

funcția de diagnoză – prin surprinderea situațiilor de funcționare defectuoasă a unor componente ale sistemelor;

funcția de instruire –prin familiarizarea unui cerc larg de nespecialiști prin dialoguri sub formă de meniuri ierarhizate;

funcția de proiectare –a unor obiective tehnice și tehnologii;

funcția de control –proprie sistemului prin subsistem propriu și monitorizare a interfețelor.

1.2. Sistem informațional și sistem informatic[2]

În zilele noastre toate domeniile de activitate se bazează pe utilizarea, într-o măsură mai mare sau mai mică, a tehnologiilor informatice și a calculatorului. A devenit omniprezentă utilizarea mijloacelor TIC (Tehnologia Informației și Comunicațiilor) în desfășurarea activităților celor mai diverse și pentru luarea deciziilor care au la bază informații ce sunt obținute din prelucrarea unor date culese cu privire la obiectul activității respective.

1.2.1 Date și informații

Datele reprezintă atribute cantitative sau calitative ale unei variabile sau mulțimi de variabile. Datele sunt în general rezultatul unor măsurători și pot constitui o bază pentru crearea de grafice, imagini sau observații cu privire la o mulțime de variabile.

Pentru a deveni informații, datele privitoare la obiectul de activitate respectiv trebuie prelucrate în concordanță cu cerințele informaționale. Acest lucru presupune culegerea datelor de la diverse surse, prelucrarea propriu-zisă și distribuirea rezultatelor prelucrării (informațiile) către locul unde sunt solicitate. În consecință, obiectivul prelucrării datelor constă în convertirea datelor în informații care să stea la baza luării deciziilor.

Diferențele principale între date și informații sunt: – datele reprezintă atribute primare colectate din diverse locuri, nedefinite sau neorganizate într-o formă care să stea la baza luării deciziilor; – informațiile sunt mesaje obținute prin prelucrarea datelor, aceste mesaje trebuie să fie concise, actuale, complete și clare, astfel încât să răspundă cerințelor informaționale în scopul cărora au fost prelucrate datele.

Astăzi datele sunt prelucrate, de regulă, automat, prin folosirea unor echipamente electronice de prelucrare automată a datelor (sisteme cunoscute generic sub denumirea SPAD – Sistem de Prelucrare Automată a Datelor).

A. Introducerea datelor – reprezintă, în principal, procesul de culegere, verificare, codificare și transmitere a datelor

B. Prelucrarea datelor – poate presupune diverse activități de clasificare, sortare, efectuare de calcule aritmetico-logice, arhivare selectivă a datelor și rezultatelor prelucrării, în vederea regăsirii și prelucrării ulterioare a acestora.

C. Extragerea informațiilor – are de regulă trei etape: – regăsirea rezultatelor din memorie – decodificarea rezultatelor și prezentarea într-o formă accesibilă utilizatorului – transmiterea informațiilor la locul solicitat de către utilizator (distribuirea).

D. Mecanismul de reglare (feedback) Informațiile obținute în urma prelucrării pot corespunde cerințelor sau nu; în acest sens poate avea loc o evaluare a rezultatelor prelucrării în funcție de care se vor efectua o serie de modificări în faza de introducere sau de prelucrare a datelor. Se poate considera că această fază are rolul unui mecanism de feedback ce relgează buna funcționare a sistemului, conferindu-i caracterul unui sistem cibernetic.

1.2.2 Sistem informațional

Un sistem informațional reprezintă un ansamblul de componente implicate în procesul de colectare, de transmisie, prelucrare de informație, informația primind rolul principal în sistem.

În cadrul sistemului informațional se regăsesc: informația vehiculată, documentele purtătoare de informații, personalul, mijloace de comunicare, sistemele de prelucrare (de regulă, automată) a informației, etc. Printre posibilele activități desfășurate în cadrul acestui sistem, pot fi enumerate: achiziția de informații din sistemul de bază, completarea documentelor și transferul acestora între diferite compartimente, centralizarea datelor, etc.

În sensul cel mai larg, un sistem informațional se referă la diversele interacțiuni dintre oameni, procese, date și tehnologii; astfel, termenul nu se referă numai la aspectele legate de TIC pe care o organizație le utilizează, cât și la modul în care oamenii interacționează cu tehnologia în scopul de a oferi suport pentru procesele de afacere. Sistemul informațional reprezintă un ansamblu de fluxuri și circuite informaționale organizate într-o concepție unitară.

În orice domeniu de activitatea economică sau socială, există un flux informațional pe baza căruia se desfășoară orice activitate. La nivelul unui agent economic, sistemul informațional asigură legătura dintre sistemul decizional și cel operațional (sistem de conducere și sistem de execuție); astfel, funcționarea sistemului informațional presupune desfășurarea următoarelor activități: – introducerea datelor cu privire la sistemul operațional – prelucrarea datelor în scopul asigurării de informații utile în procesul de decizie – obținerea informațiilor solicitate, ca apoi să se adopte decizii ce vor fi transmise sistemului operațional – efectuarea controlului și urmăririi respectării deciziilor.

1.2.3 Sistem informatic

În cadrul unui sistem informațional, majoritatea activităților se pot desfășura cu ajutorul tehnicii de calcul. Se pot prelucra datele primare și apoi rezultatul poate fi transferat mai departe, către alt compartiment spre prelucrare. Transferul se poate face și el pe cale electronică prin intermediul unei rețele de calculatoare.

Ansamblul de elemente implicate în tot acest proces de prelucrare și transmitere a datelor pe cale electronică alcătuiesc un sistem informatic.

Într-un sistem informatic pot intra: calculatoare, sisteme de transmisie a datelor, componente hardware și software, datele prelucrate, personalul ce exploatează tehnica de calcul, teoriile ce stau la baza algoritmilor de prelucrare, etc.

Raportul sistem informațional-sistem informatic: sistemul informațional include în cadrul său sistemul informatic, acesta din urmă fiind o componentă esențială a primului.

Trebuie reținut faptul că sistemul informațional nu trebuie confundat sau suprapus complet cu sistemul informatic. În general, sistemul informatic se interpune între sistemul decizional și cel operațional.

Sistemul informatic este un ansamblu structurat de proceduri și echipamente electronice care permit prelucrarea automată a datelor și obținerea de informații.

Componentele unui sistem informatic.

Un sistem informatic include următoarele componente:

cadrul organizatoric al firmei și datele vehiculate în sistemul informațional corespunzătoare activităților desfășurate;

resursele umane (beneficiarii sistemului cât și personalul de specialitate care îl proiectează/implementează)

metode și tehnici de proiectare a sistemelor informatice

echipamente hardware pentru stocarea și prelucrarea datelor.

programele software folosite pentru realizarea obiectivelor sistemului informatic

1.3 Managementul în sistemele informaționale

Managementul sistemelor informaționale se refera la modul în care se administrează resursele informatice precum și strategiile legate de implicarea și utilizarea tehnologiei informației la diferite niveluri: utilizator final, organizație și global.

In condițiile actuale ale globalizării afacerilor, mediul organizațional al unei firme trebuie să se adapteze cerințelor concurențiale ale pieței. Creșterea economică a unei firme depinde în mod essențial de abilitatea ei de a actualiza și integra, personaliza și extinde aplicațiile informatice, într-un mod flexibil și rapid, oferind tuturor utilizatorilor acces instantaneu, interactiv și consistent la modelul său de date.

1.3.1 Managementul. Prezentare generală

Managementul reprezintă arta de a conduce, de a organiza si direcționa diferitele sectoare ale unui agent economic pentru ca acestea,  luate împreună, să conducă la obținerea produselor finite sau a serviciilor pe care acel agent economic și le-a propus, și implicit, pentru a fi eficient pe piață.

Managerul reprezintă acea persoană care se află în fruntea unei echipe ce trebuie să facă ca un agent economic să functioneze într-o economie de piață.

Conducerea managerială presupune atît activități de sintetizare și generalizare a experienței de  conducere, de căutare de formule și idei noi, cît și găsirea celor mai bune căi și metode de conducere a agenților economici.

Pentru a susține cele prezentate anterior vom aminti ceea ce spunea Fr. Taylor, considerat unul dintre părinții managementului științific, și anume că acele cunoștinte exacte formează știința iar aplicarea lor, în practică, pentru atingerea anumitor scopuri, reprezintă o artă.

În cadrul managementului științific există patru direcții de activitate, și anume: creativă; aplicativă; tehnico – materială și socio – umană . Aceste direcții de activitate ale managementului stiințific se află în interdependența unele cu altele.

Funcțiile managementului

Majoritatea celor ce au tratat acest domeniu al conducerii manageriale au stabilit că managementul se bazează pe cinci funcții, și anume:

Funcția de previziune – în cadrul căreia activitățile de management sunt orientate în sensul aprecierii activității viitoare a agentului economic;

Funcția de organizare – în  cadrul căreia este cuprins ansamblul tuturor activităților ce stabilesc procesele de muncă, gruparea lor pe compartimente;

Funcția de comandă sau decizie – în realizarea acestei funcții managerul avînd un rol foarte important în a se face înțeles prin diferite metode de către subalterni;

Funcția de coordonare – are menirea de a asigura adaptarea agentului economic la condițiile existente pe piața în orice moment al existenței acestuia;

Funția de control – constă în ansamblul acțiunilor prin care se verifică performanțele agentului economic, sau ale diferitelor compartimente ale acestuia în orice moment, în comparație cu ceea ce a fost prevăzut a se tealiza.

În ultimul timp tot mai mulți specialiști tind spre a introduce o a șasea funcție și anume funcția ecologică.

1.3.2 Managementul informației[3]

Managementul informației se referă la procesul prin care informațiile pe care le avem la dispoziție sunt cercetate și apoi folosite de manageri pentru a lua decizii. Această informație este necesară în management pentru a lua decizii manageriale.

Monitorizarea oferă informații asupra derulării proiectului. Informațiile sunt colectate în fazele de planificare și implementare. Ele ajută la detectarea eventualelor probleme. Se pot astfel găsi soluții manageriale pentru rezolvarea acestora.

Importanța Informației în Managenment.

Informația în Management este importantă pentru:

Luarea unor decizii cu scopul de a îmbunătății organizarea serviciilor și facilităților;

Realizarea planificării, implementării, monitorizării si evaluării participative.

Cum se realizează Managementul Informației:

Pentru a putea fi folosită în luarea deciziilor manageriale informația trebuie prelucrată (colectată, stocată și analizată). Managementul informației (procesul colectării și stocării informației) și informația în management (datele necesare pentru luarea deciziilor) sunt noțiuni diferite; cu toate acestea ele se completează reciproc și nu pot fi separate în activitățile de zi cu zi.

Astfel, informația în management presupune:

a determina ce informații sunt necesare;

colectarea și analizarea acestora;

stocarea și recuperarea lor când este necesar;

folosirea lor; și

difuzarea lor.

Stabilirea Informației Necesare în Management: O cantitate considerabilă de informații este obținută pe parcursul planificării, managementului și monitorizării proiectului. Unele dintre aceste informații sunt folosite pentru luarea unor decizii imediate; altele, pentru luarea unor decizii ulterioare. De aceea, un sistem eficient al informației în management ajută managerii proiectului să afle informațiile necesare pentru luarea diferitelor decizii în diverse momente.

Colectarea și Analizarea Informației în Management: Informația poate fi obținută din diverse surse: rapoarte ale personalului tehnic, registre, chestionare completate de diverși participanți, întâlniri de lucru, interviuri, grafice.

Stocarea Informației: Este important ca informația să fie stocată pentru a putea fi folosită ulterior. Informația poate fi stocată în registrele comunității, rapoartele proiectului, formulare, și de asemenea poate fi memorizată. Regula de bază este ca informația să poată fi ușor găsită și accesată.

Folosirea Informației: Informația poate fi folosită pentru rezolvarea problemelor comunității, determinarea resurselor ( felul lor și cantitatea necesară), solicitarea ajutorului necesar și stabilirea viitoarelor proiecte.

Difuzarea sau Fluxul Informației: Pentru a fi folosită în mod adecvat, informația trebuie schimbată între diverșii participanți la proiect. Celelalte părți implicate în proiect pot de asemenea folosi informația în luarea propriilor decizii. În acest fel ei ii pot ajuta pe cei ce colectează informația să stabilească utilitatea acesteia în management.

Informația trebuie împărtășită și difuzată la toate nivelele: sătesc, comunal, sub-județean, regional, național, precum si la nivelul ONG-urilor și al donatorului.

Informația în management este parte integrantă a monitorizării, deoarece ea este obținută în cursul monitorizării și ajută la planificarea și implementarea activităților acesteia.

Fie că provin de la personalul implicat sau de la alte părți interesate, una din cele mai eficiente metode de a procura informații utile este cea a Bilanțului Anual. Unul din scopurile acestuia este de a oferi atât informații în managementul participativ cât și informații legate de monitorizare.

1.3.3 Managementul activităților

Managementul activităților este procesul de gestionare a unei sarcini prin intermediul unui ciclu de viață. Aceasta implică planificare, testare, urmărire și raportare. Task management-ul poate ajuta persoane fizice la atingerea obiectivelor, sau grupuri de persoane pentru colaborare și împărtășirea cunoștințelor în realizarea obiectivelor colective. Sarcinile sunt, de asemenea, diferențiate în funcție de complexitate, de la mic la mare.

Un task management eficient necesită gestionarea tuturor aspectelor legate de o activitate, inclusiv statutul său, prioritatea, timpul, misiuni resurse umane și financiare, recidivelor, notificările și așa mai departe. Acestea pot fi concentrate împreună în mare în activitățile de bază ale task managementului.

Gestionarea mai multor sarcini individuale sau de echipă poate necesita software specializat, de exemplu flux de lucru sau software-ul de management de proiect. De fapt, mulți oameni cred că task management ar trebui să servească drept bază pentru activitățile de management de proiect.

Task management poate face parte din managementul proiectelor și managementul proceselor, poate servi ca fundament pentru flux de lucru eficient într-o organizație. Managerii de proiect care aderă la task manager au un proiect detaliat programat pînă la o dată limită, sunt de obicei buni la conducerea membrilor echipei și realizează proiectul cu succes.

Ciclul de viață al unui task:

Transmis

Finisat

Eșuat

Diagrama din figura nr.1 descrie diferite stări a unei sarcini pe parcursul ciclului său de viață. Această diagramă este menționată de la IBM.

Fig. nr.1.1 – Reprezentarea grafică a ciclului de viață a unui task.

Ca o disciplină, managementul activităților cuprinde mai multe activități cheie. Există diferite defalcări conceptuale, iar acestea, la un nivel înalt, includ întotdeauna activități creative, functionale, de performanță și de servicii.

Activități creative se referă la o sarcină creativă. În context, acestea ar trebui să conțină o planificarea sarcinii, brainstorming, creație, elaborare, clarificare, organizare, reducere, care vizează și prioritizarea preliminară.

Activități funcționale se referă la zonele de personal, de vânzare, de calitate sau de management, în scopul final de a asigura producția de bunuri și servicii finale de livrare către clienți. În context acestea ar trebui să permită planificarea, raportarea, monitorizare, configurarea, delegare, precum și de gestionare a sarcinilor.

Activitățile proiectului se referă la planificarea, timpul și costurile de raportare. Acestea pot cuprinde mai multe activități funcționale, dar sunt întotdeauna mai mare și mai consecvente decât suma părților sale. În context activitățile proiectului ar trebui să permită defalcarea proiectului sarcină, alocarea sarcinilor, inventar peste proiecte, precum și accesul concurent la bazele de date operative.

Activități de performanță se referă la performanța de urmărire și îndeplinirea sarcinilor atribuite. În context acestea ar trebui să permită urmărirea de către timp, controlul costurilor, părțile interesate și prioritate; diagrame, rapoarte exportabile, actualizări de stare, ajustări termenul limită, și activitatea de exploatare forestieră.

Activități Raport se referă la prezentarea de informații cu privire la celelalte cinci activități enumerate, inclusiv reprezentarea grafică.

1.3.4 Managementul proiectelor[4]

Managementul proiectelor este un domeniu destul de recent apărut, iar importanța sa a cunoscut o creștere majoră datorită faptului că, la scară europeană și internaională, tot mai multe acțiuni se desfășoară în cadrul unor proiecte. Resursele utilizate de aceste proiecte (mai ales cele financiare) au un rol din ce în ce mai mare în dezvoltarea economică iar aria lor de aplicabilitate este în creștere.

Proiectul reprezintă o sumă de activităț care conduc la realizarea unui scop comun și necesităun consum important de resurse (umane, materiale, financiare, echipamente,informaiți documentare și timp). Punerea în practică a unui proiect presupune un moment inițial și un moment final al proiectului, deci o durată de realizare. Momentul inițial este considerat cel în care se ia decizia de a se trece la conceperea unui proiect, iar cel final este cel în care se încheie
ultima activitate prevăzută de proiect.

Managementul de proiect constăîn planificarea, organizarea și gestionarea (controlul) sarcinilor și resurselor ce urmărește atingerea unui anumit obiectiv, încondițiile existenței unor constrângeri referitoare la timp, resurse și costuri.

1.3.5 Software de management al proiectelor[5]

La prima vedere produsele de tip managementul proiectelor vor ajuta organizația să administreze proiectele de la inceput pînă la sfîrșit și le dau voie angajaților de la diferite nivele să aducă un plus de valoarea procesului.

Programele de tip MP au deja o vechime și de-a lungul timpului s-au îmbunătățit ajungînd să facă mai mult decît coordonarea de proiecte.

Acum aceste programe au grija de planificare, controlul costurilor, ți gestionarea bugetului, alocarea resurselor, colaborare, comunicare, managementul calității și documentare sau administrare. Scopul acestora este să aibă grijă de toate aspectele și complexitatea marilor proiecte și să ajute la menținerea costurilor joase.

De ce companiile au tendința de a folosi software-uri de management de proiecte ?

Proiectele pot fi complexe și depind de mulți factori diferiți, departamente și rezultate. Astfel soft-urile ajută la determinarea dependențelor dintre evenimente și ce se întamplă dacă lucrurile se schimbă sau merg într-o direcție mai puțin bună.

In plus, acestea, pot planifica oamenii să lucreze cu task-uri/ sarcini diferite si resursele ce sunt necesare pentru a duce la îndeplinirea sarcinilor (fizice, financiare sau oricare altele).

Oamenii mai folosesc aceste soft-uri și pentru a face față incertitudinilor în estimarea duratei fiecarui task, organizarea sarcinilor pentru a respecta termenele limită diferite; precum și jonglarea țn mod simultan cu mai multe proiecte diferite, ca parte a unui obiectiv general.

1.3.6 Categorii de software de management al proiectelor[5]

Există diferite moduri în care softurile de MP sunt puse la dispoziție de către furnizorii acestora și prestatorii de servicii. Acestea sunt:

Desktop

Acest tip de software rulează direct de pe calculatorul pe care a fost instalat în prealabil, avînd un timp de răspuns minim iar interfata grafică fiind creată special pentru a avea un aspect prietenos, avînd un mic inconvenient și anume accesarea nu se poate face decît de la calculatorul pe care a fost instalat. Aceste aplicații stochează datele de obicei, într-un fișier, deși unele au capacitatea de a colabora cu alți utilizatori sau pentru a stoca datele într-o baza de date centrală. Utlizatorii multipli pot partaja fișiere de bază din cadrul proiectului sau date ținute pe o baza de date doar dacă un singur utilizator le accesează pe rînd.

Web-based

Rulează de pe un server pe care a fost instalat în prealabil, are un timp de răspuns mai mare decît cel desktop, interfața ne fiind atît de prietenoasă dar cu un mare avantaj și anume de a putea fi accesat de către persoane diferite din locuri diferite în interiorul sau chiar din exteriorul companiei, sau chiar de pe internet folosind un browser  web. Beneficiile acestui tip de aplicație includ faptul că pot fi accesate de la orice tip de calculator fară a fi instalat softul. Softul este automat updatat si menținut de catre furnizorul acestuia și prin natura lui îl face accesibil mai multor utilizatori în același timp.

De asemenea aceste softuri tind să vină cu o taxă lunară , care este mai mică decît cumpărarea și menținerea  aplicației de către companie. Cu toate acestea, softurile web-based tind să raspundă mai greu decît aplicațiile de tip desktop și informațiile despre proiect nu sunt disponibile cînd utilizatorul nu este conectat.

Personal

Se bazează în special pe lucrul unor proiecte reduse de obicei folosit în întreprinderi mici sau chiar de ultilizatori casnici, putînd gestiona modul de viață al acestuia sau proiecte casnice.

Single user

A fost gîndit cu scopul ca un singur utilizator să poată modifica sau lucra la un proiect, de asemenea gîndit pentru întreprinderi mici în care numărul persoanelor implicate într-un proiect este foarte redus.

Collaborative

Este opusul celui single user el oferind posibilitatea de lucru în echipă, este gîndit în special pentru corporații mari în care numărul persoanelor implicate într-un proiect este mare avînd posibiliatea de modificare simultană a proiectului de către mai mulți useri.

Integrated

A fost coceput pentru a întrepătrunde managementul proiectului cît și palnificarea acestuia cu alte activităti ale companiei, el putînd fi grefat atît pe parte de single user cat ți pe parte de multi user oferind posibilitatea de rezolvare a mai multor activități diferite într-un timp scurt fără a implica alte resurse umane.

Non-specialised tools

Acest tip de software nu este atît de mediatizat și promovat cum sunt software-le specializate dar în ultima perioada de timp au căpătat o importanța deosebită pe piața managementului de proiecte, din aceasta categorie facînd parte:

1. Calendaring software care pot face planificarea diferitelor activități la fel de usor cavunvsoftvspecializat
2. Spreadsheets  folosite în special la calcul tabelar cît și la operațiuni în vederea calculării costurilor unui proiect într-un mod la fel de eficient ca cele specializate.

1.3.7 Diferite tipuri de software de management al proiectelor

Estimation and planning

Este procesul de a prezice utilizarea cea mai realistă a efortului necesar pentru a dezvolta sau a menține software-uri bazate pe date incomplete, inexacte și nesigure. Estimarea efortului poate fi utilizată ca informație de bază în planurile de proiect, bugete, analiză investițiilor, în procesul de stabilire a prețurilor cît și în procesul de licitare.

Planning

Este un proces strîns legat de cel de estimare deoarece estimarea se face după o bună planificare a etapelor care trebuiesc parcurse în desfășurarea proiectului, acest proces face parte din managementul de proiect care se referă la folosirea de programe de tip diagramă pentru a planifica si raporta progresele înregistrate ulterior în cadrul proiectului.

Scheduling

Este procesul care permite companiilor o mai buna gestionare  a schimburilor de personal. Aceste tipuri de software-ri sunt folosite pentru a creea și administra  schimburile de personal, sarcinile atribuite cît și preferințele angajaților. Software-urile de tip avansat din această categorie pot furniza modalități de conectare cu staful, pot face sondaje cu privire la preferințele acestora dar și comunicarea schimburilor în care vor lucra pentru o perioadă de timp stabilită, toate acestea prin intermediul SMS sau a E-Mail-ului.

Cost control

Este un proces strîns legat de cel de gestiune  a bugetului deorece fără a ști care sunt costurile necesare proiectului în desfășurare nu poți estima un buget necesar acelui proiect. Pe de alta parte managementul costului unui proiect folosește o tehnologie de a măsura costul și productivitatea întregului ciclu de viată al proiectelor la nivel de companie.

Budget management

La fel ca și controlul costului, managementul bugetului este o etapă principală în desfășurarea oricărui proiect și asta pentru că fară o estimare a cheltuielilor necesare proiectului în derulare nu se pot elabora etapele necesare care trebuiesc parcurse implicit fondurile necesare care trebuiesc alocate acestora.

Resource allocation

Procesul de alocare a resurselor este folosit în atribuirea resurselor disponibile într-un mod economic. În managementul unui proiect alocarea resurselor este programarea activităților și a resurselor necesare acelor activități luînd în considerare atît resursele disponibile cît și a timpuluivdevdesfășurarevavproiectului.
Collaboration software or groupware

Este un produs software proiectat să ajute oamenii implicați într-o activitate care are aceeași țintă. Intenția de bază a acestuia este de a transforma modul în care documentele și fișierele media sunt partajate pentru a eficientiza lucrul în echipă sau colaborarea celor implicați în desfășurarea proiectului.

Communication

Este activitatea de transmiterea a informațiilor relevante. Pentru ca acest proces să fie realizat este nevoie de un expeditor, de un mesaj și de un destinatar care poate sau nu fi de față în momentul expedierii mesajului.Părțile implicate în procesul de comunicare trebuie să aibă o zonă comună de comunicare pentru ca mesajul transmis să fie înțeles pe deplin.

Quality management

Are o anumită semnificație în cadrul multor sectoare de activitate. Managementul calității nu se axează în mod direct numai asupra unui produs sau a unui serviciu ci și asupra modului de obținere a acestuia. Managementul calității folosește atît procesul de asigurare a calității dar și  controlul proceselor necesare obținerii produsului pentru a atinge o calitate coerentă.

Documentation

Este un termen general folosit pentru o multitudine de documente aparținînd unei vaste sfere media care au în comun anumite trăsături. Scopul documentației este de a sprijini utilizarea unui instrument sau al unui proces ce trebuie să se desfășoare.

Administration systems

Acest proces în anumite situații poate îngloba atat managementul calității cît și procesul de documentare și asta se datorează unei mai bune organizări dar și a unei evaluări mai precise asupra mediului in care se va desfăsura viitorul proiect sau viitoarele activități premergătoare unui proiect de anvergură.

1.4 Etapele dezvoltării software[6]

Știința calculatoarelor este un domeniu relativ nou. Primele calculatoare au fost construite la mijlocul anilor 1940 și de atunci au avut loc dezvoltări spectaculoase. În anul 1946 Goldstine și von Neumann apreciau că 1000 de instrucțiuni reprezintă o limită superioară rezonabilă pentru complexitatea problemelor ce pot fi concepute ca rezolvabile cu ajutorul calculatorului. După ce a prevăzut în 1981 că nici un program pentru calculatoare personale nu va necesita vreodată mai mult de 640 KB de memorie RAM, Bill Gates admitea în 1995 că lucrurile s-au schimbat în ultimele două decenii.

Următoarele exemple oferă o imagine asupra gradului de complexitate la care au ajuns programele în zilele noastre1 :

Un sistem de control al navetelor spațiale include aproximativ 25 milioane linii de cod și un efort pentru dezvoltare de 22.000 man-years (unitate de măsură pentru costul dezvoltării software – ex., dacă un program presupune efortul a 100 de persoane iar finalizarea dezvoltării necesită 2 ani atunci costul total de dezvoltare va fi de 200 man-years);

Un sistem de control al traficului aerian include aproximativ 1 milion de linii de cod și 1600 man-years pentru scriere și 500 man-years pentru dezvoltare;

Majoritatea produselor software dezvoltare astăzi, din cauza complexității, nu pot fi pe deplin înțelese de către o singură persoană;

Testarea programelor reprezintă o problemă de imposibilitate (un program tipic, de nivel mediu, având 100 de posibile intrări, 2100 posibile stări va presupune 1020 ani presupunând efectuarea a 100 de teste pe secundă) – nu e de mirare că apar bug-uri tot timpul.

Creșterea programelor în dimensiune și complexitate a depăsit cu mult progresele făcute în domeniul tehnicilor de programare. De aceea, programarea a devenit și a rămas mai mult o artă decât o meserie.

O paralelă cu ingineria construcțiilor este atractivă. Dacă dorim să construim o cușcă pentru câine, putem să mergem prin grădină, să căutam lemne și cuie, să luăm un ciocan și să începem să lucrăm. Avem șanse destul de bune să reușim, mai ales dacă suntem îndemânatici. Dacă totuși nu reușim, putem încerca a doua zi din nou cu alte lemne și alte cuie. Iar dacă câinele nu încape în cușcă, putem să ne cumpărăm alt câine.

Lucrurile stau radical diferit atunci când dorim să construim o casă pentru familia noastră. Atunci va trebui sau să angajăm un arhitect care să ne facă un proiect, sau să cumpărăm un proiect standard de casă. Va trebui să negociem cu o firmă de construcții prețul, durata de realizare, calitatea finisajelor. Nu ne permitem să riscăm economiile familiei pe o construcție care se va dărâma la a doua rafală de vânt. În plus, dacă membrilor familiei nu le place orientarea ferestrelor sau peisajul, nu îi putem schimba cu alții (în cel mai rău caz, ne schimbă ei pe noi).

Cu atât mai mult, dacă o firmă plătește câteva milioane de dolari pentru a ridica un zgârie nori, reprezentanții acesteia vor fi foarte atenți cu cine și în ce condiții vor lucra. Ei vor dori garanții că proiectul este viabil, vor angaja mai multe firme de arhitectură pentru a-l verifica. De asemenea, studii geologice, de fizică a pământului sau meteorologie vor fi obligatorii. Vor fi folosite cele mai performante materiale și se vor angaja cei mai competenți și cu experiență constructori. Eșecul nu mai este o opțiune pentru contractantul proiectului. Desigur, în toate aceste cazuri, alegerea unor instrumente adecvate este critică. Așa cum nu putem construi o casă folosind un singur cui și dezvoltarea programelor necesită alegerea unor instrumente adecvate pentru lucru. De alegerea acestor instrumente depinde în primul productivitatea: e una să contruim folosind o simplă lopată de exemplu și alta să folosim un excavator – la fel și în cazul instrumentelor de dezvoltare dacă ne gândim la diferența între a implementa noi tot codul și a folosi componente anterior dezvoltate ce deja implementează unele dintre funcționalitățile necesare. Aceste aspecte se traduc în timp și costuri de dezvoltare în ambele cazuri.

Știm că inginerii constructori întocmesc planuri, construiesc machete, studiază proprietățile materialelor folosite și fac rapoarte privind progresul operațiunilor. Construcții de o complexitate foarte mare au fost realizate în acest fel într-un mod rațional și economic. Inginerii de programe ar trebui să procedeze similar pentru ca dezvoltarea programelor să nu mai fie un proces impredictibil.

Pe măsură ce complexitatea programelor creștea, la sfârșitul anilor ’60 începea să se prefigureze deja o criză a programării2 . Era necesar un efort de standardizare a unor metodologii, tehnici, metode de dezvoltare a produselor software în spiritul contracarării unor probleme legate de proprietate intelectuală, de etape și moduri de abordare. Astfel, în anul 1968, apare termenul de ingineria programării. Prin acest termen se dorea ca arta programării să împrumute din rigoarea științelor inginerești pentru a putea livra programe la timp și în mod economic. Prima definiție dată ingineriei programării a fost enunțată astfel (F. L. Bauer):

Ingineria programării este stabilirea și utilizarea de principii inginerești solide pentru a obține în mod economic programe sigure și care funcționează eficient pe mașini de calcul reale.

Astăzi ingineria programării este văzută ca abordarea sistematică a dezvoltării, funcționării, întreținerii și retragerii din funcțiune a programelor (cf. IEEE Standard Glossary of Software Engineering Technology, 1983). Această viziune nu face referiri la cost sau la eficiență, însă adaugă referiri la perioade importante din viața unui program, ce urmează creării și funcționării, și anume întreținerea și retragerea din funcționare. Ingineria software urmărește toate aspectele privind producția software de la primele stagii ale specificațiilor de sistem și până la mentenanța sistemului după ce a fost dat în funcțiune. Ținând cont de toate cerințele organizaționale și de restricțiile financiare ale unei organizații, ingineria software definește teorii, metode și instrumente de lucru al căror număr sporește continuu și care devin tot mai complexe datorită încercărilor de a descoperi noi soluții la problemele specifice unor organizații.

Considerăm că ingineria programării are următoarele caracteristici importante:

este aplicabilă în producerea de programe mari;

este o știință inginerească;

scopul final este îndeplinirea cerințelor clientului.

Programele mici se pot scrie relativ ușor, de către un singur programator, într-o perioadă destul de scurtă de timp. Un program de 100 de instrucțiuni este cu siguranță un program mic. Nu putem identifica precis granița dintre un program mic și unul mare, însă pe măsură ce dimensiunea programului crește, apar provocări noi, calitativ diferite.

Întrucât un singur sau câțiva programatori nu pot avea timpul fizic pentru terminarea programului, este necesară crearea uneia sau mai multor echipe de lucru. Este necesară coordonarea și comunicarea între echipe. Complexitatea sistemului software și a organizației care realizează sistemul software devine importantă, putând depăși capacitatea de înțelegere a unui singur individ.

Apare ca dezirabilă o abordare riguroasă a acestor probleme, ce include stilul de lucru, modul de scriere a codului, instrumente adecvante pentru dezvoltarea programelor. Alegerea instrumentelor de dezvoltare adecvate în funcție de scopul și natura proiectului software devine cel puțin la fel de importantă precum alegerea unor stiluri de lucru sau metode de dezvoltare adecvate pentru că ele sunt interdependente. Introducerea unora dintre cele mai frecvent utilizate instrumente pentru dezvoltarea programelor reprezintă de altfel scopul acestui curs.

Spunem că un produs software reprezintă programe și documentația aferentă. Produsele software pot fi generice (off-the-shelf) – dezvoltate pentru a fi vândute mai multor clienți – sau specifice (custom) – dezvoltate pentru a fi vândute unui singur client, conform cu specificația acestuia. Un program bun este acela care:

Oferă utilizatorilor funcționalitățile cerute;

Este ușor de menținut – programul trebuie să evolueze odată cu schimbarea nevoilor utilizatorilor;

Este sigur (nu conține defecte de funcționare sau defectele sunt remediate imediat ce sunt descoperite de către producător);

Este eficient (nu irosește resurse ale sistemului);

Este ușor de folosit.

Spunem că un program este fiabil dacă funcționează și continuă să funcționeze fără întreruperi un interval de timp. Această noțiune exprimă de fapt rezistența la condițiile de funcționare. Un motor trebuie să fie fiabil pentru că trebuie să funcționeze o perioadă suficient de lungă de timp fără întreruperi, chiar dacă nu totdeauna la performanțe optime.

Programul este sigur dacă funcționează corect, fără operații nedorite. Un automat bancar trebuie să fie sigur, pentru a efectua tranzacțiile în mod absolut corect, chiar dacă funcționarea sa poate fi întreruptă din când în când. Atunci când funcționează însă, trebuie să funcționeze foarte bine.

Un program are o eroare (engl. „bug”) dacă nu se comportă corect. Se presupune că dezvoltatorul știa ce ar fi trebuit programul să facă, iar comportamentul greșit nu este intenționat. Iată câteva erori celebre:

În primii ani în care calculatoarele au fost introduse la stațiile de benzină din SUA, consumatorii primeau cecuri pe sume enorme. Faptul era privit în general cu umor și reclamațiile erau rezolvate repede;

Sistemul de operare IBM OS360 conținea aproximativ 1.000 de greșeli la fiecare nouă versiune care încerca să rezolve greșelile din versiunea precedentă;

Un vehicul de explorare a planetei Venus a fost pierdut deoarece programul primit de pe Pământ pentru rectificarea orbitei conținea linia 'DO 3 I = 1.3'; instrucțiunea corectă în limbajul FORTRAN ar fi trebuit să conțină virgulă în loc de punct;

În 1979 s-a descoperit o eroare în programele pentru sistemele de răcire în centralele nucleare din SUA; din fericire, nu fusese niciodată nevoie de execuția rutinelor ce conțineau erorile;

Din cauza unei erori în sistemul de avertizare împotriva atacului cu rachete balistice, procedurile de contraatac au fost declanșate înainte de a se descoperi că a fost o eroare;

Racheta Arianne 5 a explodat în iunie 1996 din cauza unei greșeli de programare; costurile s-au ridicat la 500 milioane dolari.

Procesul software presupune folosirea unor tehnici și instrumente adecvate având în vedere:

Problema care trebuie rezolvată;

Restricțiile impuse;

Resursele disponibile.

Există patru faze fundamentale ale metodologiilor ingineriei programării:

analiza (ce dorim să construim);

proiectarea (cum vom construi);

implementarea (construirea propriu-zisă);

testarea (asigurarea calității).

Deși aceste faze se referă în mod special la ciclul de viață al produsului software, ele pot fi aplicate și altor stadii de existență prin care trece un program de la „naștere” până la „moarte”: lansare, întreținere, ieșire din uz.

Etapa de analiză а soft-ului

Această fază definește cerințele sistemului, independent de modul în care acestea vor fi îndeplinite. Aici se definește problema pe care clientul dorește să o rezolve. Rezultatul acestei faze este documentul cerințelor, care trebuie să precizeze clar ce trebuie construit.

Documentul încearcă să redea cerințele din perspectiva clientului, definind scopurile și interacțiunile la un nivel descriptiv înalt, independent de detaliile de implementare, cum ar fi, de exemplu: formularea problemei, așteptările clientului sau criteriile pe care trebuie să le îndeplinească produsul.

Granița dintre descrierile de nivel înalt și cele de nivel scăzut nu este foarte bine trasată. Uneori, dacă un detaliu tehnic important trebuie specificat, el va apărea în document. Totuși, aceasta trebuie să fie excepția și nu regula. Aceste excepții pot fi determinate de necesitatea menținerii compatibilității cu alte sisteme deja existente, sau a unor anumite opțiuni dorite de client, de exemplu utilizarea unui anumit standard sau o constrângere asupra dimensiunilor imaginii aplicației, care poate fi destinată unei categorii speciale de utilizatori sau care va rula pe niște sisteme cu o serie de particularități (monitoare care nu suportă rezoluții mari).

Faza de analiză poate fi văzută ca o rafinare a detaliilor. Distincția dintre detaliile de nivel înalt și cele de nivel scăzut sunt puse mai bine în evidență de abordările top-down (unde se merge către detaliile de nivel scăzut) și bottom-up (care tind către detaliile de nivel înalt).

Documentul cerințelor poate fi realizat într-o manieră formală, bazată pe logică matematică, sau poate fi exprimat în limbaj natural. În mod tradițional, el descrie obiectele din sistem și acțiunile care pot fi realizate cu ajutorul obiectelor. Aici noțiunea de „obiect” nu trebuie confundată cu obiectul din programarea orientată obiect. Descrierea obiectelor și acțiunilor trebuie să fie generală și să nu depindă de o anumită tehnologie. Desigur, într-o abordare POO, descrierile vor lua forma obiectelor și metodelor, însă în alte abordări, obiectele pot fi de exemplu servicii care accesează baze de date.

În general, documentul cerințelor descrie ontologia proiectului, adică vocabularul de cuvinte cheie (în special construcții substantivale și verbale) care va fi utilizat pentru definirea protocolului specific aplicației. Descrierile acestea nu implică proiectarea arhitecturii aplicației, ci enumerarea părților componente și a modului în care acestea se comportă. Mai târziu, în faza de proiectare, acestea vor fi transformate în primitive informatice, precum liste, stive, arbori, grafuri, algoritmi și structuri de date.

Mai concret, documentul trebuie să conțină descrieri pentru următoarele categorii:

Obiecte: Documentul trebuie să definească mai întâi ontologia sistemului, care este bazată în mare parte pe construcții substantivale pentru identificarea pieselor, părților componente, constantelor, numelor și a relațiilor dintre acestea;

Acțiuni: Documentul trebuie să definească de asemenea acțiunile pe care trebuie să le îndeplinească sistemul și care sunt sugerate în general de construcții verbale. Exemple de acțiuni sunt: metodele, funcțiile sau procedurile;

Stări: Sunt definite ca mulțimi de setări și valori care disting sistemul între două ipostaze spațio-temporale. Fiecare sistem trece printr-o serie de schimbări de stare. Exemple de stări sunt: starea inițială, cea finală sau stările de eroare. Cele mai multe stări depind de domeniul problemei. Stările sunt asociate cu obiectele sistemului. Un eveniment declanșează o tranziție de stare care poate conduce la îndeplinirea unei acțiuni de către sistem;

Scenarii tipice: Un scenariu este o secvență de pași urmați pentru îndeplinirea unui scop. Când sistemul este terminat și aplicația este disponibilă, clientul trebuie să poată utiliza, într-o manieră cât mai facilă și clar specificată, toate scenariile tipice ale aplicației. Scenariile tipice trebuie să reprezinte majoritatea scenariilor de utilizare ale aplicației. Ponderea acestora variază de la un sistem la altul, dar 90% se consideră o proporție acceptabilă. Bineînțeles că un sistem cu un singur scenariu de utilizare este relativ simplu de obținut, pe când unul cu mii de scenarii posibile va fi mult mai dificil de analizat. Deseori este invocată regula 80/20: 80% din funcționalitatea sistemului se realizează cu 20% din efortul de muncă. Executarea restului minoritar de funcționalitate necesită marea majoritate a timpului de lucru;

Scenarii atipice: Un scenariu atipic trebuie să fie îndeplinit de sistem numai în cazuri speciale. Clientul poate să spere, de exemplu, că o eroare neprevăzută este un eveniment atipic. Totuși, sistemul trebuie să gestioneze un număr cât mai mare de categorii de erori, prin tehnici stabilite, precum handler-ele de excepții, monitorizarea proceselor etc.;

Cerințe incomplete sau nemonotone: O enumerare completă a cerințelor pentru toate situațiile care pot apărea în condiții de lucru reale nu este posibilă. În logica tradițională, o teorie este definită de o mulțime finită de axiome. Teoremele din teoria respectivă sunt propoziții adevărate. Dacă se adaugă ulterior noi axiome, teoremele existente rămân valide iar noile teoreme dezvoltate sunt adăugate teoremelor stabilite. În logica nemonotonă, adăugarea de noi axiome poate invalida unele teoreme care au fost demonstrate anterior. O nouă teorie nu mai este o simplă extensie a teoriei vechi, ci o mulțime de teoreme noi, împreună cu o parte din teoremele vechi. Procesul de stabilire a cerințelor are o natură iterativă și nemonotonă. Mulțimea inițială de cerințe (axiomele) definește posibilitățile (teoremele) sistemului. Noile cerințe pot infirma soluțiile vechi. Pe măsură ce un sistem crește în dimensiuni și complexitate, stabilirea cerințelor devine din ce în ce mai dificilă, mai ales când procesul de colectare a cerințelor este distribuit, fiind realizat de indivizi cu specializări diferite.

1.4.2. Etapa de proiectare a soft-ului

Pe baza cerințelor din faza de analiză, acum se stabilește arhitectura sistemului: componentele sistemului, interfețele și modul lor de comportare:

Componentele sunt blocurile de construcție ale produsului. Acestea pot fi create de la zero sau reutilizate dintr-o bibliotecă de componente. Componentele rafinează și capturează semnificația detaliilor din documentul cerințelor;

Interfețele ajută la îmbinarea componentelor. O interfață reprezintă granița dintre două componente, utilizată pentru comunicarea dintre acestea. Prin intermediul interfeței, componentele pot interacționa;

Comportamentul, determinat de interfață, reprezintă răspunsul unei componente la stimulii acțiunilor altor componente.

Documentul de proiectare descrie planul de implementare a cerințelor. Se identifică detaliile privind limbajele de programare, mediile de dezvoltare, dimensiunea memoriei, platforma, algoritmii, structurile de date, definițiile de tip globale, interfețele, etc. În această fază trebuie indicate și prioritățile critice pentru implementare. Acestea sugerează sarcinile care, dacă nu sunt executate corect, conduc la eșecul sistemului. Totuși, chiar dacă prioritățile critice sunt îndeplinite, acest fapt nu duce automat la succesul sistemului, însă crește nivelul de încredere că produsul va fi o reușită.

Folosind scenariile tipice și atipice, trebuie realizate compromisurile inerente între performanță și complexitatea implementării. Analiza performanțelor presupune studierea modului în care diferitele arhitecturi conduc la diferite caracteristici de performanță pentru fiecare scenariu tipic. În funcție de frecvență de utilizare a scenariilor, fiecare arhitectură va avea avantaje și dezavantaje. Un răspuns rapid la o acțiunea a utilizatorului se realizează deseori pe baza unor costuri de resurse suplimentare: indecși, managementul cache-ului, calcule predictive etc. Dacă o acțiune este foarte frecventă, ea trebuie realizată corect și eficient. O acțiune mai rară trebuie de asemenea implementată corect, dar nu este evident care e nivelul de performanță necesar în acest caz. O situație în care o astfel de acțiune trebuie implementată cu performanțe maxime este închiderea de urgență a unui reactor nuclear.

Planul de implementare și planul de test pot fi considerate și ca aparținând fazelor de implementare și respectiv testare. Însă unul din scopurile fazei de proiectare este stabilirea unui plan pentru terminarea sistemului. Planul de implementare stabilește programul după care se va realiza implementarea și resursele necesare (mediul de dezvoltare, editoarele, compilatoarele etc.). Planul de test definește testele necesare pentru stabilirea calității sistemului. Dacă produsul trece toate testele din planul de test, este declarat terminat. Cu cât testele sunt mai amănunțite, cu atât este mai mare încrederea în sistem și deci crește calitatea sa. Un anume test va verifica doar o porțiune a sistemului. Acoperirea testului reprezintă procentajul din produs verificat prin testare. În mod ideal, o acoperire de 100% ar fi excelentă, însă este rareori îndeplinită. De obicei, un test cu o acoperire de 90% este simplă, însă ultimele 10% necesită o perioadă de timp semnificativă.

De exemplu, să considerăm BIOS-ul (Basic Input/Output System) construit de IBM la începutul anilor ’80 în strânsă legătură cu sistemul de operare DOS (Disk Operating System) al firmei Microsoft. Din rațiuni de performanță, BIOS-ul a fost plasat într-un chip ROM, și deci patch-urile pentru eventualele erori erau imposibile. Astfel, au fost necesare teste cu acoperire de 100%. Codul propriu-zis al BIOS-ului era destul de mic, câteva mii de linii. Însă deoarece BIOS-ul are o natură asincronă, testul a presupus mai întâi crearea unui mediu asincron care să aducă sistemul în starea dorită și apoi trebuia generat un eveniment care să declanșeze un test. Foarte repede, setul de test a devenit mult mai mare decât BIOS-ul. A apărut astfel problema testării însuși a mediului de test! În final, o acoperire de 100% a fost atinsă, dar cu un cost foarte ridicat. O soluție mai ieftină a fost înscrierea BIOS-ului într-o combinație dintre EPROM (Electronic Programmable Read Only Memory) și ROM. Cea mai mare parte a produsului era plasat în ROM, iar patch-urile erau plasate în EPROM. Aceasta a fost abordarea adoptată de Apple pentru Macintosh.

În general, este suficient ca testele să cuprindă scenariile tipice și atipice, fără să verifice întregul sistem, cu absolut toate firele de execuție. Acesta poate conține ramificații interne, erori sau întreruperi care conduc la fire de execuție netestate. Majoritatea sistemelor sunt pline de bug-uri nedescoperite. De obicei, clientul participă în mod logic la testarea sistemului și semnalează erori care vor fi îndepărtate în versiunile ulterioare.

1.4.3. Etapa de implementare

În această fază, sistemul este construit, ori plecând de la zero, ori prin asamblarea unor componente pre-existente. Pe baza documentelor din fazele anterioare, echipa de dezvoltare ar trebui să știe exact ce trebuie să construiască, chiar dacă rămâne loc pentru inovații și flexibilitate. De exemplu, o componentă poate fi proiectată mai restrâns, special pentru un anumit sistem, sau mai general, pentru a satisface o direcție de reutilizare.

Echipa trebuie să gestioneze problemele legate de calitate, performanță, biblioteci și debug. Scopul este producerea sistemului propriu-zis. O problemă importantă este îndepărtarea erorilor critice. Într-un sistem există trei tipuri de erori:

Erori critice: Împiedică sistemul să satisfacă în mod complet scenariile de utilizare. Aceste erori trebuie corectate înainte ca sistemul să fie predat clientului și chiar înainte ca procesul de dezvoltare ulterioară a produsului să poată continua;

Erori necritice: Sunt cunoscute, dar prezența lor nu afectează în mod semnificativ calitatea observată a sistemului. De obicei aceste erori sunt listate în notele de lansare și au modalități de ocolire bine cunoscute;

Erori necunoscute: Există întotdeauna o probabilitate mare ca sistemul să conțină un număr de erori nedescoperite încă. Efectele acestor erori sunt necunoscute. Unele se pot dovedi critice, altele pot fi rezolvate cu patch-uri sau eliminate în versiuni ulterioare.

1.4.4 Testarea soft-ului

Calitatea produsului software este foarte importantă. Multe companii nu au învățat însă acest lucru și produc sisteme cu funcționalitate extinsă, dar cu o calitate scăzută. E mai simplu să-i explici clientului de ce lipsește o anumită funcție decât să-i explici de ce produsul nu este performant. Un client satisfăcut de calitatea produsului va rămâne loial firmei și va aștepta noile funcții în versiunile următoare.

În multe metodologii ale ingineriei programării, faza de testare este o fază separată, realizată de o echipă diferită după ce implementarea s-a terminat. Motivul este faptul că un programator nu-și poate descoperi foarte ușor propriile greșeli. O persoană nouă care privește codul poate descoperi greșeli evidente care scapă celui care citește și recitește materialul de multe ori. Din păcate, această practică poate determina o atitudine indiferentă față de calitate în echipa de implementare.

Tehnicile de testare sunt abordate preponderent din perspectiva producătorului sistemului. În mod ideal, și clientul trebuie să joace un rol important în această fază.

Testele de regresiune (engl. „regression test”) sunt colecții de programe care testează una sau mai multe trăsături ale sistemului. Rezultatele testelor sunt adunate și dacă există erori, bug-ul este corectat. Un test de regresiune valid generează rezultate verificate, numite „standardul de aur”. Validitatea rezultatului unui test ar trebui să fie determinată de documentul cerințelor. În practică, echipa de implementare este responsabilă de interpretarea validității.

Testele sunt colectate, împreună cu rezultatele standardelor de aur, într-un pachet de test de regresiune. Pe măsură ce dezvoltarea continuă, sunt adăugate mai multe teste noi, iar testele vechi pot rămâne valide sau nu. Dacă un test vechi nu mai este valid, rezultatele sale sunt modificate în standardul de aur, pentru a se potrivi așteptărilor curente. Pachetul de test este rulat din nou și generează noi rezultate. Acestea sunt comparate cu rezultatele standardelor de aur. Dacă sunt diferite, în sistem a apărut o greșeală. Greșeala este corectată și dezvoltarea continuă. Acest mecanism detectează situațiile când starea curentă de dezvoltare a produsului invalidează o stare existentă. Astfel, se previne regresiunea sistemului într-o stare de eroare.

Există patru puncte de interes în testele de regresiune pentru asigurarea calității.

Testarea internă tratează implementarea de nivel scăzut. Fiecare funcție sau componentă este testată de către echipa de implementare. Aceste teste se mai numesc teste „clear-box” sau „white-box”, deoarece toate detaliile sunt vizibile pentru test.

Testarea unităților testează o unitate ca un întreg. Aici se testează interacțiunea mai multor funcții, dar numai în cadrul unei singure unități. Testarea este determinată de arhitectură. De multe ori sunt necesare așa-numitele „schele”, adică programe special construite pentru stabilirea mediului de test. Numai când mediul este realizat se poate executa o evaluare corectă. Programul schelă stabilește stări și valori pentru structurile de date și asigură funcții externe fictive. De obicei, programul schelă nu are aceeași calitate ca produsul software testat și adesea este destul de fragil. O schimbare mică în test poate determina schimbări importante în programul schelă. Aceste teste se mai numesc teste „black-box” deoarece numai detaliile interfeței sunt vizibile pentru test.

Testarea internă și a unităților poate fi automatizată cu ajutorul instrumentelor de acoperire (engl. „coverage tools”), care analizează codul sursă și generează un test pentru fiecare alternativă a firelor execuție. Depinde de programator combinarea acestor teste în cazuri semnificative care să valideze rezultatelor fiecărui fir de execuție. De obicei, instrumentul de acoperire este utilizat într-un mod oarecum diferit: el urmărește liniile de cod executate într-un test și apoi raportează procentul din cod executat în cadrul testului. Dacă acoperirea este mare și liniile sursă netestate nu prezintă mare importanță pentru calitatea generală a sistemului, atunci nu mai sunt necesare teste suplimentare.

Testarea aplicației testează aplicația ca întreg și este determinată de scenariile echipei de analiză. Aplicația trebuie să execute cu succes toate scenariile pentru a putea fi pusă la dispoziția clientului. Spre deosebire de testarea internă și a unităților, care se face prin program, testarea aplicației se face de obicei cu scripturi care rulează sistemul cu o serie de parametri și colectează rezultatele. În trecut, aceste scripturi erau create manual. În prezent, există instrumente care automatizează și acest proces. Majoritatea aplicațiilor din zilele noastre au interfețe grafice (GUI). Testarea interfeței grafice pentru asigurarea calității poate pune anumite probleme. Cele mai multe interfețe, dacă nu chiar toate, au bucle de evenimente, care conțin cozi de mesaje de la mouse, tastatură, ferestre etc. Asociate cu fiecare eveniment sunt coordonatele ecran. Testarea interfeței presupune deci memorarea tuturor acestor informații și elaborarea unei modalități prin care mesajele să fie trimise din nou aplicației, la un moment ulterior.

Testarea la stres determină calitatea aplicației în mediul său de execuție. Ideea este crearea unui mediu mai solicitant decât cel în care aplicația va rula în mod obișnuit. Aceasta este cea mai dificilă și complexă categorie de teste. Sistemul este supus unor cerințe din ce în ce mai numeroase, până când acesta cade. Apoi produsul este reparat și testul de stres se repetă până când se atinge un nivel de stres mai ridicat decât nivelul așteptat de pe stația clientului. Deseori apar aici conflicte între teste. Fiecare test funcționează corect atunci când este făcut separat. Când două teste sunt rulate în paralel, unul sau ambele teste pot eșua. Cauza este de obicei managementul incorect al accesului la resurse critice. Mai apar și probleme de memorie, când un test își alocă memorie și apoi nu o mai dezalocă. Testul pare să funcționeze corect, însă după ce este rulat de mai multe ori, memoria disponibilă se reduce iar sistemul cade.

Metodologii de dezvoltare a programelor

Când pornim la dezvoltarea unui program avem nevoie de:

înțelegere clară a ceea ce se cere;

un set de metode și instrumente de lucru;

un plan de acțiune.

Planul de acțiune se numește metodologie de dezvoltare. Dezvoltarea unui anumit program constă într-un set de pași ce se fac pentru a-l realiza. Luând în considerare tipul pașilor ce se efectuează se creează un model de lucru, ce poate fi aplicat unei serii mai largi de proiecte. Acesta este motivul pentru care planul de acțiune este numit model: el poate fi privit ca un șablon al dezvoltării de programe. În timpul dezvoltării programelor s-a constatat că există anumite tipuri de activități care trebuie făcute la un momentulvdat:

Analiza cerințelor: Se stabilește ce anume vrea clientul ca programul să facă. Scopul este înregistrarea cerințelor într-o manieră cât mai clară și mai fidelă. Claritatea se referă la lipsa ambiguității iar fidelitatea la înregistrarea cât mai exactă (posibil cuvânt cu cuvânt);

Proiectarea arhitecturală: Din motive de complexitate, programele mari nu pot fi concepute și implementate ca o singură bucată. Programul va trebui construit așadar din module sau componente. Proiectarea arhitecturală împarte sistemul într-un număr de module mai mici și mai simple, care pot fi abordate individual;

Proiectarea detaliată: Se realizează proiectarea fiecărui modul al aplicației, în cele mai mici detalii;

Scrierea codului: Proiectul detaliat este transpus într-un limbaj de programare. În mod tipic, aceasta se realizează modular, pe structura rezultată la proiectarea arhitecturală;

Integrarea componentelor: Modulele programului sunt combinate în produsul final. Rezultatul este sistemul complet. În modelul numit big-bang componentele sunt dezvoltate și testate individual. Apoi ele sunt integrate în sistemul final. Având în vedere că funcționarea corectă a componentelor individuale a fost testată, integrarea ar trebui să fie o formalitate. Din păcate, componentele nu pot fi testate exhaustiv, iar când acestea lucrează împreună pot să apară situații pe care o anumită componentă nu le-a întâlnit în procesul de testare sau conflicte între anumite componente (de exemplu, conflicte de partajare a resurselor). S-a constatat că atunci când se aplică acest model, timpul de testare explodează, proiectul devenind greu de controlat. Aceasta justifică denumirea de „big-bang”. Modelul incremental propune crearea unui nucleu al aplicației și integrarea a câte o componentă la un moment dat, urmată imediat de testarea sistemului obținut. Astfel, se poate determina mai ușor unde anume apare o problema în sistem. Acest tip de integrare oferă de obicei rezultate mai bune decât modelul big-bang;

Validarea: În procesul de validare ne asigurăm că programul îndeplinește cerințele utilizatorului. Întrebarea la care răspundem este: construim produsul corect? Un exemplu de validare este testul de acceptare, în care produsul este prezentat clientului. Clientul spune dacă este mulțumit cu produsul sau dacă mai trebuie efectuate modificări;

Verificarea: În procesul de verificare ne asigurăm că programul este stabil și că funcționează corect din punctul de vedere al dezvoltatorilor. Întrebarea la care răspundem este: construim corect produsul?

Întreținerea: După ce programul este livrat clientului, mai devreme sau mai târziu sunt descoperite defecte sau erori ce trebuie reparate. De asemenea, pot apare schimbări în specificațiile utilizatorilor, care vor diverse îmbunătățiri. Întreținerea constă în gestionarea acestor probleme.

Se poate constata ușor că aceste activități sunt în strânsă legătură cu cele patru faze ale ingineriei programării: analiza, proiectarea, implementarea și testarea.

1.6 Sopul și obiectivele lucrării

Scopul lucrării date este de a crea o aplicație WEB care oferă posibilitatea de a lucra on-line în echipă, rapid și flexibil. Aplicația trebuie să ofere posibilitatea comunicării între membrii echipei chiar dacă se află la distanță, să aibă un task manager în care managerul proiectului repartizează însărcinările fiecărui membru al echipei, și un compartiment cu statistică pentru a monitoriza la ce etapă se află proiectul.

Obiectivele necesare pentru atingerea scopului evidențiat mai sus:

De proiectat și realizat o bază de date relațională normalizată.

Aplicația să ofere posibilitatea de a adăuga membri noi în echipă printr-un singur e-mail.

Sistemul trebuie să conțină o interfață prietenoasă, să ofere o deprindere rapidă chiar și pentru persoanele cu puțină experiență și deprinderi limitate în utilizarea calculatorului.

De creat aplicația cu un design adaptiv ce va permite accesarea sa de pe diferite dispozitive.

CAPITOLUL II. REZULTATELE CERCETĂRII. DEMONSTRAREA SISTEMULUI INFORMAȚIONAL DE MANAGEMENT AL PROIECTELOR

2.1 Tehnologiile utilizate

Pentru realizarea unei aplicații WEB este nevoie de cunoașterea tehnologiilor ce se află "în spatele" aplicațiilor pe care le dezvoltăm – platforme soft, limbaje și framework-uri, concepte de programare sau tehnici de prelucrare a informației.

Fie că e vorba de platformele pe care ne dezvoltăm aplicațiile, fie că e vorba de bazele de date, de mediile și uneltele software pe care le utilizăm, de algoritmii, funcțiile și procedurile pe care le gîndim, sau de standardele pe care trebuie să le respectăm pentru dezvoltarea acestora –toatevacesteavținvde tehnologiilevweb. vvvvvUtilizămvconstant PHP și MySQL, Flash, Papervision și Actionscript, HTML și CSS, Java si JavaScript, librării dinamice de genul YUI, mootools sau jquery, content sharing prin RSS/API, CMS open-source: Wordpress, Joomla, CMS custom-made:Adkontent, shopping carturi personalizate, sisteme de e-commerce "white label", sisteme de afiliati, sisteme de e-payment prin card sau prin SMS via web sau prin telefonul mobil, platforme de server Microsoft sau Apache, sisteme de hosting in solutii fixe sau scalabile pentru a dezvolta aplicațiile WEB.

Limbajul HTM[7]

În realizarea aplicației a fost utilizat în mare măsură limbajul HTML care reprezintă un inel foarte important în tehnologiile WEB și se află la baza dezvoltării acestuia.

HTML este un limbaj de marcare orientat către prezentarea documentelor text pe o singura pagină.

Utilizând un software de redare specializat, numit agent utilizator HTML (cel mai bun exemplu de astfel de software fiind browserul web) HTML furnizează mijloacele prin care conținutul unui document poate fi adnotat cu diverse tipuri de metadate și indicații de redare. Indicațiile de redare pot varia de la decorațiuni minore ale textului (cum ar fi specificarea faptului că un anumit cuvânt trebuie subliniat sau că o imagine trebuie introdusă) până la scripturi sofisticate, hărți de imagini și formulare. Metadatele pot include informații despre titlul și autorul documentului, informații structurale despre cum este împărțit documentul în diferite segmente, paragrafe, liste, titluri etc. și informații cruciale care permit ca documentul să poată fi legat de alte documente pentru a forma astfel hiperlink-uri.

HTML este un format text proiectat pentru a putea fi citit și editat de oameni utilizând un editor de text simplu. Totuși scrierea și modificarea paginilor în acest fel solicită cunoștințe solide de HTML și este consumatoare de timp. Editoarele grafice cum ar fi Macromedia Dreamweaver sau Microsoft FrontPage permit ca paginile web sa fie tratate asemănător cu documentele Word, dar cu observația că aceste programe generează un cod HTML care este de multe ori de proastă calitate.

HTML se poate genera direct utilizând tehnologii de codare din partea serverului cum ar fi PHP, JSP sau ASP.

Structura generală a aplicației în limbajul HTML

Limbajul CSS3[8]

CSS (Cascading Style Sheets) este un limbaj de stil folosit pentru a descrie aspectul și formatarea unui document scris într-un limbaj de marcare.Este cel mai mult folosit pentru a schimba stilul de paginilor web și interfețelor scrise în HTML și XHTML, limbajul poate fi aplicat la orice tip de document XML, inclusiv XML simplu, SVG și XUL. Împreună cu HTML și JavaScript, CSS este o tehnologie fundamentală folosită de cele mai multe site-uri web pentru a crea pagini web, interfețe de utilizator pentru aplicații web, și interfețe de utilizator pentru multe aplicații mobile.

CSS este destinat în primul rând pentru a permite separarea conținutului documentului de prezentare de documente, inclusiv elemente cum ar fi aspectul, culorile, și fonturile. Această separare poate îmbunătăți accesibilitatea conținutului, oferă mai multă flexibilitate și control în specificarea caracteristicilor de prezentare, oferă formatarea mai multor pagini HTML printr-un fișier .css separat, și reduce complexitatea și repetiția conținutului structural, cum ar fi tabele semantică nesemnificative care au fost folosite pe scară largă utilizate pentru pagini formatate înainte de redarea consistentă, CSS a fost disponibil în toate browserele importante. CSS face posibilă separarea instrucțiunilor sale independent de limbajul HTML într-un fișier sau în secțiunea <stile> separată a fișierului HTML. Pentru fiecare element HTML potrivit, se oferă o listă de instrucțiuni de formatare. De exemplu, o regulă CSS ar putea preciza că "toate 1 elemente rubrica ar trebui să fie îndrăzneț," lăsând pur markup HTML semantic care afirmă "acest text este un titlu de nivel 1" fără formatare cod, cum ar fi <bold> Marcaj de indicare a modului în care aceste texte ar trebui fi afișate.

Exemplu de cod CSS3 utilizat în proiect.

Framework-ul Bootstrap[9]

Bootstrap este o colecție de instrumente gratuită și open-source pentru crearea de site-uri și aplicații web. Acesta conține HTML- bazat pe CSS template-uri de design, forme, butoane, navigare și alte componente de interfață, precum și extensii opționale JavaScript. Platforma bootstrap urmărește să faciliteze dezvoltarea web.

Bootstrap este un framework front-end, adică, o interfata pentru utilizator, spre deosebire de codul server-side care se află pe "capătul din spate" server. De asemenea, este un framework web, care este un cadru software proiectat pentru a sprijini dezvoltarea de site-uri dinamice si aplicatii web.

Bootstrap este un framework și constă în principal dintr-o serie de stiluri LESS implementate pe o serie de componente ale setului de instrumente. Un fișier de stiluri bootstrap.less include componente de stil. Dezvoltatorii pot adapta fișierul boostrap la proiect și а selecta componentele pe care doresc să le folosească în proiectul lor.

Ajustările sunt posibile într-o măsură limitată prin intermediul configurațiilor de stil central. Schimbari maiprofunde sunt posibile în declarațiile LESS.

Utilizarea unui limbaj de stil permite utilizarea variabilelor, funcțiilor și operatorilor, selectoare imbricate, precum și așa-numitele mixins.

Începând cu versiunea 2.0, configurarea Bootstrap are, de asemenea, o opțiune specială "Customize" în documentație. În plus, dezvoltatorul alege pe un formular componentele dorite și ajustează, dacă este necesar, valorile diferitelor opțiuni pentru nevoile lor. Pachetul a generat ulterior include deja foaia pre-construite în stil CSS.

Sistemul Grid si design adaptiv vine cu un standard de 1170 pixeli lățime а grilei. Alternativ, dezvoltatorul poate utiliza un aspect variabil de lățime. Pentru ambele cazuri, setul de instrumente are patru variante pentru a face uz de diferite rezoluții și tipuri de dispozitive: telefoane mobile, portret si peisaj, tablete și PC-uri cu rezoluție mică și mare. Fiecare variație reglează lățimea coloanelor.

Fig nr.2.1 – Exemplu de pagină web creată în framework-ul Bootsrap.

Limbajul JavaScript[10]

JavaScript deasemenea cunoscut ca ECMAScript, este un limbaj dinamic de programare. Este cel mai mult utilizat de partea web browsere-lor, care permite implementarea de scripturi ce rulează de partea clientului pentru а interacționa cu userul, de а comunica asincron și modifica conținutul documentului care este afișat. JavaScript este, de asemenea considerat un ”limbaj de asamblare web” – o țintă de compilare de la sursă la sursă pentru а face aplicații web care rulează de partea clientului, folosind și alte limbaje de programare, este susținut de toate browserele importante fără plug-in-uri. Acesta este, de asemenea, utilizat în programare de server-side de rețea cu medii de rulare cum ar fi Node.js, în dezvoltarea jocurilor și crearea aplicațiilor desktop și aplicațiilor mobile.

JavaScript este clasificat ca un prototip bazat pe limbaj de scriptimg cu funcții dinamice și first-class funcții. Acest amestec de caracteristici face JavaScript-ul un limbaj multi-paradigmă, de sprijin, imperativ orientat-obiect, și stiluri de programare funcționale.

În ciuda unor denumiri asemanătoare a sintacticii și librăriilor standard, JavaScript și Java sunt diferite nu au legătură și au semantica foarte diferită. Sintaxa JavaScript este, de fapt derivat din C, în timp ce semantica și design sunt influențate de Sinele și Schema de limbaje de programare.

JavaScript este, de asemenea, utilizat în medii care nu sunt bazate pe web, cum ar fi documente PDF, browsere specifice site-ului, și widget-uri desktop. Mașini noi și mai rapid JavaScript virtuale (VMS) și platformele construite pe ele au crescut, de asemenea popularitatea JavaScript-ului pentru aplicații web server-side. Pe partea de client, JavaScript a fost implementat în mod tradițional ca un limbaj interpretat, dar browsere mai recente efectua compilarea just-in-time.

Funcție JavaScript utlizată în proiect.

MySQL[11]

MySQL este al doilea sistem din lume, dintre cele mai utilizate pe scară largă, bază de date relațională (RDBMS) și cel mai des utilizat RDBMS open-source. Este numit după fiica co-fondatorul Michael Widenius, a mea. SQL Acronimul vine de la Structured Query Language.

Proiectul de dezvoltare MySQL a facut codul sursă disponibil sub termenii GNU General Public License, precum și într-o varietate de acorduri de proprietate. MySQL a fost deținut și sponsorizat de o singură firmă pentru-profit, compania suedeză MySQL AB, deținută acum de Oracle Corporation. Pentru utilizarea de proprietate, mai multe ediții plătite sunt disponibile, și oferă funcționalități suplimentare.

MySQL este o alegere populara de baze de date pentru utilizarea în aplicații web, și este o componentă centrală a utilizat pe scară largă LAMP open source stiva software de aplicație web (si alte stive "AMP"). LAMP este un acronim pentru "Linux, Apache, MySQL, Perl / PHP / Python." Proiecte gratuit software-open source care necesita un sistem de management de baze de date full-featured folosesc adesea MySQL.

Aplicații care folosesc baze de date MySQL sunt: ​​TYPO3, MODx, Joomla, WordPress, phpBB, MyBB, Drupal și alte software. MySQL este, de asemenea, utilizat în multe de profil înalt, site-uri de mari dimensiuni, inclusiv Google (dar nu pentru căutări), Facebook, Twitter, Flickr, YouTube și.

Navele MySQL fără instrumente GUI pentru administrarea bazelor de date MySQL sau gestionare datelor conținute în bazele de date. Utilizatorii pot folosi instrumentele incluse în linia de comandă, sau de a folosi MySQL "front-end", software-ul desktop și aplicații web care creează și gestionează baze de date MySQL, construi structuri de baze de date, backup, statutul inspecta, și de a lucra cu un set oficial records.The date de MySQL instrumente front-end, MySQL Workbench este dezvoltat activ de Oracle, și este disponibil gratuit pentru utilizare.

Fig nr.2.2 – Tabel creat în MySQL.

Limbajul PHP[12]

PHP este un limbaj de scripting server-side creat în 1995 și proiectat pentru dezvoltare web, dar, de asemenea, folosit ca un limbaj de programare de uz general. Pînă în ianuarie 2013, PHP a fost instalat pe mai mult de 240 de milioane de site-uri (39% dintre cei incluși în eșantion) și 2,1 milioane de servere web. Inițial creat de Rasmus Lerdorf în 1994, punerea în aplicare de referință a PHP (alimentat de Zend Engine) este produs de PHP Group.While PHP era inițial numit Personal Home Page, în prezent PHP: Hypertext Preprocessor, care este recursiv backronym.

Codul PHP poate fi simplu amestecat cu cod HTML, sau poate fi folosit în combinație cu diverse motoare de templating și framework-uri. Codul PHP este de obicei prelucrat de un interpretor PHP, care este de obicei implementat ca modul nativ un server web sau un Common Gateway Interface (CGI) executabil. După ce codul PHP este interpretat și executat, serverul web trimite răspuns clientului, de obicei sub forma unei paginii web a generat rezultat; de exemplu, codul PHP poate genera o pagina web de cod HTML, o imagine sau alte date. PHP a evoluat, de asemenea, să includă o interfață linie de comandă (CLI) capacitatea și pot fi utilizate în aplicații grafice de sine stătătoare.

Interpretorul PHP, alimentat de Zend Engine, este software liber, distribuit sub licența PHP. PHP a fost foarte flexibil și poate fi utilizat pe majoritatea serverelor web pe aproape orice sistem de operare și platforme, gratuit.

Exemplu de cod PHP utilizat în proiect

2.2 Elaborarea softului

2.2.1. Analiza cerințelor

În prima fază а proiectării unui soft este nevoie de definit necesitățile persoanelor care vor utiliza aplicația dată. Aici se definește problema pe care destinatarii produsului v-or dori să o rezolve. Rezultatul acestei etape este o listă а cerințelor, care trebuie să precizeze clar ce trebuie de realizat.

Astfel, pentru definirea cerințelor și necesităților produsului trebuie mai întîi de analizat cine v-or fi destinatarii și de încercat de а privi din perspectiva clientului, definind scopurile principale și detaliile necesare implementării softului.

În mare parte, aplicația dată v-а fi utilizată de persoane care au necesitatea de а lucra în echipă on-line, în așa mod, utilizatorii aplicației v-or avea nevoie de un acces rapid, opțiunea de logare sau înregistrare simplificată, pentru un acces mai rapid, invitarea membrilor într-un proiect prin e-mail, posibilitatea de а transmite task-uri membrilor echipei care lucrează la un anumit proiect, un chat comun între toți membrii echipei, posibilitatea de а monitoriza la ce etapă se află proiectul, modificarea datelor personale și delogare. Toate acestea trebuie să fie îmbinate într-o aplicație cross browser, cross platform, cu un design adaptiv, simplu în utilizare, econom din punct de vedere а reutilizării codului.

Trebuie de avut în vedere că aplicația dată va avea nevoie să stocheze multe date, pentru aceasta v-а fi proiectată o bază de date din cinci tabele cu relații între ele pentru а evita suprascrierea datelor.

Compatibilitaea cross-browser – capacitatea aplicației web de а funcționa în toate browserele populare identic. Adică lipsa diferențelor la convertirea unui site și capacitatea de а afișa conținutul cu același grad de lizibilitate. Conceptul de ”compatibilitate cross-browser” este adesea confundat cu corespondența pe-pixel, care sunt, de fapt concepte diferite. În situația în care tehnologiile mereu se află în dezvoltare, o compatibilitate cross-browser acceptabilă poate fi realizată numai pentru versiunile recente de browsere.

Cel mai des apar multe probleme cu versiunile de Internet Explorer sub versiunea 10, din această cauză mulți dezvoltatori web nu sunt îngrijorați de cross-browser atunci cînd este necesitatea de а adapta aplicația pentru IE, se afișează în mod insistent o pagină copertă în care se recomandă deschiderea aplicației prin alt browser fără posibilitatea de а vedea conținutul site-ului.

Termenul dat а început să fie folosit în timpul războaielor browser care au avut loc la sfîrșitul anilor 90. În acest context, termenul se referă la site-urile care operează în Internet Explorer, și în Netscape Navigator. La acea vreme, producătorii au început să introducă propriile funcții pentru browsere, care a dus la unele caracteristici ale ecranului și diferențele conceptuale în activitate.

Cross-platform software – software-ul care rulează pe mai multe platforme hardware și / sau sistem de operare. Un exemplu tipic este un software proiectat pentru a rula pe Linux si Windows, în același timp.

Responsive Web Design (RWD) este o abordare de web design care vizează crearea site-urilor pentru cu o vizualizare optimă și interacțiune ușoară de navigare și citire, cu un minim de redimensionare, și utilizarea într-o o gamă largă de dispozitive (de la computer desktop la telefoane mobile). Un site conceput cu RWD se adaptează la mediul de vizionare cu ajutorul fluidelor, grile pe baza cu dimansiunile în procente, imagini flexibile, interogări @media în CSS3. Pentru crearea unui site cu design adaptiv trebuie de ținut cont de următoarele aspecte:

Conceptul de grid fluid solicită dimensionarea unui element de pagină să fie în unități relative ca procente și nu unități absolute, cum ar fi pixeli sau puncte.

Imaginile trebuie să fie flexibile și dimensionate în unități relative, astfel încât să împiedice afișarea în exteriorul elementului care o conține.

Interogările @media permit pagina să utilizeze diferite reguli de stil CSS, bazate pe caracteristicile dispozitivului.

Simplitatea aplicației – presupune evitarea exprimării printr-un surplus de opțiuni care face aplicația mai complexă cu o variantă mai simplificată. De obicei, soluția cea mai bună, este soluția cea mai simplă.

2.2.2 Proiectarea interfeței

În etapa actuală se crează interfața în conformitate cu modul lui de funcționare în așa mod încît sa fie respectate cîteva recomandări de proiectare cum ar fi reținerea în timp, rata erorilor, viteza de execuție etc.

Alte trăsături importante pentru menținerea utilizatorilor și o utilizabilitate înaltă а unei aplicații ar fi următoarele aspecte: memorabilitatea, ușurința în învățare, eficiența, robustețea și satisfacția, libertatea utilizatorului, prevenirea erorilor, flexibitate, design plăcut.

Nu ar trebui ignorat așa factor ca rezoluția pentur fereastra aplicației deoarece este greu de utilizat o aplicație în care informația nu încape pe ecranul calculatorului. Trebuie evitate, de asemenea, utilizarea imaginilor prea mari, pentru o încarcare mairapidă a paginilor. Un alt punct care trebuie atins îl reprezintă structurarea paginii astfel încâtsă ofere un acces rapid la opetațiile cele mai frecvente. De asemenea trebuie redusă aparițiamesajelor de alertare, pentru a nu diminua atenția utilizatorului de la activitatea desfășurată.

Iar în orice situație, utilizatorul trebuie să poată realiza operația de undo sau back, pentru a-iconferi un sentiment de libertate.

Elementele care fac parte din aceeași categorie este indicat să fie grupate, și să aibătitluri sugestive pentru legături, pentru ca utilizatorul să știe exact ceea ce va accesa și să nu piardă timpul prin accesări inutile.

Accesibilitatea web este măsura în care conținutul static și dinamic (inclusiv serviciileonline) pot fi utilizate de către persoanele cu dizabilități. În acest sens, paginile web trebuiesă conțină și facilități de acces pentru următoarele categorii de persoane : persoane cudificultăți de vedere; persoane cu deficit auditiv; persoane cu deficiențe fizice; persoane cudificultăți de învățare.

Îmbinarea culorilor trebuie făcută cu grijă, deoarece culorile facilitează structurarea șigruparea elementelor. Ele trebuie alese în funcție de tematica interfețelor web, folosindu-seculori reci pentru informații de stare sau fundal și culori calde pentru acțiuni. De asemeneatrebuie evitate contraste de genul roșu-verde și galben-albastru, deoarece incidenta persoanelor care nu fac distincție între ele este mare.

Deoacere tehnologia web a devenit destul de utilizată în viața de zi cu zi, esteimportant ca interfețele web să fie bine proiectate, pentru ușurarea muncii utilizatorilor șioferirea informațiilor necesare într-un timp cât mai scurt.

În figura nr.4 este prezentată structura aplicației și anume pagina în care userii vor petrece cea mai mare parte а timpului.

Fig. nr.2.3 – Structura aplicației

2.2.3 Proiectarea bazei de date

Primul pas în realizarea unei aplicații cu baze de date, este analiza datelor și realizarea unei scheme conceptuale (model conceptual) al acestora. În această etapă sunt analizate natura și modul de utilizare ale datelor. Sunt identificate datele care vor fi memorate și procesate, apoi se împart aceste date în grupuri logice și se identifică relațiile care există între aceste grupuri. Odata obținute, aceste informații trebuie reprezentate într-o formă convențională numită și diagramae entități-relații, harta relațiilor sau ERD(Entity Relationship Diagram).

În figura nr. 5 este demonstrat modelul conceptual printr-o reprezentare grafică a domeniului de studiu și entitățile acestuia.

Fig. nr.2.4 – Modelul conceptual al BD

Pentru а ajunge la modelul logic trebuie mai întii de normalizat BD. Normalizarea este o tehnică a bazelor de date prin care se elimină sau se evită anumite anomalii și incosistențe ale datelor. O bază de date bine proiectată nu permite ca datele să fie redundante, adică aceeași informație să se găsească în locuri diferite sau să se memoreze în baza de date informații care se pot deduce pe baza altor informații memorate în aceeași bază de date.

Formele normale oferă indicații pe baza cărora puteți decide dacă un anumit ERD este bine proiectat, neexpus anomaliilor și incosistențelor. În principiu, normalizarea implică descompunerea unei entități în două sau mai multe entități, prin compunerea cărora se pot obține exact aceleași informații.

Formele normale se aplică fiecărei entități în parte. O bază de date(sau un ERD) se găsește într-o anumită formă normală doar dacă toate entitățile se găsesc în acea formă normală. Există mai multe forme normale însă cele mai importante sunt 1NF, 2NF, 3NF care și vor fi aplicate.

O entitate se găsește în prima formă normală în cazul în care:

nu există atribute cu valori multiple

nu există atribite sau grupuri de atribute care se repetă.

În așa mod, toate atribitele trebuie să fie atomice, adică să conțină o singură informație.

În entitatea user se observă că atributele nume și prenume formează valori multiple. Pentru а rezolva această problemă trebuie de despărțit atributele date în cîmpuri diferite.

Fig. nr.2.5 – Forma normală 1 a tabelului user

Cu ajutorul acestui model se rezolvă situația menționată mai sus, se procedează în felul următor pentru toate entitățile domeniului studiat.

Pasul următor în normalizarea BD este a doua formă normală 2NF, astfel o entitate se găsește în a doua formă normală dacă și numai dacă se află în prima formă normală și toate atributele sale sunt dependente de întreaga cheie. În cazul dat nici un atribut non-cheie nu este relaționat doar cu o parte a cheii.

Tehnica de descompunere pentru obținerea FN2 este foarte simplă: presupune construirea unei relații separate care să înglobeze dependențele parțiale și să înlăture atributele dependente din relația originală.

A treia formă normală presupune că o entitate se găsește în a doua formă normală și nici un atribut care nu este parte a UID-ului nu depinde de un alt atribut non-UID. Adică nu se acceptă dependențe tranzitive în care un atribut să depindă de UID în mod direct.

În cazul dat sunt userii care scriu în chat, ar putea trimite zeci de mesaje sau chiar mii, în așa caz informația fiecărui user se v-a transcrie de fiecare dată cînd v-a trimite un mesaj. Pentru a evita acest caz este nevoie de a crea o altă entitate ”mesaje” ca în exemplul de mai jos.

Fig. nr.2.6 – Forma normală 3 a tabelului user

În final baza de date este alcătuită din 5 tabele acestea sunt: user- tabelul care păstrează informația despre userii înregistrați sau invitați în proiect cu toate datele necesare, tabelul project păstrează toate informațiile referitor la proiectul creat și id-ul userului care l-a creat, urmează tabelul tasks cu cheia externă către tabelul user și proiect, adică un task aparține unui user care se află într-un anumit proiect, deoarece un user poate face parte din mai multe proiecte, la fel am procedat și cu tabelul messages, în sfîrșit tabelul table_id are referințe la tabelul project și user pentru a putea extrage toți userii care aparțin unui anumit proiect sau invers de a extrage toate proiectele care aparțin unui user.

Fig. nr.2.8 – Structura logică a bazei de date

2.3 Descrierea grafică а aplicației prin diagrame UML

Pentru analiza și proiectarea detaliată а proiectului vine în ajutor limbajul de modelare vizuală UML. Acesta este un limbaj universal standard pentru dezvoltatorii software și de asemenea o combinație excelentă a celor mai bune trei limbaje de modelare anterioare orientate pe obiecte (Booch, OMT, and OOSE). Limbajul UML reunește cele mai bune tehnici și practici din domeniul ingineriei programării, care și-au dovedit eficiența în construirea sistemelor complexe, rezultatul avînd o expresivitate foarte bună care ajută la rezolvarea diverselor probleme de modelare pe care vechile limbaje nu reușeau să le indeplinească foarte bine. UML ar putea îndeplini pe langă rolul de limbaj vizual de modelare și cel de limbaj vizual de programare, dar momentan nu dispune de întreg sprijinul semantic și vizual pentru a înlocui limbajele de programare.

Diagramele ce urmează a fi prezentate sun proiectate în mediul Enerprise Arhitect care este un instrument cu un set de opțiuni și vine cu scopul de a oferi posibilitatea de modelare a aplicațiilor.

Fig. nr.2.9 – Diagrama Use-Case corespunzătoare userului logat.

Figura nr. 2.9 reprezintă diagrama corespunzătoare userului logat în aplicația SIMP. Diagrama dată descrie vizual cele mai importante opțiuni pe care le oferă aplicația. Deci, fiecare user logat are posibilitatea de a invita membri în proiect, de a trimite task-uri, mesaje, să indice la ce etapă se află și sa vizualizeze starea proiectului să modifice datele personale și să se delogheze de pe aplicație.

Fig. nr.2.10 – Diagrama Use-Case corespunzătoare userului care a accesat aplicația

În această diagramă sunt reprezentate tipurile de relații între userul sistemului dat și cazurile de utilizare corespunzătoare acestuia. Astfel între user și aplicație se creeaza relații de asociere atunci cînd un utilizator dorește sa se înregistreze sau să se logheze pe sistemul dat. Fiecare caz de utilizare include niște operații obligatorii pentru a satisfice cazul de utilizare care conțin relații de tip include cum ar fi introducerea datelor personale, informații despre proiect, adăugarea echipei în cazul înregistrarii userului în aplicație. În cazul logăriise creează relații de tip include cu acțiunile introduce parola și loghin.

Fig. nr.2.11 – Diagrama de activități corespunzătoare trimiterii invitației e-mail unui nou membru.

În imaginea dată este reprezentată diagrama de activități ce corespunde procesului de adaăugare a unui membru nou în proiect printr-o invitație e-mail. Pentru aceasta userul logat, accesează sistemul, introdce e-mail-ul în cîmpul ”Invite a teammate” și apasă pe buttonul ”Add”, după aceste acțiuni se validează e-mail-ul, dacă informația introdusă nu este un e-mail atunci afișează un mesaj de eroare și se mai încearcă o dată, în cazul în care adresa de e-mail trece validarea în BD se înregistrează e-mail-ul dat și se trimite printr-un script PHP un mesaj de invitație care conține un link și la accesarea acestuia va apărea un formular unde va trebui de introdus e-mail-ul prin care a primit invitație și niște date de înregistrare. Se introduce e-mail-ul, se verifică dacă acesta există în BD, dacă nu există aplicația v-a afișa o eroare în caz contrar userul v-a accesa sistemul la proiectul în care a fost invitat.

Fig. nr.2.12 – Diagrama de activități corespunzătoare stării proiectului

În imaginea de mai sus este prezentată diagrama corespunzătoare procesului de indicare la ce etapă se află utilizatorul în realizarea sarcinilor pentru proiect. În așa mod pentru această acțiune userul accesează aplicația vizualizează informație, face click pe button, se afișează un popup în care indică starea proiectului, valoarea specificată se înregistrează în proiectul dat. Această valoare este calculată în raport cu alte date introduse de alți utilizatori și afișată în la accesarea opțiunii ”Statistică”.

Demonstrarea aplicației

Luînd în considerație că aplicația SIMP este realizată cu scopul de а ajuta persoanele să lucreze în echipă cu o eficiență maximă, s-а pus accentul pe simplitatea înregistrării pentru а oferi o economie а timpului. În acest mod, la accesarea aplicației sunt afișate opțiunile de înregistrare și logare și o descriere scrută а acesteia. Interfața oferă o ușurință înaltă în utilizare, memorabilitate, eficiență și design plăcut. În imaginea ce urmează este reprezentată pagina de start а aplicației.

Fig. nr.2.13 – Pagina de start aaplicației

La apăsarea butonului ”New project” apare o fereastră nouă fără reîncarcarea paginii în care v-or fi introduse datele personale pentru înregistrare.

Fig. nr.2.14 – Formularul de înregistrare a utilizatorului

La această etapă sunt două opțiuni sau se introduc datele personale și se continuă procesul de creare a proiectului după introducerea datelor personale prin click ”Next” sau reîntoarcerea la pagina de start prin click ”Cancel”.

Fig. nr.2.15 – Formularul de introducere a informației despre proiect

Fig. nr.2.16 – Formularul de adăugare a membrilor echipei

Aceasta este a treia și ultima etapă în crearea unui proiect. La această fază se introduc e-mail-urile membrilor echipei și se transmite mesaje de invitație cu un link pe care se vor înregistra.

Fig. nr.2.17 – Mesajele transmise membrilor echipei

Fig. nr.2.18 – Conținutul mesajelor

Fig. nr.2.19 – Pagina personală a userului

Pagina personală este împărțită în cinci componente de bază cum ar fi bara laterală din stînga care oferă datele personale, lista membrilor echipei, bara de sus oferă denumirea proiectului, data și un meniu în partea dreaptă. Cutia my tastk conține task-urile pe care le primește userul sau și în partea dreaptă mesageria, chatul comun al echipei.

Fig. nr.2.20 – Adăugarea taskului unui user

Fig. nr.2.21 – Starea realizarii task-urilor

Fiecare user are posibilitatea de a arăta la ce nivel se află în realizarea sarcinilor. Astfel managerul proiectul poate să monitorizeze starea proiectului.

Fig. nr.2.22 – Compartimentul de statistică

În imaginea de sus este reprezentat compartimentul de statistică care afișează la ce etapă se află proiectul.

Fig. nr.2.23 – Formularul de modificare a datelor personale

Fig. nr.2.24 – Mesageria

CONCLUZII

BIBLIOGRAFIE

http://www.utgjiu.ro/conf/8th/S3/20.pdf accesat: 06.04.2015

http://www.zota.ase.ro/simp/Sistem%20informational.pdf accesat: 09.04.2015

http://cec.vcn.bc.ca/mpfc/modules/mon-miru.htm accesat: 22.04.2015

http://en.wikipedia.org/wiki/Task_management accesat: 22.04.2015

http://www.managementul-proiectelor.ro/category/software-mp/ accesat: 25.05.2015

http://andrei.clubcisco.ro/cursuri/f/f-sym/4idp/1_Etapele_dezvoltarii_doc.pdf accesat: 25.05.2015

https://ru.scribd.com/doc/17754670/Limbajul-HTML accesat: 27.05.2015

http://ro.wikipedia.org/wiki/Cascading_Style_Sheets accesat: 30.05.2015

http://www.tutorialrepublic.com/twitter-bootstrap-tutorial/bootstrap-introduction.php accesat: 30.05.2015

https://developer.mozilla.org/en-US/docs/Web/JavaScript/About_JavaScript accesat: 30.05. 2015

http://www.cursuri-online.info/php_mysql/CeestePHPsiMySQL.htm accesat: 30.05.2015

http://www.marplo.net/php-mysql/introducere.html accesat: 01.05.2015

Similar Posts