Metaware & Agile - Un Dev Team può creare valore (solo per il cliente?)Ciro Donato Caiazzo
In quanti modi un team di sviluppo Agile può creare valore?
In questa presentazione è proposto un caso di successo di applicazione delle metodologie Agile per la creazione di team per sviluppare progetti e prodotti software con un focus particolare sul continuous improvement e l’ innovazione tecnologica creando valore per il cliente, l’ azienda e i talenti geek.
Come abbiamo introdotto la metodologia agile, attraverso SCRUM, in una piccola agenzia web multi progetto seguendo un approccio lean per gestire sia i team che i progetti.
Agile Project Management - the Board Game workshopGiulio Roggero
Agile workshop based on the board game "Agile: the Board Game" -
http://code.google.com/p/agile-the-board-game
(Italian Version).
During this 1day workshop participants embrace the Agile values and Lean principles using the Agile board game and the A3 Airplane game.
The spirit of the workshop is learning by doing.
You can download and use freely these slide under CC3 License.
Una breve incursione nel mondo delle metodologie agili di sviluppo del software. Le slide sono intese per fornire una base per successive puntate in cui analizzare meglio i diversi aspetti di tale metodologia.
Come funziona Scrum? Quali sono i suoi mattoni base? Questa presentazione è il primo tassello della collana divulgativa di Agile Reloaded su Agile e Lean Software Development. Lasciate i vostri commenti, li utilizzeremo per il cartone animato!
Metaware & Agile - Un Dev Team può creare valore (solo per il cliente?)Ciro Donato Caiazzo
In quanti modi un team di sviluppo Agile può creare valore?
In questa presentazione è proposto un caso di successo di applicazione delle metodologie Agile per la creazione di team per sviluppare progetti e prodotti software con un focus particolare sul continuous improvement e l’ innovazione tecnologica creando valore per il cliente, l’ azienda e i talenti geek.
Come abbiamo introdotto la metodologia agile, attraverso SCRUM, in una piccola agenzia web multi progetto seguendo un approccio lean per gestire sia i team che i progetti.
Agile Project Management - the Board Game workshopGiulio Roggero
Agile workshop based on the board game "Agile: the Board Game" -
http://code.google.com/p/agile-the-board-game
(Italian Version).
During this 1day workshop participants embrace the Agile values and Lean principles using the Agile board game and the A3 Airplane game.
The spirit of the workshop is learning by doing.
You can download and use freely these slide under CC3 License.
Una breve incursione nel mondo delle metodologie agili di sviluppo del software. Le slide sono intese per fornire una base per successive puntate in cui analizzare meglio i diversi aspetti di tale metodologia.
Come funziona Scrum? Quali sono i suoi mattoni base? Questa presentazione è il primo tassello della collana divulgativa di Agile Reloaded su Agile e Lean Software Development. Lasciate i vostri commenti, li utilizzeremo per il cartone animato!
Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcos...Roberto Bettazzoni
2006
Prima serata di una serie di Talk serali all' ERLUG (Emilia Romagna Linux User Group) Presentazione delle Metodologie Agili (confronto con la situazione esistente)
Presentazione delle Pratiche Agili
Esempio d'applicazione di tecniche Agili
Agile e OSS distribuito
eXtreme Programming
Secondo incontro del Roma-xpug nel quale si effettuerà una 'round-table' sui valori e i principi che sono alla base delle metodologie Lean e Agili. L'incontro prevede una breve presentazione di Fabio Armani a cui seguirà un panel aperto per scambiarsi opinioni e esperienze.
Second Meeting of the Rome-xpug in which we'll make a 'round-table' on the values and principles that are the basis of Lean and Agile methodologies. The meeting includes a short presentation by Fabio Armani, followed by an open panel to exchange views and experiences.
Questa presentazione descrive un viaggio nel project management dalla produzione di massa di Ford fino allo Scrum utilizzato nella produzione di software.
Talk presentato all'Italia Agile Day il 30/11/2013 a Reggio Emilia.
I valori di Agile sono come i principi alla base della cucina. In questa presentazione sono presentati alcuni ingredienti agili da amalgamare con cura.
Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile ...Paolo Quaglia
Nel panorama delle Metodologie Agili esistono molteplici processi di sviluppo (es XP e SCRUM) che ereditano ed interpretano in maniera leggermente diversa i principi espressi dal Manifesto Agile.
Il talk approfondirà la tematica dell’implementazione reale e pratica di un processo di sviluppo Agile derivato dalle metodologie citate, ma customizzato per adattarlo alle esigenze aziendali e alla tipologia dei nostri progetti.
Verranno approfonditi i ruoli e le responsabilità individuati dal processo, le competenze soft necessarie, le fasi, i singoli passi e gli output, cioè gli artefatti prodotti, siano essi documenti, codice, test automatici, etc.
Verranno trattati anche la documentazione, che ha la caratteristica di essere il più snella possibile, ed i tool software che vengono utilizzati per la gestione e controllo dei progetti.
Lo scopo è quello di fornire un case study di implementazione reale (anche da un punto di vista contrattuale) approfondendo i pro ed i contro di questa metodologia, per dar possibilmente vita ad una discussione costruttiva sull’argomento.
Manifesto per lo Sviluppo Agile di SoftwareAmmLibera AL
In Ingegneria del SW, per metodologia agile (o leggera) o metodo agile si intende un particolare metodo per lo sviluppo del software che coinvolge quanto più possibile il committente, ottenendo in tal modo una elevata reattività alle sue richieste.
Esistono un certo numero di tali metodologie e la Agile alliance, formatasi nella stesura del manifesto in oggetto, è una organizzazione no-profit creata allo scopo di diffonderle.
Tra l'11 e il 13 febbraio 2001, in una stazione sciistica sulle montagne dello Utah, diciassette persone sono incontrate per parlare, sciare, rilassarsi, cercare di trovare un terreno comune e, naturalmente, mangiare. Il risultato è stato il Manifesto per lo Sviluppo Agile di Software (Agile Software Development Manifesto). I rappresentanti di Extreme Programming, Scrum, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, Pragmatic Programming e altri simpatizzanti erano accomunati della necessità di trovare un'alternativa ai pesanti processi di sviluppo software e alla stesura della relativa documentazione.
Questo ebook presenta i 12 punti del Manifesto, corredato dalla presentazione di Jim Highsmith, pubblicato in inglese su http://agilemanifesto.org/ , e nel libro tradotta in italiano.
Slide aggiornate del workshop di una giornata con il gioco da tavolo Agile the Board Game che spiega in pratica, usando i lego, come funziona Scrum.
Non manca durante la giornata anche l'esercitazione su A3 Reporting, il metodo Lean per apportare continui cambiamenti ai processi eliminando le cause di spreco.
Potete usare le slide per divulgare Agile e Lean, anche a livello commerciale. Ricordatevi solo di rispettare i termini della licenza Creative Common :-)
Commenti e miglioramenti sempre ben accetti!
Una introduzione al manifesto AGILE ed al framework di sviluppo SCRUM proposta durante il nostro ultimo workshop tenuto in occasione di SMAU Milano lo scorso Ottobre 2019
The objectives of this book are to assure an awareness of the importance of project management in modern business environment, to understand the role of the project manager, to develop the capacity to assess business opportunities, to get familiarity with the project management toolkit, and to develop the capacity for teamwork and leading the team and individuals. This book guides students through fundamental project management concepts and behavioural skills needed to successfully initiate, plan, implement and close a project.
Introduzione alle metodologie e pratiche Agili ... ma l'agile c'entra qualcos...Roberto Bettazzoni
2006
Prima serata di una serie di Talk serali all' ERLUG (Emilia Romagna Linux User Group) Presentazione delle Metodologie Agili (confronto con la situazione esistente)
Presentazione delle Pratiche Agili
Esempio d'applicazione di tecniche Agili
Agile e OSS distribuito
eXtreme Programming
Secondo incontro del Roma-xpug nel quale si effettuerà una 'round-table' sui valori e i principi che sono alla base delle metodologie Lean e Agili. L'incontro prevede una breve presentazione di Fabio Armani a cui seguirà un panel aperto per scambiarsi opinioni e esperienze.
Second Meeting of the Rome-xpug in which we'll make a 'round-table' on the values and principles that are the basis of Lean and Agile methodologies. The meeting includes a short presentation by Fabio Armani, followed by an open panel to exchange views and experiences.
Questa presentazione descrive un viaggio nel project management dalla produzione di massa di Ford fino allo Scrum utilizzato nella produzione di software.
Talk presentato all'Italia Agile Day il 30/11/2013 a Reggio Emilia.
I valori di Agile sono come i principi alla base della cucina. In questa presentazione sono presentati alcuni ingredienti agili da amalgamare con cura.
Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile ...Paolo Quaglia
Nel panorama delle Metodologie Agili esistono molteplici processi di sviluppo (es XP e SCRUM) che ereditano ed interpretano in maniera leggermente diversa i principi espressi dal Manifesto Agile.
Il talk approfondirà la tematica dell’implementazione reale e pratica di un processo di sviluppo Agile derivato dalle metodologie citate, ma customizzato per adattarlo alle esigenze aziendali e alla tipologia dei nostri progetti.
Verranno approfonditi i ruoli e le responsabilità individuati dal processo, le competenze soft necessarie, le fasi, i singoli passi e gli output, cioè gli artefatti prodotti, siano essi documenti, codice, test automatici, etc.
Verranno trattati anche la documentazione, che ha la caratteristica di essere il più snella possibile, ed i tool software che vengono utilizzati per la gestione e controllo dei progetti.
Lo scopo è quello di fornire un case study di implementazione reale (anche da un punto di vista contrattuale) approfondendo i pro ed i contro di questa metodologia, per dar possibilmente vita ad una discussione costruttiva sull’argomento.
Manifesto per lo Sviluppo Agile di SoftwareAmmLibera AL
In Ingegneria del SW, per metodologia agile (o leggera) o metodo agile si intende un particolare metodo per lo sviluppo del software che coinvolge quanto più possibile il committente, ottenendo in tal modo una elevata reattività alle sue richieste.
Esistono un certo numero di tali metodologie e la Agile alliance, formatasi nella stesura del manifesto in oggetto, è una organizzazione no-profit creata allo scopo di diffonderle.
Tra l'11 e il 13 febbraio 2001, in una stazione sciistica sulle montagne dello Utah, diciassette persone sono incontrate per parlare, sciare, rilassarsi, cercare di trovare un terreno comune e, naturalmente, mangiare. Il risultato è stato il Manifesto per lo Sviluppo Agile di Software (Agile Software Development Manifesto). I rappresentanti di Extreme Programming, Scrum, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, Pragmatic Programming e altri simpatizzanti erano accomunati della necessità di trovare un'alternativa ai pesanti processi di sviluppo software e alla stesura della relativa documentazione.
Questo ebook presenta i 12 punti del Manifesto, corredato dalla presentazione di Jim Highsmith, pubblicato in inglese su http://agilemanifesto.org/ , e nel libro tradotta in italiano.
Slide aggiornate del workshop di una giornata con il gioco da tavolo Agile the Board Game che spiega in pratica, usando i lego, come funziona Scrum.
Non manca durante la giornata anche l'esercitazione su A3 Reporting, il metodo Lean per apportare continui cambiamenti ai processi eliminando le cause di spreco.
Potete usare le slide per divulgare Agile e Lean, anche a livello commerciale. Ricordatevi solo di rispettare i termini della licenza Creative Common :-)
Commenti e miglioramenti sempre ben accetti!
Una introduzione al manifesto AGILE ed al framework di sviluppo SCRUM proposta durante il nostro ultimo workshop tenuto in occasione di SMAU Milano lo scorso Ottobre 2019
The objectives of this book are to assure an awareness of the importance of project management in modern business environment, to understand the role of the project manager, to develop the capacity to assess business opportunities, to get familiarity with the project management toolkit, and to develop the capacity for teamwork and leading the team and individuals. This book guides students through fundamental project management concepts and behavioural skills needed to successfully initiate, plan, implement and close a project.
Presentazione fatta al primo Mini Agile Day Bari 2018
Nella presentazione sottolineo l'importanza di conoscere ed incorporare nell'operato quotidiano del team, i principi e valori del manifesto per lo sviluppo agile.
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...Vittorio Polizzi
Perché i progetti falliscono? Gli approcci tradizionali nei progetti di sviluppo hardware e software sono davvero efficaci in un mercato in continua evoluzione e con prodotti ad elevata obsolescenza? Le caratteristiche dell’approccio Agile possono essere applicate per ideare e creare soluzioni innovative in modo efficace ed economico?
In occasione di questo incontro affronteremo questi quesiti e le metodologie agili che possono dare una risposta.
2014 11-21 presentazione breton agile at work - trentoClaudio Saurin
Applicazione delle metodologie Lean ed Agile lo sviluppo di prodotti hardware nel settore dell’industria dell’edilizia. Impiego del Canvas di progetto e delle Epic Story e User Story per la scomposizione del progetto e la definizione delle priorità in alternativa alla classica WBS. La gestione visuale del progetto con il Kanban delle User Story e l’integrazione con la metodologia Waterfall e Lean. Il livellamento del carico di lavoro a capa-cità finita e la gestione multi progetto visuale integrando Scrum e Visible Planning.
la seconda parte della presentazione è relativa alla applicazione di queste metodologie al settore edile. Si tratta di un progetto operativo sviluppato con l'architetto Daniela Rinaldi di verona
Il modo migliore per dare uno Sprint alla tua azienda! Vantaggi del metodo Agile Scrum nello sviluppo software per l’ottimizzazione dei processi produttivi e commerciali.
Introduzione alla filosofia LEan e alle metodologie Agili per l'organizzazione del lavoro in Team. Valori Agili e Innovation Games come approccio alla progettazione in contesti "turbolenti" e creativi. Progetto realizzato per una Classe 3° superiore, dell'Istituto Cuppari di Jesi.
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Commit University
Vuoi migliorare la gestione dei progetti a lungo termine con team multidisciplinari e prendere decisioni rischiose in modo sicuro e ponderato? Non perderti il nostro workshop gratuito!
Antonio Dell’Ava, Frontend Developer di eDreams Odigeo, condividerà strategie per aiutarti a ottimizzare la collaborazione nel tuo team, scegliere gli strumenti giusti per ogni situazione e garantire l’evoluzione del progetto nel tempo
Andrea Cirioni e Nicola Zangrandi ci hanno presentato un esempio di deploy automatizzato e ripetibile, realizzato con Octopus e la sua integrazione con PowerShell. Ci hanno dimostrato come sia possibile rilasciare nei vari ambienti del cliente gli applicativi con un solo click.
5. Modello Waterfall - Caratteristiche
Il processo di sviluppo è sequenziale
Si completa una fase prima di passare alla successiva
L’ output di una fase è usato come input per la fase successiva
In ogni fase del processo viene prodotta documentazione
6. Modello Waterfall – Mal di pancia
I Requisiti spesso sono astratti e possono essere
interpretati in modo differente
Nessun valore per il cliente/utente prima della fase
‘Production’
Feedback solo alla fine del progetto
Il costo di un cambiamento è molto alto
….
8. Manifesto Agile
«Scopriamo modi migliori di sviluppare il software facendolo
ed aiutando gli altri a farlo. Da queste esperienze, siamo
giunti a privilegiare i seguenti elementi :
Gli individui e le loro interazioni rispetto ai processi ed agli strumenti
Software funzionante rispetto ad un’ampia documentazione
La collaborazione col cliente rispetto alla negoziazione dei contratti
La pronta risposta ai cambiamenti rispetto all’esecuzione di un piano
Ovvero, anche se attribuiamo un valore agli elementi riportati a destra, riteniamo più
importanti quelli a sinistra»
Kent Beck et al. (2001).
manifesto for agile software development
9. XP- eXtreme Programming
Un presupposto fondamentale di XP è che il costo di un cambiamento
nel software è pressoché costante nel tempo
12. XP Values - Communication
La comunicazione tra i vari attori (clienti, developer, etc) è
fondamentale
Tutti possono parlare con tutti
XP enfatizza la comunicazione in molte delle sue pratiche (User
stories, Pair Programming, Daily stand-up meeting, Collective
ownership, etc)
13. XP Values - Simplicity
Fai la cosa più semplice che possa funzionare
(DTSTTCPW) principle (conosciuto anche come KISS)
Mantieni la descrizione formale il più semplice e chiara possibile
14. XP Values - Feedback
Da parte del cliente
I Test restituiscono un feedback sullo stato del sistema
Quando il cliente scrive nuove user stories i developer forniscono
una stima per la realizzazione
Una nuova release è prodotta ogni 2-3 settimane in modo tale che
il cliente possa dare un feedback
15. XP Values - Courage
Coraggio nell’ accettare il feedback
Coraggio nel buttare via il codice (prototipi, spike)
Coraggio nel ri-fattorizzare l’ architettura del sistema
16. XP – User stories : 3C
Descrizione ad alto livello di una funzionalità utile al
raggiungimento di un obiettivo di business.
User story = Card + Conversation + Confirmation
17. Card
Ogni user story si focalizza su
chi è l’ utente – AS A;
sul cosa vuole fare - I WANT
qual è lo scopo - SO THAT
In un modo comprensibile sia al tecnico che al cliente.
18. Conversation
Si discute la user story con il cliente e tutti i membri del team
(developer, designer, tester, ecc)
Ci si focalizza bene su tutte e tre le componenti della storia (AS – I
WANT – SO THAT)
Si fanno le domande per capire l’ obiettivo di business della storia
Può accadere che l’ output della conversation sia di non
implementare la US poiché non genera valore all’ utente finale
Conversation
Clienti
(Esperti del dominio)
Team
(Esperti tecnici)
19. Confirmation
Una volta che la Card è stata validata occorrono dei criteri per
decidere come verificarla… Acceptance Criteria
Esempio
20. Confirmation
Se il bancomat accetta la carta e il titolare ha i fondi necessari allora
l’ operazione di prelievo si conclude con esito positivo.
Criterio di accettazione troppo vago!!
23. Dall’ idea di prodotto alla realizzazione
product idea Capture and validate
initial assumption
Define the business
model
Define the product
features
http://www.agilereloaded.it/2013/08/26/product-canvas/
28. Scrum e Kanban
Scrum Kanban
Prescrive iterazioni timeboxed Le iterazioni timeboxed sono opzionali
Il team si impegna a realizzare una quantità
di lavoro specifico nel corso dell'iterazione
corrente.
L’ impegno è opzionale
Il WIP viene limitato indirettamente (per
sprint) .
Il WIP è limitato direttamente (per stato di
workflow). (WIP LIMIT)
Vengono prescritte le stime Le stime sono opzionali.
Impossibile aggiungere elementi a iterazione
in corso.
È possibile aggiungere nuovi item ogni
qualvolta ci sia capacità disponibile
Uno sprint backlog è di proprietà di uno
specifico team.
Una kanban board può essere condivisa tra
più team individui.
29. Scrum e Kanban
Scrum Kanban
Prescrive 3 ruoli (PO/SM/Team) Non prescrive nessun ruolo.
Una Scrum board viene resettata ad ogni
sprint.
Una Kanban board è persistente.
Prescrive un product backlog con priorità. La Priorità è opzionale..
30. Scrum e Kanban
Scrum più adatto allo sviluppo di un nuovo prodotto
Kanban più appropriato per la gestione dei progetti
33. Scrum – Product Owner
Responsabile per il Return of Investment (ROI)
Definisce la Vision di prodotto e quindi la roadmap
di prodotto
Stabilisce le priorità
E’ focalizzato più sul «cosa» che sul «come»
34. Scrum – Team
E’ un gruppo di 4-9 persone (small team)
Può essere composto non solo da developer ma anche da
designer, digital strategist, ecc
Ha l’ obiettivo di implementare il prodotto e realizza una
«potentially shippable product increment» alla fine di ogni
sprint
Collaborazione
(Il team dovrebbe lavorare nella stessa stanza per migliorare la
collaborazione)
Self-organizing
35. Scrum – Scrum master
Non ha un ruolo di project manager
Rimuove gli ostacoli e fornisce la guida del processo
E’ un facilitatore tra il product owner e il team
http://scrummasterchecklist.org/
36. Scrum – Sprint
Lo Sprint o «iterazione» è un unità di tempo di circa 2-4 settimane
In uno Sprint vengono implementate una serie di features definite
nel Product Backlog
Parte con uno Sprint planning meeting
Termina con uno Sprint Review meeting
38. Scrum – Product backlog
Lista di item da implementare
Ordinato per priorità
La priorità è stabilita dal Product Owner
Tutte le entry sono stimate
Viene aggiornato regolarmente
+
-
39. Scrum – Sprint backlog
Contiene tutte le attività prese dal Product Backlog che dovranno
essere svolte durante lo Sprint corrente
44. Scrum – Sprint planning meeting
Ogni Sprint inizia con uno Sprint planning meeting
Product Owner e Team decidono quali user stories implementare
nello sprint corrente => WHAT
Se necessario le user stories possono essere divise in storie più
piccole in modo da poter essere completate nello sprint corrente
Vengono definiti I task concreti per portare a termine le storie
scelte => HOW
45. Scrum – Daily (Stand-up) Scrum meeting
E’ un breve incontro quotidiano (circa 15 minuti) da tenere all’
inizio della giornata lavorativa
Ogni membro del team deve rispondere a tre domande:
Cosa è stato fatto dall’ ultimo Daily Scrum meeting?
Cosa verrà fatto fino al prossimo Daily Scrum meeting?
Quali sono gli ostacoli/impedimenti al raggiungimento/completamento del
task?
Ogni impedimento/preoccupazione deve essere fatta presente allo
Scrum Master che dovrà gestirla dopo il meeting
46. Scrum – Review meeting
E’ un incontro molto informale (no presentazioni power point,
video, ecc )
Meeting di condivisione delle user stories che sono state
completate (in accordo alla Definition of Done) nello sprint corrente
Come? Demo delle nuove features
Chi partecipa? Team, Product Owner, Scrum Master, Cliente altri…
47. Scrum – Retrospective meeting
Segue l’ approccio “Inspect and Adapt”
Obiettivo : Miglioramento continuo
48. Scrum – Release meeting
E’ una linea guida che serve a chiarire
Aspettative
Features che dovranno essere realizzate e quando
Nell’ ambito di più sprint (di solito 2-3)
50. Pair Programming
2 persone su un unico task e un un’
unica tastiera:
Il “driver” scrive il codice
Il “navigator” o “observer” aiuta
svolgendo un ruolo di
supervisione e di revisione
simultanea del codice
51. 2 persone fanno il lavoro di 1, perché?
Due persone sono più efficienti di una
Migliora la qualità del codice («Non mi è chiaro questo pezzo di
codice, lo miglioriamo?»
Disciplina! («Ricorda che stiamo facendo TDD… scriviamo prima il
test»)
Trasferimento di conoscenza e di competenze
Non esiste l’ owner di un task
Tutto questo rispettando delle regole!!
52. Pair Programming - Regole
Il “navigator” non deve distrarsi o peggio addormentarsi
Il “driver” e il “navigator” dovrebbero invertire il ruolo
frequentemente
Tutti devono fare pair con tutti (Il pair dovrebbe essere fatto
sempre con persone diverse, quando possibile)
Ricordarsi di fare pausa
(Pomodoro Technique)
54. TDD - Procedura
1. Si parte dallo scrivere il test
2. Si fa in modo che il codice compili (barra rossa)
3. Si fa passare il test (barra verde)
4. Refactor (barra verde)
Expected ‘true’ but was ‘false’
Success
Success
57. TDD – FizzBuzz Game
Da 0 a 100
Se il numero è multiplo di 3, restituisci “Fizz”
Se è multiplo di 5, restituisci “Buzz”
Se è multiplo di 3 e 5, restituisci“FizzBuzz”
Altrimenti restituisci il numero!
0,1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz,
Buzz, 11, Fizz, 13, 14, FizzBuzz,
16, 17, Fizz, ..., 98, Fizz, Buzz
59. Refactoring
Serve a migliorare in modo safe il design e la leggibilità del codice
Non aggiunge/toglie funzionalità
Quando va fatto?
Quando tutti i test vengono eseguiti con successo!
Success
Refactoring: Improving the Design of Existing Code
Martin Fowler - 1999
60. Code Smells
Sono debolezze di design che riducono la qualità del
software
«Code Smells are symptoms of poor design or
implementation choises»
[Martin Fowler]
61. Code Smells - Esempi
Troppi commenti
Codice duplicato, uguale o pressoché uguale, in diverse sezioni di
codice (viola il principio Don't Repeat Yourself).
Metodo troppo lungo.
Classe troppo grande.
Lista di parametri troppo lunga (per metodi o funzioni).
Feature envy[3] o data envy ("invidia dei dati"): una classe che usa
massicciamente i servizi o i dati di un'altra.
…..
63. Collective Code Ownership
Il codice non è di proprietà del singolo Developer ma è patrimonio
del team
Se vi è la necessità di modificare qualcosa (scritta da qualcun altro)
la modifico, non bisogna chiedere l’ autorizzazione
Se c’è la possibilità di migliorare il codice e quindi il design posso
farlo tranquillamente
65. Git
Git è un sistema software di controllo di versione distribuito, creato da
Linus Torvalds nel 2005. (da wikipedia)
https://git-scm.com/downloads
https://github.com/gitextensions/gitextensions
66. Git – Comandi di base
Consente di inizializzare un repository git in una directory esistente
git clone <url>
Consente di clonare il repository git posto all’ url passato come
parametro
67. Git – History
Git lavora con un meccanismo di branch (Il branch di default è
master)
Si avvale di history remote e locali (By default ORIGIN/MASTER)
Consente di lavorare offline
78. CI – Processo di base
Ad ogni commit
Se anche solo un test fallisce la build è marcata come red
Una release è potenzialmente rilasciabile ad ogni commit
79. CI – Motivazioni
Efficienza
Posso automatizzare tutto (esecuzione test, creazione setup kit, ecc)
Riproducibilità
L’ automazione riduce gli errori umani, versioning artifact e
tracciabilità
Release
La mainline è sempre rilasciabile, riduzione tempi di creazione package
e rilasci
Configurazioni multiple
Agent con OS, Browsers, Network, Database, ecc differenti
80. CI – Regole
Il developer non può accedere alla macchina di Continuous
integration
I package della release devono essere l’ output del processo di CI
(Non sono ammessi rilasci manuali con package creati dalla macchina
del developer)
La macchina di CI è un ambiente incontaminato rispetto alla
macchina di un developer
(Il developer per sua natura sulla sua macchina installa di tutto)
81. CI – Build
La Build è codice
Non è statica ed evolve con l’ evolvere del progetto
Deve entrare nel sistema di source control come il resto del codice
83. CI –Anti-pattern
Fragilità
Fallimenti occasionali
«Don’t touch that build» syndrome
Interferenze
Risorse condivise
Limitazioni su build concorrenti
Limitazioni su test concorrenti
84. CI –Anti-pattern
Riproducibilità
Lo script di build deve essere riproducibile anche sulla macchina del
developer
Pochi feedback
La build impiega troppo tempo
85. Esercitazione
In gruppi creare il vision e product canvas di un nuovo
prodotto/servizio da lanciare sul mercato
Testing insufficiente durante la fase ‘implementation’
Nelle ultime fasi del progetto introdurre una modifica ha un costo molto alto
Il modello Waterfall può essere adatto per progetti già consolidati dove il cambiamento non è molto frequente
http://agilemanifesto.org/
Agile non è un processo, è una filosofia o un insieme di valori
Feedback dai sistemi di log (centralizzato)
Feature Invoke
Analisi del Funnel
Sulla user story viene spesso indicata la stima per realizzarla
Clienti => Esperti del dominio => Non sempre vero
Mantenere attiva la discussione con il cliente
Non far parlare troppo i clienti tra di loro => si rischia di creare un loop da cui è difficile uscire => Si genera dispersione => Si può perdere il focus sulla storia
Acceptance Criteria => Troppo vago
Obiettivo: Creare valore per l’ utente
Il Product Canvas rimarrà affiancato al product per tutto il tempo del progetto e sarà uno strumento prezioso durante tutti gli incontri quali raffinamento del product backlog, pianificazione e review.
In Scrum ci sono più regole da seguire
Non ci sono gerarchie all’ interno del team
Protegge il team dalle situazioni di stallo
Coach
http://scrummasterchecklist.org/
Backlog Refinement Meeting: Il Product owner si incontra con il team per stabilire la priorità delle varie user stories, in questo scenario il team aiuta il product owner a decidere la priorità
Nel product backlog non vengono inseriti task di basso livello
Ogni attività può essere suddivisa in più task, ogni task è completato se soddisfa la Definition of Done
Ogni task viene stimato (una delle stime possibili potrebbe essere in base alla taglia delle magliette => Small, Medium, Large)
Ci possono essere delle swimlane (Una per ogni user story) con i relativi task associati
In WIP il numero di carte dovrebbe essere minore o uguale al numero dei componenti del team
Rendere evidenti le carte blocked
Ci possono essere delle swimlane (Una per ogni user story) con i relativi task associati
Viene popolato lo Sprint Backlog con i task da eseguire nello sprint corrente
I task normalmente possono includere design, implementazioen, test, documentazione, ecc
I Task non completati vengono stimati nuovamente e re-inseriti nel Product Backlog
I Feedback possono diventare nuove user stories
E’ più utile terminare un task in pair entro fine giornata che iniziarne uno nuovo che non finirà prima del giorno successivo
Refactoring per eliminare duplicazioni
Refactoring per eliminare duplicazioni
Refactoring per eliminare duplicazioni
I test devono restare verdi
• I test non possono essere modificati
• Il comportamento osservabile del codice non deve cambiare
• Non puoi eliminare test ma solo crearne di nuovi (e nuovi oggetti)
Di solito i Code Smells sono la conseguenza del debito tecnico del programmatore
Possono essere tra classi o all’ interno della stessa classe.
Di solito i Code Smells sono la conseguenza del debito tecnico del programmatore
Linus Torvalds è un programmatore finlandese e autore della prima versione del kernel linux e coordinatore del progetto di sviluppo dello stesso.
E’ un esperto di compressione su file system
Quando viene creato/clonato un repository viene creata nella folder una cartella .git che viene usata da git per salvare le informazioni di cui ha bisogni (history, ecc)
=> Git consente di lavorare offline
Origin identifica la history remota (Quella salvata sul repository remoto)
Master identifica la history locale
Origin è aggiornata all’ ultima operazione di Pull
I pallini identificano i vari commit del progetto fatti dal developer.
Dopo un commit posso decidere se rendere effettive le modifiche allineando la history locale con quella remota
oppure
Annullarle con un git reset
Scenario 1: La mia history locale è indietro rispetto alla history remota => Qualcun altro ha fatto delle modifiche dall’ ultima volta che ho fatto fetch
Come allineo la history locale e quella remota?
‘git reset hard’
Non fa altro che spostare l’ etichetta master dalla posizione attuale a quella puntata da origin
Scenario 2: Qualcun altro ha fatto delle modifiche e ha fatto push, ho fatto delle modifiche anche io (probabilmente includendo anche gli stessi file)
‘git merge’ crea un nuovo commit con il merge delle modifiche, a questo punto effettuando il push, origin e master saranno di nuovo allineati
‘git base’ non crea un nuovo commit ma a partire da origin applica tutti i commit presenti sulla history locale