Evolution and Maintenance Flashcards

(25 cards)

1
Q

What is software evolution or maintenance?

A

Software evolution or maintenance refers to the ongoing process of updating, correcting, and enhancing software after its initial delivery, often lasting longer than initial development.

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

What typically drives software maintenance and evolution?

A

Change drives software maintenance and evolution, including fixing errors, adapting to new environments, and adding new functionality as requirements change.

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

What are the three main types of software change?

A
  1. Fault Repairs – fixing coding errors, usually inexpensive and minor.
  2. Environmental Adaptations – updating for new platforms or OS, more expensive but not a full redesign.
  3. Functionality Additions – adding or modifying features, often expensive and may require redesign.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Which type of change tends to be the most expensive in software maintenance?

A

Functionality additions or modifications are the most expensive, accounting for about 65% of change costs.

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

Why is maintenance the most expensive stage for making changes?

A

Maintenance is costly due to team changes, staff skill levels, program age and structure, and poor original development practices such as inadequate documentation and unreadable code.

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

How can early investment in software quality affect maintenance costs?

A

Spending more on quality during development reduces the cost of later changes, leading to overall savings in the software lifecycle.

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

What is requirements change management?

A

Requirements change management is the process of understanding, documenting, and controlling changes to requirements, tracing the impact on specifications and design, and estimating costs before implementing changes.

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

What are the main steps in handling a requirements change?

A
  1. Problem analysis and change specification.
  2. Change analysis and costing.
  3. Change implementation (updating requirements, specs, and designs, not just code).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Why is it important to trace requirements and specifications?

A

Tracing allows you to understand which requirements have changed and how those changes affect specifications and design, making cost estimation and impact analysis possible.

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

What is the risk with emergency changes in software?

A

Emergency changes often prioritize code fixes over documentation, leading to inconsistencies between requirements, design, and code, and making future maintenance harder.

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

How should emergency changes be handled to reduce long-term risk?

A

Document emergency changes as soon as possible, and plan proper solutions for the next release to avoid code becoming unmanageable.

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

What is code refactoring and why is it important?

A

Refactoring is the process of improving code structure without changing its behavior, helping slow down code degradation and making future changes easier.
Making a large number of intelligent changes to better the code rather than one small simple fix to the bit that’s wrong

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

Give examples of code issues that refactoring can address.

A

Refactoring can address duplicate code, long methods, data clumping, and speculative generality (removing unnecessary future-proofing).

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

When should a software project be restarted from scratch?

A

When the cost of change becomes too high, productivity drops, or requirements have changed so much that a new design or system is needed, restarting may be more effective.

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

How does poor code quality affect productivity over time?

A

Poor code quality leads to increased complexity, making it harder and slower to add or modify features, eventually reducing team productivity to near zero.

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

What is the impact of adding more staff to a poorly maintained codebase?

A

Adding staff to a messy codebase can worsen the problem, as new developers unfamiliar with the design may introduce more inconsistencies and further decrease productivity.

17
Q

How do Agile and incremental approaches help manage change during development?

A

Agile and incremental approaches involve clients early and frequently, making acceptance and change part of the process and reducing the cost and disruption of change.

18
Q

Why is change management especially important during development?

A

Managing change during development is cheaper and less disruptive than after delivery, and helps avoid delays and cost overruns by integrating changes into the current plan.

19
Q

How does the Waterfall model handle change, and what is its limitation?

A

The Waterfall model has no obvious place for change; changes require backtracking, making it hard to adapt once a phase is complete.

20
Q

How does the Spiral model address change in software engineering?

A

The Spiral model incorporates risk analysis and review at every cycle, allowing for approval and adaptation of plans as the project progresses.

21
Q

What is the main lesson about software evolution and maintenance?

A

Change is inevitable in software; planning for evolution, investing in quality, and managing change systematically are essential for long-term success and cost control.

22
Q

Change is inevitable. How can we minimise its effects?

A

Prototypes help anticipate changing needs
Incremental delivery helps accommodate changing needs

23
Q

Requirements Change Management - what is Problem Analysis and Change Specification

A

Specification of the changes (not new specs)
Analysing a specific proposed change request

24
Q

Requirements Change Management - what is Change Analysis and Costing?

A

Trace changes to specs - and estimate size of change
Estimate a cost - with product and design managers
Decide whether to proceed

25
Requirements Change Management - what is Change Implementation?
Changing reqs (not coding) Changing documentation End with new system design tot be given to developers