Software evolution

Importance of evolution

  • Organizations have huge investments in their software systems – they are critical business assets.
  • 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 evolving existing software rather than developing new software.

Maintenance is inevitable

  • 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!
  • 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.
  • Systems MUST be maintained therefore if they are to remain useful in an environment.

Types of maintenance

  • Maintenance to repair software faults
    • Changing a system to correct deficiencies in the 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.

Maintenance cost factors

  • Team stability
    • Maintenance costs are reduced if the same staff are involved with them for some time.
  • Contractual responsibility
  • 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.

Evolution processes

  • Evolution processes depend on
    • The type of software being maintained;
    • The development processes used;
    • The skills and experience of the people involved.
  • Proposals for change are the driver for system evolution. Change identification and evolution continue throughout the system lifetime.

The system evolution process

Legacy system evolution

  • Organizations that rely on legacy systems must choose a strategy for evolving these 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

  • Low quality, low business value
    • These systems should be scrapped.
  • 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.

Business value assessment

  • Assessment should take different viewpoints into account
    • System end-users;
    • Business customers;
    • Line managers;
    • IT managers;
    • Senior managers.
  • Interview different stakeholders and collate results.

System quality assessment

  • Business process assessment
    • How well does the business process support the current goals of the business?
  • Environment assessment
    • How effective is the system’s environment and how expensive is it to maintain?
  • Application assessment
    • What is the quality of the application software system?

System measurement

  • You may collect quantitative data to make an assessment of the quality of the application system
    • The number of system change requests;
    • The number of different user interfaces used by the system;
    • The volume of data used by the system.