Documente Academic
Documente Profesional
Documente Cultură
Managementul Proiectelor Software PDF
Managementul Proiectelor Software PDF
- Principii generale -
Scopuri:
Stabilirea obiectivelor proiectrii software Identificarea diferenelor ce apar la dezvoltarea proiectele software i la dezvoltarea altor proiecte Definirea etapelor uzuale ale unui proiect software nelegerea nevoii de planificare, monitorizare i control Msurarea succesului unui proiect n ndeplinirea obiectivelor
1) Introducere
Un proiect este o activitate planificat. Obs. Un task repetat de un numr de ori nu este un proiect. Obs. Amploarea proiectului este foarte important. Un proiect ce implic 200 oameni difer (ca management) fa de unul ce implic 2 oameni.
c) Executarea proiectului: Un ciclu de via tipic al unui proiect (typical project life-cycle) este urmtorul:
Detalierea etapelor
Verificare
i validarea: operaie necesar pentru depistarea i corectarea eventualelor erori (errors, bugs, faults) din sistem.
5) Proiectul ca sistem
Un proiect se ocup de crearea unui nou sistem sau/i de transformarea unuia vechi. Sistem (system) = mulime de pri intercorelate Un sistem poate fi parte a unui sistem mai mare i poate avea ca pri componente subsisteme (subsystem). n afara sistemului exist aa numitul mediu al sistemului (systems environment), adic acele elemente care pot afecta sistemulo, dar asupra crora sistemul nu are control. Sistemele deschise (open systems) sunt sistemele ce interacioneaz cu mediul. Aproape toate sistemele sunt deschise.
6) Ce este managementul?
Managementul presupune urmtoarele activiti: Planificare ce trebuie fcut; Organizare making arrangements; ncadrarea personalului selectarea oamenilor potrivii; Conducere, ndrumare se dau instruciuni; Monitorizare verificarea progresului; Control aciuni care s remedieze penele; Inovare propunerea de noi soluii; Prezentare legtura cu utilizatorii.
Pe de alt parte, cele mai frecvente provocri pentru un manager sunt urmtoarele (printre altele): S fac fa deadlines-urilor (85%); S fac fa restriciilor legate de resurse (83%); Comunicarea efectiv de sarcini (80%); Ctigarea angajamentului membrilor echipei (74%); Stabilirea unor pietre de hotar msurabile (70%); S fac fa schimbrilor (60%); S fac fa conflictelor (42%); S gestioneze vnztorii i sub-contractorii (38%). Procentele de mai sus se refer la numrul de manageri care au identificat fiecare item. Un manager poate identifica mai mult dect un item.
Problemele ce apar (d.p.d.v. al membrilor echipei) sunt: descrierea inadecvat a muncii sale; ignorana managerului n IT; lipsa cunotinelor n aria sa de munc; lipsa standardelor; lipsa documentaiei la zi; activiti anterioare neterminate la timp; lipsa comunicrii ntre utilizatori i tehnicieni; schimbarea software environment; presiunea dat de deadline; lipsa controlului de calitate; lipsa trainingului.
8) Controlul managementului
A) Ciclul de control al proiectului Managementul, n general, poate fi vzut ca un proces de stabilire a obiectivelor i apoi monitorizarea sistemului pentru a vedea care este performana sa adevrat.
B) Obiective Managerul i echipa sa trebuie s stabileasc clar obiectivele, pentru a se putea concentra asupra lucrurilor eseniale i a defini astfel criteriile de succes ale proiectului. Dac exist mai multe grupuri de utilizatori, atunci trebuie s existe o autoritate a proiectului, care s aib autoritatea global asupra proiectului. n acest caz, exist i un comitet de organizare, care are responsabilitatea global pentru stabilirea, monitorizarea i schimbarea obiectivelor. Managerul este responsabil pentru derularea proiectului zi de zi, dar el trebuie s raporteze periodic comitetului de organizare stadiul evoluiei proiectului.
C) Msurarea eficacitii Obiectivele efective sunt bine definite. Un enun vag, de tipul s mbunteasc relaia cu clientul, nu e un obiectiv. Dar reformularea reducerea plngerilor clienilor cu 25% poate fi un obiectiv. Msura eficacitii poate fi, n anumite cazuri, un rspuns simplu (da/nu) la o ntrebare, de pild ai instalat noul software sptmna trecut? D) Sub-obiective i scopuri (goals) n multe situaii, un obiectiv se poate mpri n sub-obiective. De exemplu, pentru atingerea obiectivului A, trebuie ndeplinite n prealabil obiectivele B i C. Aceste sub-obiective se mai numesc scopuri (goals).
9) Stakeholders
Sunt persoane cheie care au un anumit interes n proiect,. Aceste persoane trebuie identificate ct mai devreme cu putin, n vederea stabilirii unui canal de comunicaii. Nu toate persoanele implicate n proiect au aceleai motivaii. Stakeholders pot fi: interni n echipa proiectului: vor fi sub controlul managerial direct al liderului de proiect; externi echipei proiectului, dar n aceeai organizaie: de exemplu, liderul proiectului ar putea avea nevoie de asisten din partea grupului de management al informaiei n ideea de a aduga tipuri de date noi n baza de date. n acest caz, trebuie negociat angajamentul acelor persoane. externi echipei i organizaiei: n acest caz, stakeholders pot fi clienii, cu care trebuie ncheiat un contract.
B) Cerine de calitate: cum trebuie s se comporte sistemul, de exemplu timp de rspuns, uurina folosirii, fiabilitate
Membrii echipelor proiectului au un lider de grup, care, mpreun cu ali lideri de grup, raporteaz catre managerul de la nivelul superior. Spre vrf, tot mai puine persoane trebuie s ia hotrri i cantitatea d einformaii crete.
Deciziile pot fi grupate astfel: decizii strategice: eseniale pentru obiectivele ferme; decizii tactice: necesare pentru a se asigura c obiectivele vor fi ndeplinite. Liderul de proiect trebuie s ntocmeasc un plan concret de aciuni pentru ndeplinirea obiectivelor i s monitorizeze progresul activitii; decizii operaionale: se refer la munca de zi cu zi pentru implementarea proiectului
Eficacitatea se refer la a face lucrul potrivit. Eficiena se refer la folosirea optim a resurselor.
C) Msurtori n proiectele mai mari, liderii de proiect trebuie s gestioneze o cantitate mare de informaii. Aceste informaii nu trebuie s fie vagi i, ideal, ar trebui s fie cantitative. Msurtorile software (software measurements) se divid n: msurtori ale performanei: msoar caracteristicile sistemului livrat. Msurtorile includ timpul mediu dintre defeciuni i timpul de nvare a aplicaiei (useability); msurtori predictive: se fac n timpul dezvoltrii i arat care va fi performana aproximat a sistemului.
Concluzii
Proiectele sunt prin definiie activiti non-rutin i de aceea mai nesigure dect alte sarcini; Proiectele software sunt similare cu alte activiti, dar au anumite atribute ce prezint dificulti, cum ar fi de exemplu invizibilitatea relativ a multor produse; Un factor cheie n succesul unui proiect este stabilirea unor obiective clare. Diferite persoane cheie din proiect (stakeholders) pot avea interese diferite. De aceea e necesar o autoritate recunoscut care s rspund de ntregul proiect; Pentru ca obiectivele s aib concretee, trebuie s existe ci practice de a verifica c obiectivele se ndeplinesc. Asta conduce la nevoia de msurtori; Trebuie s existe msurtori obiective de succes, n ideea de a ajuta la comunicarea neambigu a diverselor pri implicate n proiect.
Calitatea software-ului
1. Introducere
Dei calitatea este un lucru bun, calitatea unui sistem, n practic, poate fi un atribut vag i insuficient definit. De aceea trebuie s se defineasc exact ce caliti cerem unui sistem. Calitatea privete toate etapele planificrii i executrii proiectului, dar se dovedete de un interes particular n urmtoarele etape: Identificarea infrastructurii proiectului; analiza caracteristicilor proiectului; identificarea produselor i activitilor; revizuirea i editarea planului.
James A.McCall (An Introduction to Software Quality Metrics, 1978) ncearc s identifice caliti specifice produselor, potrivite software-ului. El grupeaz calitile software n 3 mulimi: product operation qualities; product revision qualities; product transition qualities.
Factorii product operation quality Corectitudinea. Marja pn la care programul staisface specificaiile i ndeplinete obiectivele utilizatorului; Fiabilitatea. Marja pn la care se ateapt ca programul s lucreze n parametrii specificai cu precizia dorit; Eficiena. Cantitatea de resurse cerut de software; Integritate. Marja pn la care accesul la software sau date a persoanelor neautorizate poate fi controlat; Usability (mod de utilizare). Efortul necesar pentru a nva, opera, pregti intrarea i interpreta ieirea. Factorii product revision quality ntreinere. Efortul necesar pentru localizarea i repararea erorii ntr-un program operaional; Testabilitatea. Efortul necesar pentru a testa un program pentru a asigura c lucreaz n parametrii specificai; Flexibilitate. Efortul necesar pentru a modifica un program operaional.
Factorii product transition quality Portabilitate. Efortul necesar pentru transferul programului de pe o configuraie hardware i un mediu software pe alta/altul; Refolosirea. Marja pn la care un program poate fi utilizat n alte aplicaii; Interoperabilitate. Efortul necesar pentru a cupla un sistem cu altul. Pentru fiecare criteriu, trebuie inventate nite msuri pentru a evalua gradul n care calitatea e prezent. Orice msur relativ bun trebuie s compare numrul unitilor la maximul posibil n acele circumstane. De exemplu, numrul maxim de erori ntr-un program va fi raportat la mrimea programului, astfel nct msura numrul de erori la mia de linii de cod e mai util dect numrul de erori din program. n anumite cazuri putem msura calitatea n mod direct, n timp ce n altele lucrul msurat nu e calitate propriu-zis, dar reprezint un indicator care s indice n ce grad e prezent calitatea.
Funcionalitate
Suitability (ct de potrivit este) Acuratee Interoperabilitate (abilitatea de a interaciona) Conformitate (compliance)(fa de standardele legale) Securitate Maturitate (frecvena eecurilor datorate erorilor) Toleran la erori Recuperabilitate nelegere (Understandability) nvare (Learnability) Operabilitate (Operability)
Siguran
Usability
Obs. Understandability e calitatea de a putea ptrunde conceptele logice i aplicabilitatea lor. Learnability este diferit de operability. Un instrument software poate fi uor de nvat, dar consumator de timp la utilizare, deoarece, de exemplu, utilizeaz un numr mare de meniuri n cascad.
Eficien
Mentenabilitate
Obs. Analisability (sau diagnosability) este uurina cu care de determin cauza unui eec. Changeability (sau flexibility) implic faptul c furnizorii de software l schimb totdeauna. Stabilitatea nseamn c exist un risc mic ca o modificare a software-ului s aib efecte neateptate.
Portabilitate
Obs. Conformance, spre a se distinge de compliance, se refer la acele standarde care privesc portabilitatea. Exemplu: folosirea unui limbaj de programare standard n multe medii software/hardware e exemplu de conformance. Obs. Replaceability se refer la factori care dau compatibilitatea n sus ntre componentele software vechi i cele noi.
ISO 9126 ofer anumite indicaii privind folosirea caracteristicilor de calitate. Pentru sistemele interactive (interactive end user system), elementul primordial d.p.d.v. al calitii ar fi usability. O dat cerinele software stabilite, se stabilesc urmtorii pai: Selectarea metricilor de calitate. Nu sunt date indicaii n standardul ISO 9126 privind aplicabilitatea diverselor msuri ce trebuie folosite. Definirea nivelelor de rating. Metricile folosite trebuie s se mapeze pe scale care s indice gradul n care au fost satisfcute cerinele. Definirea criteriilor de evaluare. Este felul n care scorurile d.p.d.v. al calitii se combin pentru a da o vedere de ansamblu asupra produsului. Mai jos e dat un exemplu de acordare a scorurilor:
Mentenability Poate fi vzut ca flexibilitate plus diagnosability, care poate fi definit drept timpul mediu necesar pentru diagnosticarea unei erori. Obs. D.p.d.v. al utilizatorului, mentenability privete timpul scurs ntre detectarea unei erori i corectarea ei, iar d.p.d.v. al managementului de programare ca efortul necesar.
Extendibility (capacitatea de a fi extins) E o component a flexibilitii. Se definete ca productivitatea necesar pentru a ncorpora anumite caracteristici noi n sistemul existent.
6. Standarde externe
Unele standarde de calitate au fost gndite pentru toate produsele, nu doar pentru produsele software. I) O privire asupra cerinelor standardului BS EN ISO 9001: a) Conducerea trebuie s defineasc i s documenteze politic privind calitatea i trebuie s asigure c aceast politic e adus la cunotina persoanelor din toate nivelele; b) Toate procedurile de control al calitii trebuie documentate; c) Toate contractele pentru a furniza bunuri i servicii trebuie s conin cerine agreate mutual pe care dezvoltatorul este capabil s le livreze; d) Trebuie s existe proceduri pentru controlul i verificrea designului sistemului ce urmeaz s fie livrat, astfel nct s fie ndeplinite cerinele stabilite cu utilizatorul; e) Trebuie s existe proceduri care s aprobe designul i documentaia auxiliar. f) Acolo unde componentele sistemul ce urmeaz s fie livrate sunt obinute de la un partener extern, trebuie s existe proceduri care s asigure, s verifice i s menin calitatea acestor componente;
g) Produsele individuale trebuie s fie identificabile, precum i componentele sale; h) Procesul prin care e creat produsul final trebuie s fie planificate i monitorizare; i) Inspecia i testarea trebuie s aib loc n timpul fazei de dezvoltare i nainte de livrare. De asemenea, testele i inspeciile trebuie s se fac i asupra componentelor obinute de la parteneri extern. j) Echipamentul folosit n procesul de producie trebuie s fie controlat adecvat n privina calitii; k) Statutul testrii pentru toate componentele i sistemele trebuie s fie nregistrat clar n toate etapele; l) Trebuie avut grij ca itemii care sunt cunoscui ca potenial de a se defecta s fie folosii cu mare atenie; m) Cnd se identific un defect, trebuie luate msuri pentru ndeprtarea prii defecte i pentru a ne asigura c defectul nu apare din nou; n) Trebuie s existe proceduri corespunztoare manipularrii, stocrii, mpachetrii i livrrii produsului; o) Trebuie meninute suficiente nregistrri care s demonstreze c sistemul de asigurare a calitii lucreaz cu succes;
p) Sistemul de management al calitii software trebuie s fie supus auditului; q) Activitile de service i suport trebuie s fie subiect pentru sistemul de management al calitii; r) Dezvoltatorul trebuie s stabileasc tehnici statistice potrivite care s verifice c produsul final poate fi recepionat.
II) TickIt. Department of Trade and Industry (DTI) a formulat standardul TickIt, care d interpretarea standardului ISO 9000 (mai ales n ceea ce privete dezvoltarea software). Acesta include cerine, cum ar fi: a) Trebuie s existe un plan de dezvoltare detaliat de a ncepe dezvoltarea; b) Vor fi folosite proceduri de control n toate etapele dezvoltrii; c) Trebuie fcute revizuiri ale designului; d) Trebuie revizuit metodologia suitability designului; e) Trebuie revizuit progresul sistematic;
f) Trebuie s fie posibil gsite caracteristicile designului software la specificaii i cerine; g) Designul trebuie documentat corespunztor; h) Trebuie produse planurile de testare potrivite, specificaiile i nregistrrile; i) Trebuie pus n practic un code of practice, care guverneaz felul n care software-ul e dezvoltat. Code of practice trebuie s includ cerine precum: Designul trebuie s fie divizat pe nivele, fiecare cu intrri i ieiri identificabile; Software-ul trebuie organizat pe module; Un modul trebuie s ndeplineasc n mod normal o singur funcie sau o mulime de funcii nrudite; o descriere trebuie s existe pentru fiecare modul.
III) Capability process models n loc s verifice c un sistem e n stare s detecteze erori, un client poate cere c vad dac furnizorul folosete metode i instrumente de dezvoltare software care s fie potrivite pentru a produce un software de bun calitate. n SUA s-a dezvoltat un capability maturity model (CMM) la Software Engineering Institute (SEI). Acesta ncearc s plaseze organizaiile care produc software ntr-unul dintre cele 5 nivele de maturitate pentru a indica ct de sofisticate sunt i ct de calitative sunt practicile de producere a software-ului. Aceste nivele dunt definite dup cum urmeaz: Nivelul 1: Initial Procedurile urmate tind s fie ntmpltoare. Anumite proiecte vor avea succes, dar asta datorit doar priceperii unor profesioniti din echip (inclusiv managerii). Nu exist nivel 0 i de aceea orice organizaie va fi implicit la acest nivel. Nivelul 2: Repeatable Organizaiile de la acest nivel vor avea proceduri de baz pentru managementul proiectelor. Totui felul n care o sarcin individual e dus la bun sfrit va depinde n mare msur de persoana care o face.
Nivelul 3: Defined Organizaiile au definit felul n care fiecare sarcin a ciclului de via al dezvoltrii software va fi fcut. Nivelul 4: Managed Produsele i procesele implicate n dezvoltarea software sunt subiect al msurii i controlului. Nivelul 5: Optimizing mbuntirile aduse procedurilor sunt concepute i implementate folosind datele adunate n proceseul de msurare.
Pentru fiecare dintre aceste nivele, exceptnd nivelul 1, s-au identificat arii de proces cheie (key process areas KPAs) care s fac distincia ntre nivelul curent i nivelele mai joase. Aceste KPAs sunt listate mai jos:
Dintre tehnicile specifice temelor majore aminitite, enumerm: Inspeciile Metoda Fagan (vezi M.E.Fagan: Design and code inspections to reduce errors in program development, IBM System Journal, 15(3)). Programarea structurat (Dijkstra a introdus conceptul, iar Harlan Mills a dezvoltat conceptul, mprind dezvoltarea software n 3 echipe: una pentru specificaii, una pentru dezvoltare a codului i una de testare) Metode formale (care definesc pre- i post- condiii pentru fiecare procedur) Software quality circles (SWQC) ( tehnic aprut n Japonia): un quality circle e un grup de 4-10 oameni lucrnd n aceeai arie, care se ntlnesc o or pe sptmn (de exemplu) pentru a identifca, analiza i rezolva problemelor legate de munca lor comun. Abordarea GQM (Goal/Question/Metrics)
Concluzii
Calitatea n sine e un concept vag i cerinele de calitate practice trebuie definite cu mare atenie Trebuie s existe moduri practice de testare a prezenei sau absenei calitii Multe dintre calitile care sunt aparente utilizatorilor de software pot fi testate doar atunci cnd sistemul e complet E nevoie deci de modaliti de verificare a calitii probabile n timpul dezvoltrii Anumite tehnici de cretere a calitii se concentreaz pe testarea produselor procesului de dezvoltare, n timp ce altele ncearc s evalueze calitatea proceselor de dezvoltare folosite.
Calitatea software-ului
- Laborator -
Problema 1. Un sistem cuprinde 5000 SLOC, pentru implementarea cruia a fost nevoie de 400 zile-munc. Un amendament la sistem a provocat adugarea a 100 SLOC, care au luat 20 zile-munc pentru implementare. Calculai: a) productivitatea sistemului original b) Productivitatea pentru amendament c) Extendibilitatea Problema 2. Sugerai specificaii de calitate pentru un editor de texte.
Problema 3. Un sistem a fost instalat i e disponibil n mod normal de la 8 a.m. la 6 p.m., de luni pn vineri. ntr-o perioad de 4 sptmni, sistemul a fost indisponibil timp de o ntreag zi din cauza unor probleme cu harddiscul i indisponibil alte 2 zile pn la 10 a.m. Din cauza unor uniti. Care este availability i timpul mediu dintre eecuri (failures), presupunnd c au fost 3 eecuri?
Problema 4. Identificai instane specifice n mediul de dezvoltare software unde sunt relevante cerinele: a) privind controlul echipamentului (punctul (j) din standardul BS EN ISO 9001); b) privind nregistrarea statusului testrii al tuturor componenetelor (punctul (k) din standardul BS EN ISO 9001); c) privind mnuirea corect, depozitarea, mpachetarea i livrarea produsului (punctul (m) din standardul BS EN ISO 9001) Ce proceduri s-ar aplica n mediul software n legtur cu aceste necesiti?
Indicaii i rspunsuri
Problema 1. Un sistem cuprinde 5000 SLOC, pentru implementarea cruia a fost nevoie de 400 zile-munc. Un amendament la sistem a provocat adugarea a 100 SLOC, care au luat 20 zile-munc pentru implementare. Calculai: a) Productivitatea sistemului original b) Productivitatea pentru amendament c) Extendibilitatea Soluie. a) Productivitatea sistemului original=5000/400=12,5 b) Productivitatea pentru amendament=100/20=5 c) Extendibilitatea=5/12,5x100=40%
Problema 2. Sugerai specificaii de calitate pentru un editor de texte. Indicaii. Software-ul se poate diviza ntr-un numr de arii de interes, care se evalueaz separat, cum ar fi pregtirea documentului, prezentarea, mbinarea corespondenei etc. De exemplu; Calitate uurina nvrii; Definiie timpul necesar unui novice pentru a nva s opereze a.. s produc un document standard; Scara ore Test oferii-i sistemul, un manual de utilizare i un document pe care sl pregteasc. Cronometrai ct i ia (considerai, de exemplu, c planificat este 2 ore, cel mai bun caz i ia 1 or, cel mai ru 4 ore)
Problema 3. Un sistem a fost instalat i e disponibil n mod normal de la 8 a.m. la 6 p.m., de luni pn vineri. ntr-o perioad de 4 sptmni, sistemul a fost indisponibil timp de o ntreag zi din cauza unor probleme cu harddiscul i indisponibil alte 2 zile pn la 10 a.m. Din cauza unor uniti. Care este availability i timpul mediu dintre eecuri (failures), presupunnd c au fost 3 eecuri? Soluie. Sistemul trebuie s fie disponibil n fiecare zi 18-8 = 10 ore. Pe perioada de 4 sptmni va trebui s fie disponibil 10x5x4 = 200 ore. Nu a fost disponibil o zi, adic 10 ore. Nu a fost diponibil nc 2 zile, adic 2x(10-8) = 4 ore. A fost disponibil deci 200 10 4 = 186 ore. Availability este aadar 186/200x100 = 93%. Timpul mediu dintre eecuri este 186/3 = 62 ore.
Problema 4. Identificai instane specifice n mediul de dezvoltare software unde sunt relevante cerinele: Indicaie. b) Statusul testrii. Componentele software care sunt actualizate nu sunt eliberate ctre utilizatori nainte ca o testare adecvat s fie fcut.
Evaluarea proiectului
1. Introducere Ideea de a ncepe (continua) munca la un proiect este de fapt compararea unui proiect cu alternativele sale i hotrrea de a merge mai departe sau nu. Evaluarea se va baza pe criterii strategice, tehnice i economice. Evaluarea proiectului se face n pasul 0 al Step Wise.
2. Evaluarea strategic Programul (programme) este definit ca un grup de proiecte ce ce sunt manageriate ntr-un mod coordonat pentru a obine un beneficiu care nu s-ar obine dac proiectele ar fi manageriate independent (D.C.Ferne, 1991). De aceea e nevoie de un plan strategic care s defineasc obiectivele organizaiei. n acest fel se definesc scopurile programului. Va exista aadar, mai ales n cazul organizaiilor mari, o structur organizatoric pentru managementul programului. Responsabil va fi un director de program. Chiar dac nu exist un program explicit definit, orice proiect propus va fi evaluat n cadrul general al obiectivelor de business ale organizaiei.
Plan IS
Ce informaii va aduce sistemul i la ce nivel? Ce implicaii aduce asupra politicii globale asupra personalului? n ce fel va afecta imaginea clienilor organizaiei noul sistem?
3. Evaluarea tehnic Const n evaluarea funcionalitii fa de hardware-ul i software-ul existent. 4. Analiza costurilor - beneficiilor Orice proiect ce necesit investiii trebuie s obin cel puin un beneficiu mai mare dect dac s-ar depozita suma de investiii ntr-o banc, de exemplu. Trebuie aleas cea mai bun opiune de proiect dintre cele disponibile. Analiza costurilor beneficiilor se face n dou etape: identificarea i estimarea tuturor costurilor i beneficiilor pentru ducerea la bun sfrit a proiectului. exprimarea acestor costuri i beneficii n uniti comune.
Trebuie evaluat beneficiul net, ca diferen dintre beneficiul total i costurile totale. De accea, trebuie exprimate beneficiile i costurile n bani efectivi.
Clasificarea costurilor:
Costuri de dezvoltare: include salariile i alte costuri pentru echipa de dezvoltatori ai proiectului, precum i costurile asociate. Costuri de organizare (setup): costurile pentru punerea sistemului n practic i include costurile pentru orice hardware nou i echipamente auxiliare, dar i pentru conversia fiierelor, recrutarea i pregtirea personalului. Costuri operaionale: include costurile necesare dup ce sistemul a fost instalat.
Clasificarea beneficiilor:
Beneficii directe: sunt mai uor de estimat, din exploatarea direct a sistemului. Beneficii indirecte estimabile: sunt n general beneficii secundare, cum ar fi acurateea crescut prin introducerea unei interfee mai prietenoase, la care putem aprecia reducerea erorilor. Beneficii indirecte intangibile: sunt beneficii foarte greu de cuantificat.
Dificultatea i importana cash-flow forecasting e evideniat de numrul companiilor care dau faliment deoarece, dei dezvolt produse sau servicii profitabile, nu pot susine cheltuieli neplanificate (se observ i din grafic ca la nceput e necesar s se fac investiii, venitul aprnd cnd sistemul poate fi exploatat).
De exemplu, tabelul de mai jos indic estimarea cash flow pentru 4 proiecte:
Profitul net: este diferena dintre venitul total i cheltuieleile totale. n tabelul precedent, proiectul 2 are profitul net cel mai mare, dar necesit i cea mai mare investiie iniial (1 milion). Perioada de restituire (Payback period): este timpul scurs pn la acoperirea investiiei iniiale. Tem: calculai perioada de restituire pentru fiecare proiect din tabelul precedent. Return on investment (ROI) sau Accounting rate of return (ARR) este o metod de a compara profitabilitatea net cu investiia cerut: Tem. Calculai ROI pentru fiecare dintre proiectele prezentate n tabelul precedent. Un dezavantaj al acestui criteriu este acela c nu ine seama de timpul necesar al cash-flow.
Net present value (NPV) i internal rate of return (IRR) sunt cunoscute ca tehnici de discounted cash flow (DCF). Calcularea NPV este o tehnic de evaluare a proiectului i ia n calcul profitabilitatea proiectului i timing-ul cash flows care sunt produse. Se determin prin reducerea (discounting) viitoarelor cash flows cu un procent numit rat de discount.
Tem. Calculai NPV pentru proiectele 2,3 i 4 i indicai care dintre proiecte poate fi ales, pe baza criteriului NPV.
Internal rate of return (IRR). Un dezavantaj al NPV ca msura a profitabilitii e acela c, dei e utilizat ca metod de comparare a proiectelor, s-ar putea s nu fie direct comparabile cu ctigurile cu alte investiii. IRR ncearc s ofere o msur a profitabilitii ca un beneficiu procentual ce e direct comparabil cu ratele dobnzilor (interest rates). De aceea, un proiect ce are IRR de 10% va merita dac, de exemplu, capitalul poate fi mprumutat cu mai puin de 10% sau dac nu poate fi investit n alt parte cu un beneficiu mai mare de 10%. IRR e calculat ca rata de discount procentual ce va produce NPV cu valoare 0. Se poate calcula cu uurin folosind, de exemplu, Microsoft Excel, care are implementate funcii specifice. Obs. Se pot gsi mai multe valori care s produce o valoare 0 a NPV. n acest caz, se poate lua valoarea cea mai mic i ignora celelalte valori.
Obs. NPV i IRR nu ofer totui rspunsul complet la o evaluare economic a unui proiect. O evaluare total trebuie s ia n considerare problemele de funding of cash flows. n timp ce IRR ar putea indica un proiect profitabil, viitoarele ctiguri ar putea fi de departe mai mici dect dac s-ar fi depozitat banii ntr-o banc. De accea trebuie luat n calcul ca un proiect s aduc un beneficiu cu mai mult de 15%, s zicem, fa de interest rates. Trebuie avut n vedere o ntrebare de genul: dac finanm acest proiect, mai putem finana i alte proiecte valoroase?
7. Evaluarea riscurilor
Principalul risc este acel c proiectul s-ar putea s nu ndeplineasc obiectivele pentru care a fost gndit. Nu e un risc dac proiectul se termin mai repede dect a fost planificat i folosind un buget mai mic! Identificarea i clasificarea riscurilor O abordare pentru analiza riscurilor ar fi s se creeze o matrice a riscurilor posibile folosind o list cu riscurile posibile i s clasificm fiecare risc n raport cu importana lui i probabilitatea de apariie. Exemplu de o parte de astfel de matrice, unde H mare (high), M medie, L sczut (low). ntr-un capitol ulterior se dau detalii.
Riscurile i NPV Cnd un proiect e relativ riscant, e bine s se foloseasc o rat de discount mai mare pentru calculul NPV. Analiza cost-beneficiu O abordare mai sofisticat a evalurii riscurilor este s se considere fiecare posibil efect i estimarea probabilitii ca el s apar. n loc de o singur estimare a cash flow, vom avea o mulime de cash flows, fiecare cu o probabilitate de apariie. Valoarea proiectului e obinut prin nsumarea costurilor sau beneficiilor pentru fiecare rezultat, sum ponderat cu probabilitatea corespunztoare. Aceast abordare e potrivit mai ales pentru proiectele mari, unde exist suficieni factori de incertitudine. Pe de alt parte, stabilirea probabilitilor de apariie a riscurilor nu e uor de fcut.
Analiza profilului riscului (risk profile analysis) O abordare este analiza sensibilitii (senzitivity analysis). Aceasta presupune variaia fiecrui parametru ce afecteaz costul sau beneficiul proiectului pentru a stabili ct de sensibil e profitabilitatea proiectului la fiecare factor. Rezult astfel identificarea factorilor decisivi pentru succesul proiectului. Obs. Analiza sensibilitii presupune variaia unui singur factor la un moment dat. Se folosete metoda Monte Carlo pentru astfel de simulri. Exist instrumente software care implementeaz metoda.
Folosirea arborilor de decizie Sunt multe situaii cnd n care putem evalua dac un factor de risc e important i dac e, ce aciuni trebuie urmate. Multe asemenea decizii vor limita sau vor afecta viitoarele decizii i, n fiecare punct, e important s privim n viitor pentru a vedea cum poate o decizie s afecteze profitabilitatea proiectului. Exemplu. Pentru extinderea sistemului de facturare, o firm poate lua n calcul extinderea sistemului existent sau nlocuirea complet a lui, imediat sau mai trziu. nlocuirea imediat nseamn amnarea unor proiecte. Nenlocuirea la timp poate fi o opiune scump, n condiiile n care conduce la pierderea beneficiului din cauza neputinei de a satisface toate cererile. S-a calculat c extinderea sistemului are NPV 57000 Euros, dei dac piaa se extinde smenificativ, poate conduce la o valoare a NPV de -100000 Euros. Dac piaa crete, o nlocuire a sistemului acum duce la NPV de 250000 Euros. Dac vnzrile nu cresc, beneficiile se vor reduce, conducnd la NPV de -50000 Euros.
Exemplu (continuare). Compania apreciaz c probabilitatea s creasc piaa e de 20%, adic probabilitatea s nu creasc fiind de 80%. Acest scenariu poate fi reprezentat n figura de mai jos.
Analiza unui arbore de decizie const n evaluarea beneficiului ateptat lund-o pe fiecare ramur a unui punct de decizie (notat cu D n figur).
Un avantaj al folosirii arborilor de decizie este c se pot extinde cu uurin (vezi figura de mai jos):
8. Concluzii
Proiectele trebuie evaluate strategic, tehnic i economic; Evaluarea economic implic identificarea tuturor costurilor i beneficiilor pe toat durata de via a sistemului i verificarea dac totalitatea beneficiilor depete totalitatea costurilor; O sum de bani ctigai mai trziu este mai puin valoroas dect aceeai sum de care s dispunei n prezent, care pot fi investii; Tehnicile de discounted cash flow pot fi folosite pentru a calcula valoarea prezent a future cash flow, innd cont de rata dobnzilor (interest rates) i de gradul de nesiguran (uncertainty); Tehnicile de analiz cost-beneficiu i arborii de decizie furnizeaz instrumente pentru evaluarea rezultatelor ateptate (expected outcomes) i alegerea ntre diverse strategii.
Managementul riscului
1. Introducere
n aceast prezentare, atenia se concentreaz pe riscul datorat ntrzierii proiectului sau depirii bugetului alocat
Identificm trei tipuri de riscuri: cele cauzate de dificultile inerente ale estimrii; cele datorate presupunerilor fcute n timpul procesului de planificare; cele datorate unor evenimente aprute neateptat.
Estimarea erorilor Anumite sarcini sunt greu de estimat din cauza lipsei experienei cu sarcini similare, de aceea e indicat s existe manuale de utilizare. Pe de alt parte, timpul petrecut cu testarea i depanarea poate fi greu de prognozat cu un grad de acuratee mrit. Estimarea poate fi mbuntit dac se analizeaz datele istorice pentru activiti similare i sisteme similare. Pstrarea nregistrrilor comparnd estimrile originale i rezultatele finale vor pune n eviden tipurile de sarcini pentru care se fac cu greu estimri corecte. Presupunerile fcute la planificarea activitilor La fiecare etap a procsului de planificare, e important s listm explicit toate presupunerile care au fost fcute i s identificm ce efecte pot avea asupra planului dac sunt nepotrivite. Posibiliti Anumite posibiliti nu pot fi prevzute. Totui, majoritatea evenimentelor neateptate pot fi, n realitate, prevzute. Asemenea evenimente se pot ntmpla din timp n timp i, chiar dac probabilitatea de apariie a lor s fie mic, trebuie luate n calcul i planificate.
2. Managementul riscurilor
Exist un numr de modele pentru managementul riscului, dar majoritatea sunt similare, pentru c identific dou componente majore identificarea riscului (risk identification) i managementul riscului (risk management). n figura de mai jos e dat o structur divizat n sarcini, pe care Barry Boehm o numete ingineria riscului (risk engineering). Toate elementele din figur se vor discuta n detaliu n slide-urile urmtoare.
Factorii legai de personal (staff factors) un programator experimentat face, de regul, mai puine erori dect unul cu mai puin experien. Pe de alt parte, e important aria n care unii au experien (experiena unui programator n Cobol nu prea conteaz dac dezvolt un sistem n C++). Factorii legai de proiect (project factors) e important ca proiectul i obiectivele sale s fie bine definite i s fie clare pentru toi membrii proiectului i pentru stakeholders. Metode legate de proiect folosind anumite metode pentru managementul proiectelor i dezvoltarea de sistem se scade probabilitatea ca sistemul s fie livrat trziu sau cu probleme. Pe de alt parte, folosirea acestor metode pentru prima oar poate duce la ntrzieri.
Factorii hardware/software un proiect care necesit hardware nou poate pune probleme mai mari dect dac se dezvolt sistemul pe un hardware existent. Realizarea proiectului pe un tip de hardware i o platform software i utilizarea sistemului pe un alt hardware i/sau software poate ridica anumite probleme la instalare i nu numai.
Factorii legai de schimbri (changeover factors) o schimbare radical pentru noul sistem faciliteaz apariia riscurilor. Schimbrile graduale minimizeaz riscurile dar nu sunt ntotdeauna practice. Factorii legai de furnizori (supplier factors) un proiect se bazeaz uneori pe organizaii exterioare. Riscurile legate de ntrzierile cu care livreaz anumite produse sau de calitatea acestora nu pot fi controlate. Factorii de mediu (conjuncturali) de exemplu, schimbri legate de regulile de plata a salariilor (modificarea CAS, a sporurilor etc) pot afecta succesul unui proiect ce gestioneaz salarizarea ntr-o organizaie. Factorii de sntate i siguran dei impactul asupra sntii i siguranei celor care interacioneaz cu un proiect software e diminuat fa de alte proiecte (de exemplu, construcii), totui, conform BS 6079, orice proiect trebuie s includ un audit al acestor posibile riscuri nainte de a ncepe, iar acest audit trebuie s fac parte din planul de ansamblu al proiectului.
Muli manageri folosesc o metod prin care se dau scoruri riscurilor, pentru a oferi o msur cantitativ pentru evaluarea fiecrui risc. Un scor ar putea fi mprirea n trei categorii (High, Medium, Low), dar se recomand (i e mai popular) metoda n care se dau note de la 1 la 10 (unde 10 este pentru probablitatea cea mai mare de apariie e unei erori). Msurile de impact, notate pe o scar similar, trebuie s ia n consideraie riscul total al proiectului. Acesta trebuie s includ urmtoarele costuri poteniale: costul ntrzierilor fa de datele planificate pentru deliverables; supracostul datorat de folosirea adiional a unor resurse;
Acordarea de prioriti riscurilor Managerii folosesc dou strategii: reducerea valorii riscului prin reducerea probabilitii riscului sau a impactului riscului; realizarea unor planuri de rezerv (care s ia n calcul ntmplri neprevzute), astfel nct, dac riscurile apar, s fie gestionate. Oricare dintre aceste strategii vor avea un cost asociat. De aceea e important acordarea de proriti riscurilor, pentru ca cele mai importante s primeasc atenia cea mai mare. n practic, sunt n general ali factori care trebuie luai n calcul atunci cnd vrem s aranjm n funcie de prioritate: Riscuri acumulate. Cnd se ntmpl acest lucru, riscurile trebuie tratate ca i cum ar fi un singur risc. Numrul riscurilor. Exist un numr maxim de riscuri ce trebuie considerate efectiv de un manager
Costul aciunii. Anumite riscuri, o dat identificate, pot fi reduse sau evitate imediat cu un cost redus. Pentru alte riscuri trebuie s comparm costurile cu efectuarea aciunii cu beneficiile reducerii riscului. O metod e s se calculeze risk reduction leverage (RRL):
RRL =
unde REinainte e valoarea riscului original, REdupa este valoarea riscului ateptat dup trecerea la aciune, iar cost reducere risc este costul implementrii aciunii de reducere a riscului.
5. Reducerea riscurilor
n linii mari, exist 5 strategii de reducere a riscului: Prevenirea hazardului. Reducerea probabilitii de apariie. Evitarea riscului. Transferul riscului. Anumite riscuri pot fi transferate, de exemplu printr-o asigurare. Planificarea de rezerv (contingency planning) n tabelul de mai jos sunt artate riscuri i msuri de reducere a acestor riscuri, aa cum sunt prezentate n Tutorial on Software Risk Management, IEEE Computer Society, 1989 de Barry Boehm.
a + 4m + b te = 6
Exemplu. Se consider tabelul de mai jos, cu estimrile timpului activitilor folosind estimatorii PERT:
Reeaua PERT prezentat pe pagina urmtoare ne arat c se ateapt ca proiectul s dureze 13,5 sptmni.
T te
O msur cantitativ a gradul de incertitudine a unui estimator de timp pentru o activitate se obine calculnd deviaia standard s:
ba s= 6
Tabelul cu estimatorii PERT se completeaz cu deviaia standard i va arta astfel:
Avantajul tehnicii PERT este c ofer o metod pentru estimarea probabilitii de a respecta sau rata datele planificate ale diverselor sarcini. S presupunem c vrem s completm proiectul n 15 sptmni, dar ne ateptm s ne ia 13,5 sptmni. Poate lua mai mult sau mai puin. n plus, s presupunem c activitatea C trebuie completat pn n sptmna a 10-a. n plus, evenimentul 5 reprezint livrarea produsului intermediar ctre client.
Tehnica PERT folosete o metod n 3 pai pentru a calcula probabilitatea de a respecta sau nu data int:
1. 2. 3.
se calculeaz deviaia standard pentru fiecare eveniment al proiectului; se calculeaz valoarea z pentru fiecare eveniment care are o dat int; se convertete valoarea z la probabilitate. Deviaia standard pentru evenimentul 3 depinde doar de activitatea B. De aceea deviaia standard va fi 0,33. Pentru evenimentul 5 exist dou ci posibile, B+E sau F. Deviaia standard total pentru calea B+E este
Calcularea valorii z Valoarea z se calculeaz pentru fiecare nod care are o dat int, cu formula de mai jos, n care T este data int, iar te este data ateptat:
z=
T te s
Convertirea valorii z la probabiliti Se poate face folosind tabelele cu valorile lui z, care se gsesc n majoritatea crilor de statistic sau cu un grafic ce reprezint echivalentul tabelelor.
Simularea Monte Carlo Baza acestei tehnici este calcularea timpilor evenimentelor de un numr mare de ori, fiecare timp selectnd timpii activitii aleator dintr-o mulime de estimri pentru fiecare activitate. Rezultatele sunt apoi tabulate, sumarizate sau afiate ca grafic, aa cum se arat n figura de mai jos.
Managementul riscului
- Laborator -
Problema 1. Se consider tabelul de mai jos, care conine o list cu riscurile identificate, mpreun cu probabilitatea, impactul i valoarea fiecrui risc:
Problema 2. Se consider tabelul de mai jos, care conine estimatorii de timp a, m i b pentru diversele activiti. Calculai timpul ateptat pentru fiecare activitate, te
Problema 3. Se consider reeaua PERT de mai jos. Calculai pentru deviaia standard pentru fiecare dintre evenimentele A,B,C,D,E,F,G,H.
Problema 4. Se consider reeaua PERT de mai jos. Calculai valorile z pentru fiecare dintre evenimentele cu date int din reea.
Indicaii i rspunsuri
Indicaie.
R2 revizuii estimrile sau mprii activitatea n componente mai mici i facei estimri pentru acele componente. R4 gndii o strategie de rezerv pentru recrutarea persoanelor implicate n alte proiecte, dar care pot fi n postur de stanb-by la diverse momente.
Indicaie.
Indicaie.
Valoarea z pentru evenimentul 5 este:
z4=1,89 z6=1,23
1. Introducere
n proiectele mici (specifice activitii de laborator a studenilor) apar anumite probleme: Folosirea instrumentelor nefamiliare Cerine de design vag formulate Dac de exemplu proiectul de ntinde pe 10 sptmni, ar fi bine de planificat pe o durat mai mic (9 sptmni). Planificarea activitilor ar putea fi urmtoarea: - sptmnile 1-2: analiza; - sptmna 3: designul; - sptmnile 4-7: construirea sistemului; - sptmnile 8-9: testarea i evaluarea; - sptmna 10: sptmn de rezerv
Sisteme incomplete Avnd n vedere timpul scurt, e posibil ca sistemul care trebuie proiectat s nu fie funcional. De aceea se recomand ca lucrurile s fie de aa natur gndite, nct s existe ceva concret de artat chiar din fazele incipiente ale proiectului. n acest schelet al proiectului, ar fi o idee bun s existe anumite funcionaliti vizibile. S pot aduga alte funcionaliti pe msura trecerii timpului. O sugestie ar fi s folsoii modelul incremental (vezi Modele de procese software), astfel nct dac de exemplu avei 3 incremente i al treilea nu este finalizat, exist totui celelalte dou. Sfat: documentarea proiectului e bine s fie fcut pe msur ce se avanseaz cu etapele proiectului, mai bine dect s documentai proiectul la sfrit, din cauza lipsei de timp. Lipsa interesului din partea clienilor Studentul nu va fi (probabil) pltit pentru proiectul fcut. Avantajul acestei situaii este c o organizaie din afar ar putea fi interesat de ansa de a avea o resurs free.
B) Background Aceast parte ar trebui s conin: informaii relevante despre mediul software/hardware existent; circumstanele sau problemele care conduc la proiect; munca din aria proiectului dus deja la bun sfrit; stakeholders din proiect (adic toi cei care vor fi afectai de proiect sau care sunt interesai de el). C) Obiectivele proiectului Obiectivele trebuie s defineasc ce ar trebui s se realizeze i metoda de msurare a acestei creaii. La proiectele studeneti, evaluarea e fcut (de cele mai multe ori) din punct de vedere didactic. Dac ns aceast documentare e fcut i n beneficiul clientului, atunci punctul de vedere al clientului trebuie s fie prezent. Dac sunt multe obiective, ar trebui specificat prioritatea lor.
D) Constrngeri De obicei se trec la partea cu obiectivele proiectului. Constrngerile includ: scri de timp impuse din exterior; cerinele legale; standarde specifice; limitri ale persoanelor care pot fi abordate pentru informaii. E) Metodele / tehnologiile folosite Trebuie specificate instrumentele software folosite (acolo unde e cazul). F) Rezultatele proiectului Trebuie listate toate rezultatele (produsele) sau elementelor cum ar fi module software, documentaie, ghiduri utilizator, rapoarte.
G) Activiti Trebuie precizat lista cu principalele activiti pe care le implic proiectul. Fiecare activitate trebuie precizat n termeni concrei: de exemplu, n loc de familiarizarea cu procedurile departamentului-2 ar trebui documentarea procedurilor departamentului. S-ar putea descoperi rezultate intermediare ale proiectului. Pentru fiecare activitate, se definesc: elementele necesare nainte de a ncepe activitatea; activitile dependente, adic acele activiti ce necesit terminarea acestei activiti curente pentru a ncepe; timpul / efortul estimat, ntr-o anumit marj; detalii despre cum vor fi verificate i validate produsele activitii. Se pot include aici i tabelele Gantt pentru monitorizarea activitilor (sau alte instrumente specifice monitorizrii).
H) Resurse Se pot include aici cerinele software / hardware i cele legate de personal. I) Analiza riscului Se identific principalele lucruri care ar putea merge ru. n mod normal, acestea ar putea include: indisponibilitatea resurselor; indisponibilitatea personalului; probleme tehnice (cum ar fi bugs-urile software). Se aloca fiecrui risc o evaluare a probabilitii (not ntre 1-10) i o not pentru impactul fiecrui risc (tot ntre 1-10). nmulind cele dou note, se obine un scor de ansamblu. Pentru riscurile mari, e bine s se specifice i eventualele msuri pentru reducerea acelor riscuri.
Concluzii
atenie
trebuie ajustate obiectivele proiectului, astfel nct proiectul s nu depeasc timpul alocat; nu trebuie confundate obiectivele proiectului cu
Monitorizarea i controlul
1. Introducere
Asigurarea progresului proiectului necesit monitorizarea a ceea ce se ntmpl, compararea realizrilor concrete fa de cele planificate i, acolo unde se impune, revizuirea planurilor i replanificarea pentru a aduce proiectului pe linia dorit. n aceast prezentare, artm cum se pot gestiona situaiile n care se schimb cerinele.
Responsabilitate Rspunderea global pentru asigurarea progresului unui proiect este adesea rolul unui Project Board. Responsabilitatea zi-de-zi va rmne n grija managerului de proiect i, n majoritatea proiectelor, se pot delega responsabiliti liderilor de echip (team leaders). In figura de mai jos e dat structura tipic de raportare.
Responsabilitate (continuare) Raportarea poate fi oral sau scris, formal sau informal, regulat sau ad-hoc. Cteva exemple sunt date n tabelul de mai jos. Categorii de raportare
Tip de raportare
Oral formal regulat Oral formal ad-hoc
Exemple
Sptmnal sau lunar End-of-stage review meetings
Comentarii
Se pot pstra anumite notie formale scrise Se pot primi sau genera rapoarte scrise
Scris formal regulat Rapoarte privind De obicei sptmnale progresul, foi de calcul folosind formulare Oral informal ad-hoc Rapoarte de excepie Oral informal ad-hoc Interaciuni sociale Adesea ofer avertismente timpurii
Evaluarea progresului Se face n mod normal pe baza informaiilor colectate la intervale regulate sau atunci cnd apar evenimente specifice. Unde e posibil, aceste informaii vor fi obiective i tangibile.
Taking snap-shots Frecvena cu care managerul are nevoie s primeasc informaii despre progresul proiectului depinde de mrimea i gradul de risc al proiectului. Liderii de echip trebuie s evalueze progresul zilnic (mai ales cnd lucreaz cu personal neexperimentat), n timp ce managerii de proiect gsesc mai potrivit s primeasc rapoarte sptmnale sau lunare.
3. Adunarea datelor
Ca o regul, managerii vor ncerca s mpart activitile lungi n sarcini mai controlabile ce se ntind pe o sptmn sau dou. Totui va fi necesar s se adune informaii despre activitile parial completate i, n particular, estimri despre ct munc mai e necesar pentru a le completa. Uneori poate fi dificil s se fac astfel de estimri de mare acuratee. Exerciiu. Un dezvoltator de soft a scris 250 linii de cod i estimarea este de 500 linii. De ce nu e corect s presupunem c sarcina programrii este 50% completat. Care ar fi o estimare corect? Obs. n anumite cazuri, produsele intermediare pot fi folosite ca milestones. De exemplu, prima compilare cu succes a unui program poate fi considerat ca o milestone, dei nu reprezint produsul final al activitii de codare i testare.
Raportarea pariale
completrii
Multe organizaii folosesc un sistem de msurare standard. Figura alturat nfieaz un exemplu tipic de un formular de raportare, n acest caz cernd informaii despre abaterea probabil fa de datele de completare, ca i estimri ale completrii.
4. Vizualizarea progresului
Colectarea datelor despre progresul proiectului se pot prezenta ntr-o form atractiv. n cele ce urmeaz, s eprezint cteva dintre aceste metode de prezentare.
Tabele
Gantt
E o tehnic simpl i veche, care indic ntr-o diagram datele activitilor planificate. Progresul raportat e nregistrat pe diagram.
Slip chart E o alternativ folosit de unii manageri de proiect care cred c ofer o indicaie vizual mai clar a acelor activiti care nu progreseaz n raport cu planificarea. O slip line cu muli zimi indic necesitatea replanificrii. Slip line
Ball charts n figura de mai jos, cercurile indic punctele de start i de completare pentru activiti. Iniial cercurile conin datele planificate originale. Ori de cte ori se produc revizuiri, acestea sunt adugate ca date secunde n cercul corespunztor pn cnd o activitate e nceput n realitate sau completat cnd datele relevante nlocuiesc prognozele revizuite (ngroat nclinat n figur).
Cnd datele de ncepere real sau de terminare pentru o activitate sunt ntrziate fa de data int, cercul e colorat rou (gri nchis n figur), iar cnd data real e la timp sau mai devreme dect cea planificat cercul e colorat n verde (gri deschis n figur).
Timeline chart E o metod de a nregistra i afia felul n care intele s-au schimbat pe ntreaga durat a proiectului. n figura de mai jos se arat un timeline chart pentru un proiect la sfritul celei de-a asea sptmni. Timpul planificat e reprezentat pe axa orizontal i timpul scurs pe axa vertical. Liniile erpuite din diagram reprezint datele de completare a activitii planificate la nceputul proiectului analyse existing system e planificat s fie completat pn marea (Tuesday) din sptmna a 3-a, obtain user requirements pn joia (Thursday) din sptmna a 5-a, issue tender, activitatea final, pn marea din sptmna a 9-a s.a.m.d. La sfritul primei sptmni, managerul revede aceste date int i le las aa cum sunt. La sfritul sptmnii a 2-a, managerul decide c obtain user requirements nu va fi completat pn marea din sptmna a 6-a de aceea managerul extinde linia activitii diagonal ca s reflecte aceasta. Celelalte inte de completare a activitii sunt ntrziate corespunztor. n marea din sptmna a 3-a, e completat analyse existing system i managerul pune un cercule pe diagonal pentru a indica c asta s-a ntmplat. La sfritul sptmnii a 3-a managerul decide s pstreze intele existente. La sfritul sptmnii a 4-a adaug alte trei zile pentru draft tender i issue tender.
De observat c la sfritul sptmnii a 6-a, sunt completate 2 activiti i 3 sunt nc nefinalizate. Proiectul pe ansamblu va avea 7 zile de ntrziere.
5. Monitorizarea costurilor
O diagram ca cea din figura de mai jos ofer o metod simpl de comparare a cheltuielilor planificate cu cele reale. n sine, nu indic dac nu cumva, dei pare s existe economii fa de bugetul planificat, proiectul este mult ntrziat i de aceea graficul arat aa.
Diagrama poate deveni mai util dac se adaug costuri viitoare planificate, calculate prin adunarea costurilor estimate ale muncii necompletate la costurile deja existente.
Figura de mai jos ilustreaz informaiile adiionale disponibile n momentul n care se include i estimarea revizuit a costurilor.
6. Earned Value
Earned Value Analysis a ctigat popularitate n ultimii ani i poate fi vzut ca o rafinare a monitorizrii costurilor, discutat anterior. Earned Value Analysis se bazeaz pe asignarea unei valori fiecrei sarcini sau pachet de munc (work package), bazat pe prognozele originale ale cheltuielilor. Valoarea asignat este costul alocate original (original budgeted cost) pentru item i e cunoscut ca BCWS (budgeted cost of work scheduled). O sarcin nenceput are asignat valoarea 0 i cnd e completat, ea, precum i proiectul, e creditat cu valoarea sarcinii. Valoarea total a proiectului n orice punct e cunsocut sub denumirea de earned value sau BCWP (budgeted cost of work perfromed) i poate fi reprezentat ca o valoare sau ca procent al BCWS. Cnd sarcinile au nceput dar nu sunt complete, trebuie aplicat o metod de asignare a earned value. Dintre aceste metode, amintim: tehnica 0/100 o sarcin are asignat valoarea 0 pn n momentul n care e completat, cnd i se atribuie o valoare de 100% din budgeted value; tehnica 50/50 - o sarcin are asignat o valoare de 50% din valoarea sa imediat ce ncepe i apoi o valoare de 100% cnd e complet; tehnica milestone o sarcin are o valoare asignat pe baza realizrii milestones care au asignat valori ca parte a planului alocat original.
Baseline budget E bazat pe planul proiectului i arat creterea prognozat n timp a earned value. Earned value poate fi msurat n valori monetare, dar n cazul proiectelor de dezvoltare de software e mai obinuit s se msoare n ore de munc pe persoan (person-days) sau zile de munc (workdays).
Exemplu. Baseline budget e reprezentat n tabelul alturat i ilustrat n diagrama de pe pagina urmtoare. Se bazeaz pe zile de munc i folosete tehnica 0/100.
Monitorizarea earned value Monitorizarea earned value e o msur a progresului proiectului. Acest lucru e fcut prin monitorizarea completrii sarcinilor. n figura de mai jos se arat analiza earned value la nceputul sptmnii a 12-a a proiectului.
La fel de bine ca nregistrarea BCWP, costul real al fiecrei sarcini poate fi exprimat ca ACWP (actual cost of work performed), care e artat n figura de mai jos.
Elementele ce apar n figura precedent se definesc astfel: Budget variance: se calculeaz ca ACWP-BCWS i indic gradul n care costurile reale difer de cele planificate; Schedule variance: se msoar n termeni de cost ca BCWP-BCWS i indic gradul n care valoarea muncii complete difer de cea planificat. n figur mai e indicat i schedule variance (time), care indic gradul n care proiectul e n urma planificrii; Cost variance: e calculat ca BCWP-ACWP i indic diferena dintre costul alocat i costul real al muncii complete; Performance ratios: cost performance index (CPI=BCWP/ACWP) i schedule performance index (SPI=BCWP/BCWS). O valoare mai mare ca 1 indic faptul c munca a fost completat mai bine dect era planificat, n timp ce o valoare mai mic dect 1 nseamn c munca a costat mai mult dect a fost planificat i/sau c se merge mai ncet dect a fost planificat.
7. Modificri n control
Pn acum s-a presupus c natura sarcinilor nu s-a schimbat. n realitate sunt situaii cnd cerinele se modific din cauza schimbrii circumstanelor sau pentru c utilizatorii i fac o idee mai clar despre ceea ce doresc de la software. Pe de alt parte, exist situaii interne, cum ar fi inconsistenele n specificaiile programului care devin evidente numai atunci cnd se scrie codul.
Rolul Configuration librarian Controlul schimbrilor i documentaia ar trebui s fie reponsabilitatea cuiva care se numete Configuration Librarian, Configuration Manager sau Project Librarian. Printre sarcinile pe care o asemenea persoan le are: identificarea tuturor itemilor care ar putea fi subiectul unor schimbri; stabilirea i meninerea unui depozit central ale copiilor principale ale ntregii documentaii a proiectului i produselor software; stabilirea i rularea unei mulimi formale de proceduri care s se ocupe de schimbri; meninerea unor nregistrri cu cine are acces la ce itemi ai bibliotecii i statusul fiecrui item al bibliotecii (ex: dac este n dezvoltare, n testare sau livrat).
O procedur simpl de control al schimbrilor pentru sistemele operaionale ar putea avea urmtorii pai:
Monitorizare i control
- Laborator -
Problema 1. Se consider planificarea proiectului dat n figura de mai jos. Identificai acele activiti programate s dureze mai mult de 3 sptmni i descriei cum poate monitoriza progresul pentru fiecare dintre ele.
Problema 2. n tabelul Gantt de mai jos, identificai activitile ntrziate. Ce efect au acestea asupra desfurrii proiectului? Cum poate atenua efectul ntrzierii?
Problema 3. La sfritul sptmnii a 8-a, managerul observ c Plan office layout e complet, dar Draft tender (pus n eviden n figur) o s ia cu o sptmn mai mult dect anticipase iniial. Cum va arta chart-ul la sfritul sptmnii a 8a? Dac proiectul va merge conform planificrii refcute, cum va arta chart-ul la sfritul proiectului?
Problema 4. O schimbare n specificaia programului se va reflecta n schimbrile fcute n designul programului i apoi n codul schimbat. Ce alte elemente vor trebui s sufere modificri?
Indicaii i rezolvri
Problema 3. La sfritul sptmnii a 8-a, managerul observ c Plan office layout e complet, dar Draft tender (pus n eviden n figur) o s ia cu o sptmn mai mult dect anticipase iniial. Cum va arta chart-ul la sfritul sptmnii a 8a? Dac proiectul va merge conform planificrii refcute, cum va arta chart-ul la sfritul proiectului?
Problema 3. La sfritul sptmnii a 8-a, managerul observ c Plan office layout e complet, dar Draft tender (pus n eviden n figur) o s ia cu o sptmn mai mult dect anticipase iniial. Cum va arta chart-ul la sfritul sptmnii a 8a? Dac proiectul va merge conform planificrii refcute, cum va arta chart-ul la sfritul proiectului?
Problema 4. O schimbare n specificaia programului se va reflecta n schimbrile fcute n designul programului i apoi n codul schimbat. Ce alte elemente vor trebui s sufere modificri? Indicaie. Printre itemii cel mai probabil s sufere modificri sunt datele de testare, rezultatele ateptate i manualul de utilizare.
Software design
- concepte, exemple -
1. Introducere
Design-ul este the process of applying various techniques and principles for the purpose of defining a device, a process, or a system in sufficient detail to permit its physical realization. (Taylor, An Interim Report of Engineering Design, MIT, 1959) Procesul de design convertete ce din cadrul cerinelor n cum al design-ului. Rezultatele fazei de design ar trebui s se concretizeze ntr-un document ce ofer suficiente detalii care s permit sistemului s fie implementat fr o viitoare interaciune cu utilizatorul. Procesul de design convertete de asemenea terminologia din spaiul problemei al cerinelor la spaiul soluie al implementrii. Unii autori vorbesc de obiectele OOA (Object-Oriented Analysis), care sunt n spaiul problem/domeniu i de obiectele OOD (Object-Oriented Design), care sunt n spaiul soluie/implementare.
Se vorbete despre fenomenon n mediul nconjurtor (lumea) i de fenomenon n implementare (main). Un fenomenon poate fi vizibil sau ascuns. Cerinele orientate pe utilizator pot fi exprimate n termeni de fenomenon, vizibil sau ascuns, din mediu (environment). (Gunter, Gunter,
Jackson, and Zave, A Reference Model for Requirements and Specifications, IEEE Software, May/June 2000)
Exemplu. Identificai ce fenomenon este n mediu i ce fenomenon n implementare n sistemul care gestioneaz mprumutul de cri ntr-o bibliotec. (vezi model_biblioteca)
Soluie. Cartea propriu-zis este un fenomenon ascuns al mediului (environment-hidden). Cnd bibliotecarul scaneaz cartea, scaneaz de fapt un cod de bare. Codul de bare nu conine ISBN-ul, dar trebuie s reflecte eventualele copii multiple ale unei singure cri. Acest code de bare este un fenomenon vizibil al mediului. Implementarea folosete probabil un identificator sau pointer pentru datele referitoare la carte. Acest identificator intern este un fenomenon ascuns al implementrii. Specificarea pentru dezvoltare trebuie s fie scris n termeni de cod de bare.
Diagrama de clas
2.1 Interfeele
Interfaa arat comportarea exterioar a unui modul. Trebuie s fie suficient de complet pentru ca modulul apelant s tie ce va face modulul apelat n orice situaie. Trebuie s fie complet pentru ca cel care implementeaz s tie exact ce informaii sunt necesare. Exemplu. Realizai designul interfeelor pentru functiile imprumutare din diagrama de clase de mai sus.
Soluie. Clasele cititor i copiecarte au o metod imprumutare. Este de presupus c apelul oricreia dintre aceste metode va instania clasa imprumut. method cititor::imprumutare input parameters isbn return type int 0 dac nu este disponibil cartea 1 dac este disponibil cartea i instana imprumut se creeaz cu succes -1 dac apare o condiie de eroare method copiecarte::imprumutare input parameter NrImprumut return type int 0 dac nu e disponibil copia 1 dac e disponibil copia
Aa cum se arat n figura de mai sus, dac funcia imprumutare din modulul biblioteca doar apeleaz funcia imprumutare, atunci exist o bun abstractizare.
Dac funcia imprumutare din modulul biblioteca tie despre clasa imprumut, poate verifica disponibilitatea crii, poate crea instana imprumut i poate apela funciile imprumutare pentru a seta valorile instanei imprumut.
4. Msurarea coeziunii
4.1 Feliile unui program (program slices)
Valorile unei variabile ntr-un program depind de valorile altor variabile. Exist dou tipuri de dependene: data dependencies, n care valoarea lui x afecteaz valoarea lui y prin definiie; control dependencies, n care valoarea lui x determin dac se execut codul care conine definiiile lui y. Exemplu. nmulirea prin nsumare repetat: S se calculeze x*y. Valoarea de ieire z are data dependency fa de x, deoarece x se adun la z i are control dependency fa de y, deoarece controleaz de cte ori de adun x la z.
z = 0; while x > 0 do z = z + y; x = x 1; end-while
Program slices pot fi obinute din ambele direcii. Output slices gsesc fiecare instruciune care afecteaz valoarea unei ieiri (output) specificate. Input slices gsesc fiecare instruciune care e afectat de valoarea unui input specificat. Sunt uor de determinat program slices, pornind de la un graf orientat, n care are o mulime de vrfuri n, fiecare vrf reprezentnd un input, un output sau o instruciune de cod. Arcurile e sunt dependenele. James Bieman i Linda Ott au utilizat definiii de variabile i referine ca uniti de baz, n loc de instruciuni de program (program statements). Aceste definiii i referine se numesc tokens. De aceea, orice referin de constant (constant reference), referin de variabil (variable reference) i definiie de variabil reprezint un token separat (James Bieman, Linda Ott,
Measuring Functional Cohesion, IEEE TOSE, 20:8 August 1994)
Un input slice poate ncepe cu variabila de intrare x. Tokens x, 0, x, x, i 1 din instruciunile while x>0 i x=x-1 se adaug la slice. Apoi se adaug tokens z, z i y din instruciunea z=z+y. Nici un alt token nu mai poate fi adugat. De aceea, input slice e tot mai puin z=0. Un input slice pentru variabila y va conine tokenul iniial y i tokens z i y din instruciunea z=z+y.
Exemplu. Calculai functional cohesion measures pentru urmtorul fragment de cod. cin >> a >> b; int x,y,z; x=0; y=1; z=1; if (a > b){ x = a*b; while (10 > a){ y=y+z; a=a+5; } else { x=x+b; }
Soluie. n figura de pe pagina urmtoare din fiecare token ctre toate tokens care sunt afectate imediat de valoarea token-ului.
Nu sunt superglue tokens, aadar strong functional cohesion (SFC) este zero. Din cei 31 tokens, sunt 12 glue tokens, deci weak functional cohesion este 12/31 sau 0.387. Sunt patru slices. Zero tokens au adezivitate 100%. Patru tokens sunt n trei slices, aa nct au adezivitate 100%. Opt tokens sunt n dou slices, aa nct au adezivitate 50%. Tokens rmai, 19, sunt doar ntr-un slice, aa nct au adezivitate 25%. Adezivitatea este media adezivitii tuturor tokens, deci (4*0,75+8*0,50+19*0,25)/31=11,25/31=0,363
Exemplu. Desenai o matrice pentru urmtoarea problem: Tom i Sue pregtesc o pensiune ntr-un ora. [1] Ei vor avea 3 dormitoare pentru oaspei. [2] Vor un sistem care s gestioneze [2.1] rezervrile i s monitorizeze [2.2] cheltuielile i profitul. Cnd un client potenial sun pentru rezervare [3], ei verific [4] calendarul i dac sunt locuri libere [5], vor introduce [6.1] numele clientului, [6.2] adresa, [6.3] telefonul, [6.4] datele, [6.4] preul negociat, [6.6] nr.credit card i [6.7] nr.camerei. Rezervarea trebuie [7] garantat prin plata [7.1] primei zile. Rezervrile vor fi inute fr garanie [7.2] o perioad stabilit. Dac nu se ofer garania pn la acea zi, rezervarea va fi [7.3] anulat.
Aa cum se arat n tabelele anterioare, exist un numr de linii i coloane albe. Cerina 5 se leag de locuri libere. Nu exist o tratare explicit a locurilor libere, dei un loc liber ar trebui s fie absena unei rezervri ntr-o zi anume. Cerina 6.3 se refer la telefonul clientului i lipsete. Cerina 6.5, legat de preul negociat i lipsete din informaiile privind rezervarea. Cerina 7.1 menioneaz prima zi de plat, care de asemenea nu este printre atribute. Coloana A.1 e o list a datelor, care e inclus pentru a a juta cutarea locurilor libere. B i B.1 sunt necesare, dar nu sunt specifice pentru vreo cerin. C.8 e un constructor. D.1-D.4 sunt detalii ale tranzaciei, care sunt neglijate la cerine.
Exemplu. Construii un model pentru o bibliotec. Soluie. Obiectele sunt biblioteca, cri, copii ale crilor i cititori. ntre biblioteca i carte, ca i ntre bibliotec i cititor exist o relaie de agregare. ntre carte i copiecarte nu e nici agregare, nici motenire, deoarece obiectul carte reprezint abstracia unei cri, n timp de copiecarte este itemul concre (fizic) care se mprumut.
inapoi
Software design
- laborator -
Exerciiul 2. Se consider un sistem de recunoatere facial bazat pe procesare de imagini. Sistemul va avea o camer i intenioneaz s previn persoanele strine s intre n zonele secrete ale companiei, prin controlul uii (blocarea ei). Cnd o persoan ncearc s rsuceasc mnerul uii, sistemul preia imaginea persoanei i o compar cu imaginile din baza de date. Clasificai fiecare dintre urmtoarele evenimente (i.e. dac sunt n mediu environment sau n sistem i dac sunt ascunse sau vizibile: 1. O persoan ncearc s rsuceasc mnerul uii. 2. Ua e deblocat de sistem. 3. Un angajat las un strin pe u. 4. Un anagajat are un geamn identic. 5. O imagine are un numr minim de similariti pentru algoritmul de potrivire (matching algorithm).
Exerciiul 3. Calculai functional cohesion metrics (Bieman, Ott) pentru fragmentul de cod de mai jos. Desenai graful orientat.
Exerciiul 4. Desenai scenariile pentru interaciunea dintre un client care ncearc s cumpere un anumit CD cu muzic i vnztorul din magazin. Folosii state machine model. Pe arce s fie reprezentate evenimentele. Indicaie. Mai jos e prezentat cea mai simpl situaie, cnd vnztorul intr n magazin, nu gsete CD i pleac din magazin. Completai i variantele celelalte.
Completai...
Indicaii i soluii
Soluie exerciiul 1. Cuplare se dorete cuplare slab i acest design are cuplare slab, deoarece clasa college nu are cunotine despre alctuirea altor clase i alte clase nu trebuie s tie despre college. Coeziune e de dorit o coeziune mare i designul are coeziune mare, deoarece fiecare clas lucreaz cu propriile atribute. Abstractizare designul are o bun abstractizare. De exemplu, metoda display din college nu include detalii despre metodele lower-level de afiare.
Soluie exerciiul 2. 1. 2. 3. 4. 5. O persoan ncearc s rsuceasc mnerul uii. - EV Ua e deblocat de sistem. - SV Un angajat las un strin pe u. - EH Un anagajat are un geamn identic. - EH O imagine are un numr minim de similariti pentru algoritmul de potrivire (matching algorithm). SH
Soluie exerciiul 3.
sunt superglue. ase (incluznd tokens superglue) sunt glue tokens. WKC=6/33=18.2% SFC=4/33=12.1% Adezivitate este (4*1+2*0.75+27*0.25)/33=12.25/33=37.1%
Soluie exerciiul 4.
Testarea software-ului
1. Introducere
Testarea software-ului se face rulnd software-ul cu date de test. Se mai numete testare dinamic a software-ului (dynamic software testing), pentru a se deosebi de analiza static (static analysis), numit uneori i testare static, care presupune analizarea codului surs pentru identificarea problemelor.
Dei exist diverse tehnici pentru validarea software-ului, executarea datelor cu date de test reprezint un pas necesar.
2. Noiuni fundamentale
Testarea exhaustiv este executarea fiecrui caz de test posibil, dar se face rar, pentru c i la sistemele simple exist foarte multe cazuri de testare posibile (Exemplu: un program cu 2 intrri de tip ntreg pe 32 bii conduc la un numr de 264cazuri de testare posibile). Exist dou criterii de baz privind testarea software: 1. ce cazuri de testare s folosim (test case selection) 2. cte cazuri de testare sunt necesare (stopping criterion) Test case selection se poate baza pe: specificaii (functional); structura codului (structural); fluxul datelor (data flow); o selecie aleatoare a cazurilor de testare (random). Obs. Test case selection poate fi vzut ca o ncercare de dimensionare a cazurilor de testare prin intermediul intrrilor.
Stopping criterion se poate baza pe: criteriu de acoperire (coverage criterion), cum ar fi executarea a n cazuri de testare n fiecare subdomeniu; criterii comportamentale (behavior criteria), cum ar fi testarea pn o rat a erorilor e mai mic dect un prag impus. Un program poate fi gndit ca o mapare a spaiului domeniu la un spaiu al rspunsurilor. Dndu-se o intrare (input), care e un punct n spaiul domeniu, programul produce o ieire (output), care e un punct n spaiul rspunsurilor.
Subdomeniu Oarecare:
Mrimi cresctoare Mrimi descresctoare Cea mai mare a doua
Caz de test
(3,4,5 oarecare) (5,4,3 oarecare) (4,5,3 oarecare)
Isoscel:
a=b i c mai mare a=c i b mai mare b=c i a mai mare a=b i c mai mic a=c i b mai mic b=c i a mai mic (5,5,8 isoscel) (5,8,5 isoscel) (8,5,5 isoscel) (8,8,5 isoscel) (8,5,8 isoscel) (5,8,8 isoscel)
Echilateral:
a=b=c (5,5,5 echilateral)
Nu e triunghi:
a cea mai mare b cea mai mare c cea mai mare (6,4,2 nu e triunghi) (4,6,2 nu e triunghi) (1,2,3 nu e triunghi)
Intrri greite:
1 greit 2 greite 3 greite (-1,2,4 date greite) (3,-2,-5 date greite) (0,0,0 date greite)
Obs. Lista subdomeniilor poate fi extins. Un caz de testare n fiecare subdomeniu e soluia minimal, dar acceptabil.
Exemplu. Condiiile din problema triunghiului pot fi : (1) a=b sau a=c sau b=c, (2) a=b i b=c, (3) a<b+c i b<a+c i c<a+b, (4) a>0 i b>0 i c>0. Coloanele matricii vor reprezenta un subdomeniu. Pentru fiecare subdomeniu, vom plasa un T n fiecare rnd n care condiia e adevrat i F cnd condiia e fals.
3.4.1 C0 coverage
Acest criteriu presuppune c fiecare instruciune a codului ar trebui executat se un caz de testare. Abordarea normal pentru obinerea C0 coverage este selectarea cazurilor de testare pn cnd un instrument de acoperire (coverage tool) indic faptul c toate instruciunile din cod au fost executate. Exemplu. Urmtorul pseudocod implementeaz problema triunghiului. Matricea arat ce linii sunt executate n fiecare caz de test. Primele trei instruciuni (A, B i C) pot fi considerate pri ale aceluiai nod.
Exemplu. n pseudocodul din exemplul de la C0, sunt mai multe condiii multiple. Primitivele care nu se execut din cauza evalurii lazy sunt marcate mai jos cu un X.
3.4.6 C1 subsumeaz C0
Exemplu. Pentru problema triunghiului, am selectat cazurile de testtare bune pentru a obine C0 coverage. Cazurile erau: (3,4,5 oarecare), (3,5,3 isoscel), (0,1,0 intrri greite), (4,4,4 echilateral) Aceste teste acopereau 4 din 5 ieiri. Putem obine C1 coverage cu dou cazuri de testare: (3,4,5 oarecare) i (0,0,0 intrri greite). Testul nu este probabil la fel de bun ca primul. Dar obinem astfel att C1 coverage, ct i C0 coverage.
Sunt multe criterii de testare a fluxului datelor. Criteriile de baz includ dcu, care necesit o def-free de la fiecare definiie pn la c-use; dpu, care necesit o def-free de la fiecare definiie pn la p-use; du, care necesit o def-free de la fiecare definiie la orice folosire posibil. Cele mai extinse criterii sunt all-dupaths, care necesit toate def-free paths de la fiecare definiie la fiecare folosire posibil. Exemplu. Data flow testing pentru problema triunghiului. dcu singura c-use este pentru variabila din nodul k (instruciunea de ieire) de la def type n nodul abc la nodul k de la def type n nodul d la nodul k de la def type n nodul f la nodul k de la def type n nodul h la nodul k de la def type n nodul j la nodul k calea abc,e,g,i,k calea d,e,g,i,k calea f,g,i,k calea h,i,k calea j,k
Exemplu (continuare) dpu singura p-use este pentru variabilele a,b,c i singura def este nodul abc de la nodul abc la arcul abc-d de la nodul abc la arcul abc-e de la nodul abc la arcul e-f de la nodul abc la arcul e-g de la nodul abc la arcul g-h de la nodul abc la arcul g-i de la nodul abc la arcul i-j de la nodul abc la arcul i-k du toate defs la toate folosirile toate cazurile de testare ale dcu i dpu combinate. all-du-paths toate def-free paths de la toate defs la toate folosirile. toate cazurile de testare ale dcu i dpu combinate.
Prin desenarea cazurilor de testare ale profilului operaional, cel care face testul va avea mai mult ncredere c acea comportare a programului n timpul testrii e mai predictiv despre cum se va comporta n timpul funcionrii. Exemplu. Un posibil profil operaional pentru problema triunghiului:
Pentru aplicarea testrii aleatoare, se poate genera un numr pentru selectarea categoriei dup probabiliti i apoi generarea unor numere suficiente pentru a crea cazul de testare. Dac cumva categoria selectat a fost cazul echilateral, se va folosi acelai numr pentru toate cele trei intrri. Un isoscel drept va necesita un numr aleator pentru lungimea a dou laturi i apoi se poate calcula cealalt latur.
Figura de mai jos arat o frontier simpl. Sgeata indic faptul c on tests ale frontierei sunt n subdomeniul de sub frontier. Cele dou on tests sunt la captul frontierei i off test-ul chiar deasupra jumtii.
Exemplu. n exemplul cu triunghiul, condiiile primitive, a>=b+c or b>=a+c or c>=a+b, determin o frontier. Deoarece depinde de trei variabile, frontiera e un plan n spaiul 3D. On testele ar trebui s fie 2 (sau mai multe) teste separate care au egalitate (de exemplu 8,1,7 i 8,7,1). Acestea sunt amndou adevrate. Off testul va fi n domeniul false i va fi aproape de mijloc (de exemplu 7.9,4,4).
Testarea software
- Laborator -
A. ntrebri
1. De ce e nevoie de specificare pentru a face testarea? 2. De ce path testing este de obicei impracticabil? 3. De ce e important testing coverage criterion?
B. Probleme
1. Un program calculeaz aria unui triunghi. Intrrile sunt 3 mulimi de coordonate x,y. Construii testele funcionale. 2. Un program accept doi timpi (n format de 12 ore) i ieirile reprezint numrul de minute scurse ntre cei doi timpi. Construii testele funcionale. 3. Un subprogram de cutare binar caut lista numelor n ordine alfabetic i returneaz true dac numele e n list i fals n caz contrar. Construii testele funcionale.
C. Problem propus
1. Pentru urmtorul cod, identificai toate cile posibile, path tests i data flow tests:
2. Un program accept doi timpi (n format de 12 ore) i ieirile reprezint numrul de minute scurse ntre cei doi timpi. Construii testele funcionale.
R: Testele funcionale ar trebui s includ teste mai mici de 1 or, mai mare de 1 or, unul mai mare de 12 ore, unul care necesit transport de ore i unul cu timpii dai n ordine invers.
3. Un subprogram de cutare binar caut lista numelor n ordine alfabetic i returneaz true dac numele e n list i fals n caz contrar. Construii testele funcionale.
R: Testele funcionale ar trebui s includ urmtoarele teste: - Primul nume e n list - Ultimul nume e n list - Un nume dinaintea primului nume - Un nume dup ultimul nume - Un nume la mijloc - Un nume care nu e n list chiar dup primul nume - Un nume care nu e n list chiar naintea ultimului nume
Puncte de interes
Analiza problemei este procesul nelegerii problemelor din lumea real i nevoile utilizatorului i propunerea de soluii pentru satisfacerea acestor nevoi. Scopul analizrii problemei este de de a nelege ct mai bine problema, niante de a trece la dezvoltare. Pentru a identifica problemele din spatele problemei, trebuie ntrebai cei direct implicai. Identificarea actorilor sistemului e un pas cheie n analizarea problemei.
dezvoltarea s nceap.
Paii pe care trebuie s-i urmm pentru a obine scopul problemei sunt urmtorii:
1. S ne punem de acord privind definirea problemei. 2. S nelegem problema din spatele problemei. 3. S identificm stakeholders i utilizatorii. 4. S definim frontiera sistemului. 5. S identificm constrngerile care se impun soluiei.
Beneficiile soluiei...
Process-based RCA al crei scop s-a extins ca s includ procesele business. Failure-based RCA are rdcinile n practica failure analysis aa cum se folosete n inginerie i mentenan. Systems-based RCA este un amalgam al colilor precedente, mpreun cu idei luate din domenii precum change management, risk management, i systems analysis.
Procesul general pentru executarea i documentarea unei RCA-based Corrective Action 1. Definirea problemei. 2. Adunarea datelor. 3. ntrebare de ce i identificarea realiilor de cauzalitate asociate problemei date. 4. Identificarea cauzelor care, ndeprtate sau schimbate, vor preveni recurena. 5. Identificarea soluiilor efective care previn recurena, sunt sub controlul dezvoltatorului, ndeplinesc scopurile i nu cauzeaz alte probleme. 6. Implementarea recomandrilor. 7. Observarea soluiilor recomandate pentru a asigura eficacitatea. 8. Metodologia Variability Reduction pentru rezolvarea i evitarea problemelor.
Tehnici root cause analysis Barrier analysis Bayesian inference Causal factor tree analysis Change analysis Current Reality Tree Failure mode and effects analysis Fault tree analysis 5 Whys Ishikawa diagram Kepner-Tregoe Pareto analysis RPR Problem Diagnosis Apollo Root Cause Analysis
Obs. Lucrurile care interacioneaz cu sistemul pot fi vzute n termeni de actori (aa cum s-au definit n cadrul UML), nct sistemul se poate reprezenta ca n figura de mai jos:
n multe cazuri, frontierele sistemului sunt evidente (de exemplu, la sistemele cu un utilizator i o platform). n alte situaii, frontierele sistemului nu mai sunt aa evidente. De exemplu, sunt situaiile n care analistul trebuie s determine dac datele sunt mprite cu alte aplicaii sau dac noua aplicaie va fi distribuit ntre mai muli clienti etc. Dei de multe ori se identific relativ uor, actorii pot fi determinai rspunznd unor ntrebri de genul (vezi i cursul despre Diagramele cazurilor de utilizare): Cine va folosi informaia din sistem? Cine va opera sistemul? Cine va asigura mentenana sistemului? Unde va fi folosit sistemul? De unde i ia sistemul informaiile? Ce alte sisteme (exterioare sistemului considerat) vor interaciona cu sistemul?
Surs
Economic
Consideraii
Ce constrngeri financiare se aplic? Sunt consideraii legate de preul produsului? Sunt consideraii legate de liceniere? Sunt soluiile poteniale afectate de consideraii politice? Sunt probleme interdepartamentale? Soluia pe care o construim e deja n sistemele existente? Trebuie s meninem compatibilitatea cu soluiile existente? Ce S.O. i medii pot fi suportate? Suntem restricionai n alegerea tehnologiilor? Suntem restricionai n lucrul cu platformele i tehnologiile existente? Exist interdicii privind utilizarea altor tehnologii? Ne ateptm s folosim pachete software cumprate?
Politic
Sisteme
Tehnologic
Surs
Mediu (environment)
Consideraii
Sunt constrngeri legate de mediu (environment)? Sunt constrngeri legale? Care sunt constrngerile legate de securitate? Ce alte standarde ne pot restriciona? Este planificarea definit? Suntem restricionai privind resursele existente? Putem folosi munc din afar? Putem mri resursele?
Planificare i resurse
Odat identificate, unele dintre aceste constrngeri vor deveni cerine pentru noul sistem. Trebuie determinat impactul fiecrei constrngeri asupra soluiei poteniale.
Concluzii
Dup efectuarea analizei problemei, ar trebui s avem ncredere c avem: O bun nelegere a problemei i a eventualelor probleme din spatele problemei (root causes); Identificarea potrivit a stakeholders, a cror analiz (judecat) va determina n ultim instan succesul sau eecul sistemului; O nelegere a locului unde se pot gsi frontierele sistemului; O nelegere i identificare a constrngerilor care pot afecta sistemul
Managementul contractelor
1. Tipuri de contract
Resursele externe cerute pot fi sub form de servicii. Un exemplu simplu ar fi folosirea unei echipe temporare la contracte de durat mic, n vederea ndeplinirii anumitor sarcini. Pe de alt parte, contractul poate fi ncheiat pentru livrarea unei aplicaii software complete. Acesta poate fi: bespoke system (sistem comandat), i.e. un sistem care e creat de la zero, special pentru un client; off-the-shelf (gata pentru cumprare), pe care l cumperi ca atare (as is) uneori se mai numete shrink-wrapped software; customized off-the-shelf (COTS) software acesta este basic core system, care e modificat pentru a ndeplini cerinele unui anumit client. Obs. Livrarea unui echipament, conform legii din Anglia, poate fi privit ca un contract pentru livrarea de bunuri. Livrarea de software poate fi privit ca oferirea unui serviciu (pentru scrierea software-ului) sau ca acordarea unei licene pentru folosirea software-ului. Aceste disticii au implicaii legale.
O alt clasificare a contractelor este d.p.d.v. al modalitii de plat ctre furnizori: contracte cu pre fixat; contracte de timp i materiale; contracte cu pre fixat per unitatea livrat.
Preul e fixat atunci cnd se semneaz contractul. Clientul tie c dac nu exist schimbri n termenii contractului, preul pe care-l va plti este cel consemnat n contract.
n acest caz trebuie ca analiza cerinelor s fi avut deja loc. Odat nceput dezvoltarea, clientul nu-i poate schimba cerinele fr s negocieze preul contractului.
Avantajele acestei metode sunt: Cheltuielile clientului cunoscute; Motivarea furnizorului; Dezavantajele acestei metode sunt: Preuri mai mari pentru a permite eventualele lucruri neprevzute. Furnizorul adaug o marj la calcularea preului tocmai pentru a reduce riscul apariiei unor situaii neprevzute; Dificulti n modificarea cerinelor; O presiune upward asupra costului schimrilor. n competii cu ali furnizori, furnizorul va ncerca s ofere un pre ct mai sczut. Dac, odat contractul semnat, e nevoie de schimbri ale cerinelor, furnizorul e n poziia forte de a cere un pre mai mare pentru aceste schimbri; Ameninare la calitatea sistemului. Nevoia de a menine un pre fixat poate duce la deteriorarea calitii sistemului.
Contracte de timp i materiale Clientul e taxat la o valoare fix pentru unitatea de efort (de exemplu, or echip). La nceputul contractului, furnizorul ofer o estimare a costului, bazat pe nelegerea cerinelor utilizatorului, dar aceasta nu e baza pentru plata final. Avantajele acestei metode sunt: Uurina n a schimba cerinele; Lipsa presiunii preului; Dezavantajele acestei metode sunt: Handicapul clientului. Clientul e cel care se va nfrunta cu toate riscurile asociate cu cerine vag definite sau care se schimb; Lipsa motivaiei pentru furnizor. Furnizorul nu are motivaie s lucreze ntr-o manier care s ncurajeze economia costurilor.
Contracte cu pre fixat per unitatea livrat (pre unitar fixat) Acesta e asociat cu function point (FP) counting. Mrimea sistemului care urmeaz s fie livrat e calculat sau estimat la nceputul proiectului. Mrimea sistemului trebuie s fie estimat n linii de cod, dar FPs pot fi derivate cu uurin de la documentaia cerinelor. E stabilit preul per unitate. Preul final va fi preul unitar nmulit cu numrul de uniti. Exemplu. Tabelul de mai jos arat o astfel de estimare a preurilor (tabel preluat din Garmus, Herron, Measuring The Software Process, 1996)
Avantajele acestei metode sunt: nelegerea din partea clientului. Clientul poate vedea cum e calculat preul; Uurina de a face comparaii. Preurile stabilite pot fi comparate; Emerging functionality. Furnizorul nu-i asum riscul funcionalitii n cretere. Eficiena furnizorului. Furnizorul are nc motivaia s livreze sistemul la funcionalitatea cerut. Lyfe cycle range. Cerinele nu trebuie specificate n forma final la nceput. Contractul poate acoperi att etapa de analiza, ct i etapa de design. Dezavantajele acestei metode sunt: Dificulti cu msurarea dimensiunii software-ului. Numrul de linii de cod poate fi mrit folosind un stil de codare bombastic. Folosirea regulilor de numrare a FPs poate favoriza furnizorul sau clientul. Soluia ar fi s fie angajat un independent FP counter (numrtor independent al FPs); Schimbarea cerinelor. Anumite cerine pot afecta drastic tranzaciile, dar nu se adaug la numrrea global a FPs. O schimbare a cerinelor fcut trziu n ciclul de dezvoltare va necesita aproape sigur mai mult efort pentru implementare dect dac s-ar produce mai devreme.
O alt clasificare a contractelor (conform regulilor din Uniunea European) se face n legtur cu abordarea care e folosit pentru selectarea contractorului: deschis (open); restricionat (restricted); negociat (negociated).
Open tendering process n acest caz, orice furnizor poate face o ofert pentru furnizarea de bunuri i servicii. Mai mult, toate ofertele care sunt n conformitate cu condiiile originale din invitation to tender trebuie s fie considerate i evaluate n acelai mod ca celelalte. La un proiect major, unde exist o mulime de oferte i procesul de evaluare e consumator de timp, acest mod poate fi scump.
Restricted tendering process n acest caz, sunt oferte doar de la furnizorii care au fost invitai de client. Spre deosebire de open tendering process, clientul poate n orice moment s reduc numrul furnizorilor poteniali. Este n mod uzual cea mai bun abordare. Exist totui riscuri: acolo unde contractul rezultant e la un pre fixat, clientul i asum responsabilitatea pentru corectitudinea i completarea cerinelor specificate furnizorilor.
Negociated procedure Sunt situaii cnd procesul de ofertare restricionat nu e cel mai potrivit. n aceste cazuri, se poate justifica abordarea unui singur furnizor, caz n care clientul poate fi acuzat de favoritisme.
Cerinele definesc cu grij funciile care necesit s fie duse la bun sfrit de noua aplicaie i toate intrrile(inputs) i ieirile(outputs) necesare pentru aceste funcii. Cerinele trebuie de asemenea s declare orice standard cu care trebuie s fie conforme i sistemele cu care noul sistem s fie compatibil. Sunt necesare de asemenea cerine operaionale i de calitate (vezi capitolul despre Calitatea produselor software). Cerinele obligatorii (mandatory) trebuie s fie ndeplinite. Dac o propunere nu ndeplinete obligatorie, atunci propunerea va fi respins. Dac cerina e dezirabil (desirable), dar nu obligatorie, atunci propunerea poate fi acceptat din acest punct de vedere, dar trebuie ca alte aspecte ale propunerii s compenseze acest neajuns.
Planul de evaluare (evaluation plan) Odat specificat lista de cerine, trebuie schiat planul despre cum va fi evaluat propunerea. Pentru o aplicaie off-the-shelf, sistemul nsui va fi evaluat.
Invitaia la ofert (invitation to tender) Dup analiza cerinelor i producerea planului de evaluare, e posibil etapa de a invita posibilii furnizoti s fac o ofert. n esen, aceast invitaie trebuie nsoit de o scrisoare, n care s se ofere diverse informaii: cum va fi tratat legal oferta, care este termenul limit pentru prezentarea ofertei etc. Abordrile privind aceast etap nu sunt unitare n diverse ri, de aceea recomandm consultarea normelor legale pentru fiecare ar.
Evaluarea propunerilor Procesul de evaluare trebuie fcut metodic i planificat i ar putea include: examinarea atent a documentelor propunerii; intervievarea reprezentanilor furnizorilor; demonstraii; examinri ale site-urilor; teste practice. Documentele propunerii oferite de furnizori pot fi examinate pentru a vedea dac conin toate elementele ce satisfac cerinele originale. Se pot cere anumite clarificri asupra unor puncte ale propunerii. Orice declarare factual fcut de furnizor presupune o angajare legal din partea lui dac influeneaz cumprtorul s ofere contractul acelui furnizor. Cumprtorul poate lua iniiativa de a pstra note ale ntlnirilor i de scrie apoi furnizorului pentru a obine confirmarea asupra acurateii lor. Furnizorul poate, n finalul documentului contractului, s ncerce s exclud orice angajare la orice reprezentaii fcute n negocierile precontract.
Cnd produsul livrat se bazeaz pe un produs existent, e posibil s vad o demonstraie. Un pericol cu demonstraiile este acela c sunt controlate de furnizor. De aceea, clientul ar trebui s fac o planificare a lucrurilor pe care dorete s le vad n demonstraie, asigurndu-se astfel c toate elementele importante sunt vzute. Cu un software off-the-shelf, e posibil s avem acces concret la aplicaie. De exemplu, o versiune demonstrativ poate fi valabil (de genul celor care dup 39 zile nu mai sunt valabile). E nevoie de un plan de test, care s ne asigure ca sunt evaluate caracteristicile importante.
O problem frecvent este aceea c n timp ce o aplicaie existent lucreaz bine pe o anumit platform, nu lucreaz mulumitor pe platforma clientului. n acest caz sunt mai utile examinrile unor site-uri operaionale care folosesc sistemul.
Servicii. Acestea acoper lucruri ca: instruire; documentare; instalare; conversia fiierelor existente; mentenan; msuri de asigurare temporare. Proprietarul software-ului Dou chestiuni apar: mai nti, poate clientul s vnd software-ul la alii i a doua dac furnizorul poate vinde software-ul la alii. Cnd un software e scris special pentru un client, clientul va dori probabil s-i asigure exclusivitatea, de exemplu prin cumprarea copyright-ului sau prin specificarea n constract c folosete exclusiv software-ul.
Mediul (environment) Cnd trebuie instalat echipamentul fizic, trebuie specificat linia de demarcaie dintre responsabilitile furnizorului i clientului cu privire la lucruri cum ar fi furnizarea de energie. Cnd software-ul e furnizat, trebuie confirmat compatibilitatea cu hardware-ul existent i sistemul de operare existent. Angajamentele clientului Clientul trebuie s asigure accomodation pentru furnizori i probabil alte faciliti (internet, linie telefonic etc). Proceduri de acceptare Un sistem va fi acceptat numai dup a trecut de testele de acceptare. O parte a contractului va specifica detalii ca timpul pe care-l are clientul s fac testele, deliverables de care depind testele de acceptare i procedura pentru semnare atunci cnd testarea e completat. Standarde Clientul poate cere furnizorului dovada c diverse standarde sunt respectate.
Managementul proiectului i al calitii Contractul trebuie s cear ca standardele din seria ISO-9000 s fie ndeplinite, ca i ISO 12207 (de exemplu). Planificarea Ofer o planificare a timpului n care trebuie completate prile cheie ale proiectului. Aceast planificare va obliga att clientul, ct i furnizorul. De exemplu, furnizorul poate si n stare s instaleze software-ul la o dat convenit numai dac clientul face platforma hardware disponibil. Preul i metoda de plat n contract trebuie stabilit preul i modalitatea de plat. Cerine legale diferite n contract pot fi specificate ce condiii se aplic la subcontractarea muncii, obligaia pentru daune ctre o ter parte i liquidated damages. Liquidated damages sunt estimatori ai pierderilor financiare pe care clientul le sufer dac furnizorul a euat n obligaiile pe care i le-a asumat.
4. Managementul contractului
La anumite puncte de decizie, clientul are nevoie s examineze munca deja fcut i s ia decizii despre direcia viitoare a proiectului. Proiectul va necesita ca reprezentani ai clientului i furnizorului s interacioneze n multe puncte ale ciclului de dezvoltare. Aceast interaciune, sau ali factori externi, conduc(e) de obicei la necesitatea unor schimbri. Pentru fiecare punct de decizie, trebuie s fie definite deliverables ce urmeaz s fie prezentate de furnizori i toate output-urile.
Odat contractul ncheiat, trebuie avut n vedere calitatea muncii. Standardul ISO 12207 ofer printre altele posibilitatea existenei unor ageni, angajai independent de client sau furnizor, care se vor duce la bun sfrit verificarea, validarea i asigurarea calitii. Pe msur ce sistemul se dezvolt, apare uneori nevoia unor schimbri n cerine, care pot duce la modificarea termenilor contractului. Va fi nevoie deci de o procedur de control al schimbrilor, care s nregistreze cerinele pentru schimbri, mpreun cu acordul furnizorului i eventualele costuri suplimentare necesare pentru munca n plus. Clientul, pe de alt parte, trebuie s se asigure c n contract se specific i felul cum sunt tratate situaiile n care furnizorul nu respect una sau mai multe obligaii legale.
5. Acceptarea
Cnd munca e terminat, clientul trebuie s nceap activitatea legal pentru realizarea testrii de acceptare (acceptance testing). Contractul poate stabili o dat limit pentru ct poate dura testarea, astfel nct clientul s poat face testarea nainte de expirarea timpului, n vederea corectrii problemelor ridicate. O parte a plii sau chiar toat plata va depinde de testul de acceptare. Uneori o parte a plii finale va fi reinut pentru perioada rulare operaional i va fi pltit dac nivelul de fiabilitate este conform specificaiilor contractate. Exist de obicei o perioad de garanie, n timpul creia furnizorul poate pune la punct orice eroare aprut. Probabil c furnizorul poate cere o perioad de garanie mai mic (30 zile, de exemplu), n timp ce clientul ar ncerca s duc perioada de garanie pn spre 120 zile, de exemplu (aceste valori sunt orientative, dar pot fi ntlnite adesea n realitate).
Concluzii Cteva dintre punctele cheie din acest capitol pot fi astfel rezumate:
contractarea
e mai uor s se obin concesii din partea furnizorului nainte de semnarea contractului dect dup; un contract va stabili obligaii i pentru client, i pentru furnizor; negocierea contractului va include nelegerea asupra managementului relaiei dintre furnizor i client n timpul executrii proiectului.
4. Toate deliverables trebuie s fie identificate. Un deliverable trebuie s fie produs de un task sau nu va fi produs. 5. Completarea task-urilor trebuie s implice completarea ntregului task. Dac lipsesc task-uri importante sau deliverables, ntregul task nu va fi realizat. Exemplu. Echipa A vrea s dezvolte un sistem de recunoatere facial pentru folosirea pe un robot. Sistemul se dorete a fi folosit pentru a ntmpina vizitatorii n laboratorul de robotic. Ar trebui s recunoasc fee pe care le-a mai vzut cu o anumit probabilitate. Primul pas n work breakdown ar trebui s recunoasc urmtoarele subtask-uri:
Tabelul 1. Subtask-urile
Diagrama PERT
A) ALGORITMUL PENTRU TIMPII DE COMPLETARE (completion times). 1. Pentru fiecare nod, execut pasul 1.1 (pn sunt calculai toi timpii de completare) 1.1 Dac predecesorii sunt completai, atunci ia latest completion time al predecesorilor i adaug timpul cerut pentru acest nod. 2. Nodul cu latest completion time determin earliest completion time pentru proiect. Exemplu. Aplicnd algoritmul pentru tabelul 1 (artat ca diagram n figura de mai sus), ncepem cu subtask-ul a; nu are dependene, deci poate ncepe la timpul iniial (s zicem 0). Poate fi completat la 0+8=8. Similar, subtask-ul b poate fi completat la 0+10=10. n tabelul 2 (de pe pagina urmtoare) sunt ilustrate subtask-urile i critical paths. Doarece aceste subtask-uri nu sunt dependente n vreun fel, pot ncepe la momentul 0. Se presupune ns c exist persoane disponibile ca s fac ambele sarcini n acelai timp.
Tabelul 2. Subtask-urile
Exemplu (continuare). Pot fi calculai acum timpii pentru nodurile c i d. Deoarece predecesorii lui c se termin la 8 i 10, subtask-ul c poate ncepe la 10 i completat la 10+8=18. Timpul de start pentru d va fi 8 i timpul de completare poate fi 8+9=17 i pentru e vor fi 10 i 10+5=15. Procesm f i g. Timpii de start pot fi 18 i respectiv 17. Timpii de completare pentru f va fi 18+3=21 i 17+2=19 pentru g. Subtask-urile h i i se pot calcula cu amndou plecnd la 21 i h completat la 25 i i la 24. Tabelul 2 are toi timpii de start i completare.
B) CRITICAL PATH Critical path este un set de task-uri care determin cel mai mic timp de completare (shortest possible completion time). Algoritm pentru marcarea critical path 1. Start cu nodul (nodurile) cu latest completion time(s); marcai-l (le) drept critice. 2. Selectai predecesorul (predecesorii) nodului (nodurilor) critic(e) cu latest completion time(s); marcai-l(e) ca fiind critice. Continuai cu pasul 2 pn cnd se atinge nodul (nodurile) de start.
Tabelul 2. Subtask-urile Exemplu. In tabelul 2 (afiat i n acest slide, pentru claritate) se vd timpii de completare pentru toate subtask-urile. Marcm h ca parte a drumului critic (critical path). Predecesorii lui h sunt f i g. Subtask-ul f are timpul cel mai mare de completare (latest) al celor dou subtask-uri, deci f e marcat ca parte a drumului critic. Subtaskul f are c i d ca predecesori. Va fi marcat c ca parte a drumului critic, avnd timpul cel mai mare de completare. Similar, b va fi marcat ca parte a drumului critic, ca predecesor al lui c cu timpul de completare cel mai mare. Drumul critic e complet.
C) SLACK TIME (satgnare) Subtask-urile care sunt pe critical path trebuie s fie ncepute ct mai devreme cu putin, altfel tot proiectul va fi ntrziat. Totui subtask-urile care nu sunt pe critical path au o anumit flexibilitate privind momentul cnd sunt ncepute. Aceast flexibilitate se numete slack time. Algoritm pentru slack time 1. Alege nodul necritic cu timpul de terminare cel mai mare (latest ending time), nod care nu a fost procesat. Dac subtask-ul nu are succesori, alege latest ending time al tuturor nodurilor. Dac subtask-ul are succesori, alege cel mai mic dintre latest start times al nodurilor succesor. Acesta este latest completion time pentru acest subtask. F latest start timepentru acest subtask ca s reflecte acest timp. 2. Repet pasul 1 pn cnd toate noncritical path subtasks sunt procesate.
B) LOC-BASED COST ESTIMATION Formula de baz are 3 parametri: Cost=*KLOC+ Parametrul este costul marginal per KLOC (mii de linii de cod). Acesta este costul adugat pentru fiecare mie de linii de cod. Parametrul este un exponent ce reflect neliniaritatea relaiei. O valoare >1 nseamn c costul per KLOC se mrete pe msur ce mrimea proiectului crete. Parametrul reflect costul fixat pentru realizarea oricrui proiect. Exemplu. Compania A a nregistrat datele din proiectele anterioare. Estimai care ar fi parametrii pentru formula de estimare a costului i ce efort ar lua un proiect de 30 KLOC. Soluie. Din tabel rezult o relaie liniar ntre mrime (size) i efort (PM). Panta este 2,4, care reprezint . Deoarece linia e dreapt, =1. Valoarea lui va fi 0.
C) CONSTRUCTIVE COST MODEL (COCOMO) COCOMO este formula clasic de estimare a costului bazat pe LOC. A fost creat de Barry Boehm. Folosete mii de instruciuni durs livrate (thousands delivered source instructions KDSI) ca unitate a mrimii. KLOC e echivalent. Boehm a divizat datele de proiecte istorice n 3 tipuri de proiecte: a) Application (ex: procesoare de date) b) Utility programs (ex: compilatoare, analizoare) c) System programs Boehm a determinat valorile parametrilor pentru modelul costului pentru determinarea efortului: a) Application programs: PM=2.4*(KDSI)1.05 b) Utility programs: PM=3.0*(KDSI)1.12 c) System programs: PM=3.6*(KDSI)1.20
Boehm a determinat de asemenea c n datele de proiect, exist un timp de dezvoltare standard bazat pe tipul de proiect i mrimea proiectului. Mai jos sunt date formule pentru timpul de dezvoltare (development time TDEV): a) Application programs: TDEV=2.5*(PM)0.38 b) Utility programs: TDEV=2.5*(PM)0.35 c) System programs: TDEV=2.5*(PM)0.32 Exemplu. Calculai standardul TDEV pentru proiectele din tabelul alturat, folosind formulele de mai sus.
D) FUNCTION POINT ANALYSIS Ideea este s identificm i s cuantificm funcionalitatea cerut pentru proiect. Trebuie s cuantificm lucruri n comportarea exterioar care vor necesita procesare. Itemii clasici sunt:
Inquires sunt perechi cerere-rspuns care nu schimb datele interne. De exemplu, cererea pentru o adres a unui anumit angajat. Inputs sunt itemi ai datelor aplicaiei care sunt furnizai programului. Outputs sunt afiri ale datelor aplicaiei. Un output poate fi un raport, un screen display sau un mesaj de eroare. Internal files sunt fiiere logice ce sunt meninute de sistem. Dac un fiier coninnd date personale i date privind departamentul, se va contoriza probabil ca dou fiiere separate n function point analysis. External interfaces sunt date care sunt mprite cu alte programe.
Counting Unadjusted Function Points Itemii sunt identificai i clasificai ca simpli, medii, compleci. Se asigneaz ponderi i totalul se sumarizeaz. Acest total se numete unadjusted function points. Exemple de ponderi sunt date n tabelul de mai jos:
Nu exist standarde pentru numrarea function points. E important de reinut c function points ncearc s msoare cantitatea de efort necesar pentru dezvoltarea software.
E) PRODUCTIVITATEA Se determin prin mprirea LOC la efortul programatorilor, exprimat n zi-programare. (vezi i exemplele date la Calitatea software laborator). Exemplu. Compania A are efortul pentru fiecare faz a ciclului de via dat
n tabelul urmtor. Calculai efortul n termeni de LOC/zi-programare i n termeni de function points/zi programare. Function point estimate a fost de 50 unadjusted function points. Produsul final include 950 linii de cod.
Efortul total este de 65 zile-programare. Productivitatea este 950/65=14,6 linii de cod/zile-programare. Folosind fp (function points), obinem productivitatea=50fp/65 zileprogramare=0,77 fp/zile-programare.
F) EVALUAREA ESTIMRILOR Metrica propus de Tom DeMarco este estimate quality factor (EQF). EQF e definit ca aria de sub curba real, mprit cu aria dintre valoarea estimat i real. Valorile peste 8 sunt rezonabile, conform lui DeMarco. Exemplu. Estimrile de mai jos sunt date pentru un proiect care cost 3,5 milioane dolari i a fost completat dup 11,5 luni:
Aria total=11,5*3,5=40,25. Diferena este 2,3 3,5 1,5 + 3,1 3,5 4 + 3,9 3,5 2,5 + 3,4 3,5 3,5 = 4,75 Raportul este 40,25/4.75=8,7
ntrebri
1. 2. 3. 4. 5. De ce trebuie ca WBS s fie arbore? Care e avantajul folosirii diagramelor PERT? Este critical path important dac la proiect lucreaz doar o persoan? Care e importana slack time? De ce trebuie ca parametrii pentru estimarea costului s fie determinai din datele companiei?
Problema 1
Creai un WBS pentru task-ul vopsirii unei camere. Presupunem activitile: planificarea muncii, cumprarea proviziilor, vopsirea propriu-zis, curarea.
Problema 2
Desenai diagrama PERT pentru sarcinile problemei 1.
Problema 3
Desenai diagrama PERT pentru sarcinile prezentate n tabelul alturat. Completai tabelul artnd critical path i slack times.
Problema 4
Estimai parametrii de cost pentru mulimea de date din tabel:
Problema 5
Calculai efortul COCOMO, TDEV i productivitatea pentru un proiect organic care e estimat la 39800 linii de cod.
Indicaii i soluii
Indicaii la ntrebri
2. Care e avantajul folosirii diagramelor PERT? Rspuns: Dei WBS dezvolt o list de task-uri, e greu de vzut ce task-uri vor fi fcute primele i care task-uri determin final completion time. 3. Este critical path important dac la proiect lucreaz doar o persoan? Indicaie. E important dac toate task-urile sunt pe critical path.
Problema 1
Creai un WBS pentru task-ul vopsirii unei camere. Presupunem activitile: planificarea muncii, cumprarea proviziilor, vopsirea propriu-zis, curarea Soluie. Mai jos e dat un exemplu de soluie: a)Selectarea culorii pentru camer b)Cumprarea vopselei c)Cumprarea periilor d)Pregtirea pereilor e)Deschiderea cutiei de vopsea f)Amestecarea vopselei g)Vopsirea pereilor h)Curarea
Problema 2
Desenai diagrama PERT pentru sarcinile problemei 1: a. Selectarea culorii pentru camer b. Cumprarea vopselei c. Cumprarea periilor d. Pregtirea pereilor e. Deschiderea cutiei de vopsea f. Amestecarea vopselei g. Vopsirea pereilor h. Curarea Soluie.
Problema 3
Desenai diagrama PERT pentru sarcinile prezentate n tabelul de mai jos. Completai tabelul artnd critical path i slack times. Indicaie.
Problema 5 Calculai efortul COCOMO, TDEV i productivitatea pentru un proiect organic care e estimat la 39800 linii de cod.
Indicaii. Formula de aplicaie se folosete n acest caz: Cost = 2.4 * (KDSI)1.05 TDEV = 2.5 * (PM)0.38 Productivitatea = 39800 LOC / (114.8 PM * 20 zile/lun)