Lecturer: A.Prof. Dr.
Amr Thabet
    Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
1
             Chapter 9 –
              Evolution
              Software
                                                          LECTURER: A.PROF. DR. AMR THABET
Topics covered                                            2
                                                              Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Evolution processes
        Change processes for software systems
                                                                                Lecturer: A.Prof. Dr. Amr Thabet
    Program evolution dynamics
        Understanding software evolution
    Software maintenance
        Making changes to operational software systems
    Legacy system management
        Making decisions about software change
Software change                                             3
                                                                Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Software change is inevitable
        New requirements emerge when the software is
                                                                                  Lecturer: A.Prof. Dr. Amr Thabet
         used;
        The business environment changes;
        Errors must be repaired;
        New computers and equipment is added to the
         system;
        The performance or reliability of the system may
         have to be improved.
    A key problem for all organizations is
     implementing and managing change to their
     existing software systems.
Importance of evolution                                      4
                                                                 Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Organisations have huge investments in their
     software systems - they are critical business assets.
                                                                                   Lecturer: A.Prof. Dr. Amr Thabet
    To maintain the value of these assets to the
     business, they must be changed and updated.
    The majority of the software budget in large
     companies is devoted to changing and evolving
     existing software rather than developing new
     software.
                                            Lecturer: A.Prof. Dr. Amr Thabet
                          Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
   5
Evolution and servicing
Evolution and servicing                                               6
                                                                          Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Evolution
        The stage in a software system’s life cycle where it is in
                                                                                            Lecturer: A.Prof. Dr. Amr Thabet
         operational use and is evolving as new requirements
         are proposed and implemented in the system.
    Servicing
        At this stage, the software remains useful but the only
         changes made are those required to keep it
         operational i.e. bug fixes and changes to reflect
         changes in the software’s environment. No new
         functionality is added.
    Phase-out
        The software may still be used but no further changes
         are made to it.
Evolution processes                                           7
                                                                  Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Software evolution processes depend on
        The type of software being maintained;
                                                                                    Lecturer: A.Prof. Dr. Amr Thabet
        The development processes used;
        The skills and experience of the people involved.
    Proposals for change are the driver for system
     evolution.
        Should be linked with components that are
         affected by the change, thus allowing the cost and
         impact of the change to be estimated.
    Change identification and evolution continues
     throughout the system lifetime.
                                 Lecturer: A.Prof. Dr. Amr Thabet
               Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
 8
and evolution processes
Change identification
                                Lecturer: A.Prof. Dr. Amr Thabet
              Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
 9
The software evolution
process
                                          Lecturer: A.Prof. Dr. Amr Thabet
                        Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
   10
Change implementation
Change implementation                                    11
                                                              Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Iteration of the development process where the
     revisions to the system are designed,
                                                                                Lecturer: A.Prof. Dr. Amr Thabet
     implemented and tested.
    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 the change
     implementation.
    During the 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.
Urgent change requests                                           12
                                                                      Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Urgent changes may have to be implemented
     without going through all stages of the software
                                                                                        Lecturer: A.Prof. Dr. Amr Thabet
     engineering process
        If a serious system fault has to be repaired to allow
         normal operation to continue;
        If changes to the system’s environment (e.g. an OS
         upgrade) have unexpected effects;
        If there are business changes that require a very
         rapid response (e.g. the release of a competing
         product).
                               Lecturer: A.Prof. Dr. Amr Thabet
             Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
 13
The emergency repair
process
Agile methods and                                       14
evolution
                                                             Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Agile methods are based on incremental
     development so the transition from development
                                                                               Lecturer: A.Prof. Dr. Amr Thabet
     to evolution is a seamless one.
        Evolution is simply a continuation of the
         development process based on frequent system
         releases.
    Automated regression testing is particularly
     valuable when changes are made to a system.
    Changes may be expressed as additional user
     stories.
Handover problems                                             15
                                                                   Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Where the development team have used an
     agile approach but the evolution team is
     unfamiliar with agile methods and prefer a plan-
                                                                                     Lecturer: A.Prof. Dr. Amr Thabet
     based approach.
        The evolution team may expect detailed
         documentation to support evolution and this is not
         produced in agile processes.
    Where a plan-based approach has been used for
     development but the evolution team prefer to
     use agile methods.
        The evolution team may have to start from scratch
         developing automated tests and the code in the
         system may not have been refactored and
         simplified as is expected in agile development.
Software maintenance                                   16
                                                            Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Modifying a program after it has been put into
     use.
                                                                              Lecturer: A.Prof. Dr. Amr Thabet
    The term is mostly used for changing custom
     software. Generic software products are said to
     evolve to create new versions.
    Maintenance does not normally involve major
     changes to the system’s architecture.
    Changes are implemented by modifying existing
     components and adding new components to the
     system.
Types of maintenance                                         17
                                                                  Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Maintenance to repair software faults
        Changing a system to correct deficiencies in the
                                                                                    Lecturer: A.Prof. Dr. Amr Thabet
         way meets its requirements.
    Maintenance to adapt software to a
     different operating environment
        Changing a system so that it operates in a
         different environment (computer, OS, etc.) from
         its initial implementation.
    Maintenance to add to or modify the
     system’s functionality
        Modifying the system to satisfy new requirements.
                                Lecturer: A.Prof. Dr. Amr Thabet
              Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
 18
Figure 9.8 Maintenance
effort distribution
Maintenance costs                                    19
                                                          Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Usually greater than development costs (2* to
     100* depending on the application).
                                                                            Lecturer: A.Prof. Dr. Amr Thabet
    Affected by both technical and non-
     technical
     factors.
    Increases as software is maintained.
     Maintenance corrupts the software structure
     so
     makes further maintenance more difficult.
    Ageing software can have high support costs
     (e.g. old languages, compilers etc.).
Maintenance cost factors                                        20
                                                                      Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
   Team stability
        Maintenance costs are reduced if the same staff are
         involved with them for some time.
   Contractual responsibility
                                                                                        Lecturer: A.Prof. Dr. Amr Thabet
        The developers of a system may have no contractual
         responsibility for maintenance so there is no incentive to
         design for future change.
   Staff skills
        Maintenance staff are often inexperienced and have
         limited domain knowledge.
   Program age and structure
        As programs age, their structure is degraded and they
         become harder to understand and change.
Maintenance prediction                                   21
                                                              Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Maintenance prediction is concerned
     with assessing which parts of the system
                                                                                Lecturer: A.Prof. Dr. Amr Thabet
     may cause problems and have high
     maintenance costs
        Change acceptance depends on the
         maintainability of the components affected by
         the change;
        Implementing changes degrades the system
         and reduces its maintainability;
        Maintenance costs depend on the number of
         changes and costs of change depend on
         maintainability.
                                           Lecturer: A.Prof. Dr. Amr Thabet
                         Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
   22
Maintenance prediction
Change prediction                                           23
                                                                 Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Predicting the number of changes requires
     and understanding of the relationships
                                                                                   Lecturer: A.Prof. Dr. Amr Thabet
     between a system and its environment.
    Tightly coupled systems require changes
     whenever the environment is changed.
    Factors influencing this relationship are
        Number and complexity of system interfaces;
        Number of inherently volatile system
         requirements;
        The business processes where the system is used.
System re-engineering                              24
                                                        Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
  Re-structuring or re-writing part or all of a
   legacy system without changing its
                                                                          Lecturer: A.Prof. Dr. Amr Thabet
   functionality.
  Applicable where some but not all sub-
   systems
   of a larger system require frequent
   maintenance.
  Re-engineering involves adding effort to
   make
   them easier to maintain. The system may
   be re-structured and re-documented.
Advantages of                                                     25
reengineering
                                                                       Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Reduced risk
        There is a high risk in new software development.
                                                                                         Lecturer: A.Prof. Dr. Amr Thabet
         There may be development problems, staffing
         problems and specification problems.
    Reduced cost
        The cost of re-engineering is often significantly less
         than the costs of developing new software.
Refactoring and                                            26
reengineering
                                                                Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Re-engineering takes place after a system has
     been maintained for some time and
                                                                                  Lecturer: A.Prof. Dr. Amr Thabet
     maintenance costs are increasing. You use
     automated tools to process and re-engineer a
     legacy system to create a new system that is
     more maintainable.
    Refactoring is a continuous process of
     improvement throughout the development and
     evolution process. It is intended to avoid the
     structure and code degradation that increases
     the costs and difficulties of maintaining a system.
Legacy system                                                   27
management
                                                                     Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Organisations that rely on legacy systems
     must choose a strategy for evolving these
                                                                                       Lecturer: A.Prof. Dr. Amr Thabet
     systems
        Scrap the system completely and modify
         business processes so that it is no longer required;
        Continue maintaining the system;
        Transform the system by re-engineering to
         improve its maintainability;
        Replace the system with a new system.
    The strategy chosen should depend on the
     system quality and its business value.
Legacy system categories                                  28
                                                               Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    Low quality, low business value
        These systems should be scrapped.
                                                                                 Lecturer: A.Prof. Dr. Amr Thabet
    Low-quality, high-business value
        These make an important business contribution
         but are expensive to maintain. Should be re-
         engineered or replaced if a suitable system is
         available.
    High-quality, low-business value
        Replace with COTS, scrap completely or
         maintain.
    High-quality, high business value
        Continue in operation using normal system
         maintenance.
Key points                                                   29
                                                                  Reference: Ian Sommerville, “Software engineering”, 10th edition, 2015
    There are 3 types of software maintenance, namely
     bug fixing, modifying software to work in a new
     environment, and implementing new or changed
                                                                                    Lecturer: A.Prof. Dr. Amr Thabet
     requirements.
    Software re-engineering is concerned with re-
     structuring and re-documenting software to make it
     easier to understand and change.
    Refactoring, making program changes that preserve
     functionality, is a form of preventative maintenance.
    The business value of a legacy system and the
     quality of the application should be assessed to help
     decide if a system should be replaced, transformed
     or maintained.