waterfall, iterativ, incremental
- waterfall
Stabilesti cerintele cu clientul, codezi, testezi, livrezi. Treci prin fiecare etapa o singura data. Cand ai ajuns la livrare, ai terminat proiectul.
- incremental
Stabilesti cerintele cu clientul. Stabilesti ce vei livra in prima etapa. Incepi prima etapa. Codezi, testezi, livrezi. Clientul vine cu noi cerinte. Stabilesti ce vei livra in etapa a doua. Incepi etapa a doua. Codezi, testezi, livrezi. Si apoi incepi etapa a treia. In fiecare etapa, livrezi functionalitate noua. Cand ai terminat toate etapele, produsul este utilizabil.
- iterativ
Stabilesti ceva cerinte cu clientul. Codezi, testezi, livrezi. Dupa prima etapa, ai trecut deja prin intreg produsul. Exista zone care merg mai bine, si zone care merg mai prost. Dar le-ai atins pe toate. Rafinezi cerintele. Incepi etapa a doua. Codezi, testezi, livrezi. Ai un produs care merge mai bine. In fiecare etapa, rafinezi functionalitatile existente. Produsul este mai mult sau mai putin utilizabil in fiecare moment.
Si intrebari :
- Cum faci ca sa convingi clientul ca cea mai buna abordare pentru el, din punct de vedere al raportului beneficiu / pret, este abordarea iterativa ?
- Este intr-adevar abordarea iterativa cea mai eficienta ca beneficiu / pret pentru client?
Experiment :
O echipa creeaza un produs iterativ. Dupa 10 iteratii, lucrurile ajung sa fie OK. In acel moment, scrii specificatiile finale ale produsului.
Dai apoi aceste specificatii unei alte echipe identice pentru implementare in abordarea waterfall. Intuitia spune ca cea de-a doua echipa (waterfall (!)) va face lucrurile mai rapid decat prima echipa (iterativ).
Adica, cat timp clientul stie exact ce vrea, waterfall este mai eficienta decat iterativ ? Pot spune atunci ca abordarea iterativa este utila strict pentru ca ajuta clientul sa-si dea seama ce are nevoie (si atat (!)) ? Clientii chiar nu stiu niciodata ce vor ?
Daca as avea un client despre care stiu cu certitudine ca el cunoaste exact ce are nevoie, ar trebui sa-i propun waterfall sau iterativ, sau incremental ?
Diferenta intre incremental si iterativ, asa cum este vazuta de gojko :

Pe aceeasi tema :
http://alistair.cockburn.us/index.php/Incremental_versus_iterative_development
http://gojko.net/2007/12/04/waterfall-trap/
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
February 8th, 2008 at 12:28 am
Cred ca o alta reprezentare pentru procesul iterativ ar fi:
Dupa prima iteratzie s-ar putea sa fiu nevoit sa sterg totul si sa o iau de la capat pentru ca facilitatzile din a doua iteratzie nu se potrivesc cu arhitectura din prima iteratzie.Aceste schimbari se vad imediat la punga(bani).
Dupa mine nu exista o retzeta clara ( waterfall, iterativ, incremental) ci mai degraba o combinatzie intre toate aceste metode.
February 8th, 2008 at 12:31 am
Dupa “Cred ca o alta reprezentare pentru procesul iterativ ar fi” erau aceste imagini:
http://seekcodes.com/images/Ugly-Women/seekcodes_227_5908.jpg
http://seekcodes.com/images/Ugly-Women/seekcodes_227_5917.jpg
http://picturi.uv.ro/images/300px-Mona_Lisa.jpg
February 8th, 2008 at 10:19 am
Andrei, ceea ce spui tu se poate intampla pentru abordarea incrementala (exista un “backlog” cu features, clientul adauga acolo features, tu selectezi X features pe care le livrezi la o iteratie).
Situatia in incremental ar fi la modul :
“Tu discuti cu clientul ca ii vei face un mijloc de locomotie, ii dai o masina cu motor si roti in iteratia 1, si el iti cere in iteratia 2 sa ii pui si aripi”). E complicat sa mai faci asta.
In abordarea iterativa, la fiecare iteratie lucrezi asupra *aceluiasi* set de features, despre care s-a discutat la inceput. Functionalitatile se rafineaza doar, nu apar lucruri noi.
In iterativ, ar fi cam asa :
“Clientul iti cere la inceput o masina, tu ii livrezi in iteratia 1 o masina cu tot ce trebuie, functionala, doar ca franele, directia, si transmisia sunt foarte foarte basic. In iteratia 2 imbunatatesti franele. Urmatoarea iteratie, imbunatatesti transmisia. Clientului *NU* ii este permis sa spuna ca ar vrea aripi. Poate sa spuna insa ca i-ar placea ca volanul sa fie patrat, si nu rotund asa cum l-ai facut tu la prima iteratie:.
February 8th, 2008 at 11:37 am
Legat de exemplu cu masina:
Ca la iteratzia 2 sa pot sa pun frane mai bune trebuie ca cadrul( core-ul) trebuie sa permita sa potzi sa pui acele frane pe cadrul pe care l-am construit in prima iteratzie. Daca nu permite acest lucru atunci trebuie sa schimb cadrul si atunci costurile sar in aer .
Cand un client analizeaza mai multe oferte pentru un software el vrea sa stie costul total si nu doar pentru prima iteratzie.