Explain the concept of software change?
What is the importance of change in software?
The earlier and more regularly software is updated, the easier it is
What are the stages in the software evolution lifecycle?
What are the stages in the software evolution process?
How do we perform software evolution in agile development?
What are some handover problems?
What is a legacy system?
Older systems that rely on obsolete languages/ technologies/ hardware, but remain useful for a business
Legacy software is linked to system hardware, application data, and business processes
Has implications to broader ecosystem
Why can’t we just replace a legacy system?
Legacy system replacement is risky and expensive, so businesses continue to use these systems
System replacement is risky for a number of reasons:
- Lack of complete system specification
- Tight integration of system and business processes
- Undocumented business rules embedded in the legacy system
- New software is expensive
Why can’t we just change a legacy system?
Older systems that rely on languages and technologies that are no longer used for new systems development. There may not be people to have the skills to work on the legacy system.
Can have broad impacts on other software or business processes
How do we manage legacy systems?
It is often cheaper and less risky to maintain a legacy system than to develop a replacement system using modern technology.
Organisations that rely on legacy systems must choose a strategy for evolving these systems
- Continue maintaining it
- Transform it
- Replace it
- Scrap it
What is software maintenance?
What are the 3 types of maintenance?
Fault repairs (24%)
- Fix bugs, vulnerabilities
Environmental adaptation (19%)
- Maintain software to adapt to different operating environment
Functionality addition/modification (58%)
- Meet new requirements
What is software re-engineering?
What are the benefits of re-engineering?
Reduced risk
- There is 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
What is refactoring?
Compare refactoring and re-engineering
Re-engineering takes place after a system has been maintained for some time and when maintenance costs are increasing
Refactoring is a continuous process of improvement throughout the development and evolution process
Software re-engineering is concerned with re-structuring and re- documenting software to make it easier to understand and change
Refactoring, making program changes that preserve functionality, is a form of preventative maintenance