Presentazione eXtreme Programming

20
05/04/07 59 Parte 5 Parte 5 eXtreme Programming eXtreme Programming

description

2006 Talk di sera ERLUG (Emilia Romagna Linux User Group) Realizzati insieme ad Ilias Bartolini . 5a e ultima parte Presentazione di XP vers. 2.0 come descritta dal secondo libro bianco [nota: all'epoca era stato appena pubblicato ... riferimenti non precisi :-) ]

Transcript of Presentazione eXtreme Programming

Page 1: Presentazione eXtreme Programming

05/04/07 59

Parte 5Parte 5eXtreme ProgrammingeXtreme Programming

Page 2: Presentazione eXtreme Programming

05/04/07 60

eeXXtreme treme PProgrammingrogramming

eXtreme Programming Descritta nel secondo libro bianco

Beck, K and Andres, Extreme Programming Explained:

Embrace Change (2nd Edition),Addison-Wesley,

2005

Page 3: Presentazione eXtreme Programming

05/04/07 61

eeXXtreme treme PProgrammingrogramming

La metodologia XP descritta nel primo libro bianco

Ken Beck,Extreme Programming Explained,

Addison-Wesley,1999

Verrà specificata come la 'prima XP'

Page 4: Presentazione eXtreme Programming

05/04/07 62

eeXXtreme treme PProgrammingrogramming

Per questa presentazione abbiamo preso spunto, oltre che dalla 'letteratura ufficiale',

dall'articolo di presentazione del secondo libro bianco scritto dal Prof. Michele Marchesi

www.agilexp.org/downloads/NuovoXP.pdf

Otto pagine consigliate

Page 5: Presentazione eXtreme Programming

05/04/07 63

eeXXtreme treme PProgrammingrogramming

ValoriSono la base

filosofica della metodologia.

I valori XP sono mappabili nei valori dell'Agile Manifesto.

● Comunicazione● Semplicità● Feedback● Coraggio● Rispetto

Page 6: Presentazione eXtreme Programming

05/04/07 64

eeXXtreme treme PProgrammingrogramming

Le pratiche

come sviluppare il software.

Page 7: Presentazione eXtreme Programming

05/04/07 65

eeXXtreme treme PProgrammingrogramming

Le pratiche XP

13 pratiche primarie

11 pratiche corollarie

Primarie:possono essere applicate singolarmente.

Corollarie: richiedono l'applicazione di una o più pratiche primarie

Page 8: Presentazione eXtreme Programming

05/04/07 66

Pratiche Primarie XP 1/3Pratiche Primarie XP 1/3

Analisi e pianificazione

Storie(stories)

sono brevi descrizioni di una funzionalità del sistema, lacui implementazione ne guida lo sviluppo.

Ciclo settimanale(weekly cycle)

lo sviluppo avviene per cicli di una settimana, con unariunione di inizio in cui si decide quali storieimplementare.

Ciclo trimestrale(quarterly cycle)

ogni tre mesi si pianifica lo sviluppo su scala più larga,riflettendo anche sul processo usato, sul team,sull’allineamento con gli obiettivi aziendali.

Margine di sicurezza(slack)

evitate di promettere cose che non si possono mantenere,ed anzi abbiate sempre ad ogni iterazione delle storie chesi possono differire alla successiva, per mantenere unmargine di sicurezza in casi di problemi imprevisti.

Page 9: Presentazione eXtreme Programming

05/04/07 67

Pratiche Primarie XP 2/3Pratiche Primarie XP 2/3

Gruppo di sviluppo e fattori umani

Sedere insieme(sit together)

il team di sviluppo deve lavorare in un ambiente apertocapace di ospitarlo tutto, per massimizzare la comunicazione.

Team completo(whole team)

il team deve essere composto di membri con competenzediversificate e complementari, che abbiamo forte senso diappartenenza e si aiutino a vicenda.

Ambiente di lavoro informativo (informative workspace)

l’ambiente di lavoro deve essere fornitodi cartelli indicanti lo stato del progettoed il lavoro da svolgere.

Energia sul lavoro(energized work)

gli sviluppatori devono essere freschi e riposati, per poterconcentrarsi sul lavoro e rendere al massimo; quindi, occorrelimitare gli straordinari e ciascuno deve avere il tempo peruna vita privata.

Programmazione a coppie(pair programming)

il codice deve essere sempre scritto dauna coppia di programmatori, seduti adun unico terminale.

Page 10: Presentazione eXtreme Programming

05/04/07 68

Pratiche Primarie XP 3/3Pratiche Primarie XP 3/3

Progettazione

Progettoincrementale(incremental design)

l'XP rifugge dal “big design upfront”, e cerca di scrivere ilprima possibile del codice per ottenere feedback,migliorandone poi la struttura in continuazione. L'XPsuggerisce di progettare incrementalmente durante tutto losviluppo.

Programmazioneguidata dai test(test-first programming)

prima di modificare o aggiungere del codice, scrivete dei testper verificare lo stesso codice. Ciò risolve quattro problemi:cowboy coding; basso accoppiamento ed alta coesione delcodice; fiducia dei propri compagni; buon ritmo di lavoro.

Codifica e rilascio del software

Build di dieci minuti(ten-minute build)

il “build” del sistema, inclusa l’esecuzione dei testautomatici, deve durare non più di dieci minuti, perpoter essere eseguito spesso ed ottenere il necessariofeedback.

Integrazione continua(continuous integration)

i cambiamenti e le aggiunte al codice vanno integratinel sistema ogni due ore, per avere un feedbackimmediato sui possibili problemi di integrazione

Page 11: Presentazione eXtreme Programming

05/04/07 69

Pratiche Corollarie XP 1/3Pratiche Corollarie XP 1/3

Analisi e pianificazione:

Coinvolgimentoreale del cliente(real customer involvement)

le persone la cui vita sarà influenzata dal vostro sistemadevono diventare parte del team, contribuendo allapianificazione trimestrale e settimanale.

Rilasciincrementali(incremental deployment)

nel caso di rimpiazzo di un sistema “legacy”, iniziate da subitoa sostituirne delle funzionalità, e procedete gradualmente arimpiazzarlo tutto. Evitate un approcccio “tutto o niente”.

Contratti confunzionalità negoziate(negotiated scope contract)

i contratti dovrebbero avere tempo, costi e livello diqualità fissi, ma le funzionalità da realizzaredovrebbero essere negoziate durante la realizzazionestessa. É meglio una serie di brevi contratti insuccessione, per ridurre il rischio.

Pay-per-use(pay-per-use)

se possibile stipulate contratti in cui il cliente paga chiproduce il software proporzionalmente all'uso dello stesso daparte degli utenti: collegare il flusso di denaro allo sviluppodel sistema fornisce informazioni tempestive ed accurate.

Page 12: Presentazione eXtreme Programming

05/04/07 70

Pratiche Corollarie XP 2/3Pratiche Corollarie XP 2/3

Gruppo di sviluppo e fattori umani

Continuità del team(team continuity)

i gruppi di sviluppo devono rimanere per quantopossibile gli stessi, anche attraverso progetti diversi.Le relazioni che si formano in un gruppo efficacesono preziose: è sbagliato trattare le risorse umanecome “caselle” da riempire, senza tenere conto dellepersone e delle relazioni esistenti tra di esse.

Team che si restringono(shrinking teams)

man mano che il team diventa più capace eproduttivo, mantenete il suo carico di lavoro costante,ma riducetene gradualmente la dimensione,mandando i membri in più a formare altri team.Questo principio contraddice in parte la “Continuitàdel team”.

Progettazione

Analisi delle causeprime(root-cause analysis)

tutte le volte che trovate un errore, eliminatelo edeliminatene anche le cause. In tal modo non solocorreggerete l'errore, ma impedirete anche ilripetersi di errori simili.

Page 13: Presentazione eXtreme Programming

05/04/07 71

Pratiche Corollarie XP 3/3Pratiche Corollarie XP 3/3

Codifica e rilascio del software

Codice e test(code and tests)

solo il codice e i test sono i manufatti permanenti damantenere nel tempo. Gli altri documenti necessari sipossono generare a partire dal codice e dai test.

Codice condiviso(shared code)

ogni membro del gruppo di sviluppo deve poterintervenire in ogni momento su qualsiasi parte delsistema.

Una singola base dicodice(single code base)

ci deve essere una sola versione “ufficiale” delsistema. Si può crearne un ramo temporaneo, ma nondeve durare più di poche ore. Le diverse versionicommerciali del prodotto (branch commerciali) nonrientrano in questo caso.

Rilasci giornalieri(daily deployment)

ogni notte, bisogna rilasciare in produzione ilsoftware. Avere sul PC del software diverso dallaversione ufficiale rilasciata è rischioso e costoso.

Page 14: Presentazione eXtreme Programming

05/04/07 72

Confronto con le pratiche del primo XPConfronto con le pratiche del primo XP

Eliminata:

- Metafora

Ridotta:

- Cliente sul posto

Date per acquisite:

- Standard di codifica

- Refactoring

Fonte dell'immagine (poi evidenziata):www.agilexp.org/downloads/NuovoXP.pdf

Page 15: Presentazione eXtreme Programming

05/04/07 73

eeXXtreme treme PProgrammingrogramming

I principi

Sono il ponte tra i valori, sintetici ed astratti, e le pratiche, che dicono come

effettivamente sviluppare il software.

Fonte: www.agilexp.org/downloads/NuovoXP.pdf

Page 16: Presentazione eXtreme Programming

05/04/07 74

eeXXtreme treme PProgrammingrogramming

Principi XP

● Umanità

● Economia

● Mutuo beneficio

● Auto-similarità

● Miglioramento

● Diversità

● Riflessione

● Flusso

● Opportunità

● Ridondanza

● Fallimento

● Qualità

● Piccoli Passi

● Accettare la responsabilità

Page 17: Presentazione eXtreme Programming

05/04/07 75

eeXXtreme treme PProgrammingrogramming

Domande ?

Page 18: Presentazione eXtreme Programming

05/04/07 76

Saluti e RiferimentiSaluti e Riferimenti

Page 19: Presentazione eXtreme Programming

05/04/07 Agile @ ERLUG 77

RiferimentiRiferimenti

Libri:● Extreme Programming Explained [2nded] – Kent Beck● Refactoring – Martin Fowler● Test Driven Development – Kent Beck● Lean Software Development – M.&T. Poppendieck● Agile Software Development with SCRUM – K.

Schwaber, M. Beedle● Agile Software Development – A. Cockburn● Pair Programming Illuminated – L. Williams, R. Kessler

Page 20: Presentazione eXtreme Programming

05/04/07 Agile @ ERLUG 78

RiferimentiRiferimenti

Su internet:● http://www.extremeprogramming.org/● http://www.testdriven.com/● http://martinfowler.com/articles.html

– New Metodology – M. Fowler– ...

● http://alistair.cockburn.us/index.php -> Articles● The Cathederal And The Bazaar – E. Raymond● ...