Software maintenance
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
Fault repairs
Changing a system to fix bugs/vulnerabilities and correct deficiencies in the way meets its requirements.
Environmental adaptation
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.
Functionality addition and modification
Modifying the system to satisfy new requirements.
Maintenance effort distribution
Maintenance costs
Usually greater than development costs (2* to 100* depending on the application).
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.).
It is usually more expensive to add new features to a system during maintenance than it is to add the same features during development
A new team has to understand the programs being maintained
Separating maintenance and development means there is no incentive for the development team to write maintainable software
Program maintenance work is unpopular
• Maintenance staff are often inexperienced and have limited domain knowledge.
Complexity metrics
Predictions of maintainability can be made by assessing the complexity of system components.
Studies have shown that most maintenance effort is spent on a relatively small number of system components.
Complexity depends on
Complexity of control structures;
Complexity of data structures;
Object, method (procedure) and module size.
Process metrics
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.
If any or all of these is increasing, this may indicate a decline in maintainability.
Software reengineering
Restructuring or rewriting part or all of a legacy system without changing its functionality.
Applicable where some but not all sub-systems of a larger system require frequent maintenance.
Reengineering involves adding effort to make them easier to maintain. The system may be re-structured and re-documented.
Advantages of reengineering
Reduced risk
There is a high risk in new software development. 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.
The reengineering process
Reengineering process activities
Source code translation
Convert code to a new language.
Reverse engineering
Analyse the program to understand it;
Program structure improvement
Restructure automatically for understandability;
Program modularisation
Reorganise the program structure;
Data reengineering
Clean-up and restructure system data.
Refactoring
Refactoring is the process of making improvements to a program to slow down degradation through change.
You can think of refactoring as ‘preventative maintenance’ that reduces the problems of future change.
Refactoring involves modifying a program to improve its structure, reduce its complexity or make it easier to understand.
Refactoring and reengineering
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 reengineer 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.
No comments:
Post a Comment