This chapter focuses on Software Evolution.
Features of Software Evolution
In 1985, Lehman and belady summarized the characteristics of Software Evolution During the change process: 1. software maintenance is an inevitable process; 2. continuous software modification may lead to software degradation. 3. the evolution of software systems is established in the early stages of development. 4. The efficiency of software development has nothing to do with the invested resources; 5. Adding new features to the software system will inevitably lead to new defects. For various problems caused by software changes, people usually adopt different strategies for handling: software maintenance and software re-engineering.
Software maintenance
Concept of software maintenance
Software maintenance refers to the modifications made to the software products during the software operation or maintenance phase. These modifications may be to correct errors in the software, or to add new functions to meet new requirements, however, it generally does not include major changes in the structure of the software system. Depending on the different causes of software maintenance, software maintenance can be divided into three types: corrective maintenance, adaptive maintenance and perfection maintenance.
Features of software maintenance
1. Software maintenance is greatly affected by the development process; 2. Difficult software maintenance; 3. High software maintenance costs.
Software maintenance process
1. corrective maintenance: first, the severity of software errors should be evaluated. for very serious errors, maintenance personnel should implement maintenance immediately; for general errors, maintenance personnel can plan related maintenance work together with other development tasks. In some cases, some errors are very serious, so that you have to temporarily give up the normal maintenance control work procedures, that is, not to evaluate the negative effects of the modifications, or to update the documents accordingly, instead, the code is modified immediately. This is a fire-fighting corrective maintenance that can only be used in very urgent situations. This maintenance only accounts for a small proportion of all maintenance tasks. It should be noted that the fire-fighting mode is not canceled, but the control box evaluation required for maintenance is postponed. Once the crisis is canceled, such control and evaluation activities must be carried out to ensure that the current changes do not add more important issues.
2. Adaptive maintenance: first, the software maintenance priority should be determined and planned with other development tasks.
3. Excellent maintenance: considering business needs and software development trends, some excellent maintenance may not be accepted. Du Yu's maintenance application should be prioritized and planned.
Software Re-engineering
The software re-engineering is based on the system understanding, combined with reverse engineering, reconstruction and positive engineering methods, the existing system is re-constructed into a new form. The image is "applying today's methodology to yesterday's system to meet tomorrow's needs". Typical software re-engineering processes include object selection, reverse engineering, document reconstruction, code reconstruction, Data Reconstruction, and forward engineering.
Software Engineering Summary-Chapter 11th