Software Evolution: Slides Based On Ian Sommerville, Software Engineering, 9th Ed., Pearson Education Inc
Software Evolution: Slides Based On Ian Sommerville, Software Engineering, 9th Ed., Pearson Education Inc
Slides based on
Ian Sommerville, Software Engineering, 9th ed., Pearson
                      Education Inc
                                                          1
            Topics covered
0 Evolution processes
  0 Change processes for software systems
0 Program evolution dynamics
  0 Understanding software evolution
0 Software maintenance
  0 Making changes to operational software systems
0 Legacy system management
  0 Making decisions about software change
                                                     2
Software Engineering
      Modern Approaches
                                                  6
     A spiral model of
development and evolution
                            7
Evolution and servicing
                          8
       Evolution and servicing
0 Evolution
  0 The stage in a software system’s life cycle where it is in
   operational use and is evolving as new requirements are
   proposed and implemented in the system.
0 Servicing
  0 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.
0 Phase-out
  0 The software may still be used but no further changes are
   made to it.
                                                                 9
         Evolution processes
0 Software evolution processes depend on
  0 The type of software being maintained;
  0 The development processes used;
  0 The skills and experience of the people involved.
0 Proposals for change are the driver for system
 evolution.
  0 Should be linked with components that are affected by
   the change, thus allowing the cost and impact of the
   change to be estimated.
0 Change identification and evolution continues
 throughout the system lifetime.
                                                            10
Change identification and
  evolution processes
                            11
The software evolution
       process
                         12
Change implementation
                        13
     Change implementation
0 Iteration of the development process where the revisions
  to the system are designed, implemented and tested.
0 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.
0 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.
                                                        14
   Urgent change requests
0 Urgent changes may have to be implemented
 without going through all stages of the
 software engineering process
  0 If a serious system fault has to be repaired to allow
    normal operation to continue;
  0 If changes to the system’s environment (e.g. an OS
    upgrade) have unexpected effects;
  0 If there are business changes that require a very
    rapid response (e.g. the release of a competing
    product).
                                                            15
The emergency repair
      process
                       16
 Agile methods and evolution
0 Agile methods are based on incremental
 development so the transition from development
 to evolution is a seamless one.
  0 Evolution is simply a continuation of the development
   process based on frequent system releases.
0 Automated regression testing is particularly
  valuable when changes are made to a system.
0 Changes may be expressed as additional user
  stories.
                                                            17
         Handover problems
0 Where the development team have used an agile
 approach but the evolution team is unfamiliar with
 agile methods and prefer a plan-based approach.
  0 The evolution team may expect detailed documentation
   to support evolution and this is not produced in agile
   processes.
0 Where a plan-based approach has been used for
 development but the evolution team prefer to use agile
 methods.
  0 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.                        18
  Program evolution dynamics
0 Program evolution dynamics is the study of the
  processes of system change.
0 After several major empirical studies, Lehman and
  Belady proposed that there were a number of ‘laws’
  which applied to all systems as they evolved.
0 There are sensible observations rather than laws.
  They are applicable to large systems developed by
  large organisations.
  0 It is not clear if these are applicable to other types of
   software system.
                                                                19
        Change is inevitable
0 The system requirements are likely to change
  while the system is being developed because
  the environment is changing. Therefore a
  delivered system won't meet its requirements!
0 Systems are tightly coupled with their
  environment. When a system is installed in an
  environment it changes that environment and
  therefore changes the system requirements.
0 Systems MUST be changed if they
  are to remain useful in an environment.         20
                  Lehman’s laws
Law              Description
Continuing       A program that is used in a real-world environment must
change           necessarily change, or else become progressively less
                 useful in that environment.
Increasing       As an evolving program changes, its structure tends to
complexity       become more complex. Extra resources must be devoted
                 to preserving and simplifying the structure.
Large program    Program evolution is a self-regulating process. System
evolution        attributes such as size, time between releases, and the
                 number of reported errors is approximately invariant for
                 each system release.
Organizational   Over a program’s lifetime, its rate of development is
stability        approximately constant and independent of the
                 resources devoted to system development.
                                                                      21
                    Lehman’s laws
Law                  Description
Conservation of      Over the lifetime of a system, the incremental
familiarity          change in each release is approximately constant.
Continuing growth    The functionality offered by systems has to
                     continually increase to maintain user satisfaction.
Declining quality    The quality of systems will decline unless they are
                     modified to reflect changes in their operational
                     environment.
Feedback system      Evolution processes incorporate multiagent,
                     multiloop feedback systems and you have to treat
                     them as feedback systems to achieve significant
                     product improvement.
                                                                       22
      Software maintenance
0 Modifying a program after it has been put into use.
0 The term is mostly used for changing custom
  software. Generic software products are said to
  evolve to create new versions.
0 Maintenance does not normally involve major
  changes to the system’s architecture.
0 Changes are implemented by modifying existing
  components and adding new components to the
  system.
                                                    23
           Maintenance
0 The process of modifying a software system or
  component after delivery to correct faults,
  improve performance or other attributes, or
  adapt to a changed environment.
0 An activity of truly significant proportions,
  consuming an estimated 40-90% of total life
  cycle costs of applications.
0 continuing change + increasing complexity
0 The addition of new features and functionality
  to an application -> developments -> typically
  of the application’s next release.
                                               24
                                                24
        Types of maintenance
0 Maintenance to repair software faults
  0 Changing a system to correct deficiencies in the
   way meets its requirements.
0 Maintenance to adapt software to a different
 operating environment
  0 Changing a system so that it operates in a different
   environment (computer, OS, etc.) from its initial
   implementation.
0 Maintenance to add to or modify the system’s
 functionality
  0 Modifying the system to satisfy new requirements.
                                                           25
 Types of Maintenance
0 Repair
   0 Fixing defects
     (relative to existing requirements)
0 Enhancement
   0 New requirements
   0 Change design or implementation
     (no functional change)
                                           26
  Types of Maintenance Lientz & Swanson
         0 Corrective
           0 defect identification and removal
Repair
         0 Adaptive
           0 changes resulting from operating system,
            hardware or DBMS changes
         0 Perfective
           0 changes resulting from user requests
Enhance 0 Preventive
           0 changes made to the software to make it
            more maintainable
                                                        27 27
          Adaptive Maintenance
• Is concerned with adapting the software to
  changes in the operating environment.
    – New OS
    – New version of H/W
• Applications must adapt to reasonable changes in
  its environment
       Perfective Maintenance Request
• New feature enhancements
• System must continually adapt to ongoing needs
  or become less and less useful               28
       Preventive Maintenance
                                                                                            30
            Software Evolution
• Challenges
    – Software complexity due to continuous
      maintenance
    – Inefficiencies due to older technology
    – Lack of accurate documentation
    – Original developers who fully understand the
      system are no longer available
• Reverse Engineering -> low level → high level
    – Source code ----> design + documents
• Reengineering -> Improve design and
  maintainability                                    31
 Forward and reverse engineering and
           reengineering
“Forward Engineering is the traditional process of moving from
  high-level abstractions and logical, implementation-independent
  designs to the physical implementation of a system.”
                                                                            Proposed
                     Maintenance
                      manager                                                M. R.’s
  Customer
                                    Help desk
                                         Approved
                                          M. R.’s
                                                                Change control board
  Maintenance      Current source                                 Impact Analysis
   engineer       & documentation
                     36
                            Predicting Relative Maintenance Effort
    Percentage of
    comment lines
    (higher value = lower
    maintenance effort)
    Size
    (lower value = lower
    maintenance effort)
                                    LOWEST                 HIGHEST
                                    EFFORT                  EFFORT
© 2010 John Wiley & Sons Ltd.                                         37
          Maintenance costs
0 Usually greater than development costs (2* to
  100* depending on the application).
0 Affected by both technical and non-technical
  factors.
0 Increases as software is maintained.
  Maintenance corrupts the software structure so
  makes further maintenance more difficult.
0 Ageing software can have high support costs
  (e.g. old languages, compilers etc.).
                                                   38
Development and
maintenance costs
                    39
      Maintenance cost factors
0 Team stability
  0 Maintenance costs are reduced if the same staff are
    involved with them for some time.
0 Contractual responsibility
  0 The developers of a system may have no contractual
    responsibility for maintenance so there is no incentive to
    design for future change.
0 Staff skills
  0 Maintenance staff are often inexperienced and have
    limited domain knowledge.
0 Program age and structure
  0 As programs age, their structure is degraded and they
    become harder to understand and change.                 40
     Maintenance prediction
0 Maintenance prediction is concerned with
 assessing which parts of the system may cause
 problems and have high maintenance costs
  0 Change acceptance depends on the maintainability of
    the components affected by the change;
  0 Implementing changes degrades the system and
    reduces its maintainability;
  0 Maintenance costs depend on the number of changes
    and costs of change depend on maintainability.
                                                          41
Maintenance prediction
                         42
           Change prediction
0 Predicting the number of changes requires and
  understanding of the relationships between a
  system and its environment.
0 Tightly coupled systems require changes whenever
  the environment is changed.
0 Factors influencing this relationship are
  0 Number and complexity of system interfaces;
  0 Number of inherently volatile system requirements;
  0 The business processes where the system is used.
                                                         43
        Complexity metrics
0 Predictions of maintainability can be made by
  assessing the complexity of system components.
0 Studies have shown that most maintenance
  effort is spent on a relatively small number of
  system components.
0 Complexity depends on
  0 Complexity of control structures;
  0 Complexity of data structures;
  0 Object, method (procedure) and module size.
                                                  44
           Process metrics
0 Process metrics may be used to assess
 maintainability
  0 Number of requests for corrective maintenance;
  0 Average time required for impact analysis;
  0 Average time taken to implement a change request;
  0 Number of outstanding change requests.
0 If any or all of these is increasing, this may
 indicate a decline in maintainability.
                                                        45
        System re-engineering
0 Re-structuring or re-writing part or all of a
  legacy system without changing its
  functionality.
0 Applicable where some but not all sub-systems
  of a larger system require frequent
  maintenance.
0 Re-engineering involves adding effort to make
  them easier to maintain. The system may be re-
  structured and re-documented.
                                                   46
Advantages of reengineering
0 Reduced risk
  0 There is a high risk in new software development.
   There may be development problems, staffing
   problems and specification problems.
0 Reduced cost
  0 The cost of re-engineering is often significantly less
   than the costs of developing new software.
                                                             47
The reengineering process
                            48
Reengineering process activities
 0 Source code translation
   0 Convert code to a new language.
 0 Reverse engineering
   0 Analyze the program to understand it;
 0 Program structure improvement
   0 Restructure automatically for understandability;
 0 Program modularization
   0 Reorganize the program structure;
 0 Data reengineering
   0 Clean-up and restructure system data.
                                                        49
Reengineering approaches
                           50
 Reengineering cost factors
0 The quality of the software to be reengineered.
0 The tool support available for reengineering.
0 The extent of the data conversion which is
  required.
0 The availability of expert staff for reengineering.
  0 This can be a problem with old systems based on
   technology that is no longer widely used.
                                                      51
 Preventative maintenance by
         refactoring
0 Refactoring is the process of making improvements to
  a program to slow down degradation through change.
0 You can think of refactoring as ‘preventative
  maintenance’ that reduces the problems of future
  change.
0 Refactoring involves modifying a program to improve
  its structure, reduce its complexity or make it easier to
  understand.
0 When you refactor a program, you should not add
  functionality but rather concentrate on program
  improvement.                                             52
 Refactoring and reengineering
0 Re-engineering takes place after a system has been
  maintained for some time and 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.
0 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.
                                                         53
   ‘Bad smells’ in program code
0 Duplicate code
  0 The same or very similar code may be included at different
   places in a program. This can be removed and implemented
   as a single method or function that is called as required.
0 Long methods
  0 If a method is too long, it should be redesigned as a number
   of shorter methods.
0 Switch (case) statements
  0 These often involve duplication, where the switch depends on
   the type of a value. The switch statements may be scattered
   around a program. In object-oriented languages, you can
   often use polymorphism to achieve the same thing.         54
 ‘Bad smells’ in program code
0 Data clumping
  0 Data clumps occur when the same group of data items
   (fields in classes, parameters in methods) re-occur in
   several places in a program. These can often be
   replaced with an object that encapsulates all of the
   data.
0 Speculative generality
  0 This occurs when developers include generality in a
   program in case it is required in the future. This can
   often simply be removed.
                                                            55
  Legacy system management
0 Organisations that rely on legacy systems must
 choose a strategy for evolving these systems
  0 Scrap the system completely and modify business
    processes so that it is no longer required;
  0 Continue maintaining the system;
  0 Transform the system by re-engineering to improve its
    maintainability;
  0 Replace the system with a new system.
0 The strategy chosen should depend on the system
 quality and its business value.
                                                            56
An example of a legacy system
        assessment
                            57
    Legacy system categories
0 Low quality, low business value
  0 These systems should be scrapped.
0 Low-quality, high-business value
  0 These make an important business contribution but are
   expensive to maintain. Should be re-engineered or
   replaced if a suitable system is available.
0 High-quality, low-business value
  0 Replace with COTS, scrap completely or maintain.
0 High-quality, high business value
  0 Continue in operation using normal system
   maintenance.                                         58
   Business value assessment
0 Assessment should take different viewpoints
 into account
  0 System end-users;
  0 Business customers;
  0 Line managers;
  0 IT managers;
  0 Senior managers.
0 Interview different stakeholders and collate
 results.
                                                 59
         Issues in business value
               assessment
0 The use of the system
   0 If systems are only used occasionally or by a small number of
     people, they may have a low business value.
0 The business processes that are supported
   0 A system may have a low business value if it forces the use of
     inefficient business processes.
0 System dependability
   0 If a system is not dependable and the problems directly affect
     business customers, the system has a low business value.
0 The system outputs
  0 If the business depends on system outputs, then the system
                                                               60
    has a high business value.
   System quality assessment
0 Business process assessment
  0 How well does the business process support the
   current goals of the business?
0 Environment assessment
  0 How effective is the system’s environment and how
   expensive is it to maintain?
0 Application assessment
  0 What is the quality of the application software system?
                                                              61
Business process assessment
0 Use a viewpoint-oriented approach and seek
 answers from system stakeholders
  0 Is there a defined process model and is it followed?
  0 Do different parts of the organisation use different
    processes for the same function?
  0 How has the process been adapted?
  0 What are the relationships with other business processes
    and are these necessary?
  0 Is the process effectively supported by the legacy
    application software?
                                                           62
      Factors used in environment
              assessment
Factor         Questions
Supplier       Is the supplier still in existence? Is the supplier financially
stability      stable and likely to continue in existence? If the supplier is
               no longer in business, does someone else maintain the
               systems?
Failure rate   Does the hardware have a high rate of reported failures?
               Does the support software crash and force system restarts?
Age            How old is the hardware and software? The older the
               hardware and support software, the more obsolete it will be.
               It may still function correctly but there could be significant
               economic and business benefits to moving to a more modern
               system.
Performance    Is the performance of the system adequate? Do performance
               problems have a significant effect on system users?           63
   Factors used in environment
           assessment
Factor               Questions
Support requirements What local support is required by the hardware
                     and software? If there are high costs associated
                     with this support, it may be worth considering
                     system replacement.
Maintenance costs    What are the costs of hardware maintenance and
                     support software licenses? Older hardware may
                     have higher maintenance costs than modern
                     systems. Support software may have high annual
                     licensing costs.
Interoperability     Are there problems interfacing the system to
                     other systems? Can compilers, for example, be
                     used with current versions of the operating
                     system? Is hardware emulation required?          64
     Factors used in application
             assessment
Factor            Questions
Understandability How difficult is it to understand the source code of the
                  current system? How complex are the control
                  structures that are used? Do variables have meaningful
                  names that reflect their function?
Documentation     What system documentation is available? Is the
                  documentation complete, consistent, and current?
Data              Is there an explicit data model for the system? To what
                  extent is data duplicated across files? Is the data used
                  by the system up to date and consistent?
Performance       Is the performance of the application adequate? Do
                  performance problems have a significant effect on
                  system users?
                                                                       65
      Factors used in application
              assessment
Factor             Questions
Programming        Are modern compilers available for the
language           programming language used to develop the system?
                   Is the programming language still used for new
                   system development?
Configuration      Are all versions of all parts of the system managed
management         by a configuration management system? Is there an
                   explicit description of the versions of components
                   that are used in the current system?
Test data          Does test data for the system exist? Is there a record
                   of regression tests carried out when new features
                   have been added to the system?
Personnel skills   Are there people available who have the skills to
                   maintain the application? Are there people available
                   who have experience with the system?               66
     System measurement
0 You may collect quantitative data to make an
 assessment of the quality of the application
 system
  0 The number of system change requests;
  0 The number of different user interfaces used by the
    system;
  0 The volume of data used by the system.
                                                          67
                    Key points
0 Software development and evolution can be thought of as
  an integrated, iterative process that can be represented
  using a spiral model.
0 For custom systems, the costs of software maintenance
  usually exceed the software development costs.
0 The process of software evolution is driven by requests
  for changes and includes change impact analysis, release
  planning and change implementation.
0 Lehman’s laws, such as the notion that change is
  continuous, describe a number of insights derived from
  long-term studies of system evolution.
                                                        68
                   Key points
0 There are 3 types of software maintenance, namely bug
  fixing, modifying software to work in a new
  environment, and implementing new or changed
  requirements.
0 Software re-engineering is concerned with re-
  structuring and re-documenting software to make it
  easier to understand and change.
0 Refactoring, making program changes that preserve
  functionality, is a form of preventative maintenance.
0 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.
                                                        69