Ch. 9: SW Evolution, Reengineering and Refactoring Flashcards

1
Q

What is the majority of the software budget in large companies devoted to ___ rather than developing new software?

A

Changing/evolving existing software

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

What kind of testing is valuable when changes are made to a system?

A

Automated regression testing

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

Changes may be expressed as additional ___

A

user stories

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

Agile methods are based on __ development

A

incremental

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

What are legacy systems?

A

Older systems that rely on languages and technology that are no longer used for new systems development

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

Legacy software may be dependent on __

A

older hardware

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

Legacy systems are not just software systems but are __

A

broader socio-technical systems

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

What are the reasons why system replacement is risky?

A
  • Lack of complete system specification
  • Tight integration of system and business processes
  • Undocumented business rules embedded in the legacy system
  • New software development may be late and/or over budget
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are the legacy system layers?

A
  • Business processes
  • Application software
  • Platform and infrastructure software
  • Hardware
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What is software maintenace?

A

Modifying a program after it has been put to use

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

What are the types of maintence?

A
  • Fault repairs
  • Environmental adaption
  • Functionality addition and modification
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What are fault repairs?

A

Changing a system to fix bugs/vulnerabilities and correct deficiencies in the way meets its requirements

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

What is environmental adaption?

A

Maintenance to adapt software to a different operating environment

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

What is functionality addition and modification?

A

Modifying the system to satisfy new requirements

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

What is software reengineering?

A

Restructuring or rewriting part or all of a legacy system without changing its functionality

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

What are the advantages of reengineering?

A
  • Reduced risk
  • Reduced cost
17
Q

What are the reengineering process activities?

A
  • Source code translation
  • Reverse engineering
  • Program structure improvement
  • Program modularization
  • Data reengineering
18
Q

What is refactoring?

A

The process of making improvements to a program to slow down degradation through change

19
Q

What is the difference between refactoring and reengineering?

A

Reengineering takes place after a system has been maintain for some time and maintenance costs are increasing

Refactoring is a continuous process of improvement throughout the development and evolution process

20
Q

What are the ‘bad smelling’ in program code?

A
  • Duplicate code
  • Long methods
  • Switch case statements
  • Data clumping
  • Speculative generality
21
Q

What are the 3 types of software maintenance?

A
  • Bug fixing
  • Modifying software to work in a new environment
  • Implementing new or changed requirements