Agile requirements - alla ricerca del filo rosso (iad 2013)Fabio Armani
requisiti rappresentano, a mio avviso, il ‘fil rouge’ di tutto lo sviluppo software, sia che si tratti di applicazioni web o mobile, sia che siano coinvolti grandi sistemi Enterprise. Cerchiamo di capire perché.
Possiamo affermare che Lean Agile sta di fatto divenendo uno delle metodologie più adottate (se non il main-stream stesso) in ambito informatico e conseguentemente anche in ambiti connessi con l’informatica.
Nel mio talk (che spero possa trasformarsi in una tavola rotonda sul tema degli agile requirements e di ciò che ruota attorno ad essi) desidero presentare le varie possibilità di gestire i requisiti in modo agile e di seguire ad esempio il percorso delle “user story” (uno dei più efficaci metodi inventati in ambito agile o meglio nella metodologia eXtreme Programming per gestire i requisiti) in tutte le diverse fasi della loro ‘vita’ : a partire da ‘theme’, ‘epic’ e poi ‘story’ realizzata durante una determinata iterazione, fino al loro testing mediante Acceptance Test Driven Development e convalida business sul campo con gli utenti finali e i diversi stakeholder.
Bene… per poter effettuare questo affascinante itinerario cosa e chi viene coinvolto? Scopriremo assieme (ed argomenteremo le diverse soluzioni) che un’intera organizzazione Enterprise si dovrà plasmare per consentire ad una storia di divenire parte di una nuova funzionalità di successo.
Per avere realmente successo dovremmo scomodare molte metodologie tra le quali Lean , Agile, Lean StartUp, Lean UX e questo ci porterà nuovamente al punto di partenza. Perché vogliamo realizzare proprio questa storia? Quale era il requisito da cui siamo partiti. A quale Vision ci siamo ispirati?
Sono certo che il tema è affascinante e sarà interessante affrontarlo collettivamente, specialmente se trattato in ambito di round table.
Cosi come non si può prescindere dal buon design quando si progetta un software, allo stesso tempo va fatta estrema attenzione al consumo di risorse, alle performances, all’affidabilità, criteri che nell’ubiquità del software non possono mai essere dati per scontato. Vediamo come approcciare questi problemi.
Perchè l’approccio accademico al software impone spesso di ragionare “a risorse infinite”, mentre nella realtà dei fatti questo non è vero? Abbiamo la possibilità di intercettare rapidamente il degrado del software e il consumo di risorse? In questo talk vorremmo condividere alcune esperienze di team atte a misurare la “febbre” del software, ovvero discutere di alcuni indicatori che possono dare un buon feeling sullo stato di salute del software che stiamo sviluppando, monitorando i quali possiamo far avvicinare l’approccio accademico, teorico a quello pratico e di produzione.
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.
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
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.
Lean anche io! No tu no! - Italian Agile Days 2013Andrea Scavolini
Slide presentate a Italian Agile Day(s) 2013 di Reggio Emilia:
Lean anche io!
No tu no!
Sessione incentrata sulla condivisione dell'esperienza di transizione verso un modello Lean in progetti reali di consulenza per grandi aziende dove spesso molte delle pratiche e delle metodologie proposte in ambito agile sono difficilmente applicabili. L’obiettivo è mostrare i successi ottenuti (sia per il team di sviluppo che per gli utenti), condividere i nostri fallimenti, i problemi incontrati e le sfide aperte per offrire un punto di vista su come può essere affrontata la transizione ad un modello agile in contesto di relazione grande cliente-fornitore.
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!
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.
Le pratiche ingegneristiche di eXtreme ProgrammingAndrea Francia
Le pratiche ingegneristiche sono il sottoinsieme delle pratiche descritte nei libri di eXtreme Programming che hanno direttamente a che fare con le modalità con cui si scrive/progetta/verifica il software.
Esse sono:
- il Simple Design
- il Test-Driven Development
- la Continuous Integration
- il Refactoring, e
- il Pair Programming.
Sono famose di nome, ma non sempre è possibile venire a contatto con una loro definizione corretta, ed è facile farsi un'idea sbagliata di cosa siano e trovare problemi ad applicarle in modo efficace alla propria situazione.
Spiegherò come ognuna di queste pratiche possono aiutarci nello sviluppo software portando esempi presi dal mio lavoro quotidiano o dal lavoro di altre persone con cui sono venuto in contatto.
La ragione principale per cui le aziende decidono di non adottare il DevOps per il database è di preservare la sicurezza del database stesso. Eppure, si tratta di una concezione errata: applicando il DevSecOps al DB, infatti, è possibile creare in ambienti strutturati le condizioni per un rilascio sicuro degli script del database, gestendo al meglio potenziali rischi di sicurezza. Segui il webinar per apprendere come includere il DB all’interno della tua strategia DevSecOps.
La comunicazione tra le persone è il primo valore dell’Agile. Trasmettere la vision di un’idea è molto difficile. Attraverso i Canvas è possibile non solo condividere la vision ma anche il viaggio che porterà alla realizzazione dell’intero prodotto.
Adottando i vari Canvas come il Business Model Canvas, il Lean Canvas e il Product Canvas è possibile definire e condividere le ipotesi iniziali, validarle sul mercato misurando i risultati e confrontarle con i risultati attesi. I Canvas quindi non solo ci aiutano nella parte iniziale del progetto ma ci accompagnano per tutto il ciclo di vita del prodotto evolvendo con esso.
Questi concetti non sono strettamente legati al software ma possono essere applicati in contesti differenti.
Durante questo workshop vedremo insieme come, partendo da un’idea, si possa realizzare un prototipo di applicazione mobile in meno di due ore… il tutto sotto forma di gioco.
La passione non è sufficiente e il talento è sopravvalutato.
La vera differenza tra chi eccelle in una disciplina e tutti gli altri è la pratica.
I risultati ottenuti facendo pratica sono funzione non solo della quantità di tempo investito ma anche della qualità della pratica stessa, è quindi importante un approccio strutturato.
Partendo dagli studi del Dr. K. Anders Ericsson sulla pratica deliberata vedremo una carrellata delle tecniche che ci permettono di migliorare nella programmazione e nell’applicazione dei metodi agili.
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.
Lean anche io! No tu no! - Italian Agile Days 2013Andrea Scavolini
Slide presentate a Italian Agile Day(s) 2013 di Reggio Emilia:
Lean anche io!
No tu no!
Sessione incentrata sulla condivisione dell'esperienza di transizione verso un modello Lean in progetti reali di consulenza per grandi aziende dove spesso molte delle pratiche e delle metodologie proposte in ambito agile sono difficilmente applicabili. L’obiettivo è mostrare i successi ottenuti (sia per il team di sviluppo che per gli utenti), condividere i nostri fallimenti, i problemi incontrati e le sfide aperte per offrire un punto di vista su come può essere affrontata la transizione ad un modello agile in contesto di relazione grande cliente-fornitore.
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!
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.
Le pratiche ingegneristiche di eXtreme ProgrammingAndrea Francia
Le pratiche ingegneristiche sono il sottoinsieme delle pratiche descritte nei libri di eXtreme Programming che hanno direttamente a che fare con le modalità con cui si scrive/progetta/verifica il software.
Esse sono:
- il Simple Design
- il Test-Driven Development
- la Continuous Integration
- il Refactoring, e
- il Pair Programming.
Sono famose di nome, ma non sempre è possibile venire a contatto con una loro definizione corretta, ed è facile farsi un'idea sbagliata di cosa siano e trovare problemi ad applicarle in modo efficace alla propria situazione.
Spiegherò come ognuna di queste pratiche possono aiutarci nello sviluppo software portando esempi presi dal mio lavoro quotidiano o dal lavoro di altre persone con cui sono venuto in contatto.
La ragione principale per cui le aziende decidono di non adottare il DevOps per il database è di preservare la sicurezza del database stesso. Eppure, si tratta di una concezione errata: applicando il DevSecOps al DB, infatti, è possibile creare in ambienti strutturati le condizioni per un rilascio sicuro degli script del database, gestendo al meglio potenziali rischi di sicurezza. Segui il webinar per apprendere come includere il DB all’interno della tua strategia DevSecOps.
La comunicazione tra le persone è il primo valore dell’Agile. Trasmettere la vision di un’idea è molto difficile. Attraverso i Canvas è possibile non solo condividere la vision ma anche il viaggio che porterà alla realizzazione dell’intero prodotto.
Adottando i vari Canvas come il Business Model Canvas, il Lean Canvas e il Product Canvas è possibile definire e condividere le ipotesi iniziali, validarle sul mercato misurando i risultati e confrontarle con i risultati attesi. I Canvas quindi non solo ci aiutano nella parte iniziale del progetto ma ci accompagnano per tutto il ciclo di vita del prodotto evolvendo con esso.
Questi concetti non sono strettamente legati al software ma possono essere applicati in contesti differenti.
Durante questo workshop vedremo insieme come, partendo da un’idea, si possa realizzare un prototipo di applicazione mobile in meno di due ore… il tutto sotto forma di gioco.
La passione non è sufficiente e il talento è sopravvalutato.
La vera differenza tra chi eccelle in una disciplina e tutti gli altri è la pratica.
I risultati ottenuti facendo pratica sono funzione non solo della quantità di tempo investito ma anche della qualità della pratica stessa, è quindi importante un approccio strutturato.
Partendo dagli studi del Dr. K. Anders Ericsson sulla pratica deliberata vedremo una carrellata delle tecniche che ci permettono di migliorare nella programmazione e nell’applicazione dei metodi agili.
Test Driven Development su iOS è possibile e persino utile.
Invece di leggere blog post che sottointendono che TDD su iOS sia difficile e inutile venite a vedere chi lo usa sul serio e ha il coraggio di programmare ad una conferenza davanti ad altre persone.
Avvertenze:
questo talk non contiene paternali sul perché si dovrebbe (o non si dovrebbe) fare TDD
in questo talk non verranno usati strumenti complicati
in questo talk verrà scritto ed eseguito codice dal vivo
Dopo una brevissima introduzione passerò a sviluppare guidato dai test una semplice applicazione per iPhone.
Il 4° punto del Manifesto Agile può essere molto complicato non solo in XP, ma anche sul piano personale, relazionale e caratteriale. Sono aspetti fondamentali e trasversali del lavoro (e non solo). Ma abbracciare il cambiamento non è esattamente nella natura umana; è sfidante, è difficile… Fortunatamente però siamo in grado di apprendere e modificare il nostro comportamento in modi infiniti. Per arrivare ad ottimi risultati.
Siete in una situazione in cui sapete di poter dare molto, ma non riuscite ad innescare la scintilla del cambiamento?
Oppure desiderate che un vostro collega, il vostro team lo facesse ed invece non sembra esserci speranza?
Nel management classico o tradizionale si leggono libri con titoli come “Gestione delle risorse umane e motivazione al lavoro”. Ma forse essere trattati come risorse e non persone non è più sufficiente, e poi non è molto efficace motivare al cambiamento attraverso trucchetti o persuasione. Qualche suggerimento per capire meglio perché è difficile, gli ingredienti utili per cambiare e per capire la motivazione.
Sempre tenendo presente che la “svolta indotta”, quella che inizia con “Da domani iniziamo a…” o “Ho deciso che da oggi…” è quella più difficile da portare avanti.
One, No One, One Hundred Thousand Projects (Uno, Nessuno, Centomila Progetti)Gaetano Mazzanti
This document discusses managing projects and initiatives using lean and agile principles. It advocates for limiting work in progress, visualizing and measuring flow, prioritizing based on cost of delay, making decisions with uncertainty in mind, and focusing on continuous learning over predetermined destinations or best practices. The overall message is that complex domains with human involvement require an adaptive approach focused on transparency, collaboration, and experimentation over rigid plans.
The document discusses issues that can arise when practicing test-driven development (TDD), such as clueless tests, overuse of mocks, and other poor testing practices that lead to problems. It describes a talk given by Uberto Barbini on how TDD can go wrong and provide examples of bad test smells like tests with too many assertions or dependencies. The talk aims to help developers improve their TDD skills and write better, more maintainable tests.
Outcome not Output: A Story of Lean UX AdoptionSteve Maraspin
This presentation shares our experience with Lean UX adoption and offers some hints on how to combine User Centered Design activities within an Agile development workflow.
The document describes the format of a coding retreat. It will take place from 10am to 5pm with sessions of 45 minutes coding, 10 minutes of retrospective, and 5 minute breaks. The goal is to practice coding challenges through deliberate practice, getting feedback, and pairing with others. Variations on the challenges are suggested such as restricting the use of certain features or approaches. One challenge described is modeling Conway's Game of Life, which involves a 2D grid where cells can be alive or dead and have states that change according to the states of neighboring cells.
Ho incontrato django 8 mesi fa e mi ha riconciliato con la programmazione web che francamente detestavo. Ne ho apprezzato il disegno e la chiarezza.
Qui presento una libreria -- jungle -- ed alcune applicazioni costruite attorno a django sostituendo il sistema di templating originario con 'mako', un sistema di templating recente di Michael Bayer autore fra l'altro di sqlalchemy.
Il sistema di templating di django è forse uno degli elementi più criticati e più difesi dagli sviluppatori di django. L'idea di base è che deve restare facilmente utilizzabile da una utenza (il grafico web) che ha normalmente poca dimestichezza con la programmazione motivo per cui i tradizionali elementi di programmazione sono ridotti o mancanti.
L'esperienza mia è che in molte realtà invece chi scrive le pagine è il programmatore stesso o persona che può imparare con uguale sforzo i rudimenti per potere usare dei sistemi di templating che permettono alcuni costrutti python.
A questo punto si aprono molte possibilità decisamente efficaci. I template risultano molto più leggibili senza perdere in chiarezza. Particolarmente efficace è l'uso di layout simbolici per la creazione di form e tabelle.
La relazione vuole presentare il lavoro fatto in Thunder Systems srl negli ultimi 8 mesi e disponibile con licenza GNU tramite lo studio di alcune piccole applicazioni costruite con questa libreria fra cui un sistema di ticketing ed un sistema di gestione orari dipendenti/cartellino/badge.
Presentazione: uno studio sull'efficacia di checker automatici per la moderni...Idriss Riouak
Uno studio sull'efficacia del checker Clang Tidy in particolare sull'efficacia del modulo "modernize". Il test è stato applicato sulla Parma Polyhedra Library.
Marco Arena - Perché nel 2015 parliamo ancora di C++? | Codemotion Milan 2015Codemotion
Un sacco di applicazioni che utilizziamo quotidianamente sono sviluppate in C++. Per esempio, se stai leggendo questo abstract in un browser, allora probabilmente stai usando un software scritto in C++. Nonostante la diffusione di tanti altri eccellenti linguaggi, perché il C++ è ancora così utilizzato? Sapevi che nel 2014 è stato il secondo linguaggio più amato della SO Developer Survey? Cosa offre in più rispetto ad altre tecnologie? Presenterò la mia visione, e anche alcuni “segreti” che rendono il C++ speciale ed evoluto.
How create a single page apps using html5 and javascript Stefano Marchisio
Create a html5/javascript apps with mvc/ajax using knockout.js/mvvm. Javascript to IQueryable is a framework that allows you to write a simple query in javascript client side and then execute it server side with EntityFramework or a linq provider that implement IQueryable. On the server is used "Dynamic Expressions and Queries in LINQ by Microsoft" to compose dynamically your query. In this way you can create a grid with filter, paging and sort functions. There is also support for: mvc3 unobtrusive jquery validation and jquery mobile/phonegap. - http://Javascriptiqueryable.codeplex.com - http://www.youtube.com/watch?v=qjwyKwsXHKs - http://www.linqitalia.com/articoli/entity-framework/sfruttare-javascript-eseguire-query-linq-server-tramite-dynamic-iqueryable.aspx
by Davide Cerbo e Stefano Linguerri
La programmazione web sta facendo passi da gigante e oggi l’utente si aspetta che l’esperienza di utilizzo si avvicini sempre di più a quella a cui è abituato nei classici applicativi desktop. Il mondo degli sviluppatori ha risposto inventanto una nuova sigla: RIA, cioè Rich Internet Application. Google non è stata a guardare e ha fornito la sua risposta a questa esigenza donando alla community Google Web Toolkit. Questo nuovo framework permette di sviluppare in Java tutta l’interfaccia utente per poi ottenere un codice javascript che funzionerà su qualsiasi browser web senza l’installazione di plugin aggiuntivi. In questa presentazione vedremo:
* perchè sviluppare applicazioni RIA
* perchè usare GWT
* come GWT utilizza AJAX per comunicare con il server
* le ottimizzazione che avremo utilizzando GWT
* come uscire dal browser con Google Gear e Mozilla Prism
* e non solo…
Una PA agile, funzionale e serverless: si può fare! by Federico Feroldi and D...Codemotion
#Codemotion Rome 2018 - In questo talk raccontiamo il percorso del team che si è occupato della progettazione e dello sviluppo della piattaforma di messaggistica tra PA e cittadini a scala nazionale, prevista dal Piano Triennale per l'ICT della Pubblica Amministrazione. Quali sono state le difficoltà? Quali le vittorie? Cosa abbiamo imparato da questo percorso? La Pubblica Amministrazione è una macchina complessa, lenta, ma che, se gestita nel modo giusto può generare innovazione e tecnologia allo stato dell'arte.
Una PA agile, funzionale e serverless: si può fare! - Danilo Spinelli - Codem...Codemotion
In questo talk raccontiamo il percorso del team che si è occupato della progettazione e dello sviluppo della piattaforma di messaggistica tra PA e cittadini a scala nazionale, prevista dal Piano Triennale per l'ICT della Pubblica Amministrazione. Quali sono state le difficoltà? Quali le vittorie? Cosa abbiamo imparato da questo percorso? La Pubblica Amministrazione è una macchina complessa, lenta, ma che, se gestita nel modo giusto può generare innovazione e tecnologia allo stato dell'arte.
Una Pubblica Amministrazione Agile, Funzionale e Serverless: si può fare! - C...Federico Feroldi
In questo talk raccontiamo il percorso del team che si è occupato della progettazione e dello sviluppo della piattaforma di messaggistica tra PA e cittadini a scala nazionale, prevista dal Piano Triennale per l'ICT della Pubblica Amministrazione. Quali sono state le difficoltà? Quali le vittorie? Cosa abbiamo imparato da questo percorso? La Pubblica Amministrazione è una macchina complessa, lenta, ma che, se gestita nel modo giusto può generare innovazione e tecnologia allo stato dell'arte.
35. Modern C++: Factory
// C++98
class WriterFactory
{
public:
IWriter* Create(const string& where)
{
if (where == "cout")
return new CoutWriter();
if (where == "dbgview")
return new DbgViewWriter();
if (where == " null")
return new NullWriter();
throw exception("where to write?");
}
};
35
36. Modern C++: Factory
// C++11-14
class WriterFactory
{
public:
unique_ptr<IWriter> Create(const string& where)
{
static map<string, function<unique_ptr<IWriter>()>> m =
{
{"cout", []{return make_unique<CoutWriter>()}},
{"dbgview", []{return make_unique<DbgViewWriter>()}},
{"null", []{return make_unique<NullWriter>()}}
};
return m.at(where)(); // può sollevare eccezione
// oppure una policy diversa
}
36
};
54. Outline
• C++11, benvenuto nel team!
– C++98 C++11 & snippet C#
• Il team cambia stile & coding standards
– Design patterns
– Multi-threaded C++
• Alcune linee guida
54
55. Alcune linee guida
• Devo migrare tutto subito?
– No, intanto assicurati di cosa supporta il tuo
compilatore.
– Inizia migrando le cose deprecate (e.g. auto_ptr).
– Aggiungi qualche test su quello che stai
modificando.
– Vale sempre il principio del boyscout…
55
56. Alcune linee guida
• Il mio compilatore non supporta alcune
feature del C++11. Che devo fare?
– Se puoi, pianifica una migrazione del compilatore.
– Individua cosa potrà beneficiare del C++11 e come
lo riscriveresti.
– Metti dei reminder per quando migrerai, tipo:
//TO-DO-CPP11: …
56
57. Alcune linee guida
• Il miglior consiglio per usare C++11/C++14?
– Provalo!
– Il materiale di qualità sul C++ è aumentato.
– Frequenta isocpp.org
– Frequenta italiancpp.org
57
62. Bonus: non-member begin/end
// C++98
vector<int>::iterator it = vec.begin();
int arr[] = {1,2,3,4,5};
arr.begin(); // eh ???
// C++11
auto it = begin(vec);
auto it = begin(arr); // ok!
62
63. Bonus: make_unique (1)
// C++14
auto car = make_unique<Car>(arg1)
• auto-everything syntax
• Exception-safety:
void func(unique_ptr<Car> c1, unique_ptr<Car> c2);
func(unique_ptr<Car>{new Car{}}, unique_ptr<Car>{new Car{}});
• Le istruzioni per creare i due Car* possono essere riordinate
dal compilatore.
63
64. Bonus: make_unique (2)
func(unique_ptr<Car>{new Car{}}, unique_ptr<Car>{new Car{}});
Esempio di possibile esecuzione:
1. Allocazione memoria per la prima Car
2. Allocazione memoria per la seconda Car
3. Costruzione prima Car
4. Costruzione seconda Car
5. Costruzione primo unique_ptr
6. Costruzione secondo unique_ptr
Che succede se 4 tira un’eccezione? Memory leak della prima Car!
Se chiamiamo due funzioni (come make_unique), il compilatore è costretto
a fare 1,2,5 insieme e poi 3,4,6! Più dettagli a questo link (Sutter)
64