L19: Software Evolution Flashcards
Explain the concept of software change?
- Software change is inevitable
- New requirements emerge through the use of the software
- Business environment changes
- Errors need to be repaired
- Need to improve performance
- Changes can lead to degradation in system, reduced understanding
- A key problem is implementing and managing change in existing software systems
What is the importance of change in software?
- Software is a critical business asset for organisations
- The software must be kept updated to maintain their value
- More and more of organisational budgets are used for changing and evolving existing software rather than developing new software
The earlier and more regularly software is updated, the easier it is
What are the stages in the software evolution lifecycle?
- Software development
- Software evolution- The system is in operational use and is evolving as new requirements are proposed and implemented in the system
- Software servicing- The system remains useful but the only changes made are those required to keep it operational, no new functionality is added
- Software retirement- The system may still be used but no further changes are made to it, may be replaced
What are the stages in the software evolution process?
- Change request
- Impact analysis
- Release planning
- Change implementation
- System release
How do we perform software evolution in agile development?
- Agile method uses incremental development, transition between development and evolution is seamless
- Automated regression testing is particularly valuable when making changes
- Changes may be expressed as additional user stories
What are some handover problems?
- Mismatch between development and evolution approaches, different methodologies
- Different processes have different levels of documentation to support evolution
- If plan-based is used for development but not for evolution, evolution team may need to develop automated testing
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?
- Modifying a program after it has been put into use, change existing components or adding new components
- Generic software products are said to evolve to create new versions
- Maintenance does not normally involve major changes to the system’s architecture
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?
- Restructuring or rewriting part or all of an existing system without changing its functionality
- Applicable where some but not all sub-systems of a larger system require frequent maintenance
- Re-engineering involves adding effort to make them easier to maintain
- The system may be re-structured and re-documented
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?
- The process of making improvements to a program to slow down degradation through change
- Can be thought of as ‘preventative maintenance’ that reduces the problems of future change
- Involves modifying a program to improve its structure, reduce its complexity or make it easier to understand.
- During refactoring, the focus is on software improvement rather than adding new functionality