Managementullor Software
Productia Software este efectul cresterii într-un ritm foarte sustinut al industriei IT, datorita noilor tehnologii care au aparut în viata de zi cu zi a populatiei. Ca urmare a acestui fapt, productia software poate fi privita ca orice alt tip de productie, unde, urmare a unui proces de productie avem un produs final, în cazul de fata fiind vorba de un program pentru un Computer Personal, un program pentru Telefonul Mobil, un program pentru Masina de spalat inteligenta si enumerarea ar putea continua, deoarece aproape toate produsele noi ce apar pe piata detin în interiorul lor un microcomputer.
Analog cu productia clasica, si productia software are un caracter inovativ care cere din partea dezvoltatorului un volum urias de creativitate, dar care creativitate nu poate fi pusa în responsabilitatea unui singur om, deoarece creierul uman are limitele sale. Ca urmare a acestui fapt, munca si creativitatea trebuie distribuita într-un mod riguros în echipe ce vor fi specializate pe anumite teme. În lipsa unui management bine structurat si în absenta unei organizari, proiectele software de mare anvergura pot determina pierderi de timp, resurse si termene de livrare, care se vor concretiza în pierderi financiare.
Din acest motiv s-au creat un set de procese organizationale care trebuie de faca fata urmatoarelor constrângeri:
-   737n1324h ;   737n1324h ; acopera cerintele clientilor
-   737n1324h ;   737n1324h ; proiectul se finalizeaza în timpul propus
-   737n1324h ;   737n1324h ; în procesul de dezvoltare nu sunt depasite costurile alocate.
Principala diferenta dintre Productia Industriala si Productia Software este ca în primul caz se urmaresc cu precadere procesele legate de bunuri materiale, care urmaresc multiplicarea conform cu specificatiile prototipului, iar în cazul productiei software este vorba de un ansamblu de activitati organizate legate în principal de partea de dezvoltare de programe, parti de programe sau sisteme de programe, în care scopul final este atingerea caracteristicilor bine definite ale produsului de dezvoltat.
Motivele care stau la baza managementului proiectelor software:
-   737n1324h ;   737n1324h ; pentru a se face o estimare initiala a costurilor legate de proiect, si a termenelor de predare ale proiectelor
-   737n1324h ;   737n1324h ; pentru a verifica daca programul propus este în grafic, iar în caz ca apar unele probleme legate de termeni de livrare sa se ia deciziile corespunzatoare
-   737n1324h ;   737n1324h ; pentru a avea un control asupra calitatii produsului dezvoltat, tinând cont ca, calitatea produsului este masura prin care se poate vedea satisfactia clientului pentru produsul achizitionat de la producator.
De obicei un produs software este obtinut printr-un proces de dezvoltare, care este compus din mai multe faze. Aceste etape sunt prezentate în Fig1.
Fig.1 Fazele de dezvoltare a produsului software
Cele 4 etape pot fi descrise astfel:
·   737n1324h ; Estimarea costurilor
·   737n1324h ; Verificarea termenelor de executie (daca se încadreaza sau nu în timpul planificat)
·   737n1324h ; Verificari de calitate
Se poate vedea ca din acest ciclu de productie software doar executia are de a face efectiv cu produsul ce trebuie livrat, restul proceselor sunt strict legate de management.
Procese, activitati si task-uri din interiorul unui proiect software
Multitudinea si complexitatea problemelor legate de dezvoltarea software au impus realizarea unor standarde pentru o abordare sistematica a unui proiect. Ca urmare a acestui fapt ISO (International Standard Organization) a creat un standard adresat în principal dezvoltatorilor software, acest standard fiind ISO/CEI 12207:1995.
Prin acest standard se urmareste realizarea unei platforme comune de dezvoltare si folosirea unei terminologii bine definite.
De comun acord cu standardele Proiectarii Software se definesc urmatorii termeni:
·   737n1324h ; Proces - un ansamblu de resurse si activitati independente orientate pentru realizarea unui scop bine definit
·   737n1324h ; Activitate - este o parte a unui proces, constituie un numar de actiuni prin care resursele legate de proces sunt folosite pentru realizarea proiectului
·   737n1324h ; Task - componenta a activitatilor legat de una sau mai multe activitati care este asumat unei persoane sau unui grup de persoane, el având responsabilitatea de a duce la bun sfârsit task-ul în timpul prognozat.
Din punctul de vedere al unui proiect software avem 3 tipuri de procese:
·   737n1324h ; Procese primare - legate în principal de realizarea efectiva a produsului software. Principalele parti ale acestui proces fiind achizitia proiectului, alocarea resurselor pentru proiect, dezvoltarea produsului, procese legate de utilizarea produsului si nu în ultimul rând întretinerea produsului.
·   737n1324h ; Procese de suport a produsului software:
-   737n1324h ;   737n1324h ; realizarea documentelor necesare pentru procesul de dezvoltare (planuri de actiune, rapoarte, specificatii, standarde interne, documente asociate ...);
-   737n1324h ;   737n1324h ; realizarea unui sistem de management al produsului software, pentru verificarea modificarilor realizate de la o versiune software la alta versiune software, stabilirea versiunilor produsului, crearea unei componente care ne poate da starea produsului ( functionalitati, disfunctionalitati, erori)
-   737n1324h ;   737n1324h ; realizarea proceselor de asigurare a calitatii - ce se defineste ca fiind un ansamblu de activitati care verifica într-un mod obiectiv, daca produsul software realizat îndeplineste specificatiile cerute si daca în dezvoltarea produsului s-au urmarit procesele de dezvoltare interne
-   737n1324h ;   737n1324h ; procese de testare - activitati care urmaresc verificarea produsului rezultat în urma procesului de dezvoltare.
-   737n1324h ;   737n1324h ; Procese de validare - definesc un ansamblu de activitati care verifica daca produsul software aflat în ultima faza, satisface cerintele avute în planul proiectului.
-   737n1324h ;   737n1324h ; Procese de auditare - este un set de activitati orientate spre a certifica daca produsul realizat se încadreaza în anumite normative, cerinte si programe. Auditarea nu are un impact asupra produsului final, prin acest proces verificându-se daca procesele primare sunt executate conform specificatiilor.
·   737n1324h ; Procese organizationale, sunt legate de infrastructura în acest caz referindu-ne efectiv la hardware, software, unelte de lucru, tehnici, standarde, cladiri folosite pentru facilitarea procesului de dezvoltare, întretinerea si exploatarea acestor cladiri pentru a fi complet operabile pentru dezvoltarea de activitati software. De asemenea aceste procese urmaresc si realizarea trainingurilor pentru programatori, cooptarea unor noi angajati, si chiar îmbunatatirea anumitor procese de productie software.
Procesul de dezvoltare software
Cea mai mare parte a întregului proiect software cu cel mai mare suport din partea celorlalte procese conexe.
Principalele activitati ce se executa în cadrul acestui proces sunt:
1.   737n1324h ; Initializarea procesului :
Va lua în considerare utilizarea unui ciclu de viata al produsului, în concordanta cu dimensiunea, complexitatea si domeniul de aplicabilitate al produsului software ce urmeaza a fi dezvoltat. Totodata se va elaborarea un Plan de Realizare al Proiectului, bazat pe documentatia proceselor, acest plan urmând urmatoarele reguli:
·   737n1324h ; Utilizarea unor anumite standarde, metode si unelte de dezvoltare specifice, acestea fiind în strânsa corelare cu procesele legate de infrastructura disponibila
·   737n1324h ; Împartirea activitatilor în task-uri, identificarea cunostintelor necesare pentru finalizarea task-urilor (cunoasterea unui anumit mediu de dezvoltare, a unui anumit limbaj de programare)
·   737n1324h ; Identificarea persoanei înzestrate cu aceste abilitati, iar în cazul în care nu exista o astfel de persoana, realizarea de traininguri pentru persoana careia i se va aloca acest task
·   737n1324h ; Identificarea proceselor de dezvoltare
·   737n1324h ; Identificarea rezultatelor ce trebuiesc realizate pe parcursul procesului de dezvoltare, în strânsa legatura cu caracteristicile proiectului.
2.   737n1324h ; Analiza cerintelor Software si de Sistem
Ca si rezultat final al acestui proces, un document numit 'Specificatii' va fi creat. În acest document vor fi trecute toate cerintele legate de proiect cum ar fi:
·   737n1324h ; Optiunile si posibilitatile de lucru ale produsului software si ale sistemelor
·   737n1324h ; Securitatea, ergonomia si cerintele financiare legate de produs
·   737n1324h ; Infrastructura si resurse umane necesare
·   737n1324h ; Interfata cu utilizatorul si cu alte componente software sau sisteme software existente
·   737n1324h ; Exploatarea si întretinerea produsului software
·   737n1324h ; Documentatia pentru utilizatorul final al produsului software
De asemenea în cadrul analizei se definesc testele de Validare a produsului.
3.   737n1324h ; Arhitectura si designul sistemului
La baza acestui pas stau documente legate de:
4.   737n1324h ; Designul detaliat al produsului Software
Elaborarea unui set de documente care detaliaza principiile de baza. Se vor urmarii urmatori pasi:
5.   737n1324h ; Codarea - implementarea efectiva a fiecarei unitati software, avându-se în vedere regulile de codare software si obtinerea unui produs compatibil cu cerintele date în faza de design al unitatii.
6.   737n1324h ; Testarea codului scris - poarta numele de 'Qualification Test'. Este realizata conform cu planul de testare al unitatii software si trebuie sa urmareasca daca rezultatele testelor sunt documentate ca si Rapoarte de testare, iar problemele legate de buguri software sunt rezolvate urmând procesul de remediere al defectelor software.
7.   737n1324h ; Integrarea sistemului - prezinta un set de activitati legate de integrarea componentelor software cu componentele hardware sau cu elemente componentelor ale altor sisteme.
8.   737n1324h ; Teste de integrare - poarta numele de 'System qualification test ' si verifica functionarea corecta a întregului sistem, realizeaza rapoartele de testare si în cazul aparitiei erorilor sau a problemelor se recurge la rezolvarea defectelor prin aplicarea proceselor de remediere software.
9.   737n1324h ; Instalarea Software-ului - este o problema legata de instalarea produsului software pe platforma utilizatorului (PC, telefon mobil, ...).
Suportul si validarea sistemului - este dat de catre programator pentru utilizatorul final si consta în:
·   737n1324h ; Asistenta si teste de validare a sistemului,
·   737n1324h ; Validarea sistemului conform cerintelor date în specificatii,
·   737n1324h ; Rezultatele testarilor vor fi salvate în documente specifice,
·   737n1324h ; Daca apare vreun defect pe parcursul functionarii, problema va fi rezolvata conform Proceselor de remediere a defectelor
·   737n1324h ; În caz de sfârsit fericit al acestui pas, se poate considera ca procesul de dezvoltare sa terminat.
Ciclul de viata al unui proiect software
Pornind de la Planul proiectului, trebuie observat ca în cadrul procesului de dezvoltare trebuie urmariti anumiti pasi, si în acelasi rând trebuie observat ca produsul software trebuie întretinut. Ca si activitate în procesul de dezvoltare, ciclul de viata al unui proiect este vazut ca si o activitate de dezvoltare si suport al produsului software.
Principalele modele de descriere a ciclului de viata al unui proiect sunt:
- modelul cascadei - este un model liniar, clasic, fiind cel mai vechi. In figura 2 este prezentat modelul cascada. Aplicabil în proiecte de complexitate redusa sau în cazul în care cerintele initiale sunt foarte bine definite.
Fig.2 Modelul Cascadei
-   737n1324h ;   737n1324h ; Modelul V - de asemenea este un model liniar care cere specificatii bine definite sau disponibilitatea programatorului de a participa efectiv la crearea specificatiilor proiectului. Exemplul modelului V este prezentat in Figura 3.
Fig.3 Modelul V
-   737n1324h ;   737n1324h ; Prototip - este un model în care clientul nu poate participa la realizarea unei liste bine definite de cerinte. Din acest motiv analiza si design-ul se realizeaza într-un mod iterativ. Rezultatul obtinut va modifica iterativ analiza si designul sistemului. Din acest motiv sunt necesare unelte rapide pentru realizarea prototipurilor într-un timp foarte scurt. Figura 4 prezinta modelul prototip
Figura.4 Modelul Prototip
-   737n1324h ;   737n1324h ; Modelul Spirala: folosit cu precadere în proiecte cu o complexitate marita si cu riscuri de dezvoltare marite, în proiecte de urmeaza sa foloseasca tehnologi foarte speciale, proiecte în care nu se stie modalitatea concreta în care se pot realiza problemele clientului, proiecte foarte scumpe. Acest model poate fi vazut ca o repetare a ciclurilor liniare, fiecare ciclu adaugat spiralei, adauga în acelasi timp noi functionalitati produsului software. În figura 5 este prezentat modelul spirala.
Fig5. Modelul Spirala
În concluzie, realizarea unui produs software, este strâns legata de urmarea unor pasi bine stabiliti, deoarece numai asa se pot reliza proiecte de anvergura care sa poata fi întretinute usor în timp, si care sa determine costuri productie relativ scazute. Ca urmare a acestor idei, programatorul trebuie sa stie ca un produs software bun, nu este acel produs care realizeaza functiunile cerute de client, ci este produsul care pe suplimentar acestor cerinte ofera si stabilitatea functionarii în timp, posibilitatea de a putea fi adaugate noi caracteristici programului dezvoltat, o întretinere usoara a produsului, si posibilitatea reutilizarii componentelor software si în alte proiecte.
|