SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Migliorare la produttività del software
     con Extreme Programming
    XPLabsTour07@UniModenaReggio
           Mercoledì, 6 giugno 2007

             Francesco Cirillo
            CEO, XPLabs - S.R.L.
          francesco.cirillo@xplabs.com




                                          ah
2
Introduzione
Compito
   Lo sviluppo software può essere più efficace con XP?
       Come?
                                       CONCLUSIONI                     INTRODUZIONE

       Perché?

Obiettivo
                                                       Migliorare
                                AVVERTENZE           la produttività
                                                                          IL CONTESTO
                                PER L'USO             del software
                                                         con XP
   Scelta informata
   Pragmatic Approach             LA RISPOSTA XP                           IL PROBLEMA
3
Il contesto
Business case       use case
   Esempio: vendite on-line
Software = prodotto?!
   Il software è valore in continuo mutamento
Acceptance test
   Il metodo di sviluppo software supporta lo sviluppo del
   business?
4
          Il problema
           “Perché i progetti falliscono?”


                                                                                       Overly optimistic schedules
                       Undermined motivation
                                                                                       Insufficient risk management
                              Weak Personnel
                                                                                       Contractor failure
            Uncontrolled problem employees
                                                                                       Insufficient planning
                                       Heroics
                                                                                       Abandonment of planning under pressure
               Adding people to a late project
                                                                                       Wasted time during the fuzzy front end
                      Noisy, crowded offices
                                                                                       Shortchanged upstream activities
Friction between developers and customers             PEOPLE              PROCESS
                                                                                       Inadequate design
                      Unrealistic expectations
                                                                                       Shortchanged quality assurance
       Lack of effective project sponsorship
                                                                                       Insufficient management controls
                   Lack of stakeholder buy-in
                                                                                       Premature or overly frequent convergence
                            Lack of user input                 Classic
                                                               Mistakes                Omitting necessary tasks from estimates
               Politics placed over substance
                                                                                       Planning to catch up later
                               Wishful thinking
                                                                                       Code-like-hell programming



           Silver-bullet syndrome
      Overestimated savings                                                                         Requirements gold-plating
      from new tools or methods
                                                                                                    Feature creep
            Switching tools in            TECHNOLOGY
                                                                                    PRODUCT         Developer gold-plating
            the middle of a project
                                                                                                    Push-me, pull-me negotiation
             Lack of automated
             source-code control                                                                    Research-oriented development

Rielaborato da Rapid Development di Steve McConnell
5
           Il problema
           “Perché i progetti falliscono?”
                      Complessità
                      Velocità
                                                                                       Overly optimistic schedules
                       Undermined motivation
                                                                                       Insufficient risk management
                              Weak Personnel
                                                                                       Contractor failure
            Uncontrolled problem employees
                                                                                       Insufficient planning
                                       Heroics
                                                                                       Abandonment of planning under pressure
               Adding people to a late project
                                                                                       Wasted time during the fuzzy front end
                      Noisy, crowded offices
                                                                                       Shortchanged upstream activities
Friction between developers and customers             PEOPLE              PROCESS
                                                                                       Inadequate design
                      Unrealistic expectations
                                                                                       Shortchanged quality assurance
       Lack of effective project sponsorship
                                                                                       Insufficient management controls
                   Lack of stakeholder buy-in
                                                                                       Premature or overly frequent convergence
                            Lack of user input                 Classic
                                                               Mistakes                Omitting necessary tasks from estimates
               Politics placed over substance
                                                                                       Planning to catch up later
                               Wishful thinking
                                                                                       Code-like-hell programming



           Silver-bullet syndrome
      Overestimated savings                                                                         Requirements gold-plating
      from new tools or methods
                                                                                                    Feature creep
            Switching tools in            TECHNOLOGY
                                                                                    PRODUCT         Developer gold-plating
            the middle of a project
                                                                                                    Push-me, pull-me negotiation
             Lack of automated
             source-code control                                                                    Research-oriented development

Rielaborato da Rapid Development di Steve McConnell
6
La risposta XP
Sostituire il motore dei valori con: comunicazione,
feedback, semplicità, coraggio, rispetto
Applicare pratiche volte a ridurre la complessità di
business, tecnica e di comunicazione
7
La risposta XP



        Massimizzare le opportunità di business
        Massimizzare le opportunità di business

         Minimizzare ililcosto del cambiamento
         Minimizzare costo del cambiamento

          Impiegare al meglio le risorse umane
           Impiegare al meglio le risorse umane

        Sapere come lavoriamo/stiamo lavorando
         Sapere come lavoriamo/stiamo lavorando
8
La risposta XP



        Massimizzare le opportunità di business
        Massimizzare le opportunità di business

         Minimizzare ililcosto del cambiamento
         Minimizzare costo del cambiamento

          Impiegare al meglio le risorse umane
           Impiegare al meglio le risorse umane

        Sapere come lavoriamo/stiamo lavorando
         Sapere come lavoriamo/stiamo lavorando
9
Massimizzare le opportunità di business
Identificare nuove opportunità di business
Assicurare ritorno investimenti rapido e frequente
Consentire di cambiare quando necessario


 “Since the whole system development starts from what the
  “Since the whole system development starts from what the
 users wish to be able to do with the system, we build the
  users wish to be able to do with the system, we build the
 system from the users’ point of view. In this way, it will be
  system from the users’ point of view. In this way, it will be
 easy to discuss the requirements model with the users, and
  easy to discuss the requirements model with the users, and
 changes to the model will be simple to make”
  changes to the model will be simple to make”
                                       --Ivar Jacobson
                                        --Ivar Jacobson
10
User Story
11
Il Planning Game
                                        Splitting




                                Natura User Story Splittate
    Legoland di utilità




                          Emergent Value
                                                     Natura delle User Story
12
Un esempio: Il videogioco di ChengQi
13
Un esempio: Il videogioco di ChengQi

                                                                                              4 settimane
                                                  Partita
                                                  Space
                                                 Invader
                                                                                           2,5 settimane
  Movimento
  orizzontale        Movimento
  cannoncino         orizzontale               Strategia                 Strategia
                     astronave                                                                 Incremento
                                                attacco                   attacco
                                                                                                punteggio
                                                 UFO2                      UFO1
 Movimento               Strategia
  verticale               attacco                                                     Collisione
    UFO                  astronave                          Balistica                 proiettile
                                                            proiettile               cannoncino
                                   Strategia               cannoncino
                                    attacco
        Balistica                    UFO3                                                      Collisione
        proiettile                                                Collisione
          UFO                                                                                   proiettile
                                                                  proiettile                   UFO e nave
                                           Morte                   barriera
                                        cannoncino

        Rotazione
          360°
       cannoncino                    Movimento                                                      Collisione
                                      verticale                     Collisione                      asteroide
                                      asteroide                     proiettile                     cannoncino
                                                                    asteroide


                               Partita
                              Asteroids
14
Vantaggi
  Release più piccole
     Flussi di cassa immediati e continui
  Maggiore accuratezza nelle stime
  Tracking più efficace
  Più storie, più opportunità di business
  Maggiore conoscenza del sistema
15
La risposta XP



        Massimizzare le opportunità di business
        Massimizzare le opportunità di business

         Minimizzare ililcosto del cambiamento
         Minimizzare costo del cambiamento

          Impiegare al meglio le risorse umane
           Impiegare al meglio le risorse umane

        Sapere come lavoriamo/stiamo lavorando
         Sapere come lavoriamo/stiamo lavorando
16
Minimizzare il costo del cambiamento
Per supportare il cambiamento, i costi marginali per unità
addizionale di funzionalità devono essere molto bassi e il
cambiamento deve avvenire in breve tempo
Possiamo assumere che il costo marginale e il tempo
necessari per effettuare il cambiamento possano essere
spiegati dallo sforzo necessario per regolare la
complessità necessaria per introdurre il cambiamento
richiesto nel sistema
Seguono una serie di interessanti relazioni...
17
Relazioni utili
   Meno strutturalmente complesso è il sistema corrente, e
   meno intrinsecamente complesso è il problema da
   risolvere, e minore sarà lo sforzo e quindi i costi e i tempi
   necessari per introdurre la nuova funzionalità
   Se per complessità marginale consideriamo l’incremento
   di complessità del sistema necessario per introdurre la
   nuova funzionalità, al fine di favorire il cambiamento nel
   tempo, lo sforzo da applicare dovrà essere indirizzato a
   ridurre la complessità marginale fino a renderla negativa
18
Ridurre la complessità marginale
   Come?


           Mantenere bassa la complessità del sistema
           Mantenere bassa la complessità del sistema

      Mantenere bassa la complessità intrinseca del problema
      Mantenere bassa la complessità intrinseca del problema
19
           Mantenere bassa la complessità del sistema
               Il Refactoring:
                   Aumentare la capacità del codice di rivelare le intenzioni di
Lightweight
                   design, a qualsiasi membro del team, alla prima occhiata
 Lightweight
                   Migliorare la struttura interna del sistema, consentendo alle
                   necessarie astrazioni di emergere



          “Our job is to solve problems, not spoonfeed compilers (…)
           “Our job is to solve problems, not spoonfeed compilers (…)
          We need clarity so we can communicate using our code. We
           We need clarity so we can communicate using our code. We
          value conciseness and the ability to express aarequirement in
           value conciseness and the ability to express requirement in
          code accurately and efficiently”.
           code accurately and efficiently”.
                                                --Dave Thomas
                                                 --Dave Thomas
20
 Mantenere bassa la complessità del sistema
     for(int i i==0; i i<<employees.size(); i++) {{
      for(int 0; employees.size(); i++)
          Employee employee ==(Employee) employees.get(i);
           Employee employee (Employee) employees.get(i);
          System.out.println(employee.getName());
           System.out.println(employee.getName());
          System.out.println(employee.getSalary());
           System.out.println(employee.getSalary());
     }}

                  employees.forEach(printSlip);
                   employees.forEach(printSlip);


“Our job is to solve problems, not spoonfeed compilers (…)
 “Our job is to solve problems, not spoonfeed compilers (…)
We need clarity so we can communicate using our code. We
 We need clarity so we can communicate using our code. We
value conciseness and the ability to express aarequirement in
 value conciseness and the ability to express requirement in
code accurately and efficiently”.
 code accurately and efficiently”.
                                      --Dave Thomas
                                       --Dave Thomas
21
Mantenere bassa la complessità del sistema
Malleabilità




Continua applicazione di sforzo
    Identificare possibilità di refactoring
    Assicurare che le strutture dipendono dalle funzionalità
22
Perché rifattorizzare continuamente?!
   Ordine e complessità
   Design anticipatorio
      Managing complexity with complexity
   Design emergente
      Managing complexity with simplicity
Mantenere bassa la complessità intrinseca                  23
del problema
Per supportare il cambiamento, la complessità intrinseca
della nuova funzionalità da introdurre nel sistema deve
essere continuamente ridotta in componenti ortogonali
più piccoli
   No dividi e conquista
   Guidato da test
24
Strategie di sviluppo


               Step 1:
                Step 1:                               Obiettivo:
         Stanze disponibili                            Obiettivo:
          Stanze disponibili                          Fare una
                                                       Fare una
          in un giorno per
           in un giorno per                      prenotazione in un
           un albergo con                         prenotazione in un
            un albergo con                         albergo per un
                                                    albergo per un
             una stanza
              una stanza                          periodo di tempo
                                                   periodo di tempo




            Step 2:
             Step 2:              Step 3:
                                    Step 3:
     Stanze disponibili
      Stanze disponibili   Stanze disponibili
                            Stanze disponibili
      in un giorno per
        in un giorno per    in un giorno per
                              in un giorno per
       un albergo con
         un albergo con      un albergo con
                               un albergo con
       una stanza con
         una stanza con      una stanza con
                               una stanza con
     una prenotazione
       una prenotazione    una prenotazione
                             una prenotazione
         in un giorno
          in un giorno        in un periodo
                                in un periodo
25
Test-Driven versus Test-First
   Test Driven =
      Test-First
      Incrementalità
      No gold plating
      No testing




          Some Themes of Quality Assurance
           Some Themes of Quality Assurance
          Quality is everybody’s business
           Quality is everybody’s business
          Quality must be an early focus of aaproject
           Quality must be an early focus of project
          The best way to achieve quality is to build it in
           The best way to achieve quality is to build it in
                                      --James Tomayko
                                       --James Tomayko
26
E le architetture?
   Passo 1: Esplorazione
   Passo 2: Interfacce minimali (no persistenza)
   Passo 3: “Seleziona Progetto” (in memoria)
   Passo 4: Distribuzione via socket
   Passo 5: “Seleziona Progetto” (in file system)
   Passo 6: Gestione comandi via applet-servlet
   Passo 7: “Seleziona Progetto (su DBMS)
   Passo 8: Miglioramento interfacce
27
La complessità può aumentare…
  Il processo non è deterministico
  I due cappelli
  Il “maialino” fa aumentare la complessità
         Complessità del sistema




                                   Tempo
28
La risposta XP



        Massimizzare le opportunità di business
        Massimizzare le opportunità di business

         Minimizzare ililcosto del cambiamento
         Minimizzare costo del cambiamento

          Impiegare al meglio le risorse umane
           Impiegare al meglio le risorse umane

        Sapere come lavoriamo/stiamo lavorando
         Sapere come lavoriamo/stiamo lavorando
29
Impiegare al meglio le risorse umane
In XP:
   Il sistema viene sviluppato da piccoli team
   Ogni sviluppatore offre le sue stime per ciascuna user story o
   engineering task e quindi firma per quelle per le quali intende
   assumersi la responsabilità
   I membri del team lavorano in coppie
   Gli sviluppatori ruotano frequentemente
   Il team lavora in open space
   Ruoli nel team
30
Impiegare al meglio le risorse umane (continua)
Path of Communication:
   Intra-Team Path of Communication
   Intra-Pair Path of Communication
   Inter-Pair Path of Communication
   Constructive Path of Communication
31
Impiegare al meglio le risorse umane (continua)
Modello responsabilità-collaborazione
Despecializzazione
Metafora degli impianti
Ispezioni e Pair Programming
Turn-over                  Results of inspections
                            Results of inspections
                           Fagan’s data indicate 82 percent
                            Fagan’s data indicate 82 percent
Motivazione efficace       of all errors could be found with
                            of all errors could be found with
   No signing-up           inspections. Some applications
                            inspections. Some applications
                           had rates of 93 percent
                            had rates of 93 percent
No overtime                “Defects found” decrease as
                            “Defects found” decrease as
                           speed of inspections increases
                            speed of inspections increases
                                         --James Tomayko
                                          --James Tomayko
32
La risposta XP



        Massimizzare le opportunità di business
        Massimizzare le opportunità di business

         Minimizzare ililcosto del cambiamento
         Minimizzare costo del cambiamento

          Impiegare al meglio le risorse umane
           Impiegare al meglio le risorse umane

        Sapere come lavoriamo/stiamo lavorando
         Sapere come lavoriamo/stiamo lavorando
33
            Tracciare il progetto XP
            Perché
               Sapere come lavora/sta lavorando la mia organizzazione
                     Quanto guadagna la mia organizzazione
                     Quanto è efficace nella produzione di software
Functional
 Functional
 Oriented
  Oriented
               Accertare il progresso del progetto
                     “Ritmo” versus “completamento”
               Imparare a stimare
            Cosa
  ROI
   ROI
Oriented
               Misure di valore
 Oriented
               Misure di processo
               Misure di prodotto
EasyTracking II - xplabs
                           34
EasyTracking II - xplabs
                           35
EasyTracking II - xplabs
                           36
37
La lavagna del team Bees di XPLabs
                                                              Rythm                                                                                                                                      Rythm
      10                                                                                                                                        10

       9                                                                                                                                         9

       8                                                                                                                                         8

       7                                                                                                                                         7

       6                                                                                                                                         6

       5                                                                                                                                         5

       4                               Iteration 1                                                                                               4                                Iteration 1


       3                                                                                                                                         3

       2                                                                                                                     Ite razione 4       2                                                                                                                       Ite razione 4


       1                                                                              Iteration 2     Iteration 3                                1                                                                                Iteration 2     Iteration 3


       0                                                                                                                                         0
        23 feb 2004     28 feb 2004    4 mar 2004      9 mar 2004   1 mar 2004
                                                                     4             1 mar 2004
                                                                                    9               24 mar          29 mar         3 apr 2004     23 feb 2004     28 feb 2004    4 mar 2004       9 mar 2004    1 mar 2004
                                                                                                                                                                                                                 4             1 mar 2004
                                                                                                                                                                                                                                9               24 mar          29 mar         3 apr 2004




                      Accepted                      Completed                    Not Completed                      Average                                     Accepted                      Completed                      Not Completed                      Average




                                                             McCabe
                                                              McCabe                                                                                                                               DSI / Class
       1,6
        1,6                                                                                                                                      32

      1,55
       1,55                                                                                                                                      30

       1,5
        1,5                                                                                                                                      28

      1,45
       1,45                                                                                                                                      26

       1,4
        1,4                                                                                                                                      24

      1,35
       1,35                                                                                                                                      22

       1,3
        1,3                                                                                                                                      20
      1,25
       1,25                                                                                                                                      18
       1,2                                                                                                                                      23 feb 2004     28 feb 2004     4 mar 2004       9 mar 2004    14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004                 3 apr 2004
        1,2

      1,15
       1,15

       1,1

                                                                                                                                                                                  Number of Classes
        1,1
      1,05
       1,05
         11                                                                                                                                       60
      23 feb 2004 28 feb 2004 4 mar 2004
       23 feb 2004 28 feb 2004 4 mar 2004            99mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004
                                                        mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004                   3 apr 2004
                                                                                                                                   3 apr 2004     55

                                                                                                                                                  50



                                                     DSI / Method
                                                                                                                                                  45

                                                                                                                                                  40
       4,8                                                                                                                                        35
       4,7
       4,6                                                                                                                                        30
       4,5
                                                                                                                                                  25
       4,4
       4,3                                                                                                                                        20
       4,2
       4,1                                                                                                                                       15
         4                                                                                                                                       23 feb 2004 28 feb 2004         4 mar 2004      9 mar 2004    14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004                3 apr 2004
       3,9
       3,8
       3,7
       3,6
       3,5

                                                                                                                                                                Number of Classes and Methods
       3,4                                                                                                                                       375
      23 feb 2004     28 feb 2004     4 mar 2004      9 mar 2004    14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004                3 apr 2004     350
                                                                                                                                                 400
                                                                                                                                                  325
                                                                                                                                                 375
                                                                                                                                                  300

                                                                    DSI
                                                                                                                                                 350
                                                                                                                                                  275
                                                                                                                                                 325
                                                                                                                                                  250
                                                                                                                                                 300
      1500                                                                                                                                       275
                                                                                                                                                  225
      1400                                                                                                                                       250
                                                                                                                                                  200
                                                                                                                                                 225
      1300                                                                                                                                        175
                                                                                                                                                 200
      1200                                                                                                                                        150
                                                                                                                                                 175
                                                                                                                                                  125
                                                                                                                                                 150
      1100
                                                                                                                                                  100
                                                                                                                                                 125
      1000                                                                                                                                       100
                                                                                                                                                   75
       900                                                                                                                                        75
                                                                                                                                                   50
                                                                                                                                                  50
       800                                                                                                                                         25
                                                                                                                                                  25
       700                                                                                                                                         00
       600                                                                                                                                      23 feb 2004 28 feb 2004 44mar 2004
                                                                                                                                                 23 feb 2004 28 feb 2004   mar 2004              99mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 3 apr 200
                                                                                                                                                                                                    mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 apr 2004

       500
                                                                                                                                                                  Test Classes                Test Methods           Application Classes                 Application Methods
        23 feb 2004 28 feb 2004        4 mar 2004     9 mar 2004    14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004               3 apr 2004
                                                                                                                                                                     Test classes               Test methods           Application classes                Application methods
38
La tecnica del pomodoro
  Quando
     Ogni 30 minuti
  Processo
     La raccolta
     La rilevazione
     L’analisi
  Vantaggi
     Motivante
     Responsabilizzante
     Efficace
           No interruzioni
39
La risposta XP



        Massimizzare le opportunità di business
        Massimizzare le opportunità di business

         Minimizzare ililcosto del cambiamento
         Minimizzare costo del cambiamento

          Impiegare al meglio le risorse umane
           Impiegare al meglio le risorse umane

        Sapere come lavoriamo/stiamo lavorando
         Sapere come lavoriamo/stiamo lavorando
40
XP: Avvertenze per l’uso



                  Cosa èèXP
                   Cosa XP

                 Cosa non èèXP
                  Cosa non XP

               Quando fallisce XP
               Quando fallisce XP
41
Cosa è XP?!
42
L’importanza dei principi in XP2ed
43
Cosa non è XP?!
  Non è hacking
      Non è NO analisi
      Non è NO design
      Non è NO pianificazione
      Non è caos
  Non è un silver bullet
44
Quando fallisce XP?!
   Mancanza di
       Presenza continua del cliente
       Una adeguata suite di test
       Rifattorizzazione continua
       Disciplina di team
   Alto costo rifattorizzazione
       Tool
   XP fallisce se mancano i valori
45
Conclusioni
Improving Software Productivity
   Get the Best From People
   Make Steps More Efficient
   Eliminate Steps
   Eliminate Rework
   Build Simpler Products
   Reuse Components

XP e ingegneria del software
46
Risorse – Da dove iniziare?
47
Domande?
  Riferimenti:
      Sito XPLabs:
      http://www.xplabs.it
      Risorse XPLabs:
      http://www.xplabs.it/201010.html
      Tecnica del Pomodoro:
      http://www.xplabs.it/fc2.html
      Gruppo Pomodoro - EasyTracking:
      http://groups.yahoo.com/group/pomodoro
      Gruppo Extreme Programming - Italia:
      http://it.groups.yahoo.com/group/extremeprogramming-it/

Weitere ähnliche Inhalte

Mehr von Francesco Cirillo

20080619 Diventare Agili Dalla Università ad un Team Agile @UniRM3 Roma-IT [ITA]
20080619 Diventare Agili Dalla Università ad un Team Agile @UniRM3 Roma-IT [ITA]20080619 Diventare Agili Dalla Università ad un Team Agile @UniRM3 Roma-IT [ITA]
20080619 Diventare Agili Dalla Università ad un Team Agile @UniRM3 Roma-IT [ITA]Francesco Cirillo
 
20080124 XPLabs Tour08 @UniAQ.it L'Aquila-IT [ITA]
20080124 XPLabs Tour08 @UniAQ.it L'Aquila-IT [ITA]20080124 XPLabs Tour08 @UniAQ.it L'Aquila-IT [ITA]
20080124 XPLabs Tour08 @UniAQ.it L'Aquila-IT [ITA]Francesco Cirillo
 
20071201 Eliminare For @JavaDayRoma2 Roma-IT [ITA]
20071201 Eliminare For @JavaDayRoma2 Roma-IT [ITA]20071201 Eliminare For @JavaDayRoma2 Roma-IT [ITA]
20071201 Eliminare For @JavaDayRoma2 Roma-IT [ITA]Francesco Cirillo
 
20071123 XPLabs Tour07 Bonsai @ItalianAgileDay2007 Bologna-IT [ITA]
20071123 XPLabs Tour07 Bonsai @ItalianAgileDay2007 Bologna-IT [ITA]20071123 XPLabs Tour07 Bonsai @ItalianAgileDay2007 Bologna-IT [ITA]
20071123 XPLabs Tour07 Bonsai @ItalianAgileDay2007 Bologna-IT [ITA]Francesco Cirillo
 
20071027 XPLabs Tour Bonsai @LinuxDayRoma2007 Roma-IT [ITA]
20071027 XPLabs Tour Bonsai @LinuxDayRoma2007 Roma-IT [ITA]20071027 XPLabs Tour Bonsai @LinuxDayRoma2007 Roma-IT [ITA]
20071027 XPLabs Tour Bonsai @LinuxDayRoma2007 Roma-IT [ITA]Francesco Cirillo
 
20061028 XPLabs Tour06 Bonsai @LinuxDayRoma2006 Roma-IT [ITA]
20061028 XPLabs Tour06 Bonsai @LinuxDayRoma2006 Roma-IT [ITA]20061028 XPLabs Tour06 Bonsai @LinuxDayRoma2006 Roma-IT [ITA]
20061028 XPLabs Tour06 Bonsai @LinuxDayRoma2006 Roma-IT [ITA]Francesco Cirillo
 
20060627 SOA @JavaConference2006 Milano-IT [ITA]
20060627 SOA @JavaConference2006 Milano-IT [ITA]20060627 SOA @JavaConference2006 Milano-IT [ITA]
20060627 SOA @JavaConference2006 Milano-IT [ITA]Francesco Cirillo
 
20051216 Il Prossimo Passo @Italian AgileDay2005 Milano-IT [ITA]
20051216 Il Prossimo Passo @Italian AgileDay2005 Milano-IT [ITA]20051216 Il Prossimo Passo @Italian AgileDay2005 Milano-IT [ITA]
20051216 Il Prossimo Passo @Italian AgileDay2005 Milano-IT [ITA]Francesco Cirillo
 
20050621 Ridurre il Costo del Cambiamento Applicando il Design Object Oriente...
20050621 Ridurre il Costo del Cambiamento Applicando il Design Object Oriente...20050621 Ridurre il Costo del Cambiamento Applicando il Design Object Oriente...
20050621 Ridurre il Costo del Cambiamento Applicando il Design Object Oriente...Francesco Cirillo
 
20040503 Easy Tracking @AICA2004 Milano-IT [ITA]
20040503 Easy Tracking @AICA2004 Milano-IT [ITA]20040503 Easy Tracking @AICA2004 Milano-IT [ITA]
20040503 Easy Tracking @AICA2004 Milano-IT [ITA]Francesco Cirillo
 

Mehr von Francesco Cirillo (10)

20080619 Diventare Agili Dalla Università ad un Team Agile @UniRM3 Roma-IT [ITA]
20080619 Diventare Agili Dalla Università ad un Team Agile @UniRM3 Roma-IT [ITA]20080619 Diventare Agili Dalla Università ad un Team Agile @UniRM3 Roma-IT [ITA]
20080619 Diventare Agili Dalla Università ad un Team Agile @UniRM3 Roma-IT [ITA]
 
20080124 XPLabs Tour08 @UniAQ.it L'Aquila-IT [ITA]
20080124 XPLabs Tour08 @UniAQ.it L'Aquila-IT [ITA]20080124 XPLabs Tour08 @UniAQ.it L'Aquila-IT [ITA]
20080124 XPLabs Tour08 @UniAQ.it L'Aquila-IT [ITA]
 
20071201 Eliminare For @JavaDayRoma2 Roma-IT [ITA]
20071201 Eliminare For @JavaDayRoma2 Roma-IT [ITA]20071201 Eliminare For @JavaDayRoma2 Roma-IT [ITA]
20071201 Eliminare For @JavaDayRoma2 Roma-IT [ITA]
 
20071123 XPLabs Tour07 Bonsai @ItalianAgileDay2007 Bologna-IT [ITA]
20071123 XPLabs Tour07 Bonsai @ItalianAgileDay2007 Bologna-IT [ITA]20071123 XPLabs Tour07 Bonsai @ItalianAgileDay2007 Bologna-IT [ITA]
20071123 XPLabs Tour07 Bonsai @ItalianAgileDay2007 Bologna-IT [ITA]
 
20071027 XPLabs Tour Bonsai @LinuxDayRoma2007 Roma-IT [ITA]
20071027 XPLabs Tour Bonsai @LinuxDayRoma2007 Roma-IT [ITA]20071027 XPLabs Tour Bonsai @LinuxDayRoma2007 Roma-IT [ITA]
20071027 XPLabs Tour Bonsai @LinuxDayRoma2007 Roma-IT [ITA]
 
20061028 XPLabs Tour06 Bonsai @LinuxDayRoma2006 Roma-IT [ITA]
20061028 XPLabs Tour06 Bonsai @LinuxDayRoma2006 Roma-IT [ITA]20061028 XPLabs Tour06 Bonsai @LinuxDayRoma2006 Roma-IT [ITA]
20061028 XPLabs Tour06 Bonsai @LinuxDayRoma2006 Roma-IT [ITA]
 
20060627 SOA @JavaConference2006 Milano-IT [ITA]
20060627 SOA @JavaConference2006 Milano-IT [ITA]20060627 SOA @JavaConference2006 Milano-IT [ITA]
20060627 SOA @JavaConference2006 Milano-IT [ITA]
 
20051216 Il Prossimo Passo @Italian AgileDay2005 Milano-IT [ITA]
20051216 Il Prossimo Passo @Italian AgileDay2005 Milano-IT [ITA]20051216 Il Prossimo Passo @Italian AgileDay2005 Milano-IT [ITA]
20051216 Il Prossimo Passo @Italian AgileDay2005 Milano-IT [ITA]
 
20050621 Ridurre il Costo del Cambiamento Applicando il Design Object Oriente...
20050621 Ridurre il Costo del Cambiamento Applicando il Design Object Oriente...20050621 Ridurre il Costo del Cambiamento Applicando il Design Object Oriente...
20050621 Ridurre il Costo del Cambiamento Applicando il Design Object Oriente...
 
20040503 Easy Tracking @AICA2004 Milano-IT [ITA]
20040503 Easy Tracking @AICA2004 Milano-IT [ITA]20040503 Easy Tracking @AICA2004 Milano-IT [ITA]
20040503 Easy Tracking @AICA2004 Milano-IT [ITA]
 

20070606 XPLabs Tour07 @UniModena ReggioEmilia-IT [ITA]

  • 1. Migliorare la produttività del software con Extreme Programming XPLabsTour07@UniModenaReggio Mercoledì, 6 giugno 2007 Francesco Cirillo CEO, XPLabs - S.R.L. francesco.cirillo@xplabs.com ah
  • 2. 2 Introduzione Compito Lo sviluppo software può essere più efficace con XP? Come? CONCLUSIONI INTRODUZIONE Perché? Obiettivo Migliorare AVVERTENZE la produttività IL CONTESTO PER L'USO del software con XP Scelta informata Pragmatic Approach LA RISPOSTA XP IL PROBLEMA
  • 3. 3 Il contesto Business case use case Esempio: vendite on-line Software = prodotto?! Il software è valore in continuo mutamento Acceptance test Il metodo di sviluppo software supporta lo sviluppo del business?
  • 4. 4 Il problema “Perché i progetti falliscono?” Overly optimistic schedules Undermined motivation Insufficient risk management Weak Personnel Contractor failure Uncontrolled problem employees Insufficient planning Heroics Abandonment of planning under pressure Adding people to a late project Wasted time during the fuzzy front end Noisy, crowded offices Shortchanged upstream activities Friction between developers and customers PEOPLE PROCESS Inadequate design Unrealistic expectations Shortchanged quality assurance Lack of effective project sponsorship Insufficient management controls Lack of stakeholder buy-in Premature or overly frequent convergence Lack of user input Classic Mistakes Omitting necessary tasks from estimates Politics placed over substance Planning to catch up later Wishful thinking Code-like-hell programming Silver-bullet syndrome Overestimated savings Requirements gold-plating from new tools or methods Feature creep Switching tools in TECHNOLOGY PRODUCT Developer gold-plating the middle of a project Push-me, pull-me negotiation Lack of automated source-code control Research-oriented development Rielaborato da Rapid Development di Steve McConnell
  • 5. 5 Il problema “Perché i progetti falliscono?” Complessità Velocità Overly optimistic schedules Undermined motivation Insufficient risk management Weak Personnel Contractor failure Uncontrolled problem employees Insufficient planning Heroics Abandonment of planning under pressure Adding people to a late project Wasted time during the fuzzy front end Noisy, crowded offices Shortchanged upstream activities Friction between developers and customers PEOPLE PROCESS Inadequate design Unrealistic expectations Shortchanged quality assurance Lack of effective project sponsorship Insufficient management controls Lack of stakeholder buy-in Premature or overly frequent convergence Lack of user input Classic Mistakes Omitting necessary tasks from estimates Politics placed over substance Planning to catch up later Wishful thinking Code-like-hell programming Silver-bullet syndrome Overestimated savings Requirements gold-plating from new tools or methods Feature creep Switching tools in TECHNOLOGY PRODUCT Developer gold-plating the middle of a project Push-me, pull-me negotiation Lack of automated source-code control Research-oriented development Rielaborato da Rapid Development di Steve McConnell
  • 6. 6 La risposta XP Sostituire il motore dei valori con: comunicazione, feedback, semplicità, coraggio, rispetto Applicare pratiche volte a ridurre la complessità di business, tecnica e di comunicazione
  • 7. 7 La risposta XP Massimizzare le opportunità di business Massimizzare le opportunità di business Minimizzare ililcosto del cambiamento Minimizzare costo del cambiamento Impiegare al meglio le risorse umane Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando Sapere come lavoriamo/stiamo lavorando
  • 8. 8 La risposta XP Massimizzare le opportunità di business Massimizzare le opportunità di business Minimizzare ililcosto del cambiamento Minimizzare costo del cambiamento Impiegare al meglio le risorse umane Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando Sapere come lavoriamo/stiamo lavorando
  • 9. 9 Massimizzare le opportunità di business Identificare nuove opportunità di business Assicurare ritorno investimenti rapido e frequente Consentire di cambiare quando necessario “Since the whole system development starts from what the “Since the whole system development starts from what the users wish to be able to do with the system, we build the users wish to be able to do with the system, we build the system from the users’ point of view. In this way, it will be system from the users’ point of view. In this way, it will be easy to discuss the requirements model with the users, and easy to discuss the requirements model with the users, and changes to the model will be simple to make” changes to the model will be simple to make” --Ivar Jacobson --Ivar Jacobson
  • 11. 11 Il Planning Game Splitting Natura User Story Splittate Legoland di utilità Emergent Value Natura delle User Story
  • 12. 12 Un esempio: Il videogioco di ChengQi
  • 13. 13 Un esempio: Il videogioco di ChengQi 4 settimane Partita Space Invader 2,5 settimane Movimento orizzontale Movimento cannoncino orizzontale Strategia Strategia astronave Incremento attacco attacco punteggio UFO2 UFO1 Movimento Strategia verticale attacco Collisione UFO astronave Balistica proiettile proiettile cannoncino Strategia cannoncino attacco Balistica UFO3 Collisione proiettile Collisione UFO proiettile proiettile UFO e nave Morte barriera cannoncino Rotazione 360° cannoncino Movimento Collisione verticale Collisione asteroide asteroide proiettile cannoncino asteroide Partita Asteroids
  • 14. 14 Vantaggi Release più piccole Flussi di cassa immediati e continui Maggiore accuratezza nelle stime Tracking più efficace Più storie, più opportunità di business Maggiore conoscenza del sistema
  • 15. 15 La risposta XP Massimizzare le opportunità di business Massimizzare le opportunità di business Minimizzare ililcosto del cambiamento Minimizzare costo del cambiamento Impiegare al meglio le risorse umane Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando Sapere come lavoriamo/stiamo lavorando
  • 16. 16 Minimizzare il costo del cambiamento Per supportare il cambiamento, i costi marginali per unità addizionale di funzionalità devono essere molto bassi e il cambiamento deve avvenire in breve tempo Possiamo assumere che il costo marginale e il tempo necessari per effettuare il cambiamento possano essere spiegati dallo sforzo necessario per regolare la complessità necessaria per introdurre il cambiamento richiesto nel sistema Seguono una serie di interessanti relazioni...
  • 17. 17 Relazioni utili Meno strutturalmente complesso è il sistema corrente, e meno intrinsecamente complesso è il problema da risolvere, e minore sarà lo sforzo e quindi i costi e i tempi necessari per introdurre la nuova funzionalità Se per complessità marginale consideriamo l’incremento di complessità del sistema necessario per introdurre la nuova funzionalità, al fine di favorire il cambiamento nel tempo, lo sforzo da applicare dovrà essere indirizzato a ridurre la complessità marginale fino a renderla negativa
  • 18. 18 Ridurre la complessità marginale Come? Mantenere bassa la complessità del sistema Mantenere bassa la complessità del sistema Mantenere bassa la complessità intrinseca del problema Mantenere bassa la complessità intrinseca del problema
  • 19. 19 Mantenere bassa la complessità del sistema Il Refactoring: Aumentare la capacità del codice di rivelare le intenzioni di Lightweight design, a qualsiasi membro del team, alla prima occhiata Lightweight Migliorare la struttura interna del sistema, consentendo alle necessarie astrazioni di emergere “Our job is to solve problems, not spoonfeed compilers (…) “Our job is to solve problems, not spoonfeed compilers (…) We need clarity so we can communicate using our code. We We need clarity so we can communicate using our code. We value conciseness and the ability to express aarequirement in value conciseness and the ability to express requirement in code accurately and efficiently”. code accurately and efficiently”. --Dave Thomas --Dave Thomas
  • 20. 20 Mantenere bassa la complessità del sistema for(int i i==0; i i<<employees.size(); i++) {{ for(int 0; employees.size(); i++) Employee employee ==(Employee) employees.get(i); Employee employee (Employee) employees.get(i); System.out.println(employee.getName()); System.out.println(employee.getName()); System.out.println(employee.getSalary()); System.out.println(employee.getSalary()); }} employees.forEach(printSlip); employees.forEach(printSlip); “Our job is to solve problems, not spoonfeed compilers (…) “Our job is to solve problems, not spoonfeed compilers (…) We need clarity so we can communicate using our code. We We need clarity so we can communicate using our code. We value conciseness and the ability to express aarequirement in value conciseness and the ability to express requirement in code accurately and efficiently”. code accurately and efficiently”. --Dave Thomas --Dave Thomas
  • 21. 21 Mantenere bassa la complessità del sistema Malleabilità Continua applicazione di sforzo Identificare possibilità di refactoring Assicurare che le strutture dipendono dalle funzionalità
  • 22. 22 Perché rifattorizzare continuamente?! Ordine e complessità Design anticipatorio Managing complexity with complexity Design emergente Managing complexity with simplicity
  • 23. Mantenere bassa la complessità intrinseca 23 del problema Per supportare il cambiamento, la complessità intrinseca della nuova funzionalità da introdurre nel sistema deve essere continuamente ridotta in componenti ortogonali più piccoli No dividi e conquista Guidato da test
  • 24. 24 Strategie di sviluppo Step 1: Step 1: Obiettivo: Stanze disponibili Obiettivo: Stanze disponibili Fare una Fare una in un giorno per in un giorno per prenotazione in un un albergo con prenotazione in un un albergo con albergo per un albergo per un una stanza una stanza periodo di tempo periodo di tempo Step 2: Step 2: Step 3: Step 3: Stanze disponibili Stanze disponibili Stanze disponibili Stanze disponibili in un giorno per in un giorno per in un giorno per in un giorno per un albergo con un albergo con un albergo con un albergo con una stanza con una stanza con una stanza con una stanza con una prenotazione una prenotazione una prenotazione una prenotazione in un giorno in un giorno in un periodo in un periodo
  • 25. 25 Test-Driven versus Test-First Test Driven = Test-First Incrementalità No gold plating No testing Some Themes of Quality Assurance Some Themes of Quality Assurance Quality is everybody’s business Quality is everybody’s business Quality must be an early focus of aaproject Quality must be an early focus of project The best way to achieve quality is to build it in The best way to achieve quality is to build it in --James Tomayko --James Tomayko
  • 26. 26 E le architetture? Passo 1: Esplorazione Passo 2: Interfacce minimali (no persistenza) Passo 3: “Seleziona Progetto” (in memoria) Passo 4: Distribuzione via socket Passo 5: “Seleziona Progetto” (in file system) Passo 6: Gestione comandi via applet-servlet Passo 7: “Seleziona Progetto (su DBMS) Passo 8: Miglioramento interfacce
  • 27. 27 La complessità può aumentare… Il processo non è deterministico I due cappelli Il “maialino” fa aumentare la complessità Complessità del sistema Tempo
  • 28. 28 La risposta XP Massimizzare le opportunità di business Massimizzare le opportunità di business Minimizzare ililcosto del cambiamento Minimizzare costo del cambiamento Impiegare al meglio le risorse umane Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando Sapere come lavoriamo/stiamo lavorando
  • 29. 29 Impiegare al meglio le risorse umane In XP: Il sistema viene sviluppato da piccoli team Ogni sviluppatore offre le sue stime per ciascuna user story o engineering task e quindi firma per quelle per le quali intende assumersi la responsabilità I membri del team lavorano in coppie Gli sviluppatori ruotano frequentemente Il team lavora in open space Ruoli nel team
  • 30. 30 Impiegare al meglio le risorse umane (continua) Path of Communication: Intra-Team Path of Communication Intra-Pair Path of Communication Inter-Pair Path of Communication Constructive Path of Communication
  • 31. 31 Impiegare al meglio le risorse umane (continua) Modello responsabilità-collaborazione Despecializzazione Metafora degli impianti Ispezioni e Pair Programming Turn-over Results of inspections Results of inspections Fagan’s data indicate 82 percent Fagan’s data indicate 82 percent Motivazione efficace of all errors could be found with of all errors could be found with No signing-up inspections. Some applications inspections. Some applications had rates of 93 percent had rates of 93 percent No overtime “Defects found” decrease as “Defects found” decrease as speed of inspections increases speed of inspections increases --James Tomayko --James Tomayko
  • 32. 32 La risposta XP Massimizzare le opportunità di business Massimizzare le opportunità di business Minimizzare ililcosto del cambiamento Minimizzare costo del cambiamento Impiegare al meglio le risorse umane Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando Sapere come lavoriamo/stiamo lavorando
  • 33. 33 Tracciare il progetto XP Perché Sapere come lavora/sta lavorando la mia organizzazione Quanto guadagna la mia organizzazione Quanto è efficace nella produzione di software Functional Functional Oriented Oriented Accertare il progresso del progetto “Ritmo” versus “completamento” Imparare a stimare Cosa ROI ROI Oriented Misure di valore Oriented Misure di processo Misure di prodotto
  • 34. EasyTracking II - xplabs 34
  • 35. EasyTracking II - xplabs 35
  • 36. EasyTracking II - xplabs 36
  • 37. 37 La lavagna del team Bees di XPLabs Rythm Rythm 10 10 9 9 8 8 7 7 6 6 5 5 4 Iteration 1 4 Iteration 1 3 3 2 Ite razione 4 2 Ite razione 4 1 Iteration 2 Iteration 3 1 Iteration 2 Iteration 3 0 0 23 feb 2004 28 feb 2004 4 mar 2004 9 mar 2004 1 mar 2004 4 1 mar 2004 9 24 mar 29 mar 3 apr 2004 23 feb 2004 28 feb 2004 4 mar 2004 9 mar 2004 1 mar 2004 4 1 mar 2004 9 24 mar 29 mar 3 apr 2004 Accepted Completed Not Completed Average Accepted Completed Not Completed Average McCabe McCabe DSI / Class 1,6 1,6 32 1,55 1,55 30 1,5 1,5 28 1,45 1,45 26 1,4 1,4 24 1,35 1,35 22 1,3 1,3 20 1,25 1,25 18 1,2 23 feb 2004 28 feb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 apr 2004 1,2 1,15 1,15 1,1 Number of Classes 1,1 1,05 1,05 11 60 23 feb 2004 28 feb 2004 4 mar 2004 23 feb 2004 28 feb 2004 4 mar 2004 99mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 apr 2004 3 apr 2004 55 50 DSI / Method 45 40 4,8 35 4,7 4,6 30 4,5 25 4,4 4,3 20 4,2 4,1 15 4 23 feb 2004 28 feb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 apr 2004 3,9 3,8 3,7 3,6 3,5 Number of Classes and Methods 3,4 375 23 feb 2004 28 feb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 apr 2004 350 400 325 375 300 DSI 350 275 325 250 300 1500 275 225 1400 250 200 225 1300 175 200 1200 150 175 125 150 1100 100 125 1000 100 75 900 75 50 50 800 25 25 700 00 600 23 feb 2004 28 feb 2004 44mar 2004 23 feb 2004 28 feb 2004 mar 2004 99mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 3 apr 200 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 apr 2004 500 Test Classes Test Methods Application Classes Application Methods 23 feb 2004 28 feb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 apr 2004 Test classes Test methods Application classes Application methods
  • 38. 38 La tecnica del pomodoro Quando Ogni 30 minuti Processo La raccolta La rilevazione L’analisi Vantaggi Motivante Responsabilizzante Efficace No interruzioni
  • 39. 39 La risposta XP Massimizzare le opportunità di business Massimizzare le opportunità di business Minimizzare ililcosto del cambiamento Minimizzare costo del cambiamento Impiegare al meglio le risorse umane Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando Sapere come lavoriamo/stiamo lavorando
  • 40. 40 XP: Avvertenze per l’uso Cosa èèXP Cosa XP Cosa non èèXP Cosa non XP Quando fallisce XP Quando fallisce XP
  • 43. 43 Cosa non è XP?! Non è hacking Non è NO analisi Non è NO design Non è NO pianificazione Non è caos Non è un silver bullet
  • 44. 44 Quando fallisce XP?! Mancanza di Presenza continua del cliente Una adeguata suite di test Rifattorizzazione continua Disciplina di team Alto costo rifattorizzazione Tool XP fallisce se mancano i valori
  • 45. 45 Conclusioni Improving Software Productivity Get the Best From People Make Steps More Efficient Eliminate Steps Eliminate Rework Build Simpler Products Reuse Components XP e ingegneria del software
  • 46. 46 Risorse – Da dove iniziare?
  • 47. 47 Domande? Riferimenti: Sito XPLabs: http://www.xplabs.it Risorse XPLabs: http://www.xplabs.it/201010.html Tecnica del Pomodoro: http://www.xplabs.it/fc2.html Gruppo Pomodoro - EasyTracking: http://groups.yahoo.com/group/pomodoro Gruppo Extreme Programming - Italia: http://it.groups.yahoo.com/group/extremeprogramming-it/