Page 269 -
P. 269

252   Chapter 9   Software evolution


                                      Refactoring, carried out during program development, is an effective way to
                                    reduce the long-term maintenance costs of a program. However, if you take over a
                                    program for maintenance whose structure has been significantly degraded, then it
                                    may be practically impossible to refactor the code alone. You may also have to think
                                    about design refactoring, which is likely to be a more expensive and difficult prob-
                                    lem. Design refactoring involves identifying relevant design patterns (discussed in
                                    Chapter 7) and replacing existing code with code that implements these design pat-
                                    terns (Kerievsky, 2004). I don’t have space to discuss this here.



                              9.4 Legacy system management


                                    For new software systems developed using modern software engineering processes,
                                    such as incremental development and CBSE, it is possible to plan how to integrate
                                    system development and evolution. More and more companies are starting to under-
                                    stand that the system development process is a whole life-cycle process and that an
                                    artificial separation between software development and software maintenance is
                                    unhelpful. However, there are still many legacy systems that are critical business sys-
                                    tems. These have to be extended and adapted to changing e-business practices.
                                      Most organizations usually have a portfolio of legacy systems that they use, with
                                    a limited budget for maintaining and upgrading these systems. They have to decide
                                    how to get the best return on their investment. This involves making a realistic
                                    assessment of their legacy systems and then deciding on the most appropriate strat-
                                    egy for evolving these systems. There are four strategic options:

                                    1.  Scrap the system completely This option should be chosen when the system is
                                        not making an effective contribution to business processes. This commonly
                                        occurs when business processes have changed since the system was installed
                                        and are no longer reliant on the legacy system.
                                    2.  Leave the system unchanged and continue with regular maintenance This
                                        option should be chosen when the system is still required but is fairly stable and
                                        the system users make relatively few change requests.
                                    3.  Reengineer the system to improve its maintainability This option should be
                                        chosen when the system quality has been degraded by change and where a new
                                        change to the system is still being proposed. This process may include develop-
                                        ing new interface components so that the original system can work with other,
                                        newer systems.
                                    4.  Replace all or part of the system with a new system This option should be cho-
                                        sen when factors, such as new hardware, mean that the old system cannot con-
                                        tinue in operation or where off-the-shelf systems would allow the new system to
                                        be developed at a reasonable cost. In many cases, an evolutionary replacement
                                        strategy can be adopted in which major system components are replaced by off-
                                        the-shelf systems with other components reused wherever possible.
   264   265   266   267   268   269   270   271   272   273   274