Page 93 -
P. 93

76   Chapter 3   Agile software development


                                    2.  A ‘scaling out’ perspective, which is concerned with how agile methods can be
                                        introduced across a large organization with many years of software development
                                        experience.

                                       Agile methods have to be adapted to cope with large systems engineering.
                                    Leffingwell (2007) argues that it is essential to maintain the fundamentals of agile
                                    methods—flexible planning, frequent system releases, continuous integration, test-
                                    driven development, and good team communications. I believe that the critical adap-
                                    tations that have to be introduced are as follows:

                                    1.  For large systems development, it is not possible to focus only on the code of the
                                        system. You need to do more up-front design and system documentation. The
                                        software architecture has to be designed and there has to be documentation pro-
                                        duced to describe critical aspects of the system, such as database schemas, the
                                        work breakdown across teams, etc.

                                    2.  Cross-team communication mechanisms have to be designed and used. This
                                        should involve regular phone and video conferences between team members and
                                        frequent, short electronic meetings where teams update each other on progress.
                                        A range of communication channels such as e-mail, instant messaging, wikis,
                                        and social networking systems should be provided to facilitate communications.
                                    3.  Continuous integration, where the whole system is built every time any devel-
                                        oper checks in a change, is practically impossible when several separate pro-
                                        grams have to be integrated to create the system. However, it is essential to
                                        maintain frequent system builds and regular releases of the system. This may
                                        mean that new configuration management tools that support multi-team soft-
                                        ware development have to be introduced.

                                       Small software companies that develop software products have been amongst the
                                    most enthusiastic adopters of agile methods. These companies are not constrained by
                                    organizational bureaucracies or process standards and they can change quickly to
                                    adopt new ideas. Of course, larger companies have also experimented with agile
                                    methods in specific projects, but it is much more difficult for them to ‘scale out’
                                    these methods across the organization. Lindvall, et al. (2004) discuss some of the
                                    problems in scaling-out agile methods in four large technology companies.
                                       It is difficult to introduce agile methods into large companies for a number of
                                    reasons:

                                    1.  Project managers who do not have experience of agile methods may be reluctant
                                        to accept the risk of a new approach, as they do not know how this will affect
                                        their particular projects.

                                    2.  Large organizations often have quality procedures and standards that all projects
                                        are expected to follow and, because of their bureaucratic nature, these are likely to
                                        be incompatible with agile methods. Sometimes, these are supported by software
   88   89   90   91   92   93   94   95   96   97   98