2 Rapid software development

113
Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare Instrumente ca parte a procesului de Instrumente ca parte a procesului de dezvoltare software dezvoltare software dezvoltare software dezvoltare software Rapid software development Rapid software development Ciprian Dobre Ciprian Dobre [email protected] Instrumente pentru dezvoltarea programelor – Curs 2 1

Transcript of 2 Rapid software development

Page 1: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Instrumente ca parte a procesului de Instrumente ca parte a procesului de dezvoltare softwaredezvoltare softwaredezvoltare softwaredezvoltare software

Rapid software developmentRapid software development

Ciprian DobreCiprian [email protected]

Instrumente pentru dezvoltarea programelor – Curs 2 1

Page 2: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

SumarSumarSu aSu a

• Metode Agileg– SCRUM

eXtreme Programming– eXtreme Programming• Testare – JUnit• Rapid Application Development• Prototipare• Prototipare

2Instrumente pentru dezvoltarea programelor – Curs 2

Page 3: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Metode AgileMetode Agile

“We are uncovering better ways of developing software by doing it and helping others do it. Th h this k h t l : Through this work we have come to value:

•Individuals and interactions over processes and tools•Working software over comprehensive documentation•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. “

3

(The Agile Manifesto) - http://agilemanifesto.org/

Instrumente pentru dezvoltarea programelor – Curs 2

Page 4: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Procese adaptive vs. predictiveProcese adaptive vs. predictiveocese adapt e s p ed ct eocese adapt e s p ed ct eAdaptive Predictive

• Categorie uşoară, ‘agile’• Control prin feedback

• Categorie grea, ‘traditional’ • Control prin planificare

• Multe iteraţii scurte (săptămâni)

• Scară mică (<10 dezvoltatori)

• Câteva iteraţii lungi (luni)• Scară mare (>30 dezvoltatori)• Documente scrise

• Comunicare faţă-în-faţă• Centrate pe cod şi oameni• Egalitariene

• Centrate pe reguli• Autoritariene

g

• Probleme:– Rezultatele de lungă durată

• Probleme:– Inflexibilitate la modificările

cerinţelorRezultatele de lungă durată puţin predictibile

– Haos asociat cowboy-coding

ţ– Efort mărit de Integrare şi

testare– Birocraţia asociată ‘Control

freak’

4

• E.g. XP freak• E.g. waterfall

Instrumente pentru dezvoltarea programelor – Curs 2

Page 5: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Rapid Software DevelopmentRapid Software Developmentap d So t a e e e op e tap d So t a e e e op e t

• Adaptarea continuă a organizaţiei– Oportunităţi noi de business– Modificarea mediului de business, competiţia

• Fapt: Rapiditatea dezvoltării şi livrării cel mai des reprezintă o cerinţă critică pentru sistemele software.

• Fapt: Organizaţiile sunt dispuse să accepte calitate mai slabă a software-ului dacă este posibilă dezvoltarea rapidă a unor funcţionalităţi critice (speed-to-market, time-to-market)

5Instrumente pentru dezvoltarea programelor – Curs 2

Page 6: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

CerinCerinţţeeCeCe ţţee

• Mediu în continuă schimbare => este imposibil de ajuns la un set de cerinţe stabil şi consistent (modificări ale cerinţelorstabil şi consistent (modificări ale cerinţelor on-the-fly)M d l l d d l î dă• Modelul de dezvoltare în cascadă se dovedeşte nepractic în astfel de situaţii

• Mai adecvată este o abordarebazată/orientată pe specificaţii şi livrarebazată/orientată pe specificaţii şi livrare iterative

S ft l li t ( i) id6

– Software-ul livrat (mai) rapidInstrumente pentru dezvoltarea programelor – Curs 2

Page 7: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Raportul Haos:Raportul Haos:Raportul Haos:Raportul Haos:• Început în 1994, studiul a evaluat peste

35 000 de proiecte software35.000 de proiecte software• Situația la nivelul anului 2000:

Sursa: Standish “Chaos” Report, Jim Johnson lecture at XP2002 conference, http://www.xp2003.org/xp2002/talksinfo/johnson.pdf

Instrumente pentru dezvoltarea programelor – Curs 2 7

Page 8: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Caracteristicile proceselor RADCaracteristicile proceselor RADCa acte st c e p ocese oCa acte st c e p ocese o• Procesele de specificare, proiectare şi

implementare sunt concurenteimplementare sunt concurente– Nu există specificaţie detaliată

D t ţi i tă ii t i i lă– Documentaţia proiectării este minimală

• Sistemul este dezvoltat într-o serie de incremente– Utilizatorii finali evaluează fiecare incrementare– Propuneri pentru incrementările următoare

• Interfeţele utilizator sunt de obicei dezvoltate folosind un sistem de dezvoltare interactiv

8Instrumente pentru dezvoltarea programelor – Curs 2

Page 9: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Un proces de de oltare iteratiUn proces de de oltare iterati ăăUn proces de dezvoltare iterativUn proces de dezvoltare iterativăă

Instrumente pentru dezvoltarea programelor – Curs 2 9

Page 10: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Avantajele dezvoltAvantajele dezvoltăării incrementalerii incrementalea taje e de o ta taje e de o tăă c e e ta ec e e ta e

• Livrarea rapidă a produselor/serviciilor către clienţi. Fiecare incrementare livrează clienţilor ţfuncţionalitatea având următoarea “cea mai mare” prioritate.p

• Antrenarea utilizatorilor în dezvoltarea sistemului• Antrenarea utilizatorilor în dezvoltarea sistemului. Utilizatorii sunt implicaţi în dezvoltare => sistemul este dezvoltat în jurul cerinţelor impuse;este dezvoltat în jurul cerinţelor impuse; utilizatorii sunt mai devotaţi sistemului

10Instrumente pentru dezvoltarea programelor – Curs 2

Page 11: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Problemele dezvoltProblemele dezvoltăării incrementalerii incrementale• Probleme de management

– Progresul poate fi greu de apreciat g p g p– Problemele sunt greu de rezolvat deoarece nu există nici o

documentaţie care să demonstreze corectitudinea implementăriiimplementării.

• Probleme contractuale– Contractul în mod normal include o specificaţie; fără o p ţ ;

specificaţie trebuie folosite forme diferite de contractare.• Probleme de validare

Fă ă ifi i bl b i i l– Fără o specificaţie contra a ce probleme ar trebui sistemul testat?

• Probleme de mentenanţăProbleme de mentenanţă– Schimbările continue tind să corupă structura software-ului– Costuri mari implicate pentru modificarea şi actualizarea p p ş

software-ului în cazul apariţiei unor cerinţe noi

11Instrumente pentru dezvoltarea programelor – Curs 2

Page 12: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

PrototypingPrototypingototyp gototyp g• Pentru unele sisteme mari dezvoltarea iterativă

incrementală poate fi nepracticăincrementală poate fi nepractică– Ex: mai multe echipe lucrează în diverse locaţii la acelaşi proiect

• Prototiparea– Un sistem experimental este dezvoltat ca bază pentru formularea

cerinţelorţ– Sistemul experimental nu mai e necesar după ce se ajunge la un

consens cu privire la specificaţiile de implementat

• Un prototip poate fi folosit în:– Procesul de inginerie a cerinţelor pentru a ajuta la stabilirea şi

validarea cerinţelor;validarea cerinţelor;– În procesul de proiectare pentru explorarea opţiunilor şi

dezvoltarea unui design UI;– În procesul de testare pentru rularea unor verificări back-to-back

12

– În procesul de testare pentru rularea unor verificări back-to-back.

Instrumente pentru dezvoltarea programelor – Curs 2

Page 13: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

D lt i t lD lt i t lăă i t tii t tiDezvoltarea incrementalDezvoltarea incrementalăă şşi prototipareai prototiparea

Sistemul livratDezvoltare

incrementală

Cerinţe

Throw-away Prototipul executabil +Throw-awayprototyping

Prototipul executabil + Specificaţia sistemului

Demo13Instrumente pentru dezvoltarea programelor – Curs 2

Demo…

Page 14: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Obiective conflictualeObiective conflictualeOb ect e co ctua eOb ect e co ctua e

• Obiectivul dezvoltării incrementale îl constituie• Obiectivul dezvoltării incrementale îl constituie livrarea unui sistem funcţional către utilizatorii finali– Dezvoltarea începe cu cerinţele ce sunt cel mai bine

înţelese.

• Obiectivul abordării “throw-away prototyping” este y p yp gde a valida sau deriva cerinţele sistemului– Procesul de prototipare începe cu acele cerinţe ce sunt

îcel mai puţin înţelese.

14Instrumente pentru dezvoltarea programelor – Curs 2

Page 15: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Metode agileMetode agileetode ag eetode ag e• Insatisfacţiile cu overhead-ul implicat de metodele de

proiectare au condus la crearea Metodelor Agileproiectare au condus la crearea Metodelor Agile.

• Metodele agile:• Metodele agile:– Focus pe cod, nu pe design;

– Bazate pe o abordare iterativă a dezvoltării software;

– Focus pe livrarea rapidă de software funcţional care evoluează spre a satisface cerinţele în continuă schimbarespre a satisface cerinţele în continuă schimbare.

M t d l il t d t î i l i t l d• Metodele agile sunt adecvate în special sistemelor de business de mărime mică şi medie sau produselor PC.

15Instrumente pentru dezvoltarea programelor – Curs 2

Page 16: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Agile Software DevelopmentAgile Software Developmentg e So t a e e e op e tg e So t a e e e op e t• A apărut în anii 1990 ca reacţie la metodele tradiţionale

“greoaie” de dezvoltaregreoaie de dezvoltare• Presupune multe iteraţii scurte (săptămâni) şi

‘prototiparea’:prototiparea :

Analiza Proiect Implementare Testare PrototipIteraţie#1 Analiza Proiect Implementare Testare Prototip

Analiza Proiect Implementare Testare Prototip

#1

#2

Analiza Proiect Implementare Testare Prototip#3

• Control prin feedback: re-evaluarea şi revizia proiectului după fiecare iteraţie

16

după fiecare iteraţie

Instrumente pentru dezvoltarea programelor – Curs 2

Page 17: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Principiile metodelor agilePrincipiile metodelor agilec p e etode o ag ec p e etode o ag e

Principiul Descrierep

Implicarea clientului Clientul trebuie să fie implicat în procesul de dezvoltare. Rolul său este de a furniza şi prioretiza noi cerinţe ale sistemului şi de a evalua iteraţiile sistemuluide a evalua iteraţiile sistemului.

Livrarea incrementală Software-ul este dezvoltat în incremente, clientul având rolul de a specifica cerinţele ce sunt incluse în fiecare increment.

Oameni nu procese Capabilităţile echipei de dezvoltare trebuie să fie recunoscute şi exploatate. Echipa trebuie lăsată să-şi exercite propriile metode de lucru fără un proces prescriptiv.metode de lucru fără un proces prescriptiv.

Adoptarea schimbării Cerinţele sistemului sunt în permanentă schimbare şi sistemul trebuie proiectat a.î. să acomodeze aceste schimbări.

Menţinerea simplităţii Focus pe simplitate atât în software-ul dezvoltat, cât şi în procesul de dezvoltare folosit. Pe cât posibil se recomandă eliminarea complexităţii din sistem.

17

p ţ

Instrumente pentru dezvoltarea programelor – Curs 2

Page 18: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

PracticiPractici AgileAgilePracticiPractici AgileAgile• Delimitări Sandbox / Environment

Instrumente pentru dezvoltarea programelor – Curs 2 18

Page 19: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Problemele metodelor agileProblemele metodelor agileob e e e etode o ag eob e e e etode o ag e• Dificil de menţinut interesul clienţilor implicaţi în

procesul de dezvoltareprocesul de dezvoltare

• Membrii echipei pot fi neadecvaţi pentru interesul i t î d lt i t l i t dintens în dezvoltarea proiectului cerut de metodele agile

• Prioretizarea schimbărilor poate fi dificilă atunci când sunt mai mulţi acţionari implicaţi

• Menţinerea simplităţii necesită muncăsuplimentară

• Contractele pot fi o problemă (similar altor metode de dezvoltare iterativă)

19

)

Instrumente pentru dezvoltarea programelor – Curs 2

Page 20: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Deci ce Metode Agile există?Deci ce Metode Agile există?Deci ce Metode Agile există?Deci ce Metode Agile există?

– Extreme Programming (XP) (Kent Beck, Ward g g ( ) ( ,Cunningham, Ron Jeffries)

– Scrum (Jeff Sutherland, Mike Beedle, KenScrum (Jeff Sutherland, Mike Beedle, Ken Schwaber)

– DSDM – Dynamic Systems Development Method– DSDM – Dynamic Systems Development Method (Community owned)Crystal (Alistair Cockburn)– Crystal (Alistair Cockburn)

– ASD – Adaptive Software Development (Jim Hi h ith)Highsmith)

– XBreed (Mike Beedle) ( )

Instrumente pentru dezvoltarea programelor – Curs 2 20

Page 21: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

D i i lt d âtD i i lt d âtDeci mai mult decât …Deci mai mult decât …

Instrumente pentru dezvoltarea programelor – Curs 2 21

Page 22: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

StudiuStudiu de de cazcaz::MetodeleMetodele dede dezvoltaredezvoltare SCRUMSCRUMMetodeleMetodele de de dezvoltaredezvoltare SCRUM SCRUM

Instrumente pentru dezvoltarea programelor – Curs 2 22

Page 23: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Ce înseamnă SCRUM?Ce înseamnă SCRUM?Ce înseamnă SCRUM?Ce înseamnă SCRUM?• Posibil asta:

Instrumente pentru dezvoltarea programelor – Curs 2 23

Page 24: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

SCRUMSCRUM• Proces de dezvoltarea iterativ-incrementală

• Include un set de practici si roluri predefinite (“Pig” și “Chicken”)

– Product Owner• Vocea clientului

• Definește cerințele business

• Deține “product backlog”

– Scrum Master• Administrează procesul SCRUM

• Aproximativ Project Manager (dar nu există acest rol)

– Team• Aproximativ 7 persoane (grupul de lucru)

• Are responsabilitatea livrării produsului

• Abilități diverse pentru efectuarea activităților (proiectant, dezvoltator, tester, etc.)

Instrumente pentru dezvoltarea programelor – Curs 2 24

Page 25: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Echipa SCRUMEchipa SCRUMEchipa SCRUMEchipa SCRUM• Auto-organizată• Membrii nu au roluri bine definite

– Pot lucra în oricare activitate și grup.Pot lucra în oricare activitate și grup.• Membrii echipei SCRUM sunt

cunoscuți ca Pigscunoscuți ca Pigs– Sunt devotați pentru livrarea scopului

SprintSprint• Persoanele implicate dar care nu sunt

devotate proiectului sunt Chickensdevotate proiectului sunt Chickens – Participă la întâlnirile Scrum doar ca

observatoriobservatori

Instrumente pentru dezvoltarea programelor – Curs 2 25

Page 26: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

“You’re Fired!”“You’re Fired!”You re Fired!You re Fired!

O metrică simplă:O metrică simplă:

Dacă poți fi concediat pentru eșecul proiectului –ești pig.

Dacă îți păstrezi job-ul, în ciuda eșecului proiectuluiciuda eșecului proiectului –ești chicken.

Instrumente pentru dezvoltarea programelor – Curs 2 26

Page 27: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Practici SCRUMPractici SCRUMPractici SCRUMPractici SCRUM• Product Backlog

Set prioretizat (funcție de importanță) de cerințe– Set prioretizat (funcție de importanță) de cerințe funcționale

• Sprint– Perioadă cuprinsă între 2 și 4 săptămâniPerioadă cuprinsă între 2 și 4 săptămâni– Nimeni nu poate modifica Spring Backlog-ul în

timpul Sprint-ului– Rezultat final: un increment potențial funcțional

(software funcțional și testat) – Final: rezultatul este în general însoțit și de unFinal: rezultatul este în general însoțit și de un

demo

Instrumente pentru dezvoltarea programelor – Curs 2 27

Page 28: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

ExempluExemplu -- Product BacklogProduct BacklogExemplu Exemplu Product BacklogProduct Backlog

Instrumente pentru dezvoltarea programelor – Curs 2 28

Page 29: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Practici SCRUMPractici SCRUMPractici SCRUMPractici SCRUM• Sprint Planning Meeting

Ș di ță d l l d i iil i i d it i d B kl– Ședință ce conduce la luarea deciziilor privind ce itemi de Backlog sunt incluși în următorul Sprint

• Sprint Backlogp g– Itemii ce se urmăresc a fi rezolvați într-un Sprint

Product BacklogProduct Backlog

Capabilităţile Echipeip

Condiţii Business

Stabilitate ReviewConsider Organize

Next Sprint Goal

Sprint BacklogTehnologică

Incredement Executabil al

Organize Sprint Backlog

Instrumente pentru dezvoltarea programelor – Curs 2 29

Executabil alProdusului

Page 30: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

ExempluExemplu -- Sprint BacklogSprint BacklogExemplu Exemplu -- Sprint BacklogSprint Backlog

Instrumente pentru dezvoltarea programelor – Curs 2 30

Page 31: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Ciclurile de dezvoltare SCRUMCiclurile de dezvoltare SCRUMCiclurile de dezvoltare SCRUMCiclurile de dezvoltare SCRUM

24 hoursDaily Scrum

Meeting

30 daysBacklog tasks

Meeting

30 days

Sprint Backlog

Backlog tasksexpandedby team

P d B klPotentially Shippable

P d t I tProduct BacklogAs prioritized by Product Owner

Product Increment

Instrumente pentru dezvoltarea programelor – Curs 2 31

*Sursa: Schwaber, K. and Beedle, M. 2001 Agile Software Development with Scrum

Page 32: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Întâlniri…Întâlniri…Întâlniri…Întâlniri…• Daily Scrum

– Întâlnire zilnică de lucru în timpul SPRINT-ului.– Începe la ore fixe.– Toți sunt bineveniți, dar doar “pigs” pot vorbi.– În timpul întâlnirii fiecare membru răspunde la:

– Ce ai făcut de ieri?– Ce planuri ai pentru ziua de astăzi?– Ce probleme prevezi că pot apărea ce ar putea să te împiedici să

t i i ti itățil ?termini cu succes activitățile?

Instrumente pentru dezvoltarea programelor – Curs 2 32

Page 33: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Întâlniri…Întâlniri…• Scrum of scrums

Ζ Întâlnire zilnică, de obicei după Daily Scrum. – Întâlniri ce permit echipelor diferite să discute

ti itățil t i t i i dactivitățile, cu accent pe integrare și suprapuneri de activități.Participă câte o persoană delegată din fiecare echipă– Participă câte o persoană delegată din fiecare echipă.

– Agenda similară cu cea a Daily Scrum, dar mai apar și alte patru întrebări:alte patru întrebări:

Ce a făcut echipa de la ultima întâlnire?– Ce a făcut echipa de la ultima întâlnire?– Ce va face echipa până la următoarea întâlnire?– Există ceva ce poate încetini activitatea echipei?Există ceva ce poate încetini activitatea echipei?– Există modificări în modul de lucru sau componența echipei?

Instrumente pentru dezvoltarea programelor – Curs 2 33

Page 34: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Întâlniri…Întâlniri…Întâlniri…Întâlniri…• Sprint Planning Meetingp g g

– La începutul unui nou Sprint.Se selectează activitățile ce vor fi făcute în– Se selectează activitățile ce vor fi făcute în cadrul Sprint-ului curent => Sprint BacklogS id tifi ă i i ă l l d ă– Se identifică și se comunică volumul de muncă preconizat a fi făcut în timpul Sprint-ului curent

• La sfărșitul Sprint-ului mai apar două întâlniri:

• Sprint Review MeetingS• Sprint Retrospective

Instrumente pentru dezvoltarea programelor – Curs 2 34

Page 35: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Avantaje SCRUMAvantaje SCRUMAvantaje SCRUMAvantaje SCRUM• SCRUM facilitează crearea unor echipe self-

i torganizate• Încurajează co-locarea membrilor echipei și• Comunicația verbală între membrii echipei

Instrumente pentru dezvoltarea programelor – Curs 2 35

Page 36: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Oracle SupportOracle Support KMKMOracle Support Oracle Support –– KM KM

Page 37: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Mai multe…Mai multe…Mai multe…Mai multe…Recomandări bibliografice:g• http://www.scrumalliance.org/• Cartea “Agile Software Development with• Cartea Agile Software Development with

SCRUM” - Ken Schwaber, Mike BeedleC t “A il P j t M t ith SCRUM”• Cartea “Agile Project Management with SCRUM” - Ken Schwaber

• http://www.controlchaos.com/ - Site-ul lui Schwaber

Page 38: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Studiu de Caz: eXtreme ProgrammingStudiu de Caz: eXtreme Programming

Instead of cowboy coders we have Instead of cowboy coders we have software sheriffs; working together as a software sheriffs; working together as a

i k h d d i h i k h d d i h team, quick on the draw, armed with a team, quick on the draw, armed with a few rules and practices that are light, few rules and practices that are light,

concise, and effective.concise, and effective.(J D W ll (J D W ll (James D. Wells, (James D. Wells,

extremeprogramming.org)extremeprogramming.org)

38Instrumente pentru dezvoltarea programelor – Curs 2

Page 39: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

eXeXtreme treme PProgramming (1)rogramming (1)

• Una dintre cele mai cunoscute metode Agile –b d b tă t ti i d l t

ee t e et e e og a g ( )og a g ( )

abordare bazată pe tactici duse la extrem:

• If testing is good, let everybody test all the time• If code reviews are good, review all the timeg• If design is good, refactor all the time• If integration testing is good, integrate all the timeIf integration testing is good, integrate all the time• If simplicity is good, do the simplest thing that

could possibly workcould possibly work• If short iterations are good, make them really,

really shortreally short

39Instrumente pentru dezvoltarea programelor – Curs 2

Page 40: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

eXtreme Programming (2)eXtreme Programming (2)e t e e og a g ( )e t e e og a g ( )• XP=eXtreme Programming: Nomen est omen,

b d t tă dabordare centrată pe cod• Cultura XP: mai mult decât a face ca proiectulCultura XP: mai mult decât a face ca proiectul

să meargăS b ă• Se bazează pe – îmbunătăţirea constantă a codului– includerea utilizatorului în echipa de dezvoltare – programare pairwiseprogramare pairwise

40Instrumente pentru dezvoltarea programelor – Curs 2

Page 41: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

eXtreme Programming (3)eXtreme Programming (3)e t e e og a g (3)e t e e og a g (3)

• Noi versiuni pot fi construite chiar de mai multe ori pe zi

• Incrementele sunt livrate la fiecare 2 săptămânip• Toate testele trebuie să fie executate pentru

fiecare buildfiecare build

S t d ti i l t d lt t i i• Set de practici uzuale pentru dezvoltatori şi manageri ce încurajează– 5 valori – 12 practici/reguli

41Instrumente pentru dezvoltarea programelor – Curs 2

Page 42: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Cele 5 valori XPCele 5 valori XPCe e 5 a oCe e 5 a o1. Comunicare

– Teamwork: vederi consistente asupra sistemuluiTeamwork: vederi consistente asupra sistemului– Mediu de lucru deschis: dezvoltatori, manageri, clienţi– Conversaţii verbale, informale, faţă-în-faţă

2. Feedback2. Feedback– Găsirea unor modificări necesare ASAP pentru evitarea cheltuielilor– Din partea clientului, prin prototipuri şi comunicări incipiente– Testare, code review, estimări ale echipei, , p

3. Simplitate– Construirea celor mai simple lucruri care funcţionează pe moment– Nimic nu se construieşte ce ar putea fi nefolositor mai târziuş p– Proiectele simple facilitează comunicarea mai uşoară

4. Curaj– De a schimba şi de a sfărâma, “embrace change”

Cost ofchangeş , g

– Mai bine modifică pe loc (cheaper)– Niciodată nu te da bătut (Never give up!)

5. Respect pentru echipă şi munca proprie Point of timei hi j

g

42

p p p ş p pwithin project

Instrumente pentru dezvoltarea programelor – Curs 2

Page 43: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Cele 12 practici XP (1)Cele 12 practici XP (1)Ce e p act c ( )Ce e p act c ( )Fine scale feedback1 Pair Programming1. Pair Programming

– Programarea în echipe de câte doi: driver şi navigator2. Planning Game: metoda de planificare a proiectului împreună cu

clientulclientul3. Test Driven Development

– Întâi se scriu cazuri de test, ulterior codul programului– Pentru fiecare defect se introduce un nou caz de testPentru fiecare defect se introduce un nou caz de test

4. Whole Team: echipa de clienţi, dezvoltatori, manageri

Shared understandingShared understanding5. Folosirea unui Coding Standard de comun acceptat6. Collective Code Ownership

Toată lumea este responsabilă de întreg codul şi oricine poate– Toată lumea este responsabilă de întreg codul şi oricine poate modifica în oricare parte a codului

7. Simple Design8 System Metaphor

43

8. System Metaphor– Numirea părţilor din program folosind nume consistente, intuitive

Instrumente pentru dezvoltarea programelor – Curs 2

Page 44: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Cele 12 practici XP (2)Cele 12 practici XP (2)Continuous process9 C ti I t ti

Ce e p act c ( )Ce e p act c ( )

9. Continuous Integration– Lucru cu ultimele versiuni ale codului

Integrarea schimbărilor locale ASAP– Integrarea schimbărilor locale ASAP10.Refactoring

– Îmbunătăţirea proiectului când este posibilÎmbunătăţirea proiectului când este posibil– Înlăturarea complexităţii inutile

11.Small Releases

Programmer welfareg12.Sustainable Pace

– Nu se lucrează în regim Overtime – mai degrabă se difi fi l d i hi l fi lmodifică graficul de proiect sau chiar scopul final

44Instrumente pentru dezvoltarea programelor – Curs 2

Page 45: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Terminologia XPTerminologia XPe o og ae o og a• User story

Funcţionalităţile pe care sistemul trebuie să le ofere utilizatorilor– Funcţionalităţile pe care sistemul trebuie să le ofere utilizatorilor– Scrise de obicei pe o cartelă în câteva fraze– Ar trebui să necesite 1-3 săptămâni pentru implementare

R l i t l bil i l t ă “ t i ”• Release: sistem rulabil ce implementează “user stories”-urile importante

• SpikeSp e– Prototip folosit ca proof-of-concept– Explorează fezabilitatea unei abordări a implementării

• Iteration• Iteration– Fază a implementării, de durata 1-3 săptămâni– Conţine task-uri, fiecare de durata 1-3 zile

• Project velocity: folosit ca unitate de estimare a progresului– Fie #stories / timp

45

p– Fie time / #stories

Instrumente pentru dezvoltarea programelor – Curs 2

Page 46: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Etapele dezvoltEtapele dezvoltăării XPrii XPtape e de o ttape e de o tăă

UUserStories

DefectsProject velocity

ReleasePlanning TestsIteration

N tN SmallRelease

NextIteration

NewUser Story

UncertainEstimates

ConfidentEstimates

= is followed by

res lt goes into

46

46Spike = result goes into

Instrumente pentru dezvoltarea programelor – Curs 2

Page 47: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

User StoriesUser Stories

47Instrumente pentru dezvoltarea programelor – Curs 2

Page 48: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Scenariile cerinScenariile cerinţţelorelor

• În XP cerinţele utilizatorilor sunt specificate sub f ă d ii i d i

Sce a e ceSce a e ce ţţe oe o

formă de scenarii scrise pe carduri– Un user story este o scurtă descriere a ce se doreşte,

scrisă de client în terminologia acestuia fără sintaxăscrisă de client în terminologia acestuia, fără sintaxă tehnică.

• Echipa de dezvoltare le transpune în task-uri deEchipa de dezvoltare le transpune în task uri de implementare

• Task-urile constituie baza planificării dezvoltării şiTask urile constituie baza planificării dezvoltării şi a costurilor estimate

• Clientul alege scenariile ce pot fi incluse în noileClientul alege scenariile ce pot fi incluse în noile versiuni ale produsului, pe baza prorităţilor şi a estimărilor de planificarep

48Instrumente pentru dezvoltarea programelor – Curs 2

Page 49: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Ex: Story card for document Ex: Story card for document downloadingdownloading

i i i iDownloading and printing an article

First, you select the article that you want from a displayed list. You then ha e to tell the s stem ho o ill pa for it this can eitherthen have to tell the system how you will pay for it – this can either be through a subscription, through a company account or by credit card.

After this, you get a copyright form from the system to fill in and, when you have submitted this, the article you want is downloaded onto your computeronto your computer.

You then choose a printer and a copy of the article is printed. You tell the system if printing has been successful.tell the system if printing has been successful.

If the article is a print-only article, you can’t keep the PDF version so it is automatically deleted from your computer.

49

y y p

Instrumente pentru dezvoltarea programelor – Curs 2

Page 50: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

ExempluExempluStory card-urile cuprind e p ue p uS o y ca d u e cup dcel mai adesea

aproximativ trei fraze, scrise pe 4x6 cardsscrise pe 4x6 cards.

"Tell me the story and write down the name of the story and a paragraph or two."

License Enforcement

When run for the first time, JeraWorks puts up a license dialog, and will not proceed until the user enters either:the user enters either:

• a valid non-time-limited (paid) license certificate or• a valid time-limited (demo) license that has not yet expired.

A valid license is stored so the user doesn't have to re-enter it on subsequent runs.

License info is displayed on the splash screen.

I'll put on my "Development" hat tomorrow and estimate this. Tomorrow or 'mañana'?

When a demo license expires, the license dialog re-appears the next time JeraWorks is run.

50

Tomorrow or 'mañana'?

Instrumente pentru dezvoltarea programelor – Curs 2

Page 51: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

XP XP şşi schimbareai schimbareaşş sc ba easc ba ea• În mod tradiţional un dezvoltator software este considerat

înţelept atunci când proiectează soluţii luând înînţelept atunci când proiectează soluţii luând în considerare posibile extensii şi modificări ulterioare.– se recomandă pierderea timpului şi un efort mai mare pentruse recomandă pierderea timpului şi un efort mai mare pentru

anticiparea schimbărilor pentru că acest lucru poate duce la costuri mai reduse în viitor în ciclul de dezvoltare

• Abordarea XP susţine că tot acest efort este inutil – în realitate, schimbările ce pot interveni nu pot fi niciodată cu

adevărat anticipateadevărat anticipate.

• XP propune îmbunătăţirea constantă a codului(refactoring) pentru a face modificările mai uşor de(refactoring) pentru a face modificările mai uşor de integrat în proiect

51Instrumente pentru dezvoltarea programelor – Curs 2

Page 52: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Testarea Testarea îîn abordarea XPn abordarea XPesta eaesta ea abo da eaabo da ea

• Dezvoltare bazată pe abordarea “test-first”• Dezvoltarea incrementală a testelor pornind de la

scenarii• Includerea utilizatorilor în dezvoltarea şi validarea

testelortestelor• Toate componentele testelor sunt rulate folosind

instrumente de testare automatăinstrumente de testare automată• Testarea executată cu fiecare versiune nouă

52Instrumente pentru dezvoltarea programelor – Curs 2

Page 53: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Ex: Ex: Task cards for document Task cards for document d l did l didownloadingdownloading

Task 1: Implement principal workflow

Task 2: Implement article catalog and selectionTask 2: Implement article catalog and selection

Task 3: Implement payment collection

Payment may be made in 3 different ways. The userselects which way they wish to pay. If the userhas a library subscription, then they can input thesubscriber key which should be checked by thesubscriber key which should be checked by thesystem. Alternatively, they can input an organisationalaccount number. If this is valid, a debit of the costof the article is posted to this account. Finally, theymay input a 16 digit credit card number and expirymay input a 16 digit credit card number and expirydate. This should be checked for validity and, ifvalid a debit is posted to that credit card account.

53Instrumente pentru dezvoltarea programelor – Curs 2

Page 54: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Descrierea cazului de testDescrierea cazului de testesc e ea ca u u de testesc e ea ca u u de test

Test 4: Test cr edit card validity

Input:A t i ti th dit d b d t i t tiAstring representing the credit card number and two integers representingthe month and year when the card expiresTests:Check that all bytes in the string are digitsCheck that the month lies between 1 and 12 and theyear is greater than or equal to the current year .Using the first 4 digits of the credit card number ,check that the card issuer is valid by looking up thecheck that the card issuer is valid by looking up thecard issuer table. Check credit card validity by submitting the cardnumber and expiry date information to the cardissuerOutput:Output:OK or error message indicating that the card is invalid

54Instrumente pentru dezvoltarea programelor – Curs 2

Page 55: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

TestTest--first developmentfirst developmentestest st de e op e tst de e op e t• Scrierea testelor înaintea codului poate duce la

clarificarea cerinţelor ce se vor implementateclarificarea cerinţelor ce se vor implementate

• Testele sunt scrise sub formă de programe• Testele sunt scrise sub formă de programe, putând fi executate automat

• Un test include o verificare a unei funcţionalităţi

• Toate testele anterioare şi cele noi sunt rulate automat odată cu introducerea unei noi funcţionalităţi în proiect– Verificare că noua funcţionalitate nu a introdus erori în

proiect

55

proiect

Instrumente pentru dezvoltarea programelor – Curs 2

Page 56: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Pair programmingPair programminga p og a ga p og a g

• În abordarea XP programatorii lucrează în p gechipe, conlucrând la scrierea codului

• Doi oameni lucrând la o aceaşi maşină, cu o ş şsingură tastatură şi un singur mousesingur mouse

• Două roluri: – implementare – strategie

56

g

Instrumente pentru dezvoltarea programelor – Curs 2

Page 57: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

AvantajeAvantajea tajea taje• dezvoltarea simţului proprietăţii asupra codului

ă â di ti ţ l f it l i t• răspândirea cunoştinţelor referitoare la proiect între toţi membrii echipei de dezvoltare

• deoarece fiecare linie de cod este vizualizată de• deoarece fiecare linie de cod este vizualizată de mai multe persoane, serveşte şi ca proces de verificare informală

• încurajează refactorizarea

• Măsurătorile arată că productivitatea dezvoltării folosind această abordare este comparabilă cu

î d i i di i i l ă i d d taceea în care doi indivizi lucrează indepedent

57Instrumente pentru dezvoltarea programelor – Curs 2

Page 58: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Reguli şi practici simplificateReguli şi practici simplificateegu ş p act c s p cateegu ş p act c s p cate

• Planning• User Stories

• Designing• Simplicity

• Release Planning• Small Releases

• System Metaphor• CRC cards

• Measure Project Velocity• Divide project to iterations

• Spike solutions• YAGNI

• Iterations Planning• Move People around

• Refactor

• Stand up meeting

58Instrumente pentru dezvoltarea programelor – Curs 2

Page 59: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Reguli şi practici simplificateReguli şi practici simplificateegu ş p act c s p cateegu ş p act c s p cate

Coding Testing• Coding• Customer available• Code standards

• Testing• Unit test everything• All tests pass beforeCode standards

• Test-Driven• Pair Programming

All tests pass before release

• Bug== new testA t t t• Sequential change

integration• Integrate often

• Acceptance tests

• Integrate often• Collective code

ownership• Don’t optimize early• No overtime

59Instrumente pentru dezvoltarea programelor – Curs 2

Page 60: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Harta XP Harta XP -- ProiectProiecta taa ta o ecto ect

60Instrumente pentru dezvoltarea programelor – Curs 2

Page 61: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Harta XP Harta XP –– IteraţieIteraţiea taa ta te aţ ete aţ e

61Instrumente pentru dezvoltarea programelor – Curs 2

Page 62: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Harta XP Harta XP -- DezvoltareDezvoltarea taa ta e o ta ee o ta e

62Instrumente pentru dezvoltarea programelor – Curs 2

Page 63: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Harta XP Harta XP –– Drepturi comune asupra Drepturi comune asupra coduluicodului

63Instrumente pentru dezvoltarea programelor – Curs 2

Page 64: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

PracticilePracticile XPXP sunt intersunt inter dependentedependentePracticile Practicile XP XP sunt intersunt inter--dependentedependente

On-site Customer Planning game

40 Hour Week

Metaphor

RefactoringSimple Design

Short Releases

TestingPair Programming

Collective OwnershipCoding Standards

Continuous Integration

Sursa: Beck Extreme Programming Explained: Embrace Change 1999Sursa: Beck, Extreme Programming Explained: Embrace Change, 1999

Page 65: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

E l d I l tE l d I l t XPXPExemplu de Implementare Exemplu de Implementare XPXP

65Instrumente pentru dezvoltarea programelor – Curs 2

Page 66: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Exemplul de Programare Exemplul de Programare XP :XP :

Acesta este un exemplu foarte primitiv de folosire a metodologiei de Acesta este un exemplu foarte primitiv de folosire a metodologiei de programare XP pentru revitalizarea unui proiectprogramare XP pentru revitalizarea unui proiect..

• Structura proiectului– Proiect: Customizarea unui Sistem de Contabilizare a Muncii existent.Proiect: Customizarea unui Sistem de Contabilizare a Muncii existent.– Utilizatorul principal: Resursele umane– Echipa de proiect: Programer1, Programer2, Senior Programmer, DBA,

Project ManagerProject Manager.– Managerul de proiect deţine: Project plan, project source code, project user

requirements.– Prog1 deţine Part P1; Prog2 deţine Part P2; Senior deţine Part P3; DBA

deţine obiectele Database;– Contactul cu utilizatorul în cadrul echipei: project manager.

66Instrumente pentru dezvoltarea programelor – Curs 2

Page 67: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

• Diagrama originală de• Diagrama originală de structură a proiectului.

Orice comunicaţie între– Orice comunicaţie între utilizatori şi programatori trece prin manager.

– Proprietatea asupra codului: monopol.

67Instrumente pentru dezvoltarea programelor – Curs 2

Page 68: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

• Problemele apărute:• Problemele apărute:– În absenţa oricărui membru al echipei

munca încetineşte sau chiar se opreştemunca încetineşte sau chiar se opreşte.– Este imposibil de menţinut munca altui

programator;programator;– Testarea sistemului şi obţinerea de

feedback necesită timp îndelungat;feedback necesită timp îndelungat;– Programatorii şi utilizatorii sunt confuzi cu

privire la interpretarea cerinţelor şiprivire la interpretarea cerinţelor şi implementare;Fieare parte a sistemului este deţinută de– Fieare parte a sistemului este deţinută de către un membru al echipei;

68Instrumente pentru dezvoltarea programelor – Curs 2

Page 69: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Când o persoană pleacă este• Când o persoană pleacă este dificil de menţinut munca acelei persoane. Atunci când

i l d ă

UserP1, P2, P3and R.

R

mai multe de o persoană pleacă proiectul stă să moară dacă nu se iau măsuri critice în structura proiectului.

• După trei luni de dezvoltareProg1

Pro 2

P2

• După trei luni de dezvoltare trei oameni părăsesc proiectul. Acesta arată acum

tf lP1

P3

astfel:

Data

69Instrumente pentru dezvoltarea programelor – Curs 2

Page 70: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

• Implementare XP cu număr limitat de resurse umane pdisponibile pentru revitalizarea proiectului:

P t î t l ă î hi i i t l l– Pentru început se lucrează în perechi şi se preia controlul asupra codului lăsat de programatorul senior.

– Se începe munca la codul fiecăruia în perechi. Promovarea unui t d d d d P d t l i l tistandard de codare. Promovarea dreptului colectiv asupra

proiectului.– Dezvoltarea de unit tests, teste de integrare, user tests cu fiecare

implementare. Utilizatorii sunt disponibili cu feedback referitor la schimbări şi cerinţe de implementare.

– User stories sunt folosite pentru descrierea cerinţelor şi testarea implementării.

– Toate acestea au făcut dezvoltarea, modificarea, testarea şi integrarea mai uşoare şi rapide.

70Instrumente pentru dezvoltarea programelor – Curs 2

Page 71: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

• Noua diagramă de

User

P1, P2, P3R and Data

oua d ag a ă deproiect după aplicarea metodelor XP.– Comunicare directă între

utilizatori şi programatori. – Acces direct la oricare

resursă a proiectului. – Drepturi colective asupra

proiectului.

Prog1

Pro 2p

ProLead

71Instrumente pentru dezvoltarea programelor – Curs 2

Page 72: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

QuizQuizQuizQuiz1. Explicaţi cum duc principiile metodelor

agile la o dezvoltare accelerată a aplicaţiilor software.ţ

2 Când aţi recomanda să nu se folosească2. Când aţi recomanda să nu se folosească metodele agile pentru dezvoltarea de sisteme software?sisteme software?

72Instrumente pentru dezvoltarea programelor – Curs 2

Page 73: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

SCRUM și eXtreme ProgrammingSCRUM și eXtreme ProgrammingSCRUM și eXtreme ProgrammingSCRUM și eXtreme Programming• SCRUM este adesea folosit ca un wrapperpp

peste eXtreme Programming

Instrumente pentru dezvoltarea programelor – Curs 2 73

Page 74: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Dezvoltarea Orientată Dezvoltarea Orientată sprspre Testaree Testare

It works fine on MY computer.It’s a feature.fThat’s weird…It’s never done that before.It must be a hardware problemIt must be a hardware problem.It worked yesterday.It’s just some unlucky coincidence.

(top replies by programmers when their programs don’t work, from

t t ti )

74

extremetesting)

Instrumente pentru dezvoltarea programelor – Curs 2

Page 75: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

TestareaTestarea –– parte a parte a procesuluiprocesuluisoftwaresoftware

Instrumente pentru dezvoltarea programelor – Curs 2 75

Page 76: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Cine testează?Cine testează?C e testea ăC e testea ă

• Cazul ideal – echipe de specialişti independeţi• Adesea – analiştii responsabili de statbilirea

cerinţelor şi analizăţ ş• În eXtreme Programming (XP) programatorii sunt

responsabili de scrierea testelor înainte deresponsabili de scrierea testelor înainte de codare

• Utilizatorii sistemului ce validează aplicaţia• Utilizatorii sistemului ce validează aplicaţia

76Instrumente pentru dezvoltarea programelor – Curs 2

Page 77: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Ce se testează?Ce se testează?Ce se testea ăCe se testea ă

• Testarea considerând programul un ‘black-box’• Cazuri de test bazate pe specificaţiile sistemului

– Cerinţe funcţionale• Face ceea ce trebuie să facă?

– Cerinţe non-funcţionale• e g Face pe cât de repede ar trebui să facă?• e.g. Face pe cât de repede ar trebui să facă?

• Planificarea testării poate începe din primele faze ale procesului softwareale procesului software

• Testerii accesează aplicaţia prin aceleaşi interfeţe pe care le folosesc şi clientul sauinterfeţe pe care le folosesc şi clientul sau utilizatorul

77Instrumente pentru dezvoltarea programelor – Curs 2

Page 78: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Ce se testează?Ce se testează?• Black-box testing – testarea funcționalității

aplicației

Ce se testea ăCe se testea ă

aplicației• White-box testing (glass box testing) – testarea

structurii interne a aplicațieistructurii interne a aplicației– Obiectivele constau în testarea implementării interne a

software-ului şi verificarea dacă aceasta este conformă ifi ţiilcu specificaţiile

– Testerii au nevoie să acceseze codul şi dezvoltă cazurile de test în funcţie de structura programuluiţ p g

– Codul de test legat de biblioteci şi chiar aplicaţia software

Cel mai adesea nit tests• Cel mai adesea – unit tests– Testează părţi ale sistemului software– Verificare – componentele sunt funcţionale şi robuste– Verificare – componentele sunt funcţionale şi robuste

78Instrumente pentru dezvoltarea programelor – Curs 2

Page 79: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Planuri de testarePlanuri de testarea u de testa ea u de testa e

• Scrise înainte ca testele să fie dezvoltate– Chiar înainte de scrierea codului!

• Conţin Test CasesConţin Test Cases– Descrierea testului

Date folosite pentru testare– Date folosite pentru testare– Rezultate aşteptate– ....

79Instrumente pentru dezvoltarea programelor – Curs 2

Page 80: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Planuri de testarePlanuri de testareTest no. 23Purpose: Test correct addition of campaign and advertsStep no. Test description Test data Expected result

23.1 Create a new Campaign

Campaign added to database. Campaign estimated Cost is set

$0 00to $0.0023.2 Add advert 1 to

CampaignAdvert estimated

Advert added to the database.Campaign estimated cost is set

cost=$500Ca pa g est ated cost s setto $500

23.3 .....

........ .....

80Instrumente pentru dezvoltarea programelor – Curs 2

Page 81: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Datele de testDatele de testate e de testate e de test

• Programe de test pentru stabilirea prezenţei defectelor de sistem – încearcă spargereasistemului

• Datele de test testează aplicaţia software la limită– Valori extreme (numere foarte mari, string-uri lungi)a o e e e ( u e e oa e a , s g u u g )– Valori out of range sau aproape de limite (0, -1, 0.999)– Combinaţii invalide de valori (age = 3, marital status =Combinaţii invalide de valori (age 3, marital status

married)– Valori fără sens (valori negative)( g )– Încărcări mari (sunt cerinţele de performanţă

satisfăcute?)

81Instrumente pentru dezvoltarea programelor – Curs 2

Page 82: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Nivele de testareNivele de testaree e de testa ee e de testa e

• Bottom up– Unit testing (clase individuale)

– Integration testing (clasele funcţionează corect împreună)– Integration testing (clasele funcţionează corect împreună)

– Subsystem testing (subsistemul funcţionează corect şi li ă f ţi lit t tă)livrează funcţionalitatea cerută)

– System testing (întregul sistem funcţionează fără interacţii nedorite între subsisteme)

– Acceptance testing (sistemul funcţionează aşa cum este dorit de către utilizatori şi în conform cu specificaţiile)

82Instrumente pentru dezvoltarea programelor – Curs 2

Page 83: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Etapele testăriiEtapele testăriitape e testătape e testă• Etapa 1

T t d l l ( l l ) i l ( i d– Testarea modulelor (claselor), apoi a programelor (cazuri de folosire), apoi a suitei (aplicaţia)

• Etapa 2 (Alpha Testing sau Verificarea)p ( p g )– Execuţia programelor într-un mediu simulat şi testarea intrărilor şi

ieşirilor– Etapa anterioară release-ului– Etapa anterioară release-ului

• Etapa 3 (Beta Testing sau Validarea)– Testarea într-un mediu real şi verificarea timpilor de răspuns, a

performanţei sub load şi recuperării din diverse erori– Reseale unui grup restrâns

• Etapa 4 (Gamma)• Etapa 4 (Gamma)• Release-ul către public

83Instrumente pentru dezvoltarea programelor – Curs 2

Page 84: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

JUnitJUnitnu CppUnit pentru C++

84Instrumente pentru dezvoltarea programelor – Curs 2

Page 85: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Unit TestsUnit TestsU t estsU t ests

• Testarea segmentelor individuale de codg

• Facilitează refacerea codului la un moment ulterior şi• Facilitează refacerea codului la un moment ulterior şi asigurarea că modulul încă funcţionează corect (e.g. Regression Testing)Regression Testing)

• Simplifică integrarea: ajută la eliminarea nesiguranţei• Fără unit tests

– Integrarea codului poate fi un coşmar– Modificarea codului poate fi un coşmar

85Instrumente pentru dezvoltarea programelor – Curs 2

Page 86: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

JUnitJUnit• Filozofie:

JU tJU t

– “Any program feature without an automated test simply doesn’t exist.” - Extreme Programming Explained, Kent BeckBeck

• Gratis, open source (GPL’d)• Integrat în Eclipse

– Interfaţă graficăInterfaţă grafică

– Posibilitatea selectării testelor ce se vor a fi rulate

– Suport pentru suite de teste

• http://www.junit.orgp j g

86Instrumente pentru dezvoltarea programelor – Curs 2

Page 87: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Ce este un test JUnit?Ce este un test JUnit?Ce este u test JU tCe este u test JU t

• Teste de unităţi sunt scrise în clase de test• De exemplu, clasa Stack

– Clasa Stack are push, pop, count, …C asa S ac a e pus , pop, cou ,– Clasa TestStack are testPush, testPop

• Ce se adaugă? Aserţiuni• Ce se adaugă? Aserţiuni.– Un pachet de metode ce verifică diverse

proprietăţi:proprietăţi:• Egalitatea variabilelor• Identitatea obiectelorIdentitatea obiectelor

– Aserţiunile sunt folosite pentru a determina verdictul cazului de test

87

verdictul cazului de test

Instrumente pentru dezvoltarea programelor – Curs 2

Page 88: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Clasa StackClasa StackC asa StacC asa Stacpublic class Stack {

int[] elements;int[] elements;int topElement = -1;

public Stack() {public Stack() {this(10);

}

public Stack(int size) {elements = new int[size];

}

public boolean isEmpty() {p p yreturn topElement == -1;

}}

88

}

Instrumente pentru dezvoltarea programelor – Curs 2

Page 89: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Testarea JUnitTestarea JUnitesta ea JU testa ea JU t• Teste – subclase ale junit.framework.TestCase

M t d l î “t t” t t t d ăt• Metodele ce încep cu “test” sunt executate de către TestRunnerEx teste pentru constructori:

public class TestStack extends TestCase {

• Ex. – teste pentru constructori:

public void testDefaultConstructor() {Stack test = new Stack();assertTrue(“Default constructor” test isEmpty());assertTrue( Default constructor , test.isEmpty());

}

public void testSizeConstructor() {public void testSizeConstructor() {Stack test = new Stack(5);assertTrue(test.isEmpty());

}}}

89Instrumente pentru dezvoltarea programelor – Curs 2

Page 90: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

AserţiuniAserţiunise ţ use ţ u

• Aserţiunile sunt definite în clasa specială JUnit A tAssert– Dacă aserţiunile sunt adevărate se continuă

ţi t d iexecuţia metodei.– Dacă oricare aserţiune este falsă se opreşte

execuţia metodei iar rezultatul cazului de test vaexecuţia metodei, iar rezultatul cazului de test va fi “fail”.Dacă se aruncă orice excepţie în timpul execuţiei– Dacă se aruncă orice excepţie în timpul execuţiei metodei rezultatul cazului de test va fi “error”.Dacă nici o aserţiune nu a fost încălcată pe– Dacă nici o aserţiune nu a fost încălcată pe durata execuţiei întregii metode cazul de test va fi trecut (pass).

90

fi trecut (pass).

Instrumente pentru dezvoltarea programelor – Curs 2

Page 91: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Clasa AssertClasa AssertC asa sse tC asa sse tassertTrue()assertFalse()assertEquals()

tN tE l ()assertNotEquals()assertSame()assertNotSame()assertNotSame()assertNull()assertNotNull()assertNotNull()fail()

Pentru o listă completă de metode & argumente consultaţi şihttp://junit.sourceforge.net/javadoc/

91

p j g j

Instrumente pentru dezvoltarea programelor – Curs 2

Page 92: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Setarea testelorSetarea testelorSeta ea teste oSeta ea teste o• Înainte de fiecare test se execută metoda setUp():

import junit.framework.TestCase;

public class StackTrace extends TestCase {public class StackTrace extends TestCase {Stack test;

public void setUp() {test = new Stack(5);for (int k=1; k<=5; k++)

test.push(k);}}

public void testPushPop() {for (int k=5; k>=1; k--)

assertEquals(“Pop fail on element “+k, test.pop(), k);}

}

92Instrumente pentru dezvoltarea programelor – Curs 2

Page 93: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

CaCazuri multiple de testzuri multiple de testCaCa u u t p e de testu u t p e de test

• Mai multe clase de test pot fi rulate psimultan

• Încă un exemplu:• Încă un exemplu:

93Instrumente pentru dezvoltarea programelor – Curs 2

Page 94: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Folosirea unei suite pentru executarea Folosirea unei suite pentru executarea i l i di l i d

• AllTests execută toate testele din StackTest şi QueueTest

mai multor cazuri de testmai multor cazuri de testş

• Eclipse generează clasa în mod automat– Din meniul File se selectează New apoi Other În fereastra de dialogDin meniul File se selectează New, apoi Other. În fereastra de dialog

se selectează “JUnit Test Suite”

94Instrumente pentru dezvoltarea programelor – Curs 2

Page 95: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Rularea testelor JUnitRularea testelor JUnit• Se pot executa uşor din Eclipse

Se poate descărca Junit de la http://www junit org/ şi• Se poate descărca Junit de la http://www.junit.org/ şi rula din linia de comandă

95Instrumente pentru dezvoltarea programelor – Curs 2

Page 96: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Test vsTest vs.. TestCase vsTestCase vs.. TestSuiteTestSuiteest sest s estCase sestCase s estSu teestSu te

• “TestCase” este o clasă• Un test este reprezentat de o metodă

O “ ită d t t ” t t tă d• O “suită de teste” este reprezentată de o colecţie de teste (posibil înrudite) ce sunt rulate ca un grup

• Nu există diferenţe între rularea unei suite• Nu există diferenţe între rularea unei suite de teste şi a unui caz de test.

96Instrumente pentru dezvoltarea programelor – Curs 2

Page 97: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

FrameworkFramework--ulul JUnitJUnitFrameworkFramework ulul JUnitJUnitTest

run(TestResult)

run(TestResult)

TestSuiterun(TestResult)

TestCaseTestResult

run(TestResult)addTest()

run(TestResult)runTest()setup()

tearDown()

fTests

fName

*suite(): TestSuite

AnotherTestClassTestele noastre.

*suite(): TestSuite

ATestClass

97

suite(): TestSuite*suite(): TestSuite

Instrumente pentru dezvoltarea programelor – Curs 2

Page 98: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Rapid Application DevelopmentRapid Application Development

Two hours minimum, sir, at top warp speed At out present rate two daysspeed. At out present rate, two days...

Damn... Maximum warp, then.(Star Trek: Next Generation: Captains’

H )Honor)

98Instrumente pentru dezvoltarea programelor – Curs 2

Page 99: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Dezvoltarea rapidă de aplicaţiiDezvoltarea rapidă de aplicaţiie o ta ea ap dă de ap caţe o ta ea ap dă de ap caţ

• Metodele agile au captat atenţie dar alte g p ţabordări ale dezvoltării rapide de aplicaţii au fost folosite de mai mulţi aniau fost folosite de mai mulţi ani

• Acestea sunt proiectate pentru dezvoltarea d li ţii b i i t t d t ide aplicaţii business orientate spre date şi se bazează pe programarea şi prezentarea informaţiilor provenind dintr-o bază de date

99Instrumente pentru dezvoltarea programelor – Curs 2

Page 100: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Instrumente de dezvoltare RADInstrumente de dezvoltare RADst u e te de de o ta est u e te de de o ta e

• Limbaje de programare a bazelor de datej p g• Generare de interfeţe

L ăt i li ţii• Legături cu aplicaţii • Generare de rapoartep

100Instrumente pentru dezvoltarea programelor – Curs 2

Page 101: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Un mediu de dezvoltare RADUn mediu de dezvoltare RADU ed u de de o ta eU ed u de de o ta e

Sisteme Generator de Officeinterfeţe

Generator detLimbaj de rapoarteLimbaj de

programare DB

Database Management System

Mediu de dezvoltare

Database Management System

Mediu de dezvoltarerapidă de aplicaţii

101Instrumente pentru dezvoltarea programelor – Curs 2

Page 102: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Generarea de interfeGenerarea de interfeţţeeGe e a ea de te eGe e a ea de te eţţee

• Multe aplicaţii se bazează pe formulare complexe– Dezvoltarea unor formulare manual reprezintă o

activitate consumatoare de timp şi resurse• Mediile de dezvoltare RAD includ suport pentru

generarea de ecrane, precum:g– Definirea interactivă de formulare folosind tehnici

drag&drop;– Legarea de formulare în care sunt specificate secvenţe

de prezentare a acestora;– Verificarea de formulare în care sunt definite plaje de

valori pentru câmpuri ale formularelor.

102Instrumente pentru dezvoltarea programelor – Curs 2

Page 103: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Programarea vizualProgramarea vizualăăog a a ea uaog a a ea ua ăă

• Limbaje de scripting precum Visual Basic suportă programarea vizuală– Prototipul este dezvoltat prin crearea de interfeţe

utilizator pornind de la elemente standard definite şi furnizând asocieri între componente şi aceste elementeelemente

• Mediile RAD oferă o mare gamă de componente t t t ti d d ltpentru a suporta acest tip de dezvoltare

• Acestea pot fi ajustate pentru a se armoniza cu cerinţele specifice ale aplicaţiilor

103Instrumente pentru dezvoltarea programelor – Curs 2

Page 104: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Programarea vizualProgramarea vizualăă şşi refolosirei refolosireog a a ea uaog a a ea ua ăă şş e o os ee o os e

Menu componentDate component

File Edit Views Layout Options Help

GeneralIndex12th January 2000 Index

Range checkingscript

User prompt

12th January 2000

3.876

Draw canvascomponent

p pcomponent +

script

Tree displaycomponent

104

component

Instrumente pentru dezvoltarea programelor – Curs 2

Page 105: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Probleme cu dezvoltarea vizualProbleme cu dezvoltarea vizualăăob e e cu de o ta ea uaob e e cu de o ta ea ua ăă

• Dezvoltarea în echipă este dificil de pcoordonat.

• Nu există o arhitectură explicită a• Nu există o arhitectură explicită a sistemului.

• Dependenţele complexe dintre părţi ale programului pot cauza probleme deprogramului pot cauza probleme de mentenanţă.

105Instrumente pentru dezvoltarea programelor – Curs 2

Page 106: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

COTSCOTSCO SCO S

• O abordare a dezvoltării rapide constă în configurarea şi legarea unor sisteme existente “off the shelf”

• De exemplu un sistem de gestiune a cerinţelorDe exemplu, un sistem de gestiune a cerinţelor poate fi construit folosind:– O bază de date pentru stocarea cerinţelor;– O bază de date pentru stocarea cerinţelor;– Un procesor word pentru capturarea cerinţelor şi a

formularelor de rapoarte;formularelor de rapoarte;– Un spreadsheet pentru gestionarea istoriei dezvoltării.

106Instrumente pentru dezvoltarea programelor – Curs 2

Page 107: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Software PrototypingSoftware Prototyping

107Instrumente pentru dezvoltarea programelor – Curs 2

Page 108: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Back testingBack testingBack testingBack testing

Date de test

Prototip desistem

Sistemul aplicaţie

ComparatorComparatorde rezultate

Raport aldiferenţelor

108Instrumente pentru dezvoltarea programelor – Curs 2

Page 109: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Procesul de prototipareProcesul de prototipareProcesul de prototipareProcesul de prototipare

Stabilirea obiectivelorprototipului

Definireafuncţionalităţii

prototipuluiDezvoltareaprototipului

Evaluareaprototipuluiprototipului prototipului

Raport deevaluare

Planulprototipului

Definiţiafuncţionalităţii

Prototipulexecutabil

109Instrumente pentru dezvoltarea programelor – Curs 2

Page 110: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

PrototipuriPrototipuri ThrowThrow--awayawayPrototipuri Prototipuri ThrowThrow awayaway• Prototipurile sunt aruncate după dezvoltare

deoarece ele nu constituie o bună bazăpentru sistemul final:– Poate fi imposibil ca sistemul să includă

cerinţele non-funcţionale;– Prototipurile sunt în general nedocumentate;– Structura prototipului este în general degradatăStructura prototipului este în general degradată

de procesele de modificări rapide aplicate;– Prototipul nu satisface standarde de calitatePrototipul nu satisface standarde de calitate

înaltă ce ar putea fi impuse de organizaţie.

110Instrumente pentru dezvoltarea programelor – Curs 2

Page 111: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

SumarSumarSu aSu a• O abordare iterativă a dezvoltării software conduce la

livrarea mai rapidă a aplicaţieilivrarea mai rapidă a aplicaţiei• Metodele agile sunt metode de dezvoltare iterativă ce

urmăresc reducerea overhead-ului de dezvoltare şi prod cerea rapidă de soft areproducerea rapidă de software

• Programarea extremă include practici precum testarea sistematică, îmbunătăţirea continuă şi includerea clientului , ţ şîn ciclul de dezvoltare

• Mediile de dezvoltare rapidă includ limbaje de programare a bazelor de date instrumente pentru generarea dea bazelor de date, instrumente pentru generarea de formulare şi legături cu aplicaţii office

• Un prototip throw-away este folosit pentru explorarea cerinţelor şi a opţiunilor de proiectarecerinţelor şi a opţiunilor de proiectare

• În abordarea bazată pe prototipuri throw-away se începe cu cerinţele cel mai puţin înţelese; în dezvoltarea

111

ţ p ţ ţincrementală se începe cu cerinteţele cel mai bine înţelese

Instrumente pentru dezvoltarea programelor – Curs 2

Page 112: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

ResurseResurseWeb Sites

http://www.testdriven.comhttp://www xprogramming com

esu seesu se

http://www.xprogramming.comhttp://AgileAlliance.comhttp://ExtremeProgramming.orghttp://www.junit.orghttp://www.xprogramming.comhttp://www.xprogramming.comhttp://www.refactoring.comhttp://www.pairprogramming.com

Blogshttp://dotnetjunkies.com/WebLog/darrell nortonp j g _http://www.peterprovost.orghttp://weblogs.asp.net/nunitaddinhttp://weblogs.asp.net/jamesnewkirkhttp://www,iserializable.com

BooksBooksExtreme Programming Explained – Kent BeckRefactoring – Martin FowlerPlanning Extreme Programming – Kent Beck et alExtreme Programming Installed Ron Jeffries et alExtreme Programming Installed – Ron Jeffries et alExtreme Programming Examined – Giancarlo Succi et alExtreme Programming in Practice – Robert C. Martin et alExtreme Programming Explored – William C. WakeExtreme Programming Applied Ken Auer et alExtreme Programming Applied – Ken Auer et alThe Costs and Benefits of Pair Programming – Alistair Cockburn et al

112Instrumente pentru dezvoltarea programelor – Curs 2

Page 113: 2 Rapid software development

Universitatea Politehnica Bucuresti - Facultatea de Automatica si Calculatoare

Temă pentru acasăTemă pentru acasăTema constă în răspunsul la următoarele întrebări:

Temă pentru acasăTemă pentru acasă

• Explicaţi de ce rata de productivitate a programatorilor ce lucrează în perechi este aproximativ aceeaşi ca a doi programatori lucrând individual. Sugeraţi patru motive.g ţ p

• Un manager software este implicat în dezvoltarea unui sistem pentru translatarea cerinţelor software în specificaţii software formale. Comentaţi avantajele şi dezavantajele următoarelor strategii de d ltdezvoltare:

– Dezvoltarea unui prototip throw-away, evaluare, review al cerinţelor de sistem.Dezvoltarea sistemului final în C.Dezvoltarea sistemului precând de la cerinţele existente folosind Java– Dezvoltarea sistemului precând de la cerinţele existente folosind Java, modificarea acestora pentru adaptarea ulterioară a unor cerinţe modificate venite din partea utilizatorului.

– Dezvoltarea sistemului folosind dezvoltarea incrementală cu un utilizator i li t î hi d d ltimplicat în echipa de dezvoltare.

Răspunsurile se încarcă în format PDF pe site, până pe data de 07.03.2012.

113Instrumente pentru dezvoltarea programelor – Curs 2