際際滷

際際滷Share a Scribd company logo
Il tuoteamagilescrivecodice
flaccido?
Quando Scrum non 竪 sufficiente
Stefano.muro@inspearit.com
@stefanoMuro
stefano_muro
https://www.linkedin.com/in/stefanomuro/
Stefano Muro
Versioneone
12属 State of Agile Report
Il tuo team "agile" scrive codice "flaccido"? Forse scrum non basta
Perch竪Scrum?
E semplice
Consente di rilasciare valore per lutente
molto presto
Implementa cicli di feedback sul prodotto
che consentono di rilasciare valore con
continuit
Implementa cicli di feedback sul processo
consentendo di aumentare la produttivit
del team tramite collaborazione e
miglioramento continuo.
Scrum 竪
sufficiente?
5
Realizzare qualcosa di utile per
lutente
Realizzare SW presto e con continuit
Realizzare SW funzionante
Realizzare SW che supporti i
cambiamenti
Scrum 竪
sufficiente?
6
Dove spendete pi湛 tempo?
Correggendo bug Aggiungendo
funzionalit
Che dite quando vi
chiedono una modifica?
Acciderbolina! Si
romper tutto!
束Tuttapposto損,
devo solo
cambiare un
po il design
Quanto 竪 complicata la
vostra codebase attuale?
Non ne ho la minima
idea
E ampia ma facile
da capire e
cambiarla non 竪 un
problema
Scrum 竪
sufficiente?
Vi racconto qualche aneddoto
7
Il Rilascio
8
Soddisfazione(esicurezza) deiclientiedifettiSW
10
Il
simulator
Spenderepoconon
vuoldirespendere
poconellosviluppo
.They piled story on story as
quickly as possible with the least
possible investment in design.
Without daily attention to design,
the cost of changes does
skyrocket. The result is poorly
designed, brittle, hard-to-change
systems.
 Kent Beck, Extreme Programming
Explained: Embrace Change
Scrum non 竪
sufficiente
Se il nostro team 竪 Agileanche
il nostro codice lo deve essere!
Talvolta invece scriviamo codice
Come 竪fatto un codice Flaccido
Ha molti difetti
(anche noti) rilasciati
in produzione
1
Non 竪 manutenibile: E
difficile individuare
lorigine di un difetto
perch竪 il codice non 竪
leggibile o non se ne
capisce lintent.Spesso
risolvere un difetto vuol
dire crearne un altro.
2
Non 竪 estensibile: E
difficile estendere le
funzionalit di
unapplicazione se non
竪 modulare, flessibile
e utilizza design
pattern riconoscilbili.
3
Esempio
codice flaccido
emilybache/GildedRose-Refactoring-Kata
Sintomi tipici di
un codice
flaccido
Rigidit
Fragilit
Immobilit
Viscosit
Inutile complessit
Inutili ripetizioni
Opacit
Robert C. Martin
束Design principles and Design Patterns損
Attenzione:coltempoanche ilcodiceagilesiinflaccidisce
Legge della
complessit
crescente di
Lehman
La struttura di un sistema che
evolve si deteriora man mano
che cambia, e devono essere
spese risorse aggiuntive per
preservarne la funzione e
semplificarne la struttura
CostodelcambiamentodelSWtradizionale
Equazione di Lehman e Belady:
M= p+ K c-d
M= sforzo di manutenzione, p= sforzo di sviluppo totale, c = complessit
causata dalla mancanza di strutturazione (leggi: debito tecnico), d
= grado di familiarit del team di manutenzione col software. K 竪 una
costante da individuare confrontando il modello con i dati reali,
Costo del cambiamento applicando pratiche agili di
sviluppo SW
Costodeldeibug infunzionedeltempo
Come?
Adottando pratiche che consentono
di:
Realizzare e mantenere nel
tempo un buon Design
Individuare i bug molto presto nel
ciclo di vita del SW
Applichiamoprincipidibuondesign
SOLID DRY SLAP
Riprendiamo
alcune pratiche
XP
Pair
Programming
Test Driven
Development
Continuous
Integration
Design
Improvement
Collective Code
Ownership
Simple Design
Le pratiche sono utili ma quello che
guida le pratiche sono i principi
Principi
fondamentali
XP
Rapid Feedback
Assume Simplicity
Incremental Change
Embracing Change
Quality Work
Grazie ai principi
le pratiche si
evolvono
26
Richiede lavoroe
tempo:come
conciliarloconla
delivery?
Rendersi conto che 竪
un investimento che
si ripaga nel tempo.
Ritagliari tempo per
allenarsi
Sperimentando
pratiche un po alla
volta.
Condividendo.
28
Domande?
Stefano Muro
Stefano.muro@inspearit.com
@stefanoMuro
stefano_muro
https://www.linkedin.com/in/stefanomuro/
Perch竪 Agile?
Versioneone
12属 State of Agile Report
Perch竪 Agile?
Versioneone
12属 State of Agile Report
Valori XP
Feedback Respect
Communication Simplicity
Courage
Principalipratiche
XP
(Finescale
feedback)
Pair
Programming
Planning
Game
Test Driven
Development
Whole Team
Principalipratiche
XP
(Continuous
process)
Continuous
Integration
Design
Improvement
Small
Releases
Principalipratiche
XP
(Shared
understanding)
Coding
Standards
Collective Code
Ownership
Simple
Design
System
Metaphor

More Related Content

Il tuo team "agile" scrive codice "flaccido"? Forse scrum non basta