SlideShare uma empresa Scribd logo
1 de 49
Migliorare la produttività del software
     con Extreme Programming
        XPLabsTour08@UnivAQ.it
           Giovedì, 24 gennaio 2008

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




                                          ah
 Questo intervento sostiene:




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   2
 Introduzione
    Compito
         Lo sviluppo software può essere più efficace con XP?
                 Come?
                                                            CONCLUSIONI                     INTRODUZIONE

                 Perché?

     Obiettivo
                                                                            Migliorare
                                                    AVVERTENZE
                                                     PER L'USO
                                                                          la produttività
                                                                           del software
                                                                                               IL CONTESTO

                                                                              con XP
         Scelta informata
         Pragmatic Approach
                                                       LA RISPOSTA XP                          IL PROBLEMA




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP              XPLabs - S.R.L.   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?




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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
 © 2000-2008 Francesco Cirillo                          Migliorare la produttività del software con XP                  XPLabs - S.R.L.    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

 © 2000-2008 Francesco Cirillo                          Migliorare la produttività del software con XP                  XPLabs - S.R.L.    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




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   7
 La risposta XP



                       Massimizzare le opportunità di business

                         Minimizzare il costo del cambiamento

                         Impiegare al meglio le risorse umane

                      Sapere come lavoriamo/stiamo lavorando




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   8
 La risposta XP



                       Massimizzare le opportunità di business

                         Minimizzare il costo del cambiamento

                         Impiegare al meglio le risorse umane

                      Sapere come lavoriamo/stiamo lavorando




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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
        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
        easy to discuss the requirements model with the users, and
        changes to the model will be simple to make”
                                              --Ivar Jacobson




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   10
User Story




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   11
Il Planning Game
                                                        Splitting




                                             Natura User Story Splittate
         Legoland di utilità




                                   Emergent Value
                                                                           Natura delle User Story
© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP    XPLabs - S.R.L.    12
Un esempio: Il videogioco di ChengQi




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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
        proiettile                                                                              Collisione
                                                                  Collisione
          UFO                                                                                   proiettile
                                                                  proiettile
                                                                                               UFO e nave
                                           Morte                   barriera
                                        cannoncino

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


                               Partita
                              Asteroids




© 2000-2008 Francesco Cirillo                                  Migliorare la produttività del software con XP    XPLabs - S.R.L.   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




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   15
 La risposta XP



                       Massimizzare le opportunità di business

                         Minimizzare il costo del cambiamento

                         Impiegare al meglio le risorse umane

                      Sapere come lavoriamo/stiamo lavorando




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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...




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   18
Ridurre la complessità marginale
    Come?


                    Mantenere bassa la complessità del sistema

            Mantenere bassa la complessità intrinseca del problema




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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
                Migliorare la struttura interna del sistema, consentendo alle
                 necessarie astrazioni di emergere



          “Our job is to solve problems, not spoonfeed compilers (…)
          We need clarity so we can communicate using our code. We
          value conciseness and the ability to express a requirement in
          code accurately and efficiently”.
                                                --Dave Thomas



      © 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   20
    Mantenere bassa la complessità del sistema
           for(int i = 0; i < employees.size(); i++) {
                Employee employee = (Employee) employees.get(i);
                System.out.println(employee.getName());
                System.out.println(employee.getSalary());
           }

                            employees.forEach(printSlip);


    “Our job is to solve problems, not spoonfeed compilers (…)
    We need clarity so we can communicate using our code. We
    value conciseness and the ability to express a requirement in
    code accurately and efficiently”.
                                          --Dave Thomas



© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   21
    Mantenere bassa la complessità del sistema
    Malleabilità




    Continua applicazione di sforzo
         Identificare possibilità di refactoring
         Assicurare che le strutture dipendono dalle funzionalità




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   22
Perché rifattorizzare continuamente?!
    Ordine e complessità
    Design anticipatorio
         Managing complexity with complexity

    Design emergente
         Managing complexity with simplicity




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   23
    Mantenere bassa la complessità intrinseca
     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




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   24
Strategie di sviluppo


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




               Step 2:                   Step 3:
         Stanze disponibili       Stanze disponibili
          in un giorno per         in un giorno per
           un albergo con           un albergo con
           una stanza con           una stanza con
         una prenotazione         una prenotazione
            in un giorno             in un periodo




© 2000-2008 Francesco Cirillo      Migliorare la produttività del software con XP       XPLabs - S.R.L.   25
Test-Driven versus Test-First
    Test Driven =
         Test-First
         Incrementalità
         No gold plating
         No testing




                Some Themes of Quality Assurance
                Quality is everybody’s business
                Quality must be an early focus of a project
                The best way to achieve quality is to build it in
                                            --James Tomayko


© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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



© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   27
La complessità può aumentare…
    Il processo non è deterministico
    I due cappelli
    Il “maialino” fa aumentare la complessità
                Complessità del sistema




                                                             Tempo




© 2000-2008 Francesco Cirillo             Migliorare la produttività del software con XP   XPLabs - S.R.L.   28
 La risposta XP



                       Massimizzare le opportunità di business

                         Minimizzare il costo del cambiamento

                         Impiegare al meglio le risorse umane

                      Sapere come lavoriamo/stiamo lavorando




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   31
    Impiegare al meglio le risorse umane (continua)
    Modello responsabilità-collaborazione
    Despecializzazione
    Metafora degli impianti
    Ispezioni e Pair Programming
    Turn-over                                    Results of inspections
                                                  Fagan’s data indicate 82 percent
    Motivazione efficace                         of all errors could be found with
         No signing-up                           inspections. Some applications
                                                  had rates of 93 percent
    No overtime                                  “Defects found” decrease as
                                                  speed of inspections increases
                                                                --James Tomayko



© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   32
 La risposta XP



                       Massimizzare le opportunità di business

                         Minimizzare il costo del cambiamento

                         Impiegare al meglio le risorse umane

                      Sapere come lavoriamo/stiamo lavorando




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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
 Oriented      Accertare il progresso del progetto
                       “Ritmo” versus “completamento”
               Imparare a stimare

            Cosa
  ROI
Oriented
               Misure di valore
               Misure di processo
               Misure di prodotto




     © 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   34
EasyTracking II - xplabs




     © 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   35
EasyTracking II - xplabs




     © 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   36
EasyTracking II - xplabs




     © 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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                                                                                                                            Iterazione 4        2                                                                                                                               Iterazione 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    14 mar 2004    19 mar 2004        24 mar            29 mar         3 apr 2004      23 feb 2004     28 feb 2004    4 mar 2004        9 mar 2004      14 mar 2004    19 mar 2004        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                                                                                                                                               20
              1,3

            1,25                                                                                                                                               18
             1,25
                                                                                                                                                             23 f eb 2004     28 f eb 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,2

            1,15
             1,15



                                                                                                                                                                                                Number of Classes
             1,1
              1,1

            1,05
             1,05

               11                                                                                                                                              60

            23 f f eb2004
             23 eb 2004      28 f f eb2004
                              28 eb 2004     4 mar 2004
                                             4 mar 2004       99mar 2004
                                                                 mar 2004   14 mar 2004
                                                                            14 mar 2004    19 mar 2004
                                                                                            19 mar 2004      24 mar 2004
                                                                                                             24 mar 2004       29 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
             4,4                                                                                                                                               25
             4,3
                                                                                                                                                               20
             4,2
             4,1                                                                                                                                               15
               4                                                                                                                                               23 f eb 2004    28 f eb 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
                                                                                                                                                                                              Number of classes and methods
             3,5                                                                                                                                               400
             3,4
            23 f eb 2004     28 f eb 2004    4 mar 2004       9 mar 2004    14 mar 2004    19 mar 2004       24 mar 2004       29 mar 2004      3 apr 2004
                                                                                                                                                               375
                                                                                                                                                               350
                                                                                                                                                                              Number of Classes and Methods
                                                                                                                                                              400
                                                                                                                                                               325
                                                                                                                                                              375


                                                                            DSI
                                                                                                                                                               300
                                                                                                                                                              350
                                                                                                                                                               275
                                                                                                                                                              325
                                                                                                                                                               250
                                                                                                                                                              300
            1500                                                                                                                                              275
                                                                                                                                                               225
            1400                                                                                                                                              250
                                                                                                                                                               200
                                                                                                                                                              225
            1300                                                                                                                                               175
                                                                                                                                                              200
            1200                                                                                                                                               150
                                                                                                                                                              175
                                                                                                                                                               125
                                                                                                                                                              150
            1100
                                                                                                                                                              125
                                                                                                                                                               100
            1000
                                                                                                                                                              100
                                                                                                                                                                75
             900                                                                                                                                               75
                                                                                                                                                                50
             800                                                                                                                                               50
                                                                                                                                                                25
                                                                                                                                                               25
             700                                                                                                                                                 00
             600                                                                                                                                              23 f eb 2004
                                                                                                                                                             23 f eb 2004     28 f f eb2004
                                                                                                                                                                               28 eb 2004     44mar 2004
                                                                                                                                                                                                mar 2004         9 9 mar 2004
                                                                                                                                                                                                                   mar 2004      14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 3 apr 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 f eb 2004     28 f eb 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




© 2000-2008 Francesco Cirillo                                                                        Migliorare la produttività del software con XP                                                                                                                                           XPLabs - S.R.L.    38
La tecnica del pomodoro
    Quando
         Ogni 30 minuti

    Processo
         La raccolta
         La rilevazione
         L’analisi

    Vantaggi
         Motivante
         Responsabilizzante
         Efficace
                 No interruzioni



© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   39
 La risposta XP



                       Massimizzare le opportunità di business

                         Minimizzare il costo del cambiamento

                         Impiegare al meglio le risorse umane

                      Sapere come lavoriamo/stiamo lavorando




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   40
 XP: Avvertenze per l’uso



                                           Cosa è XP

                                        Cosa non è XP

                                     Quando fallisce XP




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   41
Cosa è XP?!




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   42
L’importanza dei principi in XP2ed




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   43
Cosa non è XP?!
    Non è hacking
         Non è NO analisi
         Non è NO design
         Non è NO pianificazione
         Non è caos

    Non è un silver bullet




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   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




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   46
Risorse – Da dove iniziare?




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   47
Risorse – Da dove iniziare?




© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   48
Domande?
    Riferimenti:
        Sito XPLabs:
          http://www.xplabs.it
        Risorse:
          http://www.xplabs.it/risorse.html
          http://www.metodiagili.it
        Tecnica del Pomodoro:
          http://www.tecnicadelpomodoro.it
        EasyTracking:
          http://www.myagileprojects.com
        Gruppo XPLabs’ Friends- Italia:
          http://it.groups.yahoo.com/group/xplabs-friends/
        Gruppo Extreme Programming - Italia:
          http://it.groups.yahoo.com/group/extremeprogramming-it/
        Extreme Programming User Group – Italia:
          http://www.xpug.it/

© 2000-2008 Francesco Cirillo   Migliorare la produttività del software con XP   XPLabs - S.R.L.   49

Mais conteúdo relacionado

Semelhante a 20080124 XPLabs Tour08 @UniAQ.it L'Aquila-IT [ITA]

Presentazione
PresentazionePresentazione
Presentazionedxi_11
 
Intoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie AgiliIntoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie AgiliStefano Leli
 
Project Management workshop (Italian)
Project Management workshop (Italian)Project Management workshop (Italian)
Project Management workshop (Italian)paolo_marchioro
 
350 Deve Esistere Ancora Una Funzione Risorse Umane In Azienda Part
350 Deve Esistere Ancora Una Funzione Risorse Umane In Azienda Part350 Deve Esistere Ancora Una Funzione Risorse Umane In Azienda Part
350 Deve Esistere Ancora Una Funzione Risorse Umane In Azienda Partantonella Buonagurio
 
Business case gm & chrysler
Business case gm & chryslerBusiness case gm & chrysler
Business case gm & chryslerGetinge Group
 
Agile APM an heretic's approach to SPE
Agile APM an heretic's approach to SPEAgile APM an heretic's approach to SPE
Agile APM an heretic's approach to SPEK-Tech Formazione
 
Business Process Modeling
Business Process ModelingBusiness Process Modeling
Business Process ModelingArnaldo Colombo
 
SIMCO: Quando conviene realizzare un magazzino automatico
SIMCO: Quando conviene realizzare un magazzino automaticoSIMCO: Quando conviene realizzare un magazzino automatico
SIMCO: Quando conviene realizzare un magazzino automaticoSimco Consulting
 
Agile è il futuro? PMI Rome Webinar Presentation
Agile è il futuro? PMI Rome Webinar PresentationAgile è il futuro? PMI Rome Webinar Presentation
Agile è il futuro? PMI Rome Webinar Presentationinspearit Italy
 
PMI Rome Agile Project Management è il futuro?
PMI Rome Agile Project Management è il futuro?PMI Rome Agile Project Management è il futuro?
PMI Rome Agile Project Management è il futuro?Emiliano Soldi
 
SIMCO: Come funziona il vostro magazzino?
SIMCO: Come funziona il vostro magazzino?SIMCO: Come funziona il vostro magazzino?
SIMCO: Come funziona il vostro magazzino?Simco Consulting
 
SIMCO: La Business Intelligence per lo sviluppo di politiche competitive
SIMCO: La Business Intelligence per lo sviluppo di politiche competitiveSIMCO: La Business Intelligence per lo sviluppo di politiche competitive
SIMCO: La Business Intelligence per lo sviluppo di politiche competitiveSimco Consulting
 
Organizzazione di progetti BPM risks and counter-measures (IT)
Organizzazione di progetti BPM risks and counter-measures (IT)Organizzazione di progetti BPM risks and counter-measures (IT)
Organizzazione di progetti BPM risks and counter-measures (IT)pierino23
 
Le 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile DayLe 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile DayClaudio Perrone
 
LEAN IT - Pensiero snello per migliorare risultati e prestazioni
LEAN IT - Pensiero snello per migliorare risultati e prestazioniLEAN IT - Pensiero snello per migliorare risultati e prestazioni
LEAN IT - Pensiero snello per migliorare risultati e prestazioniProject Group Srl
 

Semelhante a 20080124 XPLabs Tour08 @UniAQ.it L'Aquila-IT [ITA] (20)

Presentazione
PresentazionePresentazione
Presentazione
 
Feredmanager 2 feb
Feredmanager 2 febFeredmanager 2 feb
Feredmanager 2 feb
 
Intoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie AgiliIntoduzione Alle Metodologie Agili
Intoduzione Alle Metodologie Agili
 
Agile Intro
Agile IntroAgile Intro
Agile Intro
 
Project Management workshop (Italian)
Project Management workshop (Italian)Project Management workshop (Italian)
Project Management workshop (Italian)
 
#PetaloRosaDay
#PetaloRosaDay#PetaloRosaDay
#PetaloRosaDay
 
350 Deve Esistere Ancora Una Funzione Risorse Umane In Azienda Part
350 Deve Esistere Ancora Una Funzione Risorse Umane In Azienda Part350 Deve Esistere Ancora Una Funzione Risorse Umane In Azienda Part
350 Deve Esistere Ancora Una Funzione Risorse Umane In Azienda Part
 
Business case gm & chrysler
Business case gm & chryslerBusiness case gm & chrysler
Business case gm & chrysler
 
Sintesi con intro
Sintesi con introSintesi con intro
Sintesi con intro
 
Agile APM an heretic's approach to SPE
Agile APM an heretic's approach to SPEAgile APM an heretic's approach to SPE
Agile APM an heretic's approach to SPE
 
Business case nokia
Business case nokiaBusiness case nokia
Business case nokia
 
Business Process Modeling
Business Process ModelingBusiness Process Modeling
Business Process Modeling
 
SIMCO: Quando conviene realizzare un magazzino automatico
SIMCO: Quando conviene realizzare un magazzino automaticoSIMCO: Quando conviene realizzare un magazzino automatico
SIMCO: Quando conviene realizzare un magazzino automatico
 
Agile è il futuro? PMI Rome Webinar Presentation
Agile è il futuro? PMI Rome Webinar PresentationAgile è il futuro? PMI Rome Webinar Presentation
Agile è il futuro? PMI Rome Webinar Presentation
 
PMI Rome Agile Project Management è il futuro?
PMI Rome Agile Project Management è il futuro?PMI Rome Agile Project Management è il futuro?
PMI Rome Agile Project Management è il futuro?
 
SIMCO: Come funziona il vostro magazzino?
SIMCO: Come funziona il vostro magazzino?SIMCO: Come funziona il vostro magazzino?
SIMCO: Come funziona il vostro magazzino?
 
SIMCO: La Business Intelligence per lo sviluppo di politiche competitive
SIMCO: La Business Intelligence per lo sviluppo di politiche competitiveSIMCO: La Business Intelligence per lo sviluppo di politiche competitive
SIMCO: La Business Intelligence per lo sviluppo di politiche competitive
 
Organizzazione di progetti BPM risks and counter-measures (IT)
Organizzazione di progetti BPM risks and counter-measures (IT)Organizzazione di progetti BPM risks and counter-measures (IT)
Organizzazione di progetti BPM risks and counter-measures (IT)
 
Le 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile DayLe 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile Day
 
LEAN IT - Pensiero snello per migliorare risultati e prestazioni
LEAN IT - Pensiero snello per migliorare risultati e prestazioniLEAN IT - Pensiero snello per migliorare risultati e prestazioni
LEAN IT - Pensiero snello per migliorare risultati e prestazioni
 

Mais de Francesco Cirillo

20111117 Is Software Evolution really effective? @XPDayGE2011 Karlsruhe-GE [ENG]
20111117 Is Software Evolution really effective? @XPDayGE2011 Karlsruhe-GE [ENG]20111117 Is Software Evolution really effective? @XPDayGE2011 Karlsruhe-GE [ENG]
20111117 Is Software Evolution really effective? @XPDayGE2011 Karlsruhe-GE [ENG]Francesco Cirillo
 
20111119 Is Software Evolution really effective? @IAD2011 Rome-IT [ENG]
20111119 Is Software Evolution really effective? @IAD2011 Rome-IT [ENG]20111119 Is Software Evolution really effective? @IAD2011 Rome-IT [ENG]
20111119 Is Software Evolution really effective? @IAD2011 Rome-IT [ENG]Francesco Cirillo
 
20100506 Dinamiche di Team @BetterSoftware2010 Firenze-IT [ITA]
20100506 Dinamiche di Team @BetterSoftware2010 Firenze-IT [ITA]20100506 Dinamiche di Team @BetterSoftware2010 Firenze-IT [ITA]
20100506 Dinamiche di Team @BetterSoftware2010 Firenze-IT [ITA]Francesco Cirillo
 
20100302 Dinamiche di Team Brainstorming @UniRM3 Roma-IT [ITA]
20100302 Dinamiche di Team Brainstorming @UniRM3 Roma-IT [ITA]20100302 Dinamiche di Team Brainstorming @UniRM3 Roma-IT [ITA]
20100302 Dinamiche di Team Brainstorming @UniRM3 Roma-IT [ITA]Francesco Cirillo
 
20091203 Design Emergente Più Cambiamenti Più Profitti @UxConference2009 Luga...
20091203 Design Emergente Più Cambiamenti Più Profitti @UxConference2009 Luga...20091203 Design Emergente Più Cambiamenti Più Profitti @UxConference2009 Luga...
20091203 Design Emergente Più Cambiamenti Più Profitti @UxConference2009 Luga...Francesco Cirillo
 
20090507 Metodi Agili e Aumento del Roi @Better Software2009 Firenze IT [ITA]
20090507 Metodi Agili e Aumento del Roi @Better Software2009 Firenze IT [ITA]20090507 Metodi Agili e Aumento del Roi @Better Software2009 Firenze IT [ITA]
20090507 Metodi Agili e Aumento del Roi @Better Software2009 Firenze IT [ITA]Francesco Cirillo
 
20090124 Ricette per Eliminare gli IF @JavaDay3 Roma-IT [ITA]
20090124 Ricette per Eliminare gli IF @JavaDay3 Roma-IT [ITA]20090124 Ricette per Eliminare gli IF @JavaDay3 Roma-IT [ITA]
20090124 Ricette per Eliminare gli IF @JavaDay3 Roma-IT [ITA]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
 
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
 
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
 

Mais de Francesco Cirillo (13)

20111117 Is Software Evolution really effective? @XPDayGE2011 Karlsruhe-GE [ENG]
20111117 Is Software Evolution really effective? @XPDayGE2011 Karlsruhe-GE [ENG]20111117 Is Software Evolution really effective? @XPDayGE2011 Karlsruhe-GE [ENG]
20111117 Is Software Evolution really effective? @XPDayGE2011 Karlsruhe-GE [ENG]
 
20111119 Is Software Evolution really effective? @IAD2011 Rome-IT [ENG]
20111119 Is Software Evolution really effective? @IAD2011 Rome-IT [ENG]20111119 Is Software Evolution really effective? @IAD2011 Rome-IT [ENG]
20111119 Is Software Evolution really effective? @IAD2011 Rome-IT [ENG]
 
20100506 Dinamiche di Team @BetterSoftware2010 Firenze-IT [ITA]
20100506 Dinamiche di Team @BetterSoftware2010 Firenze-IT [ITA]20100506 Dinamiche di Team @BetterSoftware2010 Firenze-IT [ITA]
20100506 Dinamiche di Team @BetterSoftware2010 Firenze-IT [ITA]
 
20100302 Dinamiche di Team Brainstorming @UniRM3 Roma-IT [ITA]
20100302 Dinamiche di Team Brainstorming @UniRM3 Roma-IT [ITA]20100302 Dinamiche di Team Brainstorming @UniRM3 Roma-IT [ITA]
20100302 Dinamiche di Team Brainstorming @UniRM3 Roma-IT [ITA]
 
20091203 Design Emergente Più Cambiamenti Più Profitti @UxConference2009 Luga...
20091203 Design Emergente Più Cambiamenti Più Profitti @UxConference2009 Luga...20091203 Design Emergente Più Cambiamenti Più Profitti @UxConference2009 Luga...
20091203 Design Emergente Più Cambiamenti Più Profitti @UxConference2009 Luga...
 
20090507 Metodi Agili e Aumento del Roi @Better Software2009 Firenze IT [ITA]
20090507 Metodi Agili e Aumento del Roi @Better Software2009 Firenze IT [ITA]20090507 Metodi Agili e Aumento del Roi @Better Software2009 Firenze IT [ITA]
20090507 Metodi Agili e Aumento del Roi @Better Software2009 Firenze IT [ITA]
 
20090124 Ricette per Eliminare gli IF @JavaDay3 Roma-IT [ITA]
20090124 Ricette per Eliminare gli IF @JavaDay3 Roma-IT [ITA]20090124 Ricette per Eliminare gli IF @JavaDay3 Roma-IT [ITA]
20090124 Ricette per Eliminare gli IF @JavaDay3 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]
20080619 Diventare Agili Dalla Università ad un Team Agile @UniRM3 Roma-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]
 
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]
 

20080124 XPLabs Tour08 @UniAQ.it L'Aquila-IT [ITA]

  • 1. Migliorare la produttività del software con Extreme Programming XPLabsTour08@UnivAQ.it Giovedì, 24 gennaio 2008 Francesco Cirillo CEO, XPLabs - S.R.L. francesco.cirillo@xplabs.com ah
  • 2.  Questo intervento sostiene: © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 2
  • 3.  Introduzione  Compito  Lo sviluppo software può essere più efficace con XP?  Come? CONCLUSIONI INTRODUZIONE  Perché? Obiettivo Migliorare  AVVERTENZE PER L'USO la produttività del software IL CONTESTO con XP  Scelta informata  Pragmatic Approach LA RISPOSTA XP IL PROBLEMA © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 3
  • 4.  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? © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 4
  • 5.  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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 5
  • 6.  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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 6
  • 7.  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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 7
  • 8.  La risposta XP Massimizzare le opportunità di business Minimizzare il costo del cambiamento Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 8
  • 9.  La risposta XP Massimizzare le opportunità di business Minimizzare il costo del cambiamento Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 9
  • 10. 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 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 easy to discuss the requirements model with the users, and changes to the model will be simple to make” --Ivar Jacobson © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 10
  • 11. User Story © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 11
  • 12. Il Planning Game Splitting Natura User Story Splittate Legoland di utilità Emergent Value Natura delle User Story © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 12
  • 13. Un esempio: Il videogioco di ChengQi © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 13
  • 14. 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 proiettile Collisione Collisione UFO proiettile proiettile UFO e nave Morte barriera cannoncino Rotazione 360° cannoncino Movimento Collisione verticale Collisione asteroide asteroide proiettile cannoncino asteroide Partita Asteroids © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 14
  • 15. 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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 15
  • 16.  La risposta XP Massimizzare le opportunità di business Minimizzare il costo del cambiamento Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 16
  • 17. 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... © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 17
  • 18. 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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 18
  • 19. Ridurre la complessità marginale  Come? Mantenere bassa la complessità del sistema Mantenere bassa la complessità intrinseca del problema © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 19
  • 20. 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  Migliorare la struttura interna del sistema, consentendo alle necessarie astrazioni di emergere “Our job is to solve problems, not spoonfeed compilers (…) We need clarity so we can communicate using our code. We value conciseness and the ability to express a requirement in code accurately and efficiently”. --Dave Thomas © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 20
  • 21. Mantenere bassa la complessità del sistema for(int i = 0; i < employees.size(); i++) { Employee employee = (Employee) employees.get(i); System.out.println(employee.getName()); System.out.println(employee.getSalary()); } employees.forEach(printSlip); “Our job is to solve problems, not spoonfeed compilers (…) We need clarity so we can communicate using our code. We value conciseness and the ability to express a requirement in code accurately and efficiently”. --Dave Thomas © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 21
  • 22. Mantenere bassa la complessità del sistema  Malleabilità  Continua applicazione di sforzo  Identificare possibilità di refactoring  Assicurare che le strutture dipendono dalle funzionalità © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 22
  • 23. Perché rifattorizzare continuamente?!  Ordine e complessità  Design anticipatorio  Managing complexity with complexity  Design emergente  Managing complexity with simplicity © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 23
  • 24. Mantenere bassa la complessità intrinseca 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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 24
  • 25. Strategie di sviluppo Step 1: Obiettivo: Stanze disponibili Fare una in un giorno per prenotazione in un un albergo con albergo per un una stanza periodo di tempo Step 2: Step 3: Stanze disponibili Stanze disponibili in un giorno per in un giorno per un albergo con un albergo con una stanza con una stanza con una prenotazione una prenotazione in un giorno in un periodo © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 25
  • 26. Test-Driven versus Test-First  Test Driven =  Test-First  Incrementalità  No gold plating  No testing Some Themes of Quality Assurance Quality is everybody’s business Quality must be an early focus of a project The best way to achieve quality is to build it in --James Tomayko © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 26
  • 27. 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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 27
  • 28. La complessità può aumentare…  Il processo non è deterministico  I due cappelli  Il “maialino” fa aumentare la complessità Complessità del sistema Tempo © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 28
  • 29.  La risposta XP Massimizzare le opportunità di business Minimizzare il costo del cambiamento Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 29
  • 30. 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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 30
  • 31. 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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 31
  • 32. Impiegare al meglio le risorse umane (continua)  Modello responsabilità-collaborazione  Despecializzazione  Metafora degli impianti  Ispezioni e Pair Programming  Turn-over Results of inspections Fagan’s data indicate 82 percent  Motivazione efficace of all errors could be found with  No signing-up inspections. Some applications had rates of 93 percent  No overtime “Defects found” decrease as speed of inspections increases --James Tomayko © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 32
  • 33.  La risposta XP Massimizzare le opportunità di business Minimizzare il costo del cambiamento Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 33
  • 34. 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 Oriented  Accertare il progresso del progetto  “Ritmo” versus “completamento”  Imparare a stimare  Cosa ROI Oriented  Misure di valore  Misure di processo  Misure di prodotto © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 34
  • 35. EasyTracking II - xplabs © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 35
  • 36. EasyTracking II - xplabs © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 36
  • 37. EasyTracking II - xplabs © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 37
  • 38. 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 Iterazione 4 2 Iterazione 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 14 mar 2004 19 mar 2004 24 mar 29 mar 3 apr 2004 23 feb 2004 28 feb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 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 20 1,3 1,25 18 1,25 23 f eb 2004 28 f eb 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,2 1,15 1,15 Number of Classes 1,1 1,1 1,05 1,05 11 60 23 f f eb2004 23 eb 2004 28 f f eb2004 28 eb 2004 4 mar 2004 4 mar 2004 99mar 2004 mar 2004 14 mar 2004 14 mar 2004 19 mar 2004 19 mar 2004 24 mar 2004 24 mar 2004 29 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 4,4 25 4,3 20 4,2 4,1 15 4 23 f eb 2004 28 f eb 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 Number of classes and methods 3,5 400 3,4 23 f eb 2004 28 f eb 2004 4 mar 2004 9 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 apr 2004 375 350 Number of Classes and Methods 400 325 375 DSI 300 350 275 325 250 300 1500 275 225 1400 250 200 225 1300 175 200 1200 150 175 125 150 1100 125 100 1000 100 75 900 75 50 800 50 25 25 700 00 600 23 f eb 2004 23 f eb 2004 28 f f eb2004 28 eb 2004 44mar 2004 mar 2004 9 9 mar 2004 mar 2004 14 mar 2004 19 mar 2004 24 mar 2004 29 mar 2004 3 3 apr 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 f eb 2004 28 f eb 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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 38
  • 39. La tecnica del pomodoro  Quando  Ogni 30 minuti  Processo  La raccolta  La rilevazione  L’analisi  Vantaggi  Motivante  Responsabilizzante  Efficace  No interruzioni © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 39
  • 40.  La risposta XP Massimizzare le opportunità di business Minimizzare il costo del cambiamento Impiegare al meglio le risorse umane Sapere come lavoriamo/stiamo lavorando © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 40
  • 41.  XP: Avvertenze per l’uso Cosa è XP Cosa non è XP Quando fallisce XP © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 41
  • 42. Cosa è XP?! © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 42
  • 43. L’importanza dei principi in XP2ed © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 43
  • 44. Cosa non è XP?!  Non è hacking  Non è NO analisi  Non è NO design  Non è NO pianificazione  Non è caos  Non è un silver bullet © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 44
  • 45. 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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 45
  • 46.  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 © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 46
  • 47. Risorse – Da dove iniziare? © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 47
  • 48. Risorse – Da dove iniziare? © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 48
  • 49. Domande?  Riferimenti:  Sito XPLabs: http://www.xplabs.it  Risorse: http://www.xplabs.it/risorse.html http://www.metodiagili.it  Tecnica del Pomodoro: http://www.tecnicadelpomodoro.it  EasyTracking: http://www.myagileprojects.com  Gruppo XPLabs’ Friends- Italia: http://it.groups.yahoo.com/group/xplabs-friends/  Gruppo Extreme Programming - Italia: http://it.groups.yahoo.com/group/extremeprogramming-it/  Extreme Programming User Group – Italia: http://www.xpug.it/ © 2000-2008 Francesco Cirillo Migliorare la produttività del software con XP XPLabs - S.R.L. 49