Page 82 -
P. 82

3.3   Extreme programming  65



                                                Select User
                                                                    Break Down
                                               Stories for this    Stories to Tasks     Plan Release
                                                 Release




                     Figure 3.3 The extreme      Evaluate            Release             Develop/
                     programming release         System              Software            Integrate/
                     cycle                                                              Test Software



                                         In extreme programming, requirements are expressed as scenarios (called user
                                       stories), which are implemented directly as a series of tasks. Programmers work in
                                       pairs and develop tests for each task before writing the code. All tests must be suc-
                                       cessfully executed when new code is integrated into the system. There is a short time
                                       gap between releases of the system. Figure 3.3 illustrates the XP process to produce
                                       an increment of the system that is being developed.
                                         Extreme programming involves a number of practices, summarized in Figure 3.4,
                                       which reflect the principles of agile methods:

                                       1.  Incremental development is supported through small, frequent releases of the
                                          system. Requirements are based on simple customer stories or scenarios that are
                                          used as a basis for deciding what functionality should be included in a system
                                          increment.
                                       2.  Customer involvement is supported through the continuous engagement of the
                                          customer in the development team. The customer representative takes part in the
                                          development and is responsible for defining acceptance tests for the system.

                                       3.  People, not process, are supported through pair programming, collective owner-
                                          ship of the system code, and a sustainable development process that does not
                                          involve excessively long working hours.
                                       4.  Change is embraced through regular system releases to customers, test-first
                                          development, refactoring to avoid code degeneration, and continuous integra-
                                          tion of new functionality.
                                       5.  Maintaining simplicity is supported by constant refactoring that improves code
                                          quality and by using simple designs that do not unnecessarily anticipate future
                                          changes to the system.

                                         In an XP process, customers are intimately involved in specifying and prioritizing
                                       system requirements. The requirements are not specified as lists of required system
                                       functions. Rather, the system customer is part of the development team and discusses
                                       scenarios with other team members. Together, they develop a ‘story card’ that encap-
                                       sulates the customer needs. The development team then aims to implement that sce-
                                       nario in a future release of the software. An example of a story card for the mental
   77   78   79   80   81   82   83   84   85   86   87