





































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
This course includes topics like software processes, requirements analysis and specification, design, prototyping, implementation, validation and verification, UML-based modeling, integrated development environments, and case studies. Key points of this lecture are: Software Evolution, Evolution Processes, Software Maintenance, Legacy System Management, Change Processes for Software Systems, Operational Software Systems, Making Decisions About Software Change, Importance of Evolution, Huge Inves
Typology: Study notes
1 / 45
This page cannot be seen from the preview
Don't miss anything!






































SE Fundamentals 6 – Software Evolution
Topics covered Evolution processes Change processes for software systems Software maintenance Making changes to operational software systems Legacy system management Making decisions about software change
Importance of evolution Organizations have huge investments in their software systems - they are critical business assets To maintain the value of these assets to the business, they must be changed and updated The majority of the software budget in large companies is devoted to changing and evolving existing software rather than developing new software
A spiral model of development and evolution
Evolution and servicing Evolution The stage in a software system’s life cycle where it is in operational use and is evolving as new requirements are proposed and implemented in the system Servicing At this stage, the software remains useful but the only changes made are those required to keep it operational, i.e. bug fixes and changes to reflect changes in the software’s environment. No new functionality is added Phase-out The software may still be used but no further changes are made to it
Evolution processes Software evolution processes depend on The type of software being maintained The development processes used The skills and experience of the people involved Proposals for change are the driver for system evolution Should be linked with components that are affected by the change, thus allowing the cost and impact of the change to be estimated Change identification and evolution continues throughout the system lifetime
The software evolution process
Change implementation
Urgent change requests Urgent changes may have to be implemented without going through all stages of the software engineering process If a serious system fault has to be repaired to allow normal operation to continue If changes to the system’s environment (e.g., an OS upgrade) have unexpected effects If there are business changes that require a very rapid response (e.g. the release of a competing product)
The emergency repair process
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 Types of maintenance
Figure 9.8 Maintenance effort distribution
Figure 9.9 Development and maintenance costs
Team stability Maintenance costs are reduced if the same staff are involved with them for some time 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 Maintenance cost factors