Page 79 -
P. 79

62   Chapter 3   Agile software development


                                    respect, the use of agile methods is likely to make subsequent system maintenance
                                    more difficult and expensive.
                                      Agile practices, used in the maintenance process itself, are likely to be effective,
                                    whether or not an agile approach has been used for system development. Incremental
                                    delivery, design for change and maintaining simplicity all make sense when software
                                    is being changed. In fact, you can think of an agile development process as a process
                                    of software evolution.
                                      However, the main difficulty after software delivery is likely to be keeping cus-
                                    tomers involved in the process. Although a customer may be able to justify the full-
                                    time involvement of a representative during system development, this is less likely
                                    during maintenance where changes are not continuous. Customer representatives are
                                    likely to lose interest in the system. Therefore, it is likely that alternative mecha-
                                    nisms, such as change proposals, discussed in Chapter 25, will be required to create
                                    the new system requirements.
                                      The other problem that is likely to arise is maintaining continuity of the develop-
                                    ment team. Agile methods rely on team members understanding aspects of the
                                    system without having to consult documentation. If an agile development team is
                                    broken up, then this implicit knowledge is lost and it is difficult for new team mem-
                                    bers to build up the same understanding of the system and its components.
                                      Supporters of agile methods have been evangelical in promoting their use and
                                    have tended to overlook their shortcomings. This has prompted an equally extreme
                                    response, which, in my view, exaggerates the problems with this approach (Stephens
                                    and  Rosenberg,  2003).  More  reasoned  critics  such  as  DeMarco  and  Boehm
                                    (DeMarco and Boehm, 2002) highlight both the advantages and disadvantages of
                                    agile methods. They propose a hybrid approach where agile methods incorporate
                                    some techniques from plan-driven development may be the best way forward.





                              3.2 Plan-driven and agile development


                                    Agile approaches to software development consider design and implementation to be
                                    the central activities in the software process. They incorporate other activities, such as
                                    requirements elicitation and testing, into design and implementation. By contrast, a
                                    plan-driven approach to software engineering identifies separate stages in the soft-
                                    ware process with outputs associated with each stage. The outputs from one stage are
                                    used as a basis for planning the following process activity. Figure 3.2 shows the dis-
                                    tinctions between plan-driven and agile approaches to system specification.
                                      In a plan-driven approach, iteration occurs within activities with formal docu-
                                    ments used to communicate between stages of the process. For example, the require-
                                    ments will evolve and, ultimately, a requirements specification will be produced.
                                    This is then an input to the design and implementation process. In an agile approach,
                                    iteration occurs across activities. Therefore, the requirements and the design are
                                    developed together, rather than separately.
   74   75   76   77   78   79   80   81   82   83   84