+ All Categories
Home > Technology > Agile software lifecycle

Agile software lifecycle

Date post: 29-Oct-2014
Category:
Upload: francesco-trucchia
View: 27 times
Download: 0 times
Share this document with a friend
Description:
 
Popular Tags:
80
Agile software lifecycle Francesco (cphp) Trucchia http://joind.in/talk/view/ 1426
Transcript
Page 1: Agile software lifecycle

Agile software lifecycle

Francesco (cphp) Trucchia

http://joind.in/talk/view/1426

Page 2: Agile software lifecycle

o meglio...

a real software quality lifecycle experience

Page 3: Agile software lifecycle

Chi sono

Francesco Trucchia... per gli amici ciccio, per il web cphp!! • Sviluppatore PHP dal 1999 • Sviluppatore XP dal 2006• Fondatore dell'XPug Romagna • CTO, co-founder e coach @ ideato srl• Autore di libri

Page 4: Agile software lifecycle

Agenda

Parte I • Nozioni elementari di qualità, agile e XP• Processi di produzione software in una piccola azienda

 Parte II • Approfondimenti sulle pratiche e gli strumenti a supporto dei

processi di produzione software in una piccola azienda

Page 5: Agile software lifecycle

Contestualizziamo un po'...

Le esperienza trattate in questo workshop vengono da esperienze reali nella mia azienda:

• fondata nel 2008• 7 dipendenti• sviluppo di applicazione PHP

Page 6: Agile software lifecycle

La mission condivisa

"Produrre, per i nostri clienti, software di qualità nel minor tempo possibile"

Page 7: Agile software lifecycle

Ma prima alcune nozioni....

Page 8: Agile software lifecycle

Che cos'è il software lifecycle?

”Un processo di sviluppo software è un flusso strutturato e imposto per lo sviluppo di un prodotto software. Alcuni sinonimi possono essere software life cycle e processo software. Ci sono modelli differenti che cercano di descrivere questo processo." - Wikipedia

Page 9: Agile software lifecycle

Alcuni modelli di sviluppo software

• Waterfall• Iterative and incremental• Agile

Page 10: Agile software lifecycle

Che cosa significa qualità?

"Quality in business, engineering and manufacturing has a pragmatic interpretation as the non-inferiority or superiority of something. Quality is a perceptual, conditional and somewhat subjective attribute and may be understood differently by different people." - Wikipedia

Page 11: Agile software lifecycle

Che ne pensa il team?

• Codice semplice da capire e da modificare• Facilità nel fixare i bug• Requisiti chiari, mutevoli e semplici da stimare• Utilizzo di standard aperti• Utilizzo di pattern• Codice ad oggetti• Lavorare in team autogestiti• Comunicazione chiara• Feedback rapidi• Partecipare a corsi di formazioni• Apprendere• Vedere il fallimento il prima possibile così da poter

cambiare/correggere strada in tempo

Page 12: Agile software lifecycle

E per voi che cosa significa produrre software di qualità?

Page 13: Agile software lifecycle

Manifesto agile === ricerca della qualità

Stiamo ricercando modi migliori di sviluppare software facendolo e aiutando gli altri a farlo.

Grazie a questa attività siamo arrivati a considerare importanti:  

Gli individui e le interazioni più dei processi e degli strumentiIl software funzionante più che la documentazione esaustiva

La collaborazione col cliente più che la negoziazione del contrattoRispondere al cambiamento più che seguire i piani

 Ovvero, fermo restando il valore delle entità a destra, consideriamo più

importanti le entità a sinistra.

Page 14: Agile software lifecycle

Noi cerchiamo la qualità con XP

"L'Extreme Programming (espressione inglese per programmazione estrema, spesso abbreviato in XP) è una metodologia agile e un

approccio all'ingegneria del software formulato da Kent Beck, Ward Cunningham e Ron Jeffries." - Wikipedia

Page 15: Agile software lifecycle

XP si basa su 5 valori assoluti

• Comunicazione• Semplicità• Feedback• Rispetto• Coraggio

Page 16: Agile software lifecycle

XP si basa su pratiche chiare

Primary • Sedersi insieme• Team completo• Workspace informativo• Lavoro energizzante• Pair Programming• Storie• Cicli settimanali• Cicli mensili• Ten minute build• Continous Integration• Test-First Programming• Design incrementale

Corollari

• Coinvolgimento del cliente• Deploy incrementale• Continuità del team• Shrinking Teams• Analisi alla radice delle causes• Codice condiviso• Code and Tests• Single Code Base• Deploy quotidiano• Scope del contratto negoziabile• Pay-Per-Use

Page 17: Agile software lifecycle

I principi XP

• Flusso• Opportunità• Ridondanza• Fallimento• Qualità• Piccoli step• Responsabilità accettata

• Umanità• Economia• Mutuo Beneficio• Self-Similarity• Improvement• Diversità• Reflection

Page 18: Agile software lifecycle

Noi condividiamo i valori XP e attraverso i suoi principi ne applichiamo le pratiche alla

ricerca della massima qualità

Page 19: Agile software lifecycle
Page 20: Agile software lifecycle

Vi ricorda qualcosa?

Page 21: Agile software lifecycle

Pre-Produzione

Page 22: Agile software lifecycle

Attività

• Analisi dei Requisiti • Pianificazione

Page 23: Agile software lifecycle

Analisi Requisiti I

L'analisi dei requisiti è l'attività attraverso la quale si definiscono le funzionalità utente con il software.

Dall'analisi dei requisiti si producono delle storie funzionali (User stories) che serviranno a pianificare la release.

Page 24: Agile software lifecycle

Analisi dei Requisiti II

Ruoli • Account• Figure primarie del team (UX, dev, design)• Product owner

 Pratiche• Sedersi insieme• Storie• Coinvolgimento del cliente• Time boxing

Page 25: Agile software lifecycle

Pianificazione I

La pianificazione è l'attività attraverso la quale si definisce la più piccola release di valore da realizzare, delineando tempi e budget a scope variabile.

Durante la pianificazione si stimano le user stories utilizzando il buffer d'incertezza (regola dell'80/20) e lo scope variabile (must to have, nice to have).

In XP questo tipo di pianificazione è chiamata "Release Planning".

Page 26: Agile software lifecycle

Pianificazione II

Ruoli• Account• Figure primarie del team• Product owner

 Pratiche• Sedersi insieme• Planning game• Coinvolgimento del cliente• Time boxing• Storie

Page 27: Agile software lifecycle

Produzione

Page 28: Agile software lifecycle

Attività

• Pianificazione• Sviluppo iterativo• Demo

Page 29: Agile software lifecycle

Produzione - Pianificazione I

Ad ogni iterazione si pianifica quali storie implementare. Le storie vengono suddivide in task, i task stimati e si riempie il buffer dell'iterazione.

In XP questo tipo di pianificazione è chiamta "Iteration Planning".

Page 30: Agile software lifecycle

Produzione - Pianificazione II

Ruoli• Tutto il team di sviluppo• Product owner• Account

Pratiche• Sedersi insieme• Team completo• Coinvolgimento del cliente• Time boxing • Storie• Informative workspace• Weekly cycle

 

Page 31: Agile software lifecycle

Produzione - Sviluppo Iterativo I

Ad ogni iterazione si testano e implementano i task relativi alle storie. Ogni coppia di sviluppatori è responsabile della storia che ha scelto di implementare. Le storie vengono implementate in base all'ordinamento dato dal cliente.

Alla fine di ogni iterazione si memorizza la velocity.

Se durante l'iterazione nascono nuove storie, queste vengono messe in backlog e poi pianificate nel successivo iteration planning.

Page 32: Agile software lifecycle

Produzione - Sviluppo Iterativo II

Ruoli• Tutto il team• Product owner

 Pratiche• Sedersi insieme• Team completo• Coinvolgimento del cliente• Time boxing • Storie• Informative workspace• Weekly cycle• Single code base• Pair Programming

 

• Sviluppo Test First• Continuità del team• Analisi della causa alla radice• Deploy quotidiano• Negoziare lo scope• Continous Integration• Codice condiviso• Stand-up meeting 

Page 33: Agile software lifecycle

Produzione - Demo I

La fase di Demo è il momento nel quale il team si riunisce con il cliente per presentare la demo dell'ultima iterazione eseguita. Ogni singola storia viene mostrata al cliente e il cliente ne approva la bontà o fa emergere bug e nuove storie.

Page 34: Agile software lifecycle

Produzione - Demo II

Ruoli• Tutto il team• Product owner

Pratiche• Sedersi insieme• Team completo• Coinvolgimento del cliente• Time boxing • Storie• Weekly cycle

 

Page 35: Agile software lifecycle

Post-Produzione

Page 36: Agile software lifecycle

Attività

• Consegna release• Bug-fixing

Page 37: Agile software lifecycle

Consegna Release I

La fase della consegna della release è il momento nel quale si fa il deploy del codice nella macchina di produzione.

Alla fine del deploy in produzione il team festeggia l'obiettivo raggiunto.

Alla fine del deploy viene individuato il release manager.

Page 38: Agile software lifecycle

Consegna Release II

Ruoli• Tutto il team• Product owner• Release manager

Pratiche• Pair programming• Continous Integration• Deploy quotidiano 

Page 39: Agile software lifecycle

Mantenimento I

La fase di mantenimento è la fase nella quale una release è stata messa in produzione e il codice va mantenuto in caso di bug-fixing o micro modifiche.

Page 40: Agile software lifecycle

Mantenimento II

Ruoli• Release manager• Cliente

Pratiche• Analisi della causa alla radice• Deploy quotidiano• Continous Integration• Kanban

Page 41: Agile software lifecycle

Non è oro tutto ciò che luccica!!

Alcuni problemi reali che abbiamo incontrato

Page 42: Agile software lifecycle

Pianificazione cross progetti

Page 43: Agile software lifecycle

Customer Care

Page 44: Agile software lifecycle

Feedback

Page 45: Agile software lifecycle

Agile dentro Waterfall

Quando si lavora da terzisti

Page 46: Agile software lifecycle

Team remoto

Page 47: Agile software lifecycle

Codice legacy

Page 48: Agile software lifecycle

L’illusione del multi tasking

Page 49: Agile software lifecycle

Interruzioni continue

Page 50: Agile software lifecycle

E voi?

Quali problemi abbassano la qualità di produzione del vostro

software?

Page 51: Agile software lifecycle

Crampi allo stomaco… non è colpa dei clienti è solo la fame!!!

Ci vediamo alle 14.15

Page 52: Agile software lifecycle
Page 53: Agile software lifecycle

Abbiamo provato a trovare alcun soluzioni ai nostri problemi

Page 54: Agile software lifecycle

Problemi Souzioni

• Il facilitatore• Il Pronto soccorso• Il facilitatore

• Strumenti di collaborazione• Spike di studio e testing• Il facilitatore• La tecnica del pomodoro

Page 55: Agile software lifecycle

Che cosa fa il facilitatore?

• Pianifica i progetti internamente• Crea il team• Supporta l'account• Supporta il team• Supporta il cliente• Pianifica e decide le attività del pronto soccorso

Page 56: Agile software lifecycle

Pronto soccorso?Siamo forse un ospedale?

Page 57: Agile software lifecycle

La metafora del pronto soccorso

"Il pronto soccorso è un'unità operativa dell'ospedale dedicata ai casi di emergenza e con spazi dedicati alla breve osservazione (medicina d'urgenza). Qui vengono prestate le prime cure in tutti i casi di urgenza ed emergenza (traumi, infarti, ...) e si accede quindi in modalità di ricovero urgente." - Wikipedia

Page 58: Agile software lifecycle

Supporto e pronto soccorso I

Secondo noi rispondere in maniera rapida alle richieste o emergenze del cliente è sinonimo di qualità.

Gli sviluppatori fanno quotidianamente turni al pronto soccorso, offrendo la loro disponibilità ad attività di emergenza aziendali.

Il facilitatore è il Product Owner del progetto Pronto Soccorso ed è lui che decide e pianifica le priorità di intervento.

Page 59: Agile software lifecycle

Supporto e pronto soccorso II

Ruoli• Sviluppatore• Facilitatore• Cliente

 Pratiche• Stand-up meeting• Test first• Analisi della causa alla radice• Deploy quotidiano• Customer care di secondo livello• Stime e pianificazioni di emergenza

Page 60: Agile software lifecycle

Approfondiamo un po’ di pratiche

con immagini e colori…

Page 61: Agile software lifecycle

Sedersi insieme

Page 62: Agile software lifecycle

User story

Page 63: Agile software lifecycle

Coinvolgimento del cliente

Page 64: Agile software lifecycle

Time boxing

Page 65: Agile software lifecycle

Planning game

Page 66: Agile software lifecycle

Spazio di lavoro informativo

Page 67: Agile software lifecycle

Weekly cycle

Page 68: Agile software lifecycle

Single code base

Page 69: Agile software lifecycle

Test First

Page 70: Agile software lifecycle

Continuità del team

Page 71: Agile software lifecycle

Continous integration

Page 72: Agile software lifecycle

Stand-up meeting

Page 73: Agile software lifecycle

Pair Programming

Page 74: Agile software lifecycle

Ora proviamo insieme a trovare una soluzine ai problemi emersi nella prima parte del workshop

Page 75: Agile software lifecycle

Altre domande?

Page 76: Agile software lifecycle

Ringrazimanti

• Ideato - http://www.ideato.it• Al mio team - www.theideatos.com• Jacopo Romei (il mio mentore) - www.sviluppoagile.it

Page 77: Agile software lifecycle

Contatti

Francesco (cphp) Trucchia

E-Mail: [email protected]

Skype: trucchia

Twittter: cphp

Website: www.ideato.it

Blog: www.cphp.it

http://joind.in/talk/view/1426

Page 78: Agile software lifecycle

Recruitment @ ideato

Stiamo cercando uno sviluppatori php

[email protected]

http://www.ideato.it/Azienda/Lavora-con-noi

Fermatemi e chiedetemi informazioni

Page 79: Agile software lifecycle

Riferimenti

• Extreme Programming Explained (Second edition). K. Back, C. Andres. Addison Wesley 2005.

• Agile Estimating and Planning. M. Cohn. Prentice Hall 2005.• User Stories Applied: For Agile Software Development. M.

Cohn. Addison-Wesley Professional 2004.• The Pragmatic Programmer: From Journeyman to Master.

A. Hunt, D. Thomas. Addison-Wesley Professional 1999

Page 80: Agile software lifecycle

Pro PHP Refactoring

What you’ll learn

• What refactoring is and why you need to refactor code

• What test-driven design is and why you need to test your code

• How to write unit and functional tests with PHPUnit and Selenium RC

• How to detect “bad smells” in PHP code, and refactor them using test-driven design

• How to refactor a large procedural application affected by many bad smells

Who is this book for?

This book is for PHP developers, businesses, and developers relying on legacy PHP apps.

Francesco TrucchiaJacopo Romei

Apress June 2010


Recommended