Page 255 -
P. 255

238   Chapter 9   Software evolution





                        Change           Impact           Release          Change           System
                        Requests         Analysis         Planning      Implementation      Release





                                                          Platform         System
                                        Fault Repair
                                                         Adaptation      Enhancement


                                       Figure 9.4, adapted from Arthur (1988), shows an overview of the evolution process.
                  Figure 9.4  The
                  software evolution  The process includes the fundamental activities of change analysis, release planning,
                  process           system implementation, and releasing a system to customers. The cost and impact of
                                    these changes are assessed to see how much of the system is affected by the change and
                                    how much it might cost to implement the change. If the proposed changes are accepted,
                                    a new release of the system is planned. During release planning, all proposed changes
                                    (fault repair, adaptation, and new functionality) are considered. A decision is then made
                                    on which changes to implement in the next version of the system. The changes are
                                    implemented and validated, and a new version of the system is released. The process
                                    then iterates with a new set of changes proposed for the next release.
                                       You can think of change implementation as an iteration of the development
                                    process, where the revisions to the system are designed, implemented, and tested.
                                    However, a critical difference is that the first stage of change implementation may
                                    involve program understanding, especially if the original system developers are not
                                    responsible for change implementation. During this program understanding phase,
                                    you have to understand how the program is structured, how it delivers functionality,
                                    and how the proposed change might affect the program. You need this understanding
                                    to make sure that the implemented change does not cause new problems when it is
                                    introduced into the existing system.
                                       Ideally, the change implementation stage of this process should modify the sys-
                                    tem specification, design, and implementation to reflect the changes to the system
                                    (Figure 9.5). New requirements that reflect the system changes are proposed, ana-
                                    lyzed, and validated. System components are redesigned and implemented and the
                                    system is retested. If appropriate, prototyping of the proposed changes may be car-
                                    ried out as part of the change analysis process.
                                       During the evolution process, the requirements are analyzed in detail and implica-
                                    tions of the changes emerge that were not apparent in the earlier change analysis
                                    process. This means that the proposed changes may be modified and further cus-
                                    tomer discussions may be required before they are implemented.
                                       Change requests sometimes relate to system problems that have to be tackled
                                    urgently. These urgent changes can arise for three reasons:

                                    1.  If a serious system fault occurs that has to be repaired to allow normal operation
                                        to continue.
   250   251   252   253   254   255   256   257   258   259   260