L19: Software Evolution Flashcards

1
Q

Explain the concept of software change?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is the importance of change in software?

A
  • 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What are the stages in the software evolution lifecycle?

A
  1. Software development
  2. Software evolution- The system is in operational use and is evolving as new requirements are proposed and implemented in the system
  3. Software servicing- The system remains useful but the only changes made are those required to keep it operational, no new functionality is added
  4. Software retirement- The system may still be used but no further changes are made to it, may be replaced
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the stages in the software evolution process?

A
  • Change request
  • Impact analysis
  • Release planning
  • Change implementation
  • System release
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

How do we perform software evolution in agile development?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are some handover problems?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is a legacy system?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Why can’t we just replace a legacy system?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Why can’t we just change a legacy system?

A

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 well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

How do we manage legacy systems?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is software maintenance?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What are the 3 types of maintenance?

A

Fault repairs (24%)
- Fix bugs, vulnerabilities

Environmental adaptation (19%)
- Maintain software to adapt to different operating environment

Functionality addition/modification (58%)
- Meet new requirements

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is software re-engineering?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What are the benefits of re-engineering?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What is refactoring?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Compare refactoring and re-engineering

A

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