Pret: 1
Programare eXtrema
Programare Extrema (XP) este o metodologie care tine de ingineria programarii si este cea mai
prominenta dintre metodologiile de dezvoltare a proceselor agile. Ca si alte metodologii agile, Programare
Extrema difera de metodologii traditionale in primul rand prin accentuarea pe adaptabilitate si
predictabilitate. Cei care au propus XP respecta schimbarile cerintelor ca un aspect natural, inevitabil si
dorit in dezvoltarea proiectelor; ei considera ca posibilitate de adaptare la cerintele in curs de schimbare in
orice moment din desfasurarea proiectului este mai rationala si reprezinta o abordare mai buna decat
tendinta de a defini toate cerintele la inceputul desfasurarii proiectului care apoi implica efort crescut
pentru controlul schimbarilor cerintelor.
XP propune un set de procedee pentru manageri si developeri; procedee trebuie sa cuprinda si incurajeze
valori particulare. Propunatori considera ca utilizarea acestor procedee conduce la procese de dezvoltare
care sunt mai apropiate de nevoile clientului (mai "agile") decat metode traditionale, in timp ce se ofera
posibilitate de creare software-ului de calitate superioara.
Istoria
Programare Extrema a fost creata de catre Kent Beck, Ward Cunningham, si Ron Jeffries in timpul
dezvoltarii proiectului Chrysler Comprehensive Compensation System (C3). Kent Beck a devenit liderul
proiectului C3 in Martie 1996 si a inceput sa rafineze metodologia de dezvoltare folosita in proiect. Kent
Beck a scris o carte despre metodologia, si in Octobrie 1999, Extreme Programming Explained a fost
publicata. Proiectul fiind fara succes Chrysler l-a oprit in Februarie 2000, dar metodologia a rezistat in
domeniul de inginerie a programarii.
Scopul a Programarii Extreme
Cartea Extreme Programming Explained descrie Programare Extrema ca fiind:
O incercare de a impaca humanizm si productivitate.
Un mecanism pentru schimbare sociala.
O cale spre imbunatatire.
Un stil de dezvoltare.
O disciplina de dezvoltare software.
Scopul principal a XP este de a reduce costul schimbarii. In metode din sisteme traditionale de dezvoltare
(cum este SSADM - Structured Systems Analysis and Design Method) cerintele sistemului sunt determinate
la inceputul dezvoltarii proiectului si deseori fixate de la acel punct. Asta inseamna ca si costul de schimbare
a cerintelor in stadiul mai tarziu va fi mare.
XP tinde sa reduca costul de schimbare introducand valori de basa, principii si procedee. Aplicand XP, un
sistem de developare unui proiect ar trebui sa fie mai flexibil cu respect pentru schimbari.
Valorile Programarii Extreme
Programare Extrema initial prezenta patru valori. Una noua a fost adaugata in editia a doua de
Extreme Programming Explained. Cele cinci valori sunt:
- Comunicare
- Simplitate
- Feedback
- Curaj
- Respect (cea mai recenta)
Construirea unui sistem software necesiata comunicarea cerintelor de sistem catre dezvoltatorii
sistemului. In metodologii formale ale dezvoltarii software, aceasta sarcine este realizata prin documentatii.
Tehnicile Programarii Extreme pot fi vazute ca metode pentru construirea rapida a conostintelor
institutionale intre membrii al timului de dezvoltare. Scopul este de a oferi tuturor membrilor vedere
partajata a sistemului care se poate compara cu vederea detinuta de utilizatorii ai sistemului.
Programare Extrema incurajeaza plecarea de la solutii cat mai simple si refabricarea lor in solutii mai
bune. Diferenta intre abordarea aceasta si abordarea conventionala este concentrarea la scrierea codului
pentru nevoile de astazi, in loc de scrierea codului pentru maine, saptamana viitoare, sau chiar luna
viitoare. Propunatorii ai XP au remarcat ca metoda conventionala poate uneori implica mai mult efort ca
maine sistemul sa fie schimbat; ei sustin acest neajuns este mult compensat de avantajul al investitiei in
posibile cerinte care se pot schimba inainte de a deveni relevante. Scrierea codului si design pentru cerinte
de viitor nesigure implica riscul de consumare a resurselor pe ceva ce poate nici nu va fi folosit. Legat de
valoarea "comunicarii", simplitate in design si scrierea codului ar trebui sa imbunatateasca (calitatea de)
comunicare. Un design simplu cu un cod simplu pot fi foarte usor intalese de majoritatea programatorilor in
timul respectiv.
In Programare Extrema, feedback-ul este de arii diferite ale dezvoltarii sistemului:
Feedback de la sistem: scriind teste unitare, sau ruland periodic teste de intgrare, programatori au
feednback direct de la starea sistemului dupa implementarea schimbarilor.
Feedback de la client: Teste de functionalitate sunt scrise de catre client si testeri. Ei vor obtine
feedback concret despre starea curenta a sistemului. Aceasta revizuire este planificata odata la 2-3
saptamani ca respectivul client sa poate usor conduce dezvoltarea.
Feedback de catre timul: Cand utilizatori intervin cu noi cerinte in planificare, timul ofera o estimare
directa a timpului necesar petnru implementare.
Feedback este strans legat cu simplitate si comunicare. Punctele slabe in sistem sunt usor comunicate
scriind teste unitare care arata ca anumite parti ale codului vor ceda. Feedback direct de la sistem spune
programatorilor sa rescrie acea bucata de code. Clientul are posibilitatea de a testa sistemul periodic,
conform cu cerintele functionalitatii.
Cateva procedee cuprind si curaj. Unul dintre ele este comandament ca intodeuna sa se scrie codul
pentru astazi si nu pentru maine. Acesta este un efort de a nu se incurca cu design si implica mult efort
pentru implementarea unui al design. Curajul ofera sentimentul de confortabilitate de a rescrie codul lor
oricand este necesar. Asta presupune verificare sistemului existent si modificare lui astfel incat eventualele
schimbari in viitor sa fie cat mai usor de implementate. Inca un exemplu de curaj este de a stii cand este
nevoie de a renunta la o parte din cod: curajul de a renunta la bucata de cod invechita, inutila fara a tine
cont de efortul depus pentru crearea acelei bucate de cod. De asemenea presuspune si persistenta: Un
programator poate sa ramana blcat la o problema complexa intreaga zi si apoi s-o rezolve foarte rapid ziua
urmatoare, doar daca este persistent.
Valoare de respect se manifesta in mai multe moduri. In Programarea Extrema, membrii ai timului se
respecta reciproc fiind ca nici un progrmator nu ar trebui sa comita schimbari care vor provoca erori la
compilare, care vor face ca teste sa esueze, sau care vor intarzia munca in oricare al mod. Membrii respecta
munca lor tinzand intotdeuna la calitate superioara, la cel mai bun design.
Adoptarea celor patru calori de mai sus conduce la respect obtinut de la toti membri ai timului. Nici un
membru ai timului nu terbuie sa fie subestimat sau ignorat. Asta asigura nivel ridicat de motivare si
incurajeaza loialitate pentru timul si pentru scopul proiectului.
Activitai
XP descrie patru activitai de baza care sunt aplicate in procesul de dezvoltare software:
Codare
Adepti ai XP sustin ca singurul adevarat si important product al dezvoltarii unui sistem este codul. Fara
cod nu exista nimic.
Codare poate insemna desenare a diagramelor care vor genera cod, scriptare a sistemului bazat pe web
sau scrierea programului care trebuie sa fie compilat.
Codare poate fi de asemenea folosita pentru a gasi cea mai potrivita solutie pentru o problema. De
exemplu, XP propune, in caz ca avem mai multe alternative pentru o problema anume, programatoru ar
tebui sa scrie codul pentru fiecare solutie aparte si sa determine cea mai eficienta, folsind eventual teste
automate. Codare poate de asemenea ajuta la comunicarea ideilor si probelmelor de programare. Un
programator, care este in fata unei probleme complexe si infrunta dificultati in demonstrarea solutie
colegilor, ar putea folosi codul pentru a demonstra ce a avunt in gand. Codul este intotdeauna curat, concis
si nu poate fi interpretat in mai multe moduri. Alti programatori ofera feedback pentru acest cod scriind, de
asemenea, codul pentru pentru ideile lor.
Testare
Un programtor nu poate cu siguranta sustine corectitudinea solutiei pana nu a testa-o. Testare nu este
necesitate primara pentru un client. O mare parte din softwerul dezvoltat este lansat fara a fi testat inainte
si inca mai functioneaza (mai mult sau mai putin). In dezvoltarea software, XP sustine ca un programator nu
poate spune ca o functie este corecta daca nu a testat-o intai.
Un programator poate fi nesigur daca ceea ce a scris este ceea ce a gandit. Pentru a testa aceasta
nelamurire XP foloseste teste unitare (Unit Tests). Acestea sunt teste automate care testeaza codul scris.
Un programator ar trebuie sa incerce sa scrie cat mai multe teste care ar putea provoca caderea codului;
daca toate testele ruleaza cu succes atunci codarea este completa.
Un programator poate fi nesigur daca ceea ce a gandit este ceea ce trebuia sa gandesca. Pentru a testa
aceasta nelamurire XP foloseste teste de acceptare (acceptance tests) basate pe cerintele oferite de catre
clientul in faza de explorarea planificarii.
Ascultare
Programatori nu trebuie neaparat sa fie constienti despre partea de afacere a sistemului in dezvoltare.
Functionalitatea sistemului este determinata tocmai de partea de afacere. Pentru ca programatori sa afle
de despre functionalitatea sistemului, este necesar sa "asculte" afacerea.
Programatori trebuie sa asculte "in larg": ei trebui sa asculte nevoile clientului. De asemenea, ei trebuie sa
incerce sa intaleaga problemele afecerii si sa ofere clientului feedbeck despre problema clientului, sa
imbunatateasca perceperea lor legata de problema respectiva.
Design
Din puctul de vedere al simplitatii, programatorul ar putea spune ca dezvoltarea sistemului necesita doar
codare, testare si ascultare. Daca acele activitati sunt efectuate bine, rezultatul ar trebui intotdeuna sa fie
un sistem care functioneaza. In practica, acesta nu se poate aplica. Programatorul poate sa inainteze fara
fara a folosi design, dar la un moment dat se va bloca. Sistemul devine prea complex si dependentele din
interior nu mai sunt la fel de clare.
Programatorul poate evita aceasta situatie prin crearea unei structuri de design care organizeaza logica in
sistemul respecitv. Un design bun ofera posibilitate de a evita prea multe dependente in sistem; asta
inseamna ca modificand o parte din sistem nu vor fi afectate alte parti ale sistemului.
Aplicarea Programarii Extreme
In ciuda aspectelor controversate, XP ramane o alegere viabila pentru unele proiecte. Proiectele potrivite
Programarii Extreme sunt cele care:
- implica noile tehnologii de prototipuri, unde cerintele se schimba rapid, sau este nevoie de o
dezvoltare pentru a descoperi problemele neprevazute de implementare
- sunt proiecte de cercetare unde rezultatul muncii nu este produsul insusi, dar cunostintele
domeniului
- sunt mici si usor de directionat prin metodele nonformale
Proiectele potrivite pentru metode mai traditionale sunt cele care:
- implica tehnologii stabile si au cerinte fixe, unde se stie ca putine schimbari vor interveni
- implica sisteme de importanta mare a scopului si a sigurantei, unde metode formale trebuie sa
fie angajate pentru securitate sau asigurare
- sunt proiecte ample pot distruge mecanisme de comunicare nonformale
- contin produse complexe care continua sa solicite, in afara scopului sistemului, alterari
importante si frecvente, unde o baza de cunostinte, sau un set de documentatie devine o
necesitate fundamentala pentru a sustine intretinerea.
Manageri de proiect trebuie sa cantareasca aspectele proiectului fata de metodologiile disponibile pentru
a face o alegere potrivita. Totusi, unele concepte ale XP pot fi aplicate in afara, cum ar fi utilizarea
Programarii in Pereche pentru a expedia schimbari tehnice referitoare la setul de documentatii al unui
proiect amplu.
Procedee
XP are 12 procedee, grupate in 4 sectiuni, derivate din cele mai bune procedee din ingineria programarii:
Fine scale feedback
Pair Programming
Planning Game
Test Driven Development
Whole team
Continuous process
Continuous Integration
Design Improvement
Small Releases
Shared understanding
Coding Standards
Collective Code Ownership
Simple Design
System Metaphor
Programmer welfare
Sustainable Pace
Bibliografie:
http://en.wikipedia.org/wiki/Extreme_Programming
Textul de mai sus reprezinta un extras din "REFERAT INFORMATICA: PROGRAMARE EXTREMA". Pentru versiunea completa a documentului apasa butonul Download si descarca fisierul pe calculatorul tau. Prin descarcarea prezentei lucrari stiintifice, orice utilizator al site-ului www.studentie.ro declara si garanteaza ca este de acord cu utilizarile permise ale acesteia, in conformitate cu prevederile legale ablicabile in domeniul proprietatii intelectuale si in domeniul educatiei din legislatia in vigoare.
In cazul in care intampini probleme la descarcarea fisierului sau documentul nu este nici pe departe ceea ce se doreste a fi te rugam sa ne anunti aici: raporteaza o eroare