Maintenance

Software Engineering


Types of maintenance

Corrective Maintenance
Fixed/repaired
Adaptive Maintenance
Adapted to changing needs
Perfective Maintenance
Improved in performance or maintainability
Preventive Maintenance
Improved by fixing bugs before they activate

Maintenance problems

Staff problems:

  • Limited understanding

  • Management priorities

  • Morale

Technical problems:

  • Artifacts and paradigms

  • Testing difficulties

Process metrics

May be used to assess maintainability:

  • Number of requests for corrective maintenance

  • Average time required for impact analysis

  • Average time taken to implement a change request

  • Number of outstanding change requests

Techniques for maintenance

Program Comprehension
Reading and understanding programs in order to implement change
Reverse Engineering
Analyse software to identify the components and their inter-relationships to produce call graphs and control flow graphs
Migration
Modify to run in a different environment
Re-engineering
Restructuring or rewriting part or all of a legacy system without changing its functionality to make it easier to maintain

Re-engineering

Re-engineering

Refactoring vs re-engineering

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.

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.

Legacy systems

Multiple strategies for legacy systems:

  • Scrap the system completely

  • Continue maintaining the system

  • Transform the system by re-engineering to improve its maintainability

  • Replace the system with a new system

Legacy system categories

Low qualityHigh quality
Low business valueScrap the systemReplace with COTS, scrap or maintain
High business valueRe-engineer or replaceContinue in operation with maintenance