3. SOFTWARE DEVELOPMENT: FOUR PHASES
What we do…
Requirements Analysis
Architecture and Design
Development
Test and Feedback
Why Agile? 3
4. METHODS OF SOFTWARE DEVELOPMENT
Adaptive vs. Predictive
Predittivo Adattativo
• Vecchie metodologie basate su metodi • Adattamento rapido ai cambiamenti;
predittivi; • Quando le esigenze cambiano, anche il Team si
• Funzionalità e task sono pianificati all‟inizio modifica con esse;
del progetto e restano validi per l‟intero ciclo di • Gestire l‟immediato ed avere una Visione della
sviluppo;: strada da percorrere;
• Focus sulla pianificazione di dettaglio;
• Difficoltà nel gestire i cambiamenti;
Why Agile? 4
5. COMMON ISSUE
Not Only, of course!
Time to market for projects is too long
Unrealistic deadlines
Poor Estimation
Requirement Changes
Immature architecture and design
No Documentation or too much
Inadequate Testing
Why Agile? 5
6. PROJECTS TODAY
Not Only, of course!
Troppo lenti
• “Le mie necessità sono cambiate, ma l‟IT non riesce a supportarmi”
• “Nulla sarà pronto prima di un anno”
Scarsa attenzione al vero Valore
• “Lo scope del progetto è errato ma ne abbiamo già codificato la metà”
• “Ho ricevuto montagne di documentazione che nessuno usa ma il sistema non rispecchia le mie necessità”
• “Abbiamo sprecato tempo (e denaro) a progettare e realizzare funzionalità che nessuno usa”
Poco reattivo
• “Il progetto costringe ad effettuare delle scelte vincolanti prima che gli stakeholder sappiano cosa realmente
interessa”;
• “Ogni piccola review costringe ad una revisione della commessa”
Fuori controllo
• “Non so cosa sta succedendo nello sviluppo del progetto”
• “Siamo in stallo perché quello che viene sviluppato sembra non produrre Valore”
Why Agile? 6
7. PROJECTS SUCCES
Traditional vs. Agile
The agile process is the universal remedy for software development project failure.
Software applications developed through the agile process have three times the success
rate of the traditional waterfall method and a much lower percentage of time and cost
overruns.” (page 25)
2011 CHAOS report
Why Agile? 7
8. WHY AGILE?
… part 1…
• Realizzare e rendere disponibili le funzionalità che
rispecchiano i requisiti attesi e non quelli espresso;
• Ridurre gli sprechi (es: documentazione inutile);
• Catturare e realizzare quanto realmente ha Valore
per il Cliente;
• Abbattere le barriera tra stakeholder e team di
sviluppo;
• Fornire una trasparenze nella gestione delle fasi di
progetto.
Why Agile? 8
9. WHY AGILE?
… part 2
Customer satisfaction by rapid delivery of useful Face-to-face conversation is best form of
software. communication.
Welcome changing requirements, even late in Projects are built around motivated individuals.
development. Continuous attention to technical excellence and good
Working software is delivered frequently. design.
Working software is the principal measure of progress. Simplicity
Sustainable development, able to maintain a constant Self organizing teams.
pace. Regular adaptation to changing circumstances.
Close, daily co-operation between business people and
developers
Why Agile? 9
11. WATERFALL vs. AGILE
Comparing
Typical water fall model development (With some overlap) Agile model with Iterations
Requirements Small iterations help in getting early feedback
Design Requirement Requirement Requirement
s s s
Design Design Design
Development
Development Development Developmen
Testing team
Test Test t
Test
Test peak
Development
Design team team
Requirements
peak
peak peak
No big team peaks/Spikes
Team in attesa Analisti e Tester Tutto il Team è pronto
o non non sono sul ed allocato sul
ancora progetto progetto
costituito
La Collaborazione stretta reduce l’incertezza su cora
Poche possibilità di inserire nuove realizzare
funzionalità e rivedere quelle pianificate Migliore comprensione dei requisiti tramite le User Story
Rischio di rifare parte del lavoro per la Migliore qualità del prodotto grazie a test e rilasci continui
scarsa aderenza ai reali requisiti
Ogni iterazione produce valore
La soluzione è visibile/consumabile solo
Possibilità, teorica, di rilasciare il sistema in produzione ad
alla fine del ciclo di sviluppo
ogni iterazione
Nessun beneficio fino alla fine
Capacità di rispondere alle richieste di cambiamento
Why Agile? 11
12. ITERATIVE INCREMENTAL DEVELOPMENT
Step-by-step
“Iterative development is an approach to building software (or anything) in which
the overall lifecycle is composed of several iterations in sequence.
Each iteration is a self-contained mini-project composed of activities such as
requirements analysis, design, programming, and test.
Usually the partial system grows incrementally with new features, iteration by
iteration; in other words, incremental development.”
Craig Larman
Why Agile? 12
15. WHAT IS AN AGILE METHODOLOGY?
Values and Practices
Agile (CORE) è un insieme di Valori e Principi, per lo sviluppo di soluzioni IT, che enfatizzano la
soddisfazione degli stakeholder attraverso il coinvolgimento diretto e il rilascio continuo di soluzioni
consumabili.
Intorno ai Valori e ai Principi del Manifesto Agile sono nate una serie di metodologie (CORE) di
delivery che enfatizzano il lavoro in piccolo team, con budget e tempi limitati.
Le metodologie Agili (CORE) sono considerate:
• Lightweight
• People-based piuttosto che Process-based
• Adattative invece che predittive
• Orientate alla produzione di Valore
Why Agile? 15
16. WHEN AGILE COMING UP?
History
Agile nasce concettualmente intorno alla metà degli anni „90 come soluzione
allo sviluppo dinamico/leggero (lightweight software development) in
contrapposizione allo sviluppo burocratizzato/pesante (heavy weight
development).
Con Agile (CORE) andiamo ad identificare un insieme di Valori e Principi, per lo sviluppo di
soluzioni IT, che enfatizzano la soddisfazione degli stakeholder attraverso il coinvolgimento diretto e
il rilascio continuo di soluzioni consumabili.
Why Agile? 16
17. AGILE MANIFESTO
Values
Nel 2001 l‟Agile Alliance, organizzazione no profit fondata da sviluppatori, crea il Manifesto
Agile, incentrato su 4 valori portati:
Individuals and interactions over Process and tools
Comprehensive
Working software over
documentation
Customer collaboration over Contract negotiation
Responding to change over Following a plan
Source: www.agilemanifesto.org
Why Agile? 17
19. AGILE…. DISTILLED
The basis
Creare una Vision
Abbracciare il Cambiamento
Priorizzare le Attività
Creare mini/micro WorkItem
Ottenere Feedback
Decidere i prossimi step
Collaborazione
Lavoro di Team
Brevi Iterazioni
Minimizzare i Rischi
Minimal Plannig
Small Team (5-9)
Close Work
Why Agile? 19
20. WHAT IS AN AGILE METHODOLOGY?
Agile CORE Family
Intorno ai Valori e ai Principi del Manifesto Agile sono nate una serie di metodologie
(CORE) di delivery che enfatizzano il lavoro in piccolo team, con budget e tempi limitati.
Le metodologie Agili (CORE) sono considerate:
• Lightweight
• People-based piuttosto che Process-based
• Adattative invece che predittive
• Orientate alla produzione di Valore
scrum(1995), crystal clear, Extreme programming (1996), Adaptive software
development, Feature Driven Development, and Dynamic Systems (1995).
Why Agile? 20
21. WHAT IS AN AGILE METHODOLOGY?
Agile CORE Family Tree
Why Agile? 21
23. AGILE…. MYTHS
They are alive!
• no design
• no testing
• no documentation
• no idea of progress
• poor quality
• no plan
• auditors won‟t allow it
Why Agile? 23
24. KEY BENEFIT
Not Only…
• Incremento della Flessibilità: viene minimizzato l‟investimento iniziale e
massimizzato quello sul ROI (Return On Investment), grazie alla creazione di un
efficiente processo di sviluppo;
• Realizzazione della Soluzione Attesa: coinvolge
stakeholder, sviluppatori, manager, ecc, affinché la soluzione prodotta sia quella che
rispecchia le necessità di business (Valore);
• Accelera il Delivery: Idealmente ad ogni iterazione viene prodotta una soluzione
consumabile;
• Riduce i Rischi ed aumenta la Qualità: vengono affrontati e risolte prima le
incertezze ed i problemi.
Why Agile? 24
25. KEY BENEFIT
Evolutionary design
• Dal CHAOS report dello Standish Group emerge 20%
un‟allarmante verità: (EFFETTIVAMENTE USATE)
• Circa i 2/3 delle features realizzate basandosi su un
up-front analysis risultano inutilizzate!!
16%
• La soluzione: abbracciare il cambiamento (USATE QUALCHE VOLTA)
• Agile è un approccio non lineare che contempla il
cambiamento e permette di adattarsi ad esso; 19%
• Le funzionalità che si scoprono non necessarie
(USATE RARAMENTE)
vengono abbandonate prima, idealmente ancor
prima che ne inizi lo sviluppo;
• La soluzione evolve abbracciando in modo ottimale 45%
le mutate esigenze di business. (MAI USATE)
Why Agile? 25
26. KEY BENEFIT
Accelerates Delivery
Lo sviluppo incrementale organizzato in • Le varie soluzioni consumabili non sono
prototipi, ma versioni incrementali sistema
iterazioni permette al Team di ragionare in
reale;
funzione di soluzioni consumabili, • Il Team si focalizza sui task a maggior rischio
velocizzandone il delivery. (high-risk) e maggior Valore (high-value
aspects);
• Gli stakeholder possono decider se accettare o
meno le nuove funzionalità:
• Avere il prima possibile le nuove funzionalità
consente agli stakeholder di attuare i relativi
piani di accettazione il prima possibile
Why Agile? 26
27. KEY BENEFIT
Reduces risk and increases quality
Le Iterazioni accompagnano il progetto nella propria
evoluzione, abbracciando i rischi ed attuando le
opportune soluzioni risolutive.
• Nuove User Story possono essere aggiunte al
progetto, ma non all‟Iterazione
• Le User Story non incluse nell‟iterazione corrente
possono essere ri-priorizzate;
• Alcune User Story, non incluse nell‟iterazione,
possono sparire per far posto a nuove User Story a
priorità più alta, mantenendo il vincolo
temporale/economico previsto.
Why Agile? 27
28. DISADVANTAGE
Yes: not only benefit!
• L’adozione dell’Agile non è banale:
• Rende visibile tutti i problemi
• Agile non corregge nulla: è il Team che lo fa
• Il Team deve lavorare bene, altrimenti i
progetti saranno condannati ad una rapida
cancellazione;
• Una sua adozione parziale potrebbe essere
peggio che una sua non adozione.
Why Agile? 28
29. ABOUT ME
get in touch
www.felicepescatore.it
Felice Pescatore, Agile Software Architect
Email: felice.pescatore@gmail.com
@Why Agile?
Cell. 392/7157684
Disciplined Agile Delivery Italy
Group
Why Agile? 29