Revoluţia AGILERevoluRevoluţţia ia AGILEAGILE
Teodor Dărăbă[email protected] Dărăbă[email protected]
O nouă abordare în dezvoltarea de softwareO nouă abordare O nouă abordare îîn n dezvoltarea de softwaredezvoltarea de software
2
Topica prezentăriiTopica prezentării
Software-ul nu este ceea ce credem că este.Software-ul nu este ceea ce credem că este.
Ce este un software?
Nivelele ignoranţei umane
Legile dezvoltării de software
Noile concepte
AGILE
Ce este un software?
Nivelele ignoranţei umane
Legile dezvoltării de software
Noile concepte
AGILE
Această prezentare
descrie baza reală a dezvoltării de
software, principiile fundamentale ce se aplică proceselor de dezvoltare software şi prezintă un nou model –
AGILE –
pentru practicile curente în dezvoltarea de software.
Această prezentare
descrie baza reală a dezvoltării de
software, principiile fundamentale ce se aplică proceselor de dezvoltare software şi prezintă un nou model –
AGILE –
pentru practicile curente în dezvoltarea de software.
Motto:Motto:
Ce este
un software?Ce
este
un software?
4
Este software-ul este un Produs
?!Este software-ul este un
Produs
?!
Software-ul este…
Mediul în care
stocăm cunoştiinţele !
Software-ul este…
Mediul în care
stocăm cunoştiinţele !
Probabil, este cea mai mare greşeală de la
inventarea notiunii de software
Probabil, este cea mai mare greşeală de la
inventarea notiunii de software
Ei bine…NU ESTE !…Ei bine…NU ESTE !…
Este al cincilea element ... Este al cincilea element ...
5
Istoria mediilor de stocare
a cunoştiinţelor
Istoria mediilor de stocare
a cunoştiinţelor
~ 600 de ani: Cărţile~ 600 de ani: Cărţile
~ 2 milioane de ani: Creierul~ 2 milioane de ani: Creierul
~ 4 miliarde de ani: ADN~ 4 miliarde de ani: ADN
~ 1 Milion de ani: Hardware~ 1 Milion de ani: Hardware
~ 50 de ani: Software~ 50 de ani: Software
6
Caracteristicile mediilor de stocareCaracteristicile mediilor de stocare
0 20 40 60 80 100
ADN
Creier
Dispozitive
Cărţi
SoftwareEfect în lumearealăPersistenţa
Rata schimbării
Ajustareconştientă
7
Stadiile evoluţiei modului de stocare al cunoştiinţelor pot fi
caracterizate după cum urmează : ADN:
Aplicarea şi stocarea inconştientăa cunoştiinţelor
Creier:
Aplicarea şi stocarea conştientă
a
cunoştiinţelor Dispozitive:
Aplicarea
conştientă
a cunoştiinţelor
Cărţi:
Mediu portabil de stocare conştientă
a cunoştiinţelorSoftware:
dezvoltarea,
stocarea, transportul
şi
aplicarea conştientă a cunoştiinţelor
Stadiile evoluţiei modului de stocare al cunoştiinţelor pot fi
caracterizate după cum urmează :ADN:
Aplicarea şi stocarea inconştientăa cunoştiinţelor
Creier:
Aplicarea şi stocarea conştientă
a
cunoştiinţelorDispozitive:
Aplicarea
conştientă
a cunoştiinţelor
Cărţi:
Mediu portabil de stocare conştientă
a cunoştiinţelorSoftware:
dezvoltarea,
stocarea, transportul
şi
aplicarea conştientă a cunoştiinţelor
Evolutia stocarii
cunoştiinţelorEvolutia
stocarii
cunoştiinţelor
8
Localizarea cunoştiinţelorLocalizarea cunoştiinţelor
Dacă ştim ceva, există doar trei locuri unde putem stoca aceste cunoştiinţe ....
- Creier
- Cărţi– Software
Dacă ştim ceva, există doar trei locuri unde putem stoca aceste cunoştiinţe ....-
Creier
- Cărţi– Software
9
Ce este Dezvoltarea de software
?Ce este
Dezvoltarea de software
?
Dacă software-ul
nu este un produs, atunci
dezvoltarea de software nu este o activitate de “producţie de produse”
Dacă software-ul este doar un mediu de stocare unde ne ţinem cunoştiinţele, atunci dezvoltarea de software devine o activitate de “achiziţie de cunoştiinţe”
Problemă: Nu gestionăm dezvoltarea de software ca pe un proces de achiziţie al cunoştiinţelor -
îl
gestionăm ca pe un proces de producţie de bunuri sau
produse.
Dacă software-ul
nu este un produs, atunci
dezvoltarea de software nu este o activitate de “producţie de produse”
Dacă software-ul este doar un mediu de stocare unde ne ţinem cunoştiinţele, atunci dezvoltarea de software devine o activitate de “achiziţie de cunoştiinţe”
Problemă: Nu gestionăm dezvoltarea de software ca pe un proces de achiziţie al cunoştiinţelor -
îl
gestionăm ca pe un proces de producţie de bunuri sau
produse.
Nivelele ignoranţei
umane
şi
Legile dezvoltării de software
Nivelele ignoranţei
umane
şi
Legile dezvoltării de software
Ignoranţa de ordin 0
(0I):
Lipsa
ignoranţei(probabil)
eu
ştiu
ceva
Ignoranţa
de ordin 1 (1I):
Lipsa
cunoaşteriiEu nu ştiu nimic
Ignoranţa de ordin 2
(2I):
Lipsa
conştientizării lipsei
cunoaşteriiEu nu ştiu că nu ştiu nimic
Ignoranţa de ordin 3
(3I):
Lipsa
unui proces
de cunoaştereNu cunosc o modalitate efectivă de a afla că eu nu ştiu că nu ştiu nimic
Ignoranţa de ordin 4
(4I):
Meta-ignoranţaEu nu ştiu despre existenţa celor 5 nivele ale ignoranţei umane
Ordonarea ignoranţei umaneOrdonarea
ignoranţei umane
12
Ignoranţa umană şi munca Ignoranţa umană şi munca
0I = răspunsul— necesită un efort foarte mic
1I = întrebarea—necesită un efort
mic
2I = nu avem nici măcar întrebarea– Este sursa celor mai multe probleme în estimarea efortului şi de obicei, adăugăm o rezervă de efort pentru a obţine nivelul 2I- De aceea rezultatele suferă de sindromul “90% gata”
şi este motivul pentru care testarea este foarte dificilă– De aceea avem probleme cu diversele metode şi modele
3I = nu avem un proces eficient– Trebuie să consumăm timp şi efort pentru a crea un proces
…În consecinţă, cea mai mare parte a muncii oamenilor este focalizată in reducerea ignoranţei de ordin 2I şi 3I
0I = răspunsul— necesită un efort foarte mic
1I = întrebarea—necesită un efort
mic
2I = nu avem nici măcar întrebarea– Este sursa celor mai multe probleme în estimarea efortului şi de obicei, adăugăm o rezervă de efort pentru a obţine nivelul 2I- De aceea rezultatele suferă de sindromul “90% gata”
şi este motivul pentru care testarea este foarte dificilă– De aceea avem probleme cu diversele metode şi modele
3I = nu avem un proces eficient– Trebuie să consumăm timp şi efort pentru a crea un proces
…În consecinţă, cea mai mare parte a muncii oamenilor este focalizată in reducerea ignoranţei de ordin 2I şi 3I
13
Legile dezvoltării de
softwareLegile
dezvoltării de
software
Prima Lege:Poţi să ai doar un proces pentru ceva ce ştii cum se face
Corolar la Prima Lege:
Nu poţi să ai un proces pentru ceva ce n-ai făcut niciodată
Prima Lege:Poţi să ai doar un proces pentru ceva ce ştii cum se face
Corolar la Prima Lege:
Nu poţi să ai un proces pentru ceva ce n-ai făcut niciodată
14
Legile dezvoltării
de softwareLegile
dezvoltării
de software
Lema “Veşnica Întîrziere”
Singurele procese pe care le putem utiliza la acest proiect sunt cele dezvoltate şi utilizate pentru proiectele trecute
....
…Care sunt foarte diferite de acest proiect ...... De aceea necesită un alt proces ...... Care ne va întîrzia proiectul.
Lema “Veşnica Întîrziere”
Singurele procese pe care le putem utiliza la acest proiect sunt cele dezvoltate şi utilizate pentru proiectele trecute
....
…Care sunt foarte diferite de acest proiect ...... De aceea necesită un alt proces ...... Care ne va întîrzia proiectul.
15
Legile dezvoltării de softwareLegile dezvoltării de software
A doua Lege:
Poţi să defineşti procesele numai la două nivele de detaliu:
1. Prea abstract şi
vag
sau 2. Prea
detaliat şi limitat
A doua Lege:
Poţi să defineşti procesele numai la două nivele de detaliu:
1. Prea abstract şi
vag
sau2. Prea
detaliat şi limitat
16
Legile dezvoltării de softwareLegile dezvoltării de software
Ipotezele descoperirii de cunoştiinţe:
1. Putem să “descoperim”
cunoştiinţele numai într-un mediu care
conţine aceste surse de cunoaştere
2. Singurul mod de a susţine validitatea unor cunoştiinţe este de a le compara cu alte surse de cunoaştere
Ipotezele descoperirii de cunoştiinţe:
1. Putem să “descoperim”
cunoştiinţele numai într-un mediu care
conţine aceste surse de cunoaştere
2. Singurul mod de a susţine validitatea unor cunoştiinţe este de a le compara cu alte surse de cunoaştere
17
Legile dezvoltării de softwareLegile dezvoltării de software
O mică observaţie !
Toţi dezvoltatorii de software îşi doresc să aibă un set de reguli, care să fie ...complete, concrete, totale, definitive, absolute, universale, ......... şi pe care ei pot să le încalce ...
O mică observaţie !
Toţi dezvoltatorii de software îşi doresc să aibă un set de reguli, care să fie ...complete, concrete, totale, definitive, absolute, universale, ......... şi pe care ei pot să le încalce ...
18
Legile dezvoltării de softwareLegile dezvoltării de software
A Treia Lege
Exact ultimul tip de informaţie pe care o aflăm atunci cînd trebuie să implementăm un set de cunoştiinţe într-un software executabil, vor fi chiar informaţiile despre cum să implementăm într-un software executabil
tot setul de cunoştiinţe ...
A Treia Lege
Exact ultimul tip de informaţie pe care o aflăm atunci cînd trebuie să implementăm un set de cunoştiinţe într-un software executabil, vor fi chiar informaţiile despre cum să implementăm într-un software executabil
tot setul de cunoştiinţe ...
19
Scopurile gemene ale unei finalizări optime
1.
Singurul scop natural al unor procese de dezvoltare software este de a se dovedi, cît mai repede cu putinţă, ... nefolositoare
2.
Singurul rezultat final al unui proces de dezvoltare continuă şi de aplicare a unui proces eficient este acela că, în realitate, va fi utilizat de ... nimeni
Scopurile gemene ale unei finalizări optime
1.
Singurul scop natural al unor procese de dezvoltare software este de a se dovedi, cît mai repede cu putinţă, ... nefolositoare
2.
Singurul rezultat final al unui proces de dezvoltare continuă şi de aplicare a unui proces eficient este acela că, în realitate, va fi utilizat de ... nimeni
Legile dezvoltării de softwareLegile dezvoltării de software
Zepelinele şi
avioanele cu reacţieZepelinele
şi
avioanele cu reacţie
…şi alte motive de meditaţie …şi alte motive de meditaţie
21
Cum să dobori un Zepelin ?Cum să dobori un Zepelin ?
O metaforă
pentru
derularea proiectele:
varianta clasică (de acum 25 ani)
O metaforă
pentru
derularea proiectele:
varianta clasică (de acum 25 ani)
Vz+Atribute(Zepelin)Vz+Atribute(Zepelin)
Vv+Atribute(Aer)Vv+Atribute(Aer)
Vp+Atribute(Proiectil)Vp+Atribute(Proiectil)AzAz
DzDz
Atribute(Tun)Atribute(Tun)
Succesul este o funcţie de măsurare exactă şi de
control precis
Succesul este o funcţie de măsurare exactă şi de
control precis
Cale predictibilă
Cale predictibilă
22
Cum să dobori un avion
cu reacţie ?Cum să dobori
un avion
cu reacţie ?
Cale im
predictibilă
Cale im
predictibilă
Cale impredictibilă
Cale impredictibilă
Succesul
este o funcţie de capabilitate şi flexibilitate
Succesul
este o funcţie de capabilitate şi flexibilitate
O metaforă
pentru
derularea proiectele:
varianta modernă
O metaforă
pentru
derularea proiectele:
varianta modernă
23
Ce este controlul?Ce este controlul?
Este
surprinzător
cît de repede lucrurile scapă de sub controlEste
surprinzător
cît de repede lucrurile scapă de sub control
Două
variabile:
predictibil, dar complex
O variabilă:
foarte
predictibilăTrei
variabile:
intrinsec
impredictibil
24
De ce o revoluţie? De ce acum?De ce o revoluţie? De ce acum?
Deoarece SUCCESUL numai
este
o funcţie
de:
• Predictibilitate• Măsurare exactă• Control
precis al managementului
• Proces foarte riguros definit
Deoarece SUCCESUL numai
este
o funcţie
de:
• Predictibilitate• Măsurare exactă• Control
precis al managementului
• Proces foarte riguros definit
Succesul este acum:
• Mai puţin sigur, cu un risc mai mare
• O funcţie
de
capabilitate punctuală
• O funcţie
de flexibilitate continuă
• Dependent de viteza de adaptare
Succesul este acum:
• Mai puţin sigur, cu un risc mai mare
• O funcţie
de
capabilitate punctuală
• O funcţie
de flexibilitate continuă
• Dependent de viteza de adaptare
25
De ce o revoluţie? De ce acum?De ce o revoluţie? De ce acum?
Dezvoltarea de software
este un proces de DESCOPERIRE
şi nu un proces de producţie, deoarece nu ştim de la început ce trebuie să ştim.
Tot ce trebuie să facem este să aflăm ce trebuie să ştim.
Dezvoltarea de software
este un proces de DESCOPERIRE
şi nu un proces de producţie, deoarece nu ştim de la început ce trebuie să ştim.
Tot ce trebuie să facem este să aflăm ce trebuie să ştim.
Pentru o creştere în nivelul 2I
Există încă lucruri simple pe care nu ştim că nu le ştimPentru o creştere
în nivelul 2I
Există încă lucruri simple pe care nu ştim că nu le ştim
Rata de
schimbare
a
informaţiilor
Informaţiile externe proiectului se schimbă mai repede decît durata proiectului şi chiar mai repede decît ar putea reacţiona proiectul
Rata de
schimbare
a
informaţiilor
Informaţiile externe proiectului se schimbă mai repede decît durata proiectului şi chiar mai repede decît ar putea reacţiona proiectul
26
Sunt condiţii pentru o revoluţie ?Sunt condiţii pentru o revoluţie ?• Software
-
este un mediu de stocare al cunoştiinţelor, nu
este un produs • Adevăratul produs este cunoaşterea, care necesită o altă
abordare • Dezvoltarea de software este un un proces de descoperire
• Sunt cîteva legi ale dezvoltării de software, la care trebuie să ne aliniem
• Randamentul controlului tradiţional este foarte limitat
• Software -
este un mediu de stocare al cunoştiinţelor, nu
este un produs• Adevăratul produs este cunoaşterea, care necesită o altă
abordare• Dezvoltarea de software este un un proces de descoperire • Sunt cîteva legi ale dezvoltării de software, la care trebuie
să ne aliniem • Randamentul controlului tradiţional este foarte limitat
27
AGILE MANIFESTO - 2001
We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions
over processes and tools
Working software
over comprehensive documentation
Customer collaboration
over contract negotiation
Responding to change
over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
28
Factorii de succes - Takeuchi şi
Nonaka
Instabilitate intrinsecăEchipa se auto-organizeazăFazele dezvoltării se suprapun“Învăţarea multiplă”Control subtilTransferul organizationalal
rezultatelor învăţării
“Aceste
caracteristici
sunt ca piesele unui puzzle. Fiecare element, luat individual,
nu contribuie la viteza si flexibilitatea echipei. Dar luaţi ca un întreg, aceste caracteristici pot produce un nou set de forţe dinamice, care vor face diferenţa.”
29
Factorul 1: Instabilitatea intrinsecă
Managementul iniţiază procesul de dezvoltare prin stabilirea ţintei. Echipei de proiect i se oferă o ţintă greu de atins, dar i se oferă în acelasi timp resurse si completă libertate asupra modului de lucru. – Exemplu: Fuji-Xerox a dat echipei de proiect FX-3500 doi ani să dezvolte un
copiator, care să reducă costurile de întreţinere la jumătateManagementul crează un element de tensiune în proiect prin stabilirea unor cerinţe grele cu o libertate foarte mare în atingerea ţintei. – Executivul Honda : “
Este ca si cum ai pune toţi membrii echipei într-un balcon la etajul doi, ai îndepărta bara de protecţie si le spui să sară, dacă nu să renunţe. Cred că creativitatea este născută prin împingerea oamenilor într-un zid, cu o presiune aproape de extrem.”
30
Factorul 2: Echipa de proiect se auto-organizează
Echipa de proiect capătă un caracter de auto-organizare, ca si cum ar fi condusă intr-o stare de “informatie zero”, unde toate cunostiinteleacumulate nu se mai aplica. Procesul incepe sa-si creeze propria sa ordine dinamica. Echipa de proiect incepe sa opereze ca o companie nou infiintata. Un grup poseda o capacitate de auto-organizare, cind indeplineste treiconditii:– Autonomie– auto-transcendenta– Fertilizare
multidisciplinarăLa un anumit punct, echipa incepesa-si
creeze
un concept propriu.
31
Autonomia
Implicarea managementului este limitata de la inceput la furnizarea de indicatii, bani si suport moral. Zilnic, managementul poate interveni cu indrumari si echipaeste libera sa-si aleaga singura directia. Managementul se comporta ca un investitor, asa cum spun americanii “deschide portofelul si inchide gura”
32
Auto-transcendenţa
Echipa de proiect pare sa fie absorbita de o explorare fara-de-sfirsit pentru atingerea “limitei”Ei ating scopurile lor prin procesul de dezvoltare. Prin urmarirea a ceea ce par scopuri contradictorii, ei gasesccai de a depasi un “status quo” si fac descoperiri importante.
33
Fertilizare multidisciplinară
Echipa cu o diversitate mare de specializari, cu procesereflexive si cu tipare comportamentale clare, poate dezvoltaceva nou. Cind toti membrii echipei lucreaza intr-o camera mare,informatia
altora
devine
a ta.
34
Factorul 3: Suprapunerea
fazelor
de dezvoltare
Auto-organizarea unei echipe produce o dinamica unicaMerite “hard”– Viteza
si
flexibilitate
Merite “soft”– Impartirea
responsabilitatii
si
cooperarea
– Stimularea
implicării
şi angajamentului
– Crearea
focalizării
pe
rezolvarea
problemei
– Dezvoltarea
iniţiativei
si
diversificarea
abilităţiilor
– Ponderează
orientărea
către
condiţiile
de piaţă
35
Factorul 4: Invăţarea multiplă
Invăţarea prin acţiune in două dimensiuni– In intreaga
organizatie
– In intreg
domeniul
de specialitate
Mărirea oportunităţilor de învăţare– 15% din timp
dedicat
“visurilor”
–
3M
– Presiunea
colegilor
pentru
studiu
– Trimite
echipa
in Europa
sa
se uite
in zone similare
–
Honda
– Aducerea
in echipa
de experti
consultanti
si
profesori
–
HP
Fiecare învaţă abilităţi multiple
36
Factorul 5: Control subtil
Managementul stabileste puncte de verificare– Previne
instabilitatea, ambiguitatea, si
tensiunea
de a nu intra in haos
Pune accent pe auto-control, control prin presiunea colegilor, control prin iubire = “control subtil”Managementul este responsabil pentru:
– Selectarea
membrilor
pentru
o echipa
echilibrata
– Crearea
unui
mediu
de lucru
deschis
– Incurajeaza
proiectantii
sa
faca
lucruri
concrete
– Stabileste
recompense, bazate
pe
performanta
grupului
– Tolereaza
si
anticipeaza
greselile
Intotdeauna
port parul
asa.Si ce
daca?
Intotdeauna
port parul
asa.Si ce
daca?
37
Factorul 6: Transferul organizational
al rezultatelor învăţării
Transferul cunoştiinţelor in afara grupului– Incurajeaza
echipele
de succes
sa
ia
noi
proiecte
– Institutionalizeaza
practica
curenta
(demonstratii
lunare)
Urmărirea conştientă a unor rezultate– iteraţia
următoare este mai bună
– Ciclul
de dezvoltare
se reduce foarte
mult
– Se inlatura
partile
vechi, procese
elaborate, unelte
nefolositoare
38
SCRUM SCRUM
39
XP - Extreme ProgramingXP - Extreme Programing
VĂ MULŢUMESC !VĂ MULŢUMESC !
Mai multe informaţii le puteti obtineti:
[email protected] multe informaţii le puteti
obtineti:
Top Related