Presentazione eXtreme Programming
-
Upload
roberto-bettazzoni -
Category
Technology
-
view
61 -
download
0
description
Transcript of Presentazione eXtreme Programming
05/04/07 59
Parte 5Parte 5eXtreme ProgrammingeXtreme 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
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'
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
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
05/04/07 64
eeXXtreme treme PProgrammingrogramming
Le pratiche
come sviluppare il software.
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
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.
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.
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
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.
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.
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.
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
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
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à
05/04/07 75
eeXXtreme treme PProgrammingrogramming
Domande ?
05/04/07 76
Saluti e RiferimentiSaluti e Riferimenti
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
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● ...