Sunteți pe pagina 1din 63

Ingineria programrii

2. Metodologii de dezvoltare a programelor

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Modelul V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Metodologia V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Metodologie de dezvoltare

Cnd pornim la dezvoltarea unui program avem nevoie de:


nelegerea clar a cerinelor Un set de metode i instrumente de lucru Un plan de aciune = Metodologie de dezvoltare

Etapele dezvoltrii programelor


Analiza cerinelor (ce vrea clientul - nregistrarea cerinelor ntr-o manier ct mai clar i mai fidel) Proiectarea arhitectural (divizarea sistemului n module) Proiectarea detaliat (proiectarea modulelor) Scrierea codului Integrarea componentelor (model big-bang vs. incremental) Validarea (construim produsul corect?-dpdv al utilizatorului) Verificarea (construim corect produsul?-dpdv al dezvoltatorului) ntreinerea

Cte metodologii exist?


Unele companii folosesc propriile metodologii Altele folosesc metodologii comerciale Fr o metodologie adecvat, dezvoltarea produsului este haotic

Metodologia potrivit

Alegerea unei metodologii de dezvoltare trebuie s in seama de natura fiecrui proiect:


Bugetul Mrimea echipei Tehnologia utilizat Instrumentele i metodele Termenele limit Procesele existente deja

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Metodologia V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Abordarea codeaz i repar


engl. code and fix Cea mai des ntlnit metodologie Cea mai rapid i mai puin eficient metod de dezvoltare a aplicaiilor Nu exist reguli stabilite Deseori ntlnit n companii mici, la nceput, cu puini programatori

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Metodologia V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Metodologia secvenial

n metodologia secvenial, cunoscut i sub numele de metodologia cascad, are loc mai nti faza de analiz, apoi cea de proiectare, urmat de cea de implementare, iar n final se realizeaz testarea Echipele care se ocup de fiecare faz pot fi diferite, iar la fiecare tranziie de faz poate fi necesar o decizie managerial

Avantaje

Este potrivit cnd complexitatea sist. este mic iar cerinele sunt statice Foreaz meninerea unei discipline de lucru care evit presiunea scrierii codului nainte de a cunoate precis ce produs va trebui de fapt construit Un mare nr. de sist. software de succes din trecut au fost construite cu o met. secven.; totui, trebuie spus c presiunea de schimbare din partea surselor externe era destul de mic la momentul resp.

Dezavantaje

Acord o foarte mare importan fazei de analiz Nu exist un proces de corectare a erorilor dup lansarea cerinelor finale Nu exist nici feedback de la echipa de implementare n ceea ce privete complexitatea codului pt. o anumit cerin Poate produce sisteme care, la vremea lansrii, s fie deja nvechite

Metodologia cascad

engl. waterfall (W. W. Royce, 1970) Procesul curge de la etap la etap, ca apa ntr-o cascad Modelul cascad cu feedback propune remedierea problemelor descoperite n pasul precedent

Avantaje

Dup fiecare etap exist un pas de validare, practic un pas napoi interactiv ntre fiecare dou etape Este de fapt o combinaie de metodologie secvenial cu elemente ciclice Fiecare pas are ca rezultat un produs bine definit (documente de specificaie, model etc.)

Dezavantaje

Problemele la pasul i care sunt descoperite la pasul i+3 rmn iremediabile Clientul obine o viziune practic asupra produsului doar n momentul terminrii procesului de dezvoltare nghearea prematur a cerinelor conduce la obinerea unui produs prost structurat i care nu execut ceea ce dorete utilizatorul

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Metodologia V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Metodologia ciclic

n fiecare faz se consum un timp mai scurt, dup care urmeaz mai multe iteraii prin toate fazele Ideea este de fapt urmtoarea: gndete un pic, planific un pic, implementeaz un pic, testeaz un pic i apoi ia-o de la capt Pe msur ce procesul nainteaz, sunt generate din ce n ce mai multe detalii n final, dup cteva cicluri, sistemul este complet i gata de lansare Procesul poate ns continua pentru lansarea mai multor versiuni ale produsului

Metodologia spiral

Barry Boehm (1988) Ciclul 1 Analiza preliminar


1. Obiective, alternative, constrngeri 2. Analiza riscului i prototipul 3. Conceperea operaiilor 4. Cerinele i planul ciclului de via 5. Obiective, alternative, constrngeri 6. Analiza riscului i prototipul 7. Simulare, modele, benchmark-uri 8. Cerine software i validare 9. Plan de dezvoltare 10. Obiective, alternative, constrngeri 11. Analiza riscului i prototipul 12. Simulare, modele, benchmark-uri 13. Proiectarea produsului software, validare i verificare 14. Integrare i plan de test 15. Obiective, alternative, constrngeri 16. Analiza riscului i prototipul operaional 17. Simulare, modele, benchmark-uri 18. Proiectare detaliat 19. Cod 20. Integrarea unitilor i testarea acceptrii 21. Lansarea produsului

Ciclul 2 Analiza final


Ciclul 3 Proiectarea

Ciclul 4 Implementarea i testarea


Avantaje

Se bazeaz pe ideea perfecionrii incrementale ale metodologiei secveniale Permite feedback-ul de la fiecare echip n ceea ce privete complexitatea sau corectitudinea cerinelor: exist etape n care pot fi corectate eventualele greeli Clientul poate arunca o privire asupra rezultatului i poate oferi informaii importante mai ales n faza dinaintea lansrii produsului Procesul de dezvoltare se poate adapta mai bine progresului tehnologic: pe msur ce apar noi soluii, ele pot fi ncorporate n arhitectura produsului Recunoate c problema principal a dezvoltrii programelor este riscul

Exemple de riscuri

n timpul unui proces ndelungat de dezvoltare, cerinele noi ale clientului sunt ignorate Clientul schimb cerinele O firm concurent lanseaz un program rival pe pia Un dezvoltator/arhitect prsete echipa de dezvoltare O echip nu respect un termen de livrare pentru o anumit component

Dezavantaje

Fiecare ciclu produce un efort mai mare de munc pentru ciclul urmtor, ceea ce ncarc orarul planificat i poate duce la eliminarea unor funcii sau la o calitate sczut Lungimea sau numrul de cicluri poate crete foarte mult De vreme ce nu exist constrngeri asupra echipei de analiz s fac lucrurile cum trebuie de prima dat, acest fapt duce la scderea responsabilitii Nu exist termene limit precise; ciclurile continu fr o condiie clar de terminare Echipa de proiectare nu poate realiza o arhitectur complet Echipa de implementare poate fi pus n situaia nedorit n care arhitectura i cerinele sistemului sunt n permanen schimbate

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Metodologia V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Metodologia hibrid ecluz


engl. watersluice (R. Burback, 1997) Separ aspectele cele mai importante ale procesului de dezvoltare a unui produs software de detaliile mai puin semnificative i se concentreaz pe rezolvarea primelor Pe msur ce procesul continu, detaliile din ce n ce mai fine sunt rafinate, pn cnd produsul poate fi lansat Preia natura iterativ a metodologiei spiral, la care adaug progresul sigur al metodologiei cascad

Metodologia hibrid ecluz

Etapa I : Schia de principiu

n aceast prim etap, echipele lucreaz simultan la toate fazele problemei. Echipa de analiz sugereaz cerinele. Echipa de proiectare le discut i trimite sarcinile critice de implementare echipei de implementare. Echipa de testare pregtete i dezvolt mediul de test n funcie de cerine. Echipa de implementare se concentreaz asupra sarcinilor critice, care n general sunt cele mai dificile.

Etapa II : Prototipul

Schimbrile n cerine sunt nc permise, ns ar trebuie s fie foarte rare i numai dac sunt absolut necesare, deoarece modificrile cerinelor n acest stadiu al proiectului sunt foarte costisitoare. Este posibil totui ajustarea arhitecturii, pe baza noilor opiuni datorate tehnologiei. Dup ce sarcinile critice au fost terminate, echipa de implementare se poate concentra pe extinderea acestora, pentru definirea ct mai multor aspecte ale aplicaiei.

Etapa III : Lansarea versiunilor alfa i beta

Arhitectura este ngheat, iar accentul cade pe implementare i asigurarea calitii. Prima versiune lansat se numete n general alfa. Produsul este nc imatur; numai sarcinile critice au fost implementate la calitate ridicat. O a doua lansare reprezint versiunea beta. Rolul su este de a convinge clienii c aplicaia va fi un produs adevrat i de aceea se adreseaz unui numr mai mare de clieni.

Etapa IV : Produsul

n aceast etap implementarea este ngheat i accentul cade pe asigurarea calitii. Scopul este realizarea unui produs competitiv. n produsul final nu se accept erori critice.

Avantaje

Recunoate faptul c oamenii fac greeli i c nici o decizie nu trebuie s fie absolut. Echipele nu sunt blocate ntr-o serie de cerine sau ntr-o arhitectur imobil care se pot dovedi mai trziu inadecvate sau chiar greite Pentru respectarea termenelor limit, impune date de ngheare a unor faze Se pune mare accent pe comunicarea ntre echipe, ceea ce reduce cantitatea de cod inutil la care ar trebui s se renune n mod normal ncearc s mute toate erorile la nceputul procesului, unde corectarea, sau chiar renceperea de la zero a lucrului, nu sunt foarte costisitoare.

Dezavantaje

Presupune asumarea unor responsabiliti privind delimitarea etapelor i nghearea succesiv a fazelor de dezvoltare Presupune crearea unui mediu de lucru n care acceptarea responsabilitii pentru o decizie care se dovedete mai trziu greit s nu se repercuteze n mod negativ asupra individului Se dorete de asemenea schimbarea atitudinii echipelor fa de testare, care are loc nc de la nceput, i fa de comunicarea continu, care poate fi dificil, ntruct cele patru faze reprezint perspective diferite asupra realizrii produsului

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Modelul V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Modelul V

germ. V-Modell Dezvoltat pentru reglementarea dezvoltrii de software n administraia federal german Evideniaz testarea pe tot parcursul ciclului de dezvoltare Trecerea la faza urmtoare se face numai dup ce toate produsele din faza curent au trecut testele de verificare i validare Procesul de verificare i validare are scopul detectrii ct mai multor erori n ciclul de dezvoltare

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Modelul V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Prototipizarea

Prototipul ajut clientul n a-i defini mai bine cerinele i prioritile Prototipul este de obicei produs ct mai repede, deci stilul de programare este de obicei neglijent Se disting dou feluri de prototipuri:

Abandonabil (throw-away) doar obinerea unei specificaii Evoluionar crearea unui schelet al aplicaiei

Avantaje

Permite dezvoltatorilor s elimine lipsa de claritate a specificaiilor Ofer utilizatorilor ansa de a schimba specificaiile ntr-un mod ce nu afecteaz drastic durata de dezvoltare ntreinerea este redus, deoarece validarea se face pe parcursul dezvoltrii Se poate facilita instruirea utilizatorilor finali nainte de terminarea produsului

Dezavantaje

Deoarece prototipul ruleaz ntr-un mediu artificial, anumite dezavantaje ale produsului final pot fi scpate din vedere de clieni Clientul nu nelege de ce produsul necesit timp suplimentar pentru dezvoltare, avnd n vedere c prototipul a fost realizat att de repede Deoarece au n fiecare moment ansa de a face acest lucru, clienii schimb foarte des specificaiile Poate fi nepopular printre dezvoltatori, deoarece implic renunarea la propria munc

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Modelul V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Metode formale

Sunt folosite formalismul i rigoarea matematicii n prima faz este construit o specificaie n limbaj matematic Apoi, aceast specificaie este transformat n programe, de obicei printr-un proces incremental

Avantaje

Precizia obinut prin specificarea formal Pstrarea corectitudinii n timpul transformrii specificaiei n cod executabil Ofer posibilitatea generrii automate de cod Verificarea consistenei i testarea prin metode similare demonstrrii automate de teoreme Sunt potrivite n special pentru sisteme cu cerine critice

Dezavantaje

Specificarea formal este de obicei o barier de comunicare ntre client i analist Necesit personal foarte calificat (deci mai scump) Folosirea impecabil a tehnicilor specificrii formale nu implic neaprat obinerea de programe sigure, deoarece anumite aspecte critice pot fi omise din specificaiile iniiale

Exist mai multe limbaje pentru specificarea formal a funcionalitii programelor, ca de exemplu:

Z CSP(Communicating Sequential Processes) VDM (Vienna Development Method) Larch FDM(Formal Development Methodology) etc.

Exemplu: Limbajul Z

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Modelul V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Extreme Programming

Extreme programming = programare extrem Metod de programare agil, potrivit dezvoltrii rapide de aplicaii

Principiile metodelor agile


Implicarea clientului Clientul trebuie implicat pe tot parcursul procesului de dezvoltare. Rolul su este de a prioritiza noile cerine i de a evalua iteraiile sistemului Livrarea incremental Programul este dezvoltat incremental, clientul indicnd cerinele care trebuie incluse la fiecare iteraie Oamenii nu procesul Abilitile echipei de dezvoltare trebuie recunoscute i exploatate. Echipa trebuie lsat s-i contureze propriile modaliti de lucru, fr a i se da reete Acceptarea schimbrii Echipa trebuie s se atepte ca cerinele s se schimbe iar proiectarea sistemului trebuie fcut astfel nct s se adapteze uor la aceste schimbri Meninerea simplitii Concentrare pe simplitate att n programele dezvoltate ct i n procesul de dezvoltare. Oricnd este posibil, trebuie eliminat complexitatea din sistem

Problemele metodelor agile

Este dificil meninerea interesului clienilor implicai n proces Membrii echipei pot fi incapabili s se adapteze la implicarea intens caracteristic metodelor agile Cnd exist mai muli factori de decizie, este dificil prioritizarea schimbrilor Meninerea simplitii necesit lucru suplimentar Contractele pot fi o problem n cazul dezvoltrii iterative

Extreme Programming

XP consider c dezvoltarea programelor nu nseamn ierarhii, responsabiliti i termene limit, ci nseamn colaborarea oamenilor din care este format echipa. Acetia sunt ncurajai s i afirme personalitatea, s ofere i s primeasc cunotine XP consider c dezvoltarea de programe nseamn n primul rnd scrierea de programe, nu documente, edine i rapoarte

Carta drepturilor dezvoltatorului

Ai dreptul s tii ceea ce se cere, prin cerine clare, cu declaraii clare de prioritate Ai dreptul s spui ct i va lua s implementezi fiecare cerin, i s i revizuieti estimrile n funcie de experien Ai dreptul s i accepi responsabilitile, n loc ca acestea s-i fie atribuite Ai dreptul s faci treab de calitate n orice moment Ai dreptul la linite, distracie i la munc productiv i plcut

Carta drepturilor clientului


Ai dreptul la un plan general, s tii ce poate fi fcut, cnd, i la ce pre Ai dreptul s vezi progresul ntr-un sistem care ruleaz i care se dovedete c funcioneaz trecnd teste repetabile pe care le specifici tu Ai dreptul s te rzgndeti, s nlocuieti funcionaliti i s schimbi prioritile Ai dreptul s fii informat de schimbrile n estimri, suficient de devreme pentru a putea reduce cerinele astfel ca munca s se termine la data prestabilit. Poi chiar s te opreti la un moment dat i s rmi cu un sistem folositor care s reflecte investiia pn la acea dat

Caracteristici

Echipa de dezvoltare nu are o structur ierarhic; fiecare contribuie la proiect folosind maximul din cunotinele sale Proiectul este n mintea tuturor programatorilor din echip, nu n documentaii, modele sau rapoarte Cerinele clientului sunt exprimate ca scenarii sau povestiri (user stories) Acestea sunt scrise pe bileele iar echipa de dezvoltare le mparte n sarcini de implementare (care stau la baza planificrii orarului de lucru i a estimrii costurilor) La orice moment, un reprezentant al clientului este disponibil pentru clarificarea cerinelor

Caracteristici

Scrierea de cod este activitatea cea mai important La fiecare pas se face numai ce este absolut necesar n momentul urmtor Codul se scrie ct mai simplu i se optimizeaz (refactoring) de cte ori e posibil Se scrie mai nti cod de test Dac apare necesitatea rescrierii sau eliminrii codului, aceasta se face fr mil Modificrile aduse codului sunt integrate continuu (de cteva ori pe zi) Se programeaz n echip (programare n perechi); echipele se schimb la sfritul unei iteraii (1-2 sptmni) Se lucreaz 40 de ore pe sptmn, fr lucru suplimentar

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Modelul V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Metodologia Open Source


Open source = surs la vedere O abordare recent, aprut ca urmare a dezvoltrii mijloacelor de comunicaie: FTP, e-mail, grupuri de discuie Exemple clasice: sistemul de operare Linux, browser-ul Netscape 5 Codul surs este transmis utilizatorului final ntr-o manier non-proprietar (fr patent), pe baza unei licene open-source (gen GNU)

Critici

Nu exist documente de proiectare sau alte documentaii ale proiectului Nu se realizeaz testarea la nivel de sistem Nu exist cerine ale utilizatorilor n afar de funcionalitatea de baz Marketingul produsului este incomplet

O iteraie tipic

Dezvoltatorul realizeaz proiectarea i codarea (individual sau n echip) Ceilali dezvoltatori sau comunitatea de utilizatori realizeaz debugging-ul i testare Noile funcionaliti dorite i erorile depistate sunt trimise iniiatorului proiectului Se lanseaz o nou versiune cu erorile corectate i se analizeaz noile cerinele Se distribuie o list de sarcini ctre comunitatea de utilizatori, cutndu-se membri voluntari care s execute sarcinile de pe list

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Modelul V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Reverse Engineering

Reverse engineering = inginerie invers Se analizeaz sistemele anterioare i se ncearc reutilizarea componenelor existente

Software, hardware Documentaie, metode de lucru

Unele componente nu pot fi utilizate, altele trebuie modificate (n faza de proiectare) Componentele selectate sunt integrate direct n sistem

Metodologii de dezvoltare a programelor


1. Etapele dezvoltrii programelor 2. Abordarea codeaz i repar 3. Metodologia secvenial cascad 4. Metodologia ciclic spiral 5. Metodologia hibrid ecluz 6. Modelul V 7. Prototipizarea 8. Metode formale 9. Extreme Programming 10. Metodologia Open Source 11. Reverse Engineering 12. Metodologia de dezvoltare Offshore

Metodologia de dezvoltare Offshore


Offshore = n larg Companiile consider outsourcing-ul pentru funciile care pot fi dezvoltate mai ieftin n alt ar Venituri din outsourcing IT n 2004:

India 43% Canada 32% China 5% Europa de Est 5%

Motive pentru outsourcing


Reducerea costurilor Creterea eficienei Concentrarea asupra obiectivelor critice ale proiectului Accesarea flexibil a unor resurse care altfel nu ar fi accesibile (de ex. personal nalt calificat) Dimensiunea mare a proiectului

Etape

Iniierea proiectului (local) Analiza cerinelor (local) Proiectarea de nivel nalt (local) Proiectarea detaliat (offshore) Implementarea (offshore) Testarea (offshore sau local) Livrarea (local)

Concluzii

Simpla adoptare a unei metodologii fr o analiz temeinic a cerinelor i contextului de lucru nu este fezabil Fr sprijin din partea factorilor de decizie executiv, dezvoltarea proiectului este complex i de durat Metodologia este o tactic ce trebuie considerat numai dup determinarea strategiei generale a companiei