Software Evolution and Maintenance PDF
Document Details
Uploaded by SuperbCalifornium8876
Sommerville
Tags
Summary
This document is chapter 7 of a software engineering textbook. It covers topics including software evolution, maintenance process, and issues surrounding maintenance costs. This chapter explores the various maintenance issues arising in different software scenarios. The processes, strategies, and general characteristics are also discussed.
Full Transcript
Chapter 7 – Software Evolution and Maintenance 1 Topics Covered Software Evolution Software Maintenance Problems during software maintenance Types of software maintenance Software Maintenance Process Maintenance Costs Maintenance Pred...
Chapter 7 – Software Evolution and Maintenance 1 Topics Covered Software Evolution Software Maintenance Problems during software maintenance Types of software maintenance Software Maintenance Process Maintenance Costs Maintenance Prediction Software Re-Engineering Chapter 7 – Software Evolution & Maintenance 2 7.1 Software Evolution Software Evolution is a term that refers to the process of developing software initially, and then timely updating it for various reasons, i.e., to add new features or to remove obsolete functionalities, etc. The software evolution process includes fundamental activities of change analysis, release planning, system implementation, and releasing Figure 7.1: Software Evolution Process a system to customers. Chapter 7 – Software Evolution & Maintenance 3 7.2 Software Maintenance Chapter 7 – Software Evolution & Maintenance 4 7.3 Problems During Maintenance Chapter 7 – Software Evolution & Maintenance 5 7.4 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. Figure 7.2: Maintenance effort distribution Chapter 7 – Software Evolution & Maintenance 6 7.5 Software Maintenance Process Once particular maintenance objective is established, the maintenance personnel must first understand what they are to modify. They must then modify the program to satisfy the maintenance objectives. After modification, they must ensure that the modification does not affect other portions of the program. Finally, they must test the program. These activities can be accomplished in the four phases as shown in Figure 7.3. Figure 7.3: Software Maintenance Process Chapter 7 – Software Evolution & Maintenance 7 7.6 Maintenance Costs Usually greater than development costs (2 to 100 times 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.). Chapter 7 – Software Evolution & Maintenance 8 Development and Maintenance Costs Figure 7.4: Development and Maintenance Costs Chapter 7 – Software Evolution & Maintenance 9 7.6.1 Maintenance Cost Factors Team stability Maintenance costs are reduced if the same staff are involved with the organization. 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. Chapter 7 – Software Evolution & Maintenance 10 7.7 Maintenance Prediction Maintenance prediction is concerned by identifying the parts of the system that may cause problems. More and more changes degrades the system and reduces its maintainability. Figure 7.5: Maintenance Prediction Chapter 7 – Software Evolution & Maintenance 11 7.8 Software Re-Engineering Software re-engineering is concerned with taking existing legacy systems and re-implementing them to make them more maintainable without changing its functionality. The critical distinction between re-engineering and new software development is the starting point for the development as shown in Figure 7.6. Figure 7.6: Comparison of new software development with re-engineering Chapter 7 – Software Evolution & Maintenance 12 Software Re-Engineering As a part of this re-engineering process, the system may be re-documented or restructured. It may be translated to a more modern programming language, implemented on existing hardware technology. Thus software re-engineering allows translate source code to new language, restructured old code, migrate to a new platform (such as client-server), capture and then graphically display design information, and re-document poorly documented systems. The cost of re-engineering depend on the extent of the work that is carried out. Other factors affecting costs are: the quality of the software, tool support available, extent of data conversion, availability of expert staff. The alternative to re-engineering a software system is to develop that system using modern software engineering techniques. Where systems are very badly structured this may be the only viable option as the re-engineering costs for these systems are likely to be high. Chapter 7 – Software Evolution & Maintenance 13 7.8.1 Reengineering process activities Chapter 7 – Software Evolution & Maintenance 14 7.8.2 Advantages of Re-Engineering 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. 7.8.3 Reengineering cost factors The quality of the software to be reengineered. The tool support available for reengineering. The extent of the data conversion which is required. The availability of expert staff for reengineering. Chapter 7 – Software Evolution & Maintenance 15 Key Points Software Evolution is a term that refers to the process of developing software initially, and then timely updating it for various reasons Software maintenance is the general process of changing a system after it has been delivered. There are 3 types of software maintenance, namely bug fixing, modifying software to work in a new environment, and implementing new or changed requirements. Software re-engineering is concerned with re-structuring and re-documenting software to make it easier to understand and change. Chapter 7 – Software Evolution & Maintenance 16 Review questions 1. Write short notes on software evolution process. 2. What is software maintenance? 3. List down the problems happened during maintenance 4. What are the different types of maintenance? 5. Illustrate software maintenance process with neat diagram 6. List down the factors that affects the maintenance cost. 7. Write short notes on Maintenance prediction 8. What is meant by software reengineering? List down its advantage. 9. List the activities of Reengineering process. Chapter 7 – Software Evolution & Maintenance 17 Chapter 7 – Software Evolution & Maintenance 18