Page 77 -
P. 77

60   Chapter 3   Agile software development


                     Principle              Description

                     Customer involvement   Customers should be closely involved throughout the development process.
                                            Their role is provide and prioritize new system requirements and to evaluate
                                            the iterations of the system.
                     Incremental delivery   The software is developed in increments with the customer specifying the
                                            requirements to be included in each increment.

                     People not process     The skills of the development team should be recognized and exploited. Team
                                            members should be left to develop their own ways of working without
                                            prescriptive processes.

                     Embrace change         Expect the system requirements to change and so design the system to
                                            accommodate these changes.

                     Maintain simplicity    Focus on simplicity in both the software being developed and in the
                                            development process. Wherever possible, actively work to eliminate complexity
                                            from the system.



                                      As I discuss in the final section of this chapter, the success of agile methods has
                  Figure 3.1 The
                  principles of agile  meant that there is a lot of interest in using these methods for other types of software
                  methods           development. However, because of their focus on small, tightly integrated teams,
                                    there are problems in scaling them to large systems. There have also been experi-
                                    ments in using agile approaches for critical systems engineering (Drobna et al.,
                                    2004). However, because of the need for security, safety, and dependability analysis
                                    in critical systems, agile methods require significant modification before they can be
                                    routinely used for critical systems engineering.
                                      In practice, the principles underlying agile methods are sometimes difficult to
                                    realize:

                                    1.  Although the idea of customer involvement in the development process is an
                                        attractive one, its success depends on having a customer who is willing and able
                                        to spend time with the development team and who can represent all system
                                        stakeholders. Frequently, the customer representatives are subject to other pres-
                                        sures and cannot take full part in the software development.

                                    2.  Individual team members may not have suitable personalities for the intense
                                        involvement that is typical of agile methods, and therefore not interact well with
                                        other team members.
                                    3.  Prioritizing changes can be extremely difficult, especially in systems for which
                                        there are many stakeholders. Typically, each stakeholder gives different priori-
                                        ties to different changes.

                                    4.  Maintaining simplicity requires extra work. Under pressure from delivery
                                        schedules, the team members may not have time to carry out desirable system
                                        simplifications.
   72   73   74   75   76   77   78   79   80   81   82