Software Evolution (WK7) Flashcards

1
Q

Name some examples of where software changes come from

A
  • when software gets used
  • errors
  • business environment changes
  • new hardware added
  • need to improve performance/reliability
  • changes in laws
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What are Lehmans laws? Applied to all systems as they evolve

A

Continuing change: A program must change or it risks becoming progressively less useful in that environment.

Increasing complexity: As a program changes, its structure tend to become more complex - extra resources must be applied to stopping this.

Large program evolution: program evolution is a self-regulating process

Organisational stability: over a programs lifetime, its rate of development is approximately constant

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

Why is software evolution important?

A
  • Software systems are critical business assets and to maintain value, they must be changed and updated
  • majority of budget of software is for change and evolution
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Ways of implementing evolution in agile methodology

A
  • log changes to change tracker/backlog
  • eliminate need for approvals as much as possible
  • have a light change control form
  • keep stakeholders and operations involved
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What are the four sections in the spiral model

A

Specification, implementation, validation, operation

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

What is the difference between evolution and servicing/maintenance?

A

Servicing/maintenance is concerned with just keeping the software functional, adding no new changes. Evolution is when new changes are being added in. Servicing often comes before phase-out.

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

What are the 3 types of software maintenance?

A

Fault repairs: changing a system to fix bugs/vulnerabilities (24%)
Environmental Adaptation: adapting software to different operating environment (19%)
Functionality Addition/Modification: modifying the system to satisfy new requirements (58%)

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

Describe some of the costs of maintenance

A
  • Maintenance costs usually greater than development costs
  • both technical and non technical factors
  • increases as software is maintained
  • ageing software can have high support costs
  • usually more expensive to add new features during maintenance
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Things to look at when predicting maintenance and change

A

Maintenance: parts of the system will be most expensive, short and long term costs

Change: system interfaces, volatile system requirements, business processes used by the system

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

What is software re-engineering?

A

Restructuring or rewriting without changing functionality. Helps make code more easily maintainable/better documented/ etc. Would re-engineer when the project faces major issues.
Examples: port to a new platform, migrate to fortran 955, translate to C.

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

What is software refactoring?

A

Making improvements to program to slow down degradation (preventative maintenance). Involves modifying a program to improve its structure, reduce complexity, or make it easier to understand. Does not add new functionality.
Examples: removing dead code, renaming variables, modularising the program, eliminating common code blocks, etc.

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

Advantages of re-engineering

A
  • reduced risk (less need to do completely new software development)
  • reduced cost (long term)
    BUT - high cost in short term
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are 4 main re-engineering process activities

A
  • source code translation to a new language
  • reverse-engineering (analysing program to understand it)
  • program modularisation/structure improvement
  • data re-engineering (cleanup and restructure data (format) that the system operated on
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Anti-patterns

A

Anti-patterns are code that looks like it should follow a pattern but does not - code smells. Bad smells are things like: duplicate code, along methods

Its a good idea to seperate out things that change from those that don’t

  • program to an interface not an implementation
  • use composition and delegation over inheritance
How well did you know this?
1
Not at all
2
3
4
5
Perfectly