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