Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile in Azienda

2,383 views

Published on

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.

Published in: Business
  • Be the first to comment

Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile in Azienda

  1. 1. Applicazione pratica di un processo di sviluppo Agile in azienda Paolo Quaglia
  2. 2. Chi Siamo <ul><li>Chi siamo Il Gruppo Intesys </li></ul>Intesys Networking Creative Agency Intesys <ul><li>Project Management </li></ul><ul><li>Corporate Web Site, Brand Site, Portali </li></ul><ul><li>Marketing On-line </li></ul><ul><li>Sem, Seo, Dem, Display Adv </li></ul><ul><li>E-Commerce </li></ul><ul><li>Content Management System </li></ul><ul><li>Gestione Documentale </li></ul><ul><li>Enterprise Application – Enterprise 2.0 </li></ul><ul><li>Creatività </li></ul><ul><li>Digital Design </li></ul><ul><li>Adver game </li></ul><ul><li>System Integration </li></ul><ul><li>Security </li></ul><ul><li>Networking </li></ul><ul><li>Web semantico </li></ul><ul><li>Knowledge Management </li></ul>ACP
  3. 3. Alcuni Clienti
  4. 4. Chi Sono <ul><li>Paolo Quaglia </li></ul><ul><li>Laureato in Scienze dell’Informazione all’Università degli Studi di Verona </li></ul><ul><li>Attività </li></ul><ul><ul><li>Project Manager </li></ul></ul><ul><ul><li>Responsabile Area Sviluppo Software </li></ul></ul><ul><ul><ul><li>contribuito a definire il processo di sviluppo software aziendale partendo dai principi delle metodologie Agili </li></ul></ul></ul><ul><li>Aree di Interesse </li></ul><ul><ul><li>Project Management </li></ul></ul><ul><ul><li>Coaching </li></ul></ul><ul><ul><li>Processi di sviluppo (es RUP ed ICONIX) e metodologie Agili (XP e SCRUM) </li></ul></ul><ul><ul><li>Ingegneria del Software </li></ul></ul>
  5. 5. Tipi di Progetti
  6. 6. Perche Processo di Sviluppo?
  7. 7. Quale Processo?
  8. 8. Manifesto Agile <ul><li>Manifesto Agile </li></ul><ul><li>Valori Principali </li></ul><ul><li>Individui ed Interazioni rispetto a Processi e Tools </li></ul><ul><li>Software Funzionante rispetto a Documentazione omnicomprensiva </li></ul><ul><li>Collaborazione col Cliente rispetto a Negoziazione contrattuale </li></ul><ul><li>Rispondere ai cambiamenti rispetto a Seguire un Piano Rigido </li></ul>
  9. 9. Processo “Customizzato”
  10. 10. Agenda <ul><li>Implementazione Pratica </li></ul><ul><li>Ruoli e Attori </li></ul><ul><li>Azioni e Passi </li></ul><ul><li>Prodotti del Processo </li></ul><ul><li>Tool di supporto </li></ul>
  11. 11. Ruoli e Attori del Processo <ul><li>Ruoli </li></ul><ul><li>Quali Sono? </li></ul><ul><li>Cliente </li></ul><ul><li>Responsabile di Progetto </li></ul><ul><li>Responsabile tecnico </li></ul><ul><li>Sviluppatore </li></ul><ul><li>Commerciale </li></ul>
  12. 12. Ruoli e Attori del Processo <ul><li>Cliente </li></ul><ul><li>Ruolo attivo e Presente </li></ul><ul><li>Co-Assume il ruolo di Guida del progetto partecipando attivamente alle riunioni e le fasi che il progetto prevede </li></ul><ul><li>Fornisce tutte le informazioni necessarie </li></ul><ul><li>Definisce le priorità </li></ul>Caratteristiche <ul><li>Esperto del Dominio Applicativo </li></ul><ul><li>Disponibile </li></ul><ul><li>Capacità Decisionale </li></ul>
  13. 13. Ruoli e Attori del Processo <ul><li>Responsabile di Progetto </li></ul><ul><li>Obiettivo: Il raggiungimento della soddisfazione del cliente rimanendo entro i tempi e costi stabiliti </li></ul><ul><li>Garante del processo </li></ul><ul><li>Interfaccia per il cliente </li></ul><ul><li>Raccoglie e Analizza i requisiti </li></ul><ul><li>Redige il documento di progetto (Analisi) </li></ul><ul><li>Redige il documento di stima </li></ul><ul><li>Gestisce la pianificazione e controlla le attività </li></ul><ul><li>Convoca i Meeting previsti </li></ul><ul><li>Armonizza le Relazioni e agisce da Facilitatore </li></ul><ul><li>Gestisce la qualità percepita </li></ul><ul><li>Controlla tempi </li></ul><ul><li>Coordina la produzione di materiali ed i fornitori esterni </li></ul>
  14. 14. Ruoli e Attori del Processo - Team <ul><li>Team - Responsabile Tecnico </li></ul><ul><li>Obiettivo: definisce le linee guida di sviluppo e da supporto ed aiuto agli sviluppatori. </li></ul><ul><li>Decide l’architettura tecnologica </li></ul><ul><li>Guida il Team (Tutoring) </li></ul><ul><li>Stima le Attività assieme al Responsabile di Progetto </li></ul><ul><li>Redige il documento di Progetto assieme al Responsabile di Progetto </li></ul><ul><li>Redige il documento Tecnico </li></ul><ul><li>E’ responsabile della qualità interna del prodotto </li></ul>Team - Sviluppatore <ul><li>Supporta il processo di stima </li></ul><ul><li>Sviluppare i requisiti nel rispetto dei tempi stimati. </li></ul><ul><li>Implementa il codice seguendo standard di qualità e le pratiche previste </li></ul><ul><li>Compila la Time Table </li></ul>
  15. 15. Ruoli e Attori del Processo <ul><li>Commerciale </li></ul><ul><li>Presenta ai clienti soluzioni a valore aggiunto </li></ul><ul><li>Contatta e coinvolge il cliente nel progetto </li></ul><ul><li>Gestisce l’Offerta commerciale </li></ul><ul><li>Controlla i costi di progetto </li></ul><ul><li>Richiede al cliente incarichi formali per eventuali modifiche onerose </li></ul>
  16. 16. Passi e Azioni <ul><li>Passi del Processo </li></ul><ul><li>Analisi </li></ul><ul><ul><li>Analisi Iniziale </li></ul></ul><ul><ul><li>Stima </li></ul></ul><ul><ul><li>Offerta economica </li></ul></ul><ul><li>Sviluppo Iterativo </li></ul><ul><ul><li>Piano Iterazione </li></ul></ul><ul><ul><li>Sviluppo Iterazione </li></ul></ul><ul><ul><li>Conclusione Iterazione </li></ul></ul><ul><li>Release e Manutenzione </li></ul><ul><ul><li>Release Prodotto </li></ul></ul>
  17. 17. Fase Analisi
  18. 18. Tool Definitivo per Stimare
  19. 19. Stimare in Intesys
  20. 20. Stimare in Intesys <ul><li>Elementi della stima </li></ul><ul><li>Macro Use Cases del progetto, individuati e documentati </li></ul><ul><li>Attività Fisse </li></ul><ul><ul><li>Configurazioni ambienti e tempi di deploy </li></ul></ul><ul><ul><li>Project Management </li></ul></ul><ul><ul><li>Test e collaudo </li></ul></ul><ul><ul><li>Formazione al cliente </li></ul></ul><ul><ul><li>Documentazione </li></ul></ul><ul><li>Spread </li></ul><ul><li>Si stima in “Perfect Engineering days” </li></ul><ul><li>La pianificazione a calendario viene fatta successivamente </li></ul>
  21. 21. Offerta Economica
  22. 22. Sviluppo Iterativo
  23. 23. Pratiche Sviluppo Adottate <ul><li>Sviluppo </li></ul><ul><li>Coding Standard </li></ul><ul><li>Design Pattern e Framework Applicativi </li></ul><ul><li>Desing Session </li></ul><ul><li>Pair Programming al bisogno </li></ul><ul><li>Test Automatici per le parti algoritmiche (Unit test e Functional Test) </li></ul><ul><li>Refactoring </li></ul>
  24. 24. Release e Manutenzione <ul><li>Release </li></ul><ul><li>Redazione del Documento Tecnico </li></ul><ul><li>Redazione del Manuale Utente </li></ul><ul><li>Beta Test </li></ul><ul><li>Consolidamento della Versione </li></ul><ul><li>Installazione e configurazione </li></ul><ul><li>Go Live </li></ul><ul><li>Manutenzione </li></ul><ul><li>Sistema di Ticketing </li></ul><ul><li>Manutenzione Bugs </li></ul><ul><li>Manutenzioni Evolutive  nuovi Progetti </li></ul>
  25. 25. Prodotti del Processo <ul><li>PRODOTTI DEL PROCESSO </li></ul>
  26. 26. Documento di Progetto <ul><li>Documento di Progetto </li></ul><ul><li>Obiettivo, Requisiti e Vincoli </li></ul><ul><li>Pianificazione </li></ul><ul><li>Analisi </li></ul><ul><ul><li>Dominio Applicativo </li></ul></ul><ul><ul><ul><li>Attori </li></ul></ul></ul><ul><ul><ul><li>Elementi del dominio </li></ul></ul></ul><ul><ul><li>Flusso Informativo </li></ul></ul><ul><li>Soluzione Proposta </li></ul><ul><ul><li>Descrizione </li></ul></ul><ul><ul><li>Integrazioni </li></ul></ul><ul><ul><li>Specifiche software sottoforma di Use Cases </li></ul></ul><ul><li>Obiettivo: Minimo livello di documentazione necessaria </li></ul>
  27. 27. Codice
  28. 28. Altri “Prodotti” <ul><li>Documento Tecnico </li></ul><ul><li>Scelte Architetturali adottate </li></ul><ul><li>Informazioni tecniche (DB, framework, File System, etc..) </li></ul><ul><li>Informazioni di Deploy e Faq </li></ul><ul><li>Manuale Utente </li></ul><ul><li>Scenari applicativi </li></ul><ul><li>Funzionalità del sistema </li></ul><ul><li>Esempi </li></ul><ul><li>Manuale Amministratore </li></ul><ul><li>Installazione e Configurazione del sistema </li></ul><ul><li>Funzionalità amministrative </li></ul>
  29. 29. Tools di Supporto
  30. 30. Time Table <ul><li>Strumento per il supporto a tutto il Processo </li></ul><ul><li>Modulo Gestione Progetto </li></ul><ul><ul><li>Definizione Progetto </li></ul></ul><ul><ul><li>Definizione Team </li></ul></ul><ul><ul><li>Definizione Attività/Task Progetto </li></ul></ul><ul><ul><li>Gestione Assegnazioni </li></ul></ul><ul><ul><li>Reportistica tempistiche e allineamento stime originali </li></ul></ul><ul><li>Gestione Time Tracking </li></ul><ul><ul><li>Su attività Assegnate </li></ul></ul><ul><ul><li>Su attività task non Assegnate </li></ul></ul><ul><li>Controllo di Gestione </li></ul><ul><ul><li>Verifica carichi dei team </li></ul></ul><ul><ul><li>Reportistica relativa all’insieme dei progetti </li></ul></ul>
  31. 31. Time Table
  32. 32. Sistema di Ticketing <ul><li>Manutenzion: Gestione delle Change Request / Bugs </li></ul><ul><li>Sistema opensource di Ticketing </li></ul><ul><ul><li>Gestione dei Ticket </li></ul></ul><ul><ul><li>Assegnazione del Ticket </li></ul></ul><ul><li>Gestione richieste via Email </li></ul>
  33. 33. Parallelo con XP <ul><li>Tabella comparativa Processo Intesys - XP </li></ul>Solo per i progetti che li richiedono unit tests before released Intesys Team piccoli Collective ownership Al bisogno Pair programming Test Driven Development Si, feedback immediati The customer is always available Refactor Create spike solutions to reduce risk Design sessions The Project Velocity Al bisogno A stand up meeting Disposizione ad uffici Dedicated Team open work space Iteration planning in fase contrattuale Release planning docProgetto - Use cases User Stories – mattoncini della pianificazione Note XP
  34. 34. Parallelo con SCRUM <ul><li>Tabella comparativa Processo Intesys - SCRUM </li></ul>Intesys ScrumMaster Resp tecnico e Sviliuppatori Team Project manager Product owner Time Table Release burndown chart Time Table Sprint backlog Time Table Product backlog Al bisogno Sprint retrospective Sprint review Al bisogno Daily scrum meeting Incontro di inizio iterazione Sprint planning meeting Note XP
  35. 35. PRO <ul><li>Incentrato sui principi delle Metodologie Agili – si mappano sui principi e valori aziendali </li></ul><ul><li>“ Customizzato” secondo le esigenze aziendali </li></ul><ul><li>Adottato in modo Flessibile in base al tipo di progetto </li></ul><ul><li>Supportato da strumenti </li></ul>
  36. 36. Criticità e Miglioramenti Possibili <ul><li>Flessibilità -> non si crea uno “standard”, ogni protetto è a sé </li></ul><ul><li>Introduzione di una figura di Process Master (à la SCRUM Master) </li></ul><ul><li>Strumenti di governo migliorabili </li></ul><ul><li>Processo in Evoluzione </li></ul>
  37. 37. Thank you for your attention! Grazie per la vostra attenzione! <ul><li>Relazione curata da: </li></ul><ul><li>Paolo Quaglia, Responsabile Area Sviluppo Software, Intesys [email_address] </li></ul><ul><li>LinkedIn: www.linkedin.com/in/paoloquaglia </li></ul><ul><li>Intesys S.r.l. </li></ul><ul><li>Via dell’Artigianato, 3 - 37135 Verona </li></ul><ul><li>voice +39 045 503663 - fax +39 045 503604 </li></ul>

×