SlideShare une entreprise Scribd logo
1  sur  36
Lezione 15: I metodi agili
          Corso di Ingegneria del Software
        Laurea Magistrale in Ing. Informatica
          Università degli Studi di Salerno



1
Outline
    ✦ Limitazioni dei metodi tradizionali

    ✦ I metodi agili: caratteristiche comuni

    ✦ Introduzione a Extreme Programming
      (XP)




2
Limitazioni dei metodi tradizionali

    ✦ L’approccio tradizionale all’ingegneria del
      software, per contrastare i problemi del
      “Cowboy Programming”, porta allo
      sviluppo di metodologie che sono:
     •   predittive, nel senso che richiedono un grosso
         lavoro di previsione e pianificazione prima di
         cominciare la produzione di codice funzionante
     •   “pesanti”, in termini della quantità e del livello di
         dettaglio della documentazione da produrre e da
         validare


3
Limitazioni dei metodi tradizionali

    ✦ Carattere predittivo
     •   evidente nel modello a cascata
     •   anche i modelli iterativi/incrementali tradizionali
         prevedono iterazioni lunghe (2-6 mesi), per cui
         all’interno di una iterazione occorre fare un grosso
         lavoro di pianificazione
     •   spesso modelli flessibili (come RUP) sono
         interpretati in modo da diventare a cascata, o
         iterativi ma su iterazioni di lungo periodo



4
Limitazioni dei metodi tradizionali

    ✦ Problemi degli approcci predittivi
     •   in molti domini applicativi le previsioni a medio-
         lungo termine hanno un elevato rischio di risultare
         errate
     •   produrre previsioni accurate con largo anticipo
         richiede uno sforzo che ha un costo non
         trascurabile rispetto al costo complessivo del
         progetto
     •   riduzione dei gradi di libertà a disposizione del
         team di sviluppo durante lo svolgimento del
         lavoro


5
Limitazioni dei metodi tradizionali


    ✦ Documentazione “pesante” (heavy-
      weight)
     •   generalmente i metodi tradizionali prescrivono la
         produzione di un gran numero di artefatti che
         documentano le diverse fasi del processo
     •   spesso questi artefatti richiedono un elevato
         livello di dettaglio, e utilizzano formalismi (anche
         grafici) non banali




6
Limitazioni dei metodi tradizionali
    ✦ Problemi dei documenti “pesanti”
     •   difficoltà di mantenere la sincronizzazione tra il
         programma e i documenti (e tra i diversi
         documenti)
     •   il livello di dettaglio richiesto spesso nasconde gli
         aspetti essenziali
     •   spesso la comprensione dei documenti è più
         difficile della comprensione del codice (e quindi i
         documenti non hanno nessuna utilità)
     •   si ritarda il momento in cui è possibile mostrare
         un prodotto funzionante all’utente
     •   la produzione dei documenti incide
         significativamente sul costo complessivo del
7        progetto
Limitazioni dei metodi tradizionali



    ✦ Altre limitazioni
     •   spesso i metodi tradizionali, prescrivendo con un
         elevato livello di dettaglio le operazioni da
         svolgere, non consentono di sfruttare le abilità
         specifiche presenti nel team
     •   spesso la ripetibilità del processo viene garantita
         a scapito della qualità del prodotto finale




8
I metodi “agili”
    ✦ a partire dagli anni ’80, sulla base delle
      innovazioni metodologiche introdotte in altri
      settori (es. il sistema di produzione Toyota),
      diversi autori hanno proposto processi
      software che fossero adattativi e leggeri
      invece che predittivi e pesanti
    ✦ nel 2001, in un incontro tra 17 proponenti di
      questo tipo di metodi, venne coniato il termine
      Agile Software Development per indicare gli
      elementi comuni, e redatto un documento,
      noto come “The Agile Manifesto”, che
      riassumeva i principi di base
9
I metodi “agili”
     ✦ Inizialmente accolti come “eretici” dalla
       comunità Software Engineering
     ✦ Una serie di successi ha attirato una
       notevole attenzione su questa famiglia di
       metodologie
     ✦ Oggi molti metodi cercano di appropriarsi
       dell’etichetta “agile” per beneficiare
       dell’immagine positiva conquistata dai
       metodi agili (es. lo stesso RUP)

10
I valori fondamentali
     ✦ Individui e interazioni
      •   più importanti di processi e strumenti
     ✦ Software funzionante
      •   più importante di una documentazione
          onnicomprensiva
     ✦ Collaborazione con il cliente
      •   più importante della negoziazione contrattuale
     ✦ Rispondere al cambiamento
      •   più importante di seguire un piano dettagliato


11
I principi fondamentali

     ✦ Our highest priority is to satisfy the
       customer through early and continuous
       delivery of valuable software.
      •   attenzione alla qualità del software, intesa come
          capacità di soddisfare i bisogni del cliente
      •   il cliente è parte integrante del processo di
          sviluppo




12
I principi fondamentali

     ✦ Welcome changing requirements, even
       late in development. Agile processes
       harness change for the customer's
       competitive advantage.
      •   il software deve essere facile da cambiare, e non
          deve cercare di prevedere tutti i cambiamenti
          dall’inizio




13
I principi fondamentali
     ✦ Deliver working software frequently, from
       a couple of weeks to a couple of months,
       with a preference to the shorter
       timescale.
      •   il processo di sviluppo deve essere incrementale e
          iterativo, con un tempo di iterazione basso
      •   il deliverable principale di ogni iterazione è un
          programma funzionante con cui l’utente può
          interagire



14
I principi fondamentali

     ✦ Business people and developers must
       work together daily throughout the
       project.
      •   non deve esserci una divisione in compartimenti
          stagni tra il team di sviluppo e chi gestisce altri
          aspetti del progetto come il project management
          o la parte commerciale




15
I principi fondamentali

     ✦ Build projects around motivated
       individuals. Give them the environment
       and support they need, and trust them to
       get the job done.
      •   il compito di un buon manager non è costringere
          le persone a lavorare e sorvegliare il loro lavoro
          (in stile “Grande Fratello”), ma rimuovere tutti gli
          ostacoli che impediscono alle persone di lavorare




16
I principi fondamentali

     ✦ The most efficient and effective method
       of conveying information to and within a
       development team is face-to-face
       conversation.
      •   occorre rimuovere le barriere (anche
          “architettoniche”) alla comunicazione tra i membri
          del team di sviluppo




17
I principi fondamentali

     ✦ Working software is the primary measure
       of progress.
      •   gli artefatti documentali dei metodi “pesanti” non
          devono essere considerati significativi nella
          misura dell’avanzamento del progetto
      •   questo non vuol dire che non bisogna produrre
          documentazione, ma il valore della
          documentazione è misurato in base alla sua utilità
          per la comprensione del software



18
I principi fondamentali
     ✦ Agile processes promote sustainable
       development. The sponsors, developers,
       and users should be able to maintain a
       constant pace indefinitely.
      •   non bisogna “sovraccaricare” di lavoro il team con
          politiche aziendali che incoraggiano o impongono
          “marce forzate”, straordinari (non retribuiti),
          atteggiamenti stakhanovistici etc.: nel lungo
          termine queste politiche pregiudicano sia la
          qualità del prodotto che la stessa produttività


19
I principi fondamentali
     ✦ Continuous attention to technical
       excellence and good design enhances
       agility.
      •   il team di sviluppo deve essere “orgoglioso” del
          lavoro prodotto
      •   il software ben progettato è più facile da
          modificare
      •   il software già realizzato può essere modificato
          per migliorare il design (refactoring)



20
I principi fondamentali

     ✦ Simplicity - the art of maximizing the
       amount of work not done - is essential.
      •   la semplicità è il criterio fondamentale nelle
          decisioni di progettazione
      •   semplicità non significa “superficialità” o
          “ignoranza”: spesso occorre notevole esperienza e
          competenza per riconoscere ed eliminare ciò che
          non è necessario




21
I principi fondamentali
     ✦ The best architectures, requirements, and
       designs emerge from self-organizing
       teams.
      •   il team di sviluppo deve sfruttare al meglio le
          abilità e competenze specifiche di ogni persona,
          invece di basarsi sull’assunzione che le persone
          sono perfettamente intercambiabili
      •   i metodi agili preferiscono un’organizzazione
          informale e flessibile del team invece di
          un’organizzazione rigidamente gerarchica


22
I principi fondamentali

     ✦ At regular intervals, the team reflects on
       how to become more effective, then
       tunes and adjusts its behavior
       accordingly.
      •   il processo di sviluppo è esso stesso oggetto di
          aggiornamenti e miglioramenti; i miglioramenti
          non vengono “calati dall’alto” a partire da
          considerazioni astratte, ma nascono dalla reale
          esperienza del team



23
Critiche ai metodi agili

     ✦ I metodi agili sono “indisciplinati”
      •   i metodi agili richiedono generalmente una
          disciplina rigorosa e un processo ben definito; il
          processo però è di tipo adattativo e gli artefatti
          sono “leggeri”
      •   non bisogna confondere i metodi agili con il
          “Cowboy programming”




24
Critiche ai metodi agili

     ✦ I metodi agili realizzano il software senza
       progettazione
      •   in realtà il lavoro di progettazione è continuo e
          distribuito in tutto lo svolgimento del processo
          anziché essere concentrato all’inizio; anche le
          parti già realizzate possono essere modificate per
          migliorare l’architettura del software
      •   quello che manca è una documentazione
          “pesante” della progettazione



25
Critiche ai metodi agili
     ✦ I metodi agili funzionano solo per team
       piccoli e localizzati nello stesso posto
      •   ci sono in effetti rapporti contrastanti sull’efficacia
          di metodi agili in team di grandi dimensioni; in
          questi casi l’approccio agile suggerisce di
          partizionare il problema in modo da avere più
          team piccoli poco interdipendenti
      •   il lavoro a distanza è problematico, ma vi sono
          esperienze positive in cui il problema della
          comunicazione è risolto con strumenti informatici
          (instant messaging, videoconferenza, forum, wiki
          ecc.)

26
Critiche ai metodi agili
     ✦ I metodi agili richiedono sviluppatori
       esperti
      •   i metodi agili si basano sull’ipotesi che
          l’esperienza del team di sviluppo sia
          commensurata al problema da affrontare;
          comunque alcuni di essi prevedono esplicitamente
          dei meccanismi per la formazione “on the job”
          degli sviluppatori junior
      •   nessun metodo (agile o no) consente la
          realizzazione di un software di qualità partendo da
          un team di sviluppo privo di competenze


27
Critiche ai metodi agili

     ✦ I metodi agili richiedono un cambiamento
       culturale troppo forte
      •   in parte è vero; il team di sviluppo deve essere
          adeguatamente motivato per effettuare il
          cambiamento: la scelta di adottare un metodo
          agile deve essere condivisa dal team, e non può
          essere imposta dall’alto




28
Critiche ai metodi agili
     ✦ I metodi agili sono difficili da gestire
       contrattualmente
      •   è vero; nella maggior parte dei casi il cliente
          richiede che al momento del contratto siano
          definiti in dettaglio i costi, i tempi e le funzioni del
          programma (e quindi è necessaria una
          pianificazione accurata prima della stipula del
          contratto); i metodi agili invece assumono che ci
          sia un rapporto di fiducia reciproca tra il cliente e
          l’azienda che sviluppa il software



29
Applicabilità
     ✦ I metodi agili sono applicabili con
       successo se:
      •   il team è formato da poche (<20) persone e i
          membri del team sono sviluppatori esperti
      •   i requisiti cambiano spesso
     ✦ Possono invece esserci dei problemi se:
      •   il team è di grandi dimensioni e solo pochi tra gli
          sviluppatori hanno esperienza
      •   l’applicazione è safety critical, e quindi è
          necessario usare strumenti formali per verificare i
          risultati di tutte le attività
      •   il contesto aziendale impone rigidità negli aspetti
30
          contrattuali e organizzativi
Extreme Programming
     ✦ Uno dei metodi agili più popolari è
       Extreme Programming (XP)
     ✦ Sviluppato a partire dal 1996 da Kent
       Beck nell’ambito di un progetto per la
       Chrysler
     ✦ Divenuto popolare all’inizio degli anni
       2000, anche grazie all’adozione di alcune
       pratiche di XP in numerosi progetti open
       source

31
Extreme Programming

     ✦ I valori fondamentali di XP:
      •   Comunicazione
      •   Semplicità
      •   Feedback
      •   Coraggio
      •   Rispetto




32
Ruoli in XP
     ✦ Il cliente
      •   definisce i requisiti, la loro priorità e il modo di
          verificarli
     ✦ I programmatori
      •   esaminano i requisiti e definiscono le attività da
          svolgere per realizzarli; stimano i tempi delle
          attività; producono l’implementazione e i test di
          unità e di integrazione
     ✦ I tester
      •   implementano ed eseguono i test di accettazione,
          e rendono i loro risultati accessibili al team

33
Ruoli in XP
     ✦ Il manager
      •   organizza le riunioni, e si occupa degli aspetti
          politici ed commerciali; NON dice al team cosa
          deve fare o come e quando deve farlo; NON
          controlla il lavoro svolto dal team
     ✦ Il tracker
      •   controlla l’avanzamento del progetto, e mantiene
          aggiornate le stime sulla velocità del lavoro;
          inoltre raccoglie i suggerimenti o le difficoltà
          incontrate dagli sviluppatori, e suggerisce azioni
          correttive


34
Ruoli in XP
     ✦ Il coach
      •   Controlla che i membri del team applichino in
          maniera corretta la metodologia; inoltre si occupa
          degli aspetti motivazionali e delle relazioni
          interpersonali tra i membri del team
     ✦ I doomsayer
      •   si assicurano che tutti siano consapevoli dei rischi,
          e che le cattive notizie non vengano nascoste; ma
          si assicurano anche che la reazione alle cattive
          notizie sia proprorzionata alla loro effettiva
          gravità, evitando reazioni eccessive


35
Ruoli in XP

     ✦ I ruoli descritti non sono mutuamente
       esclusivi
     ✦ Scompare la distinzione tradizionale tra
       analista, progettista e programmatore
      •   i programmatori svolgono anche il lavoro di
          progettazione
      •   il lavoro di analisi è implicitamente distribuito tra
          il cliente, i programmatori e i tester



36

Contenu connexe

Tendances

Sviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUMSviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUMMatteo Papadopoulos
 
Instilling Scrum Workshop
Instilling Scrum WorkshopInstilling Scrum Workshop
Instilling Scrum WorkshopRaoul Buzziol
 
2014 07-08 7° webinar pmi-rome agile scrum
2014 07-08 7° webinar pmi-rome agile scrum2014 07-08 7° webinar pmi-rome agile scrum
2014 07-08 7° webinar pmi-rome agile scrumEmiliano Soldi
 
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clientiScrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clientiMarco Da Rin Zanco
 
Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!Manuel Scapolan
 
Redistributable Intro To Scrum Ita
Redistributable Intro To Scrum ItaRedistributable Intro To Scrum Ita
Redistributable Intro To Scrum ItaLuciano Benetti
 
Agile Project Management
Agile Project ManagementAgile Project Management
Agile Project ManagementGiulio Roggero
 
Agile Lean Conference 2015 - Integrare metodi di gestione progetto tradiziona...
Agile Lean Conference 2015 - Integrare metodi di gestione progetto tradiziona...Agile Lean Conference 2015 - Integrare metodi di gestione progetto tradiziona...
Agile Lean Conference 2015 - Integrare metodi di gestione progetto tradiziona...Agile Lean Conference
 
Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile ...
Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile ...Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile ...
Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile ...Paolo Quaglia
 
Agile@scale - Agile Day 2013
Agile@scale - Agile Day 2013Agile@scale - Agile Day 2013
Agile@scale - Agile Day 2013Felice Pescatore
 
Impatti dell'introduzione di Scrum
Impatti dell'introduzione di ScrumImpatti dell'introduzione di Scrum
Impatti dell'introduzione di ScrumAndrea Di Pinto
 
Agile Project Management - the Board Game workshop
Agile Project Management  - the Board Game workshopAgile Project Management  - the Board Game workshop
Agile Project Management - the Board Game workshopGiulio Roggero
 
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...Vittorio Polizzi
 

Tendances (20)

Sviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUMSviluppo Agile secondo l'approccio SCRUM
Sviluppo Agile secondo l'approccio SCRUM
 
Instilling Scrum Workshop
Instilling Scrum WorkshopInstilling Scrum Workshop
Instilling Scrum Workshop
 
La salute del software
La salute del softwareLa salute del software
La salute del software
 
Dal waterfall allo scrum
Dal waterfall allo scrumDal waterfall allo scrum
Dal waterfall allo scrum
 
Semplicemente Agile
Semplicemente AgileSemplicemente Agile
Semplicemente Agile
 
2014 07-08 7° webinar pmi-rome agile scrum
2014 07-08 7° webinar pmi-rome agile scrum2014 07-08 7° webinar pmi-rome agile scrum
2014 07-08 7° webinar pmi-rome agile scrum
 
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clientiScrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
Scrum! Sopravvivere e gestire progetti tra polli, maiali e clienti
 
Introduzione a Scrum
Introduzione a ScrumIntroduzione a Scrum
Introduzione a Scrum
 
Agile@core - Scrum
Agile@core - ScrumAgile@core - Scrum
Agile@core - Scrum
 
Agile methodologies
Agile methodologiesAgile methodologies
Agile methodologies
 
Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!Scrum? E' come fare il bucato!
Scrum? E' come fare il bucato!
 
Redistributable Intro To Scrum Ita
Redistributable Intro To Scrum ItaRedistributable Intro To Scrum Ita
Redistributable Intro To Scrum Ita
 
Agile Project Management
Agile Project ManagementAgile Project Management
Agile Project Management
 
Agile Lean Conference 2015 - Integrare metodi di gestione progetto tradiziona...
Agile Lean Conference 2015 - Integrare metodi di gestione progetto tradiziona...Agile Lean Conference 2015 - Integrare metodi di gestione progetto tradiziona...
Agile Lean Conference 2015 - Integrare metodi di gestione progetto tradiziona...
 
Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile ...
Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile ...Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile ...
Better Software 2010 - Applicazione pratica di un processo di sviluppo Agile ...
 
Agile@scale - Agile Day 2013
Agile@scale - Agile Day 2013Agile@scale - Agile Day 2013
Agile@scale - Agile Day 2013
 
Impatti dell'introduzione di Scrum
Impatti dell'introduzione di ScrumImpatti dell'introduzione di Scrum
Impatti dell'introduzione di Scrum
 
Agile in 45 minuti
Agile in 45 minutiAgile in 45 minuti
Agile in 45 minuti
 
Agile Project Management - the Board Game workshop
Agile Project Management  - the Board Game workshopAgile Project Management  - the Board Game workshop
Agile Project Management - the Board Game workshop
 
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
Open Innovation Campus - 05/04/2018 - Agile challenges: essere agili nello sv...
 

Similaire à Lezione 1: I metodi agili

Agile Lean Conference 2016 - Barengo _I principi del lean software development
Agile Lean Conference 2016 - Barengo _I principi del lean software developmentAgile Lean Conference 2016 - Barengo _I principi del lean software development
Agile Lean Conference 2016 - Barengo _I principi del lean software developmentAgile Lean Conference
 
Far scalare la Continuous Delivery per il middle management
Far scalare la Continuous Delivery per il middle managementFar scalare la Continuous Delivery per il middle management
Far scalare la Continuous Delivery per il middle managementMatteo Emili
 
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service ManagementITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service ManagementSimone Onofri
 
DAD e Visual Studio Online
DAD e Visual Studio OnlineDAD e Visual Studio Online
DAD e Visual Studio OnlineFelice Pescatore
 
Agile project management 1 giornata - board game - v2
Agile project management   1 giornata - board game - v2Agile project management   1 giornata - board game - v2
Agile project management 1 giornata - board game - v2Giulio Roggero
 
Agile vs waterfall project management
Agile vs waterfall project managementAgile vs waterfall project management
Agile vs waterfall project managementAndrea Depedri
 
PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...
PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...
PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...Mario Gentili
 
PMexpo16 - DPO - Workshop
PMexpo16 - DPO - WorkshopPMexpo16 - DPO - Workshop
PMexpo16 - DPO - WorkshopPMexpo
 
Agile Lean Conference 2015 - Agile Software Management (Colonese)
Agile Lean Conference 2015 - Agile Software Management (Colonese)Agile Lean Conference 2015 - Agile Software Management (Colonese)
Agile Lean Conference 2015 - Agile Software Management (Colonese)Agile Lean Conference
 
Introduzione alla Metodologia Scrumban
Introduzione alla Metodologia ScrumbanIntroduzione alla Metodologia Scrumban
Introduzione alla Metodologia ScrumbanNextre Engineering
 
Agile raccontato a mia nonna
Agile raccontato a mia nonnaAgile raccontato a mia nonna
Agile raccontato a mia nonnaFelice Pescatore
 
Ldb 98 21.01.2015 Giaffreda project management 2
Ldb 98 21.01.2015 Giaffreda project management 2Ldb 98 21.01.2015 Giaffreda project management 2
Ldb 98 21.01.2015 Giaffreda project management 2laboratoridalbasso
 
Agile e Lean in sintesi
Agile e Lean in sintesiAgile e Lean in sintesi
Agile e Lean in sintesiStefano Muro
 
Project Management - Breve Introduzione
Project Management - Breve IntroduzioneProject Management - Breve Introduzione
Project Management - Breve IntroduzioneRighetconsult
 
Intro OPENSUITE09NR.pdf
Intro OPENSUITE09NR.pdfIntro OPENSUITE09NR.pdf
Intro OPENSUITE09NR.pdfMayking
 
Lean Agile Development - a war story (Better Software 2010)
Lean Agile Development - a war story (Better Software  2010)Lean Agile Development - a war story (Better Software  2010)
Lean Agile Development - a war story (Better Software 2010)Fabio Armani
 
Principi di Project Management nella Pubblica Amministrazione
Principi di Project Management nella Pubblica AmministrazionePrincipi di Project Management nella Pubblica Amministrazione
Principi di Project Management nella Pubblica AmministrazioneEmilioGianatti
 

Similaire à Lezione 1: I metodi agili (20)

Agile Lean Conference 2016 - Barengo _I principi del lean software development
Agile Lean Conference 2016 - Barengo _I principi del lean software developmentAgile Lean Conference 2016 - Barengo _I principi del lean software development
Agile Lean Conference 2016 - Barengo _I principi del lean software development
 
Far scalare la Continuous Delivery per il middle management
Far scalare la Continuous Delivery per il middle managementFar scalare la Continuous Delivery per il middle management
Far scalare la Continuous Delivery per il middle management
 
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service ManagementITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
ITSMF Conferenza 2014 - L'officina Agile per innovare l'IT Service Management
 
DAD e Visual Studio Online
DAD e Visual Studio OnlineDAD e Visual Studio Online
DAD e Visual Studio Online
 
Agile project management 1 giornata - board game - v2
Agile project management   1 giornata - board game - v2Agile project management   1 giornata - board game - v2
Agile project management 1 giornata - board game - v2
 
Agile vs waterfall project management
Agile vs waterfall project managementAgile vs waterfall project management
Agile vs waterfall project management
 
Agile for Genio
Agile for GenioAgile for Genio
Agile for Genio
 
PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...
PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...
PMP - Generalità, Project Life Cicle e Organizzazioni, Processi e Aree di con...
 
PMexpo16 - DPO - Workshop
PMexpo16 - DPO - WorkshopPMexpo16 - DPO - Workshop
PMexpo16 - DPO - Workshop
 
Management per l'innovazione: la metodologia Agile (principi e applicazione)
Management per l'innovazione: la metodologia Agile (principi e applicazione)Management per l'innovazione: la metodologia Agile (principi e applicazione)
Management per l'innovazione: la metodologia Agile (principi e applicazione)
 
Agile Lean Conference 2015 - Agile Software Management (Colonese)
Agile Lean Conference 2015 - Agile Software Management (Colonese)Agile Lean Conference 2015 - Agile Software Management (Colonese)
Agile Lean Conference 2015 - Agile Software Management (Colonese)
 
Introduzione alla Metodologia Scrumban
Introduzione alla Metodologia ScrumbanIntroduzione alla Metodologia Scrumban
Introduzione alla Metodologia Scrumban
 
Agile raccontato a mia nonna
Agile raccontato a mia nonnaAgile raccontato a mia nonna
Agile raccontato a mia nonna
 
Ldb 98 21.01.2015 Giaffreda project management 2
Ldb 98 21.01.2015 Giaffreda project management 2Ldb 98 21.01.2015 Giaffreda project management 2
Ldb 98 21.01.2015 Giaffreda project management 2
 
Agile e Lean in sintesi
Agile e Lean in sintesiAgile e Lean in sintesi
Agile e Lean in sintesi
 
Project Management - Breve Introduzione
Project Management - Breve IntroduzioneProject Management - Breve Introduzione
Project Management - Breve Introduzione
 
Intro OPENSUITE09NR.pdf
Intro OPENSUITE09NR.pdfIntro OPENSUITE09NR.pdf
Intro OPENSUITE09NR.pdf
 
Lean Agile Development - a war story (Better Software 2010)
Lean Agile Development - a war story (Better Software  2010)Lean Agile Development - a war story (Better Software  2010)
Lean Agile Development - a war story (Better Software 2010)
 
Agile@scale: be SAFe!
Agile@scale: be SAFe!Agile@scale: be SAFe!
Agile@scale: be SAFe!
 
Principi di Project Management nella Pubblica Amministrazione
Principi di Project Management nella Pubblica AmministrazionePrincipi di Project Management nella Pubblica Amministrazione
Principi di Project Management nella Pubblica Amministrazione
 

Plus de Andrea Della Corte

Lezione 9: Design Pattern Comportamentali
Lezione 9: Design Pattern ComportamentaliLezione 9: Design Pattern Comportamentali
Lezione 9: Design Pattern ComportamentaliAndrea Della Corte
 
Lezione 8: Design Pattern Comportamentali
Lezione 8: Design Pattern ComportamentaliLezione 8: Design Pattern Comportamentali
Lezione 8: Design Pattern ComportamentaliAndrea Della Corte
 
Lezione 7: Design Pattern Comportamentali
Lezione 7: Design Pattern ComportamentaliLezione 7: Design Pattern Comportamentali
Lezione 7: Design Pattern ComportamentaliAndrea Della Corte
 
Lezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliLezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliAndrea Della Corte
 
Lezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliLezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliAndrea Della Corte
 
Lezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliLezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliAndrea Della Corte
 
Lezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e SubversionLezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e SubversionAndrea Della Corte
 
Lezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme ProgrammingLezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme ProgrammingAndrea Della Corte
 
Lezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in JavaLezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in JavaAndrea Della Corte
 
Lezione 10: Web Service in Java (2)
Lezione 10: Web Service in Java (2)Lezione 10: Web Service in Java (2)
Lezione 10: Web Service in Java (2)Andrea Della Corte
 
Lezione 9: Web Service in Java
Lezione 9: Web Service in JavaLezione 9: Web Service in Java
Lezione 9: Web Service in JavaAndrea Della Corte
 
Lezione 8: Introduzione ai Web Service
Lezione 8: Introduzione ai Web ServiceLezione 8: Introduzione ai Web Service
Lezione 8: Introduzione ai Web ServiceAndrea Della Corte
 
Lezione 7: Remote Method Invocation e SSL
Lezione 7: Remote Method Invocation e SSLLezione 7: Remote Method Invocation e SSL
Lezione 7: Remote Method Invocation e SSLAndrea Della Corte
 
Lezione 6: Remote Method Invocation
Lezione 6: Remote Method InvocationLezione 6: Remote Method Invocation
Lezione 6: Remote Method InvocationAndrea Della Corte
 
Lezione12: Autenticazione e gestione delle sessioni in REST
Lezione12: Autenticazione e gestione delle sessioni in RESTLezione12: Autenticazione e gestione delle sessioni in REST
Lezione12: Autenticazione e gestione delle sessioni in RESTAndrea Della Corte
 
Lezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDPLezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDPAndrea Della Corte
 

Plus de Andrea Della Corte (20)

Lezione 9: Design Pattern Comportamentali
Lezione 9: Design Pattern ComportamentaliLezione 9: Design Pattern Comportamentali
Lezione 9: Design Pattern Comportamentali
 
Lezione 8: Design Pattern Comportamentali
Lezione 8: Design Pattern ComportamentaliLezione 8: Design Pattern Comportamentali
Lezione 8: Design Pattern Comportamentali
 
Lezione 7: Design Pattern Comportamentali
Lezione 7: Design Pattern ComportamentaliLezione 7: Design Pattern Comportamentali
Lezione 7: Design Pattern Comportamentali
 
Lezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern StrutturaliLezione 6b: Design Pattern Strutturali
Lezione 6b: Design Pattern Strutturali
 
Lezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern StrutturaliLezione 6a: Design Pattern Strutturali
Lezione 6a: Design Pattern Strutturali
 
Lezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern CreazionaliLezione 5: Design Pattern Creazionali
Lezione 5: Design Pattern Creazionali
 
Lezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e SubversionLezione 4: I tool Ant e Subversion
Lezione 4: I tool Ant e Subversion
 
Lezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme ProgrammingLezione 3: Sviluppo in Extreme Programming
Lezione 3: Sviluppo in Extreme Programming
 
Lezione 5: Socket SSL/ TLS
Lezione 5: Socket SSL/ TLSLezione 5: Socket SSL/ TLS
Lezione 5: Socket SSL/ TLS
 
Lezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in JavaLezione 11: Accesso ai RESTful Web Services in Java
Lezione 11: Accesso ai RESTful Web Services in Java
 
Lezione 10: Web Service in Java (2)
Lezione 10: Web Service in Java (2)Lezione 10: Web Service in Java (2)
Lezione 10: Web Service in Java (2)
 
Lezione 9: Web Service in Java
Lezione 9: Web Service in JavaLezione 9: Web Service in Java
Lezione 9: Web Service in Java
 
Lezione 8: Introduzione ai Web Service
Lezione 8: Introduzione ai Web ServiceLezione 8: Introduzione ai Web Service
Lezione 8: Introduzione ai Web Service
 
Lezione 7: Remote Method Invocation e SSL
Lezione 7: Remote Method Invocation e SSLLezione 7: Remote Method Invocation e SSL
Lezione 7: Remote Method Invocation e SSL
 
Lezione 6: Remote Method Invocation
Lezione 6: Remote Method InvocationLezione 6: Remote Method Invocation
Lezione 6: Remote Method Invocation
 
Lezione12: Autenticazione e gestione delle sessioni in REST
Lezione12: Autenticazione e gestione delle sessioni in RESTLezione12: Autenticazione e gestione delle sessioni in REST
Lezione12: Autenticazione e gestione delle sessioni in REST
 
Lezione 1: I/O in Java
Lezione 1: I/O in JavaLezione 1: I/O in Java
Lezione 1: I/O in Java
 
Lezione 2: I thread
Lezione 2: I threadLezione 2: I thread
Lezione 2: I thread
 
Lezione 3: Connessioni TCP
Lezione 3: Connessioni TCPLezione 3: Connessioni TCP
Lezione 3: Connessioni TCP
 
Lezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDPLezione 4: Comunicazione con UDP
Lezione 4: Comunicazione con UDP
 

Dernier

Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptcarlottagalassi
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................giorgiadeascaniis59
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxtecongo2007
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoyanmeng831
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....giorgiadeascaniis59
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxlorenzodemidio01
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxlorenzodemidio01
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxtecongo2007
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.camillaorlando17
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileNicola Rabbi
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxtecongo2007
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................giorgiadeascaniis59
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaSalvatore Cianciabella
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxtecongo2007
 

Dernier (19)

Confronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.pptConfronto tra Sparta e Atene classiche.ppt
Confronto tra Sparta e Atene classiche.ppt
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 

Lezione 1: I metodi agili

  • 1. Lezione 15: I metodi agili Corso di Ingegneria del Software Laurea Magistrale in Ing. Informatica Università degli Studi di Salerno 1
  • 2. Outline ✦ Limitazioni dei metodi tradizionali ✦ I metodi agili: caratteristiche comuni ✦ Introduzione a Extreme Programming (XP) 2
  • 3. Limitazioni dei metodi tradizionali ✦ L’approccio tradizionale all’ingegneria del software, per contrastare i problemi del “Cowboy Programming”, porta allo sviluppo di metodologie che sono: • predittive, nel senso che richiedono un grosso lavoro di previsione e pianificazione prima di cominciare la produzione di codice funzionante • “pesanti”, in termini della quantità e del livello di dettaglio della documentazione da produrre e da validare 3
  • 4. Limitazioni dei metodi tradizionali ✦ Carattere predittivo • evidente nel modello a cascata • anche i modelli iterativi/incrementali tradizionali prevedono iterazioni lunghe (2-6 mesi), per cui all’interno di una iterazione occorre fare un grosso lavoro di pianificazione • spesso modelli flessibili (come RUP) sono interpretati in modo da diventare a cascata, o iterativi ma su iterazioni di lungo periodo 4
  • 5. Limitazioni dei metodi tradizionali ✦ Problemi degli approcci predittivi • in molti domini applicativi le previsioni a medio- lungo termine hanno un elevato rischio di risultare errate • produrre previsioni accurate con largo anticipo richiede uno sforzo che ha un costo non trascurabile rispetto al costo complessivo del progetto • riduzione dei gradi di libertà a disposizione del team di sviluppo durante lo svolgimento del lavoro 5
  • 6. Limitazioni dei metodi tradizionali ✦ Documentazione “pesante” (heavy- weight) • generalmente i metodi tradizionali prescrivono la produzione di un gran numero di artefatti che documentano le diverse fasi del processo • spesso questi artefatti richiedono un elevato livello di dettaglio, e utilizzano formalismi (anche grafici) non banali 6
  • 7. Limitazioni dei metodi tradizionali ✦ Problemi dei documenti “pesanti” • difficoltà di mantenere la sincronizzazione tra il programma e i documenti (e tra i diversi documenti) • il livello di dettaglio richiesto spesso nasconde gli aspetti essenziali • spesso la comprensione dei documenti è più difficile della comprensione del codice (e quindi i documenti non hanno nessuna utilità) • si ritarda il momento in cui è possibile mostrare un prodotto funzionante all’utente • la produzione dei documenti incide significativamente sul costo complessivo del 7 progetto
  • 8. Limitazioni dei metodi tradizionali ✦ Altre limitazioni • spesso i metodi tradizionali, prescrivendo con un elevato livello di dettaglio le operazioni da svolgere, non consentono di sfruttare le abilità specifiche presenti nel team • spesso la ripetibilità del processo viene garantita a scapito della qualità del prodotto finale 8
  • 9. I metodi “agili” ✦ a partire dagli anni ’80, sulla base delle innovazioni metodologiche introdotte in altri settori (es. il sistema di produzione Toyota), diversi autori hanno proposto processi software che fossero adattativi e leggeri invece che predittivi e pesanti ✦ nel 2001, in un incontro tra 17 proponenti di questo tipo di metodi, venne coniato il termine Agile Software Development per indicare gli elementi comuni, e redatto un documento, noto come “The Agile Manifesto”, che riassumeva i principi di base 9
  • 10. I metodi “agili” ✦ Inizialmente accolti come “eretici” dalla comunità Software Engineering ✦ Una serie di successi ha attirato una notevole attenzione su questa famiglia di metodologie ✦ Oggi molti metodi cercano di appropriarsi dell’etichetta “agile” per beneficiare dell’immagine positiva conquistata dai metodi agili (es. lo stesso RUP) 10
  • 11. I valori fondamentali ✦ Individui e interazioni • più importanti di processi e strumenti ✦ Software funzionante • più importante di una documentazione onnicomprensiva ✦ Collaborazione con il cliente • più importante della negoziazione contrattuale ✦ Rispondere al cambiamento • più importante di seguire un piano dettagliato 11
  • 12. I principi fondamentali ✦ Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. • attenzione alla qualità del software, intesa come capacità di soddisfare i bisogni del cliente • il cliente è parte integrante del processo di sviluppo 12
  • 13. I principi fondamentali ✦ Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. • il software deve essere facile da cambiare, e non deve cercare di prevedere tutti i cambiamenti dall’inizio 13
  • 14. I principi fondamentali ✦ Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. • il processo di sviluppo deve essere incrementale e iterativo, con un tempo di iterazione basso • il deliverable principale di ogni iterazione è un programma funzionante con cui l’utente può interagire 14
  • 15. I principi fondamentali ✦ Business people and developers must work together daily throughout the project. • non deve esserci una divisione in compartimenti stagni tra il team di sviluppo e chi gestisce altri aspetti del progetto come il project management o la parte commerciale 15
  • 16. I principi fondamentali ✦ Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. • il compito di un buon manager non è costringere le persone a lavorare e sorvegliare il loro lavoro (in stile “Grande Fratello”), ma rimuovere tutti gli ostacoli che impediscono alle persone di lavorare 16
  • 17. I principi fondamentali ✦ The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. • occorre rimuovere le barriere (anche “architettoniche”) alla comunicazione tra i membri del team di sviluppo 17
  • 18. I principi fondamentali ✦ Working software is the primary measure of progress. • gli artefatti documentali dei metodi “pesanti” non devono essere considerati significativi nella misura dell’avanzamento del progetto • questo non vuol dire che non bisogna produrre documentazione, ma il valore della documentazione è misurato in base alla sua utilità per la comprensione del software 18
  • 19. I principi fondamentali ✦ Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. • non bisogna “sovraccaricare” di lavoro il team con politiche aziendali che incoraggiano o impongono “marce forzate”, straordinari (non retribuiti), atteggiamenti stakhanovistici etc.: nel lungo termine queste politiche pregiudicano sia la qualità del prodotto che la stessa produttività 19
  • 20. I principi fondamentali ✦ Continuous attention to technical excellence and good design enhances agility. • il team di sviluppo deve essere “orgoglioso” del lavoro prodotto • il software ben progettato è più facile da modificare • il software già realizzato può essere modificato per migliorare il design (refactoring) 20
  • 21. I principi fondamentali ✦ Simplicity - the art of maximizing the amount of work not done - is essential. • la semplicità è il criterio fondamentale nelle decisioni di progettazione • semplicità non significa “superficialità” o “ignoranza”: spesso occorre notevole esperienza e competenza per riconoscere ed eliminare ciò che non è necessario 21
  • 22. I principi fondamentali ✦ The best architectures, requirements, and designs emerge from self-organizing teams. • il team di sviluppo deve sfruttare al meglio le abilità e competenze specifiche di ogni persona, invece di basarsi sull’assunzione che le persone sono perfettamente intercambiabili • i metodi agili preferiscono un’organizzazione informale e flessibile del team invece di un’organizzazione rigidamente gerarchica 22
  • 23. I principi fondamentali ✦ At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. • il processo di sviluppo è esso stesso oggetto di aggiornamenti e miglioramenti; i miglioramenti non vengono “calati dall’alto” a partire da considerazioni astratte, ma nascono dalla reale esperienza del team 23
  • 24. Critiche ai metodi agili ✦ I metodi agili sono “indisciplinati” • i metodi agili richiedono generalmente una disciplina rigorosa e un processo ben definito; il processo però è di tipo adattativo e gli artefatti sono “leggeri” • non bisogna confondere i metodi agili con il “Cowboy programming” 24
  • 25. Critiche ai metodi agili ✦ I metodi agili realizzano il software senza progettazione • in realtà il lavoro di progettazione è continuo e distribuito in tutto lo svolgimento del processo anziché essere concentrato all’inizio; anche le parti già realizzate possono essere modificate per migliorare l’architettura del software • quello che manca è una documentazione “pesante” della progettazione 25
  • 26. Critiche ai metodi agili ✦ I metodi agili funzionano solo per team piccoli e localizzati nello stesso posto • ci sono in effetti rapporti contrastanti sull’efficacia di metodi agili in team di grandi dimensioni; in questi casi l’approccio agile suggerisce di partizionare il problema in modo da avere più team piccoli poco interdipendenti • il lavoro a distanza è problematico, ma vi sono esperienze positive in cui il problema della comunicazione è risolto con strumenti informatici (instant messaging, videoconferenza, forum, wiki ecc.) 26
  • 27. Critiche ai metodi agili ✦ I metodi agili richiedono sviluppatori esperti • i metodi agili si basano sull’ipotesi che l’esperienza del team di sviluppo sia commensurata al problema da affrontare; comunque alcuni di essi prevedono esplicitamente dei meccanismi per la formazione “on the job” degli sviluppatori junior • nessun metodo (agile o no) consente la realizzazione di un software di qualità partendo da un team di sviluppo privo di competenze 27
  • 28. Critiche ai metodi agili ✦ I metodi agili richiedono un cambiamento culturale troppo forte • in parte è vero; il team di sviluppo deve essere adeguatamente motivato per effettuare il cambiamento: la scelta di adottare un metodo agile deve essere condivisa dal team, e non può essere imposta dall’alto 28
  • 29. Critiche ai metodi agili ✦ I metodi agili sono difficili da gestire contrattualmente • è vero; nella maggior parte dei casi il cliente richiede che al momento del contratto siano definiti in dettaglio i costi, i tempi e le funzioni del programma (e quindi è necessaria una pianificazione accurata prima della stipula del contratto); i metodi agili invece assumono che ci sia un rapporto di fiducia reciproca tra il cliente e l’azienda che sviluppa il software 29
  • 30. Applicabilità ✦ I metodi agili sono applicabili con successo se: • il team è formato da poche (<20) persone e i membri del team sono sviluppatori esperti • i requisiti cambiano spesso ✦ Possono invece esserci dei problemi se: • il team è di grandi dimensioni e solo pochi tra gli sviluppatori hanno esperienza • l’applicazione è safety critical, e quindi è necessario usare strumenti formali per verificare i risultati di tutte le attività • il contesto aziendale impone rigidità negli aspetti 30 contrattuali e organizzativi
  • 31. Extreme Programming ✦ Uno dei metodi agili più popolari è Extreme Programming (XP) ✦ Sviluppato a partire dal 1996 da Kent Beck nell’ambito di un progetto per la Chrysler ✦ Divenuto popolare all’inizio degli anni 2000, anche grazie all’adozione di alcune pratiche di XP in numerosi progetti open source 31
  • 32. Extreme Programming ✦ I valori fondamentali di XP: • Comunicazione • Semplicità • Feedback • Coraggio • Rispetto 32
  • 33. Ruoli in XP ✦ Il cliente • definisce i requisiti, la loro priorità e il modo di verificarli ✦ I programmatori • esaminano i requisiti e definiscono le attività da svolgere per realizzarli; stimano i tempi delle attività; producono l’implementazione e i test di unità e di integrazione ✦ I tester • implementano ed eseguono i test di accettazione, e rendono i loro risultati accessibili al team 33
  • 34. Ruoli in XP ✦ Il manager • organizza le riunioni, e si occupa degli aspetti politici ed commerciali; NON dice al team cosa deve fare o come e quando deve farlo; NON controlla il lavoro svolto dal team ✦ Il tracker • controlla l’avanzamento del progetto, e mantiene aggiornate le stime sulla velocità del lavoro; inoltre raccoglie i suggerimenti o le difficoltà incontrate dagli sviluppatori, e suggerisce azioni correttive 34
  • 35. Ruoli in XP ✦ Il coach • Controlla che i membri del team applichino in maniera corretta la metodologia; inoltre si occupa degli aspetti motivazionali e delle relazioni interpersonali tra i membri del team ✦ I doomsayer • si assicurano che tutti siano consapevoli dei rischi, e che le cattive notizie non vengano nascoste; ma si assicurano anche che la reazione alle cattive notizie sia proprorzionata alla loro effettiva gravità, evitando reazioni eccessive 35
  • 36. Ruoli in XP ✦ I ruoli descritti non sono mutuamente esclusivi ✦ Scompare la distinzione tradizionale tra analista, progettista e programmatore • i programmatori svolgono anche il lavoro di progettazione • il lavoro di analisi è implicitamente distribuito tra il cliente, i programmatori e i tester 36