No Silver Bullet Flashcards

1
Q

What 4 aspects of Software Development make it inherently hard to do?

A
  1. Complexity
  2. Conformity
  3. Changeability
  4. Invisibility
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Explain the complexity of Software Development

A

Software complexity has two types

  1. Accidentally Complex - E.g. large-scale e-commerce system (Simple in concept, complex in implementation).
  2. Inherent Complexity - E.g. Speech or Picture recognition systems.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Explain Conformity in Software Development

A

The software has to conform to the context it is operating within. E.g. A piece of software has for the benefit or tax system has to confirm with the benefit or tax rules and systems.
This also includes conformance with other software systems which provide other services such as payment systems, external hardware. Errors with conformance are a common cause of software failure.

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

Explain Changeability in Software Development

A

Requirements for software are notoriously fluid and changing all the time.
As a software system gets more massive, ensuring that the system doesn’t suffer regarding regression faults becomes harder and harder to test.

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

Explain Invisibility in Software Development

A

Unlike a building design or a piece of hardware, a lot of the complexity of software is invisible.
The representation of software, in general, is 2D (a listing) but its actual manifestation is more like 3D since there are links (couplings) possible between any 2 or more elements within the system,
When the software is represented visually, it is often challenging to understand the complexity of the picture produced.

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

What is the difference between accidental and inherent complexity in software development?

A
  1. Accidental complexity is the result of the design and implementation of a system which in concept may not be particularly complicated.
  2. Inherent complexity is the actual problem being solved is challenging to model.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Name the “Silver Bullets” Brookes put forward to cure the software development crisis.

A
  1. Better High-Level programming languages
  2. Object-Oriented Programming
  3. Artificial Intelligence
  4. Expert Systems
  5. Automatic Programming
  6. Graphical Programming
  7. Program Verification
  8. Environment and Tools
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Describe Brooks critique of Better High-Level programming languages

A

Better HLL reduce complexity by allowing expression in easier to understand more natural language.

HLL allow for a structure to be imposed on code and type checking to be carried out on data types.

HLL reduces, in general, the accidental complexity of any problem.

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

Describe Brooks critique of Object Oriented languages

A

OO development allows the programmer to put a constraint on the accidental complexity of any given problem. Abstract hierarchical data types allow the programmer to define the data structure as well as a permitted set of operations.

OO has been shown to allow for the higher reuse of code without changing the base code.

Other features which improve re-use and reduce complexity are:
Use of generic data types
Provision of interfaces
Provision of garbage collection

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

Describe Brooks critique of Automatic Programming

A

The idea of automatic programming is that the specification is defined in such a way that some automated method can be used to translate this into a program automatically

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

Describe Brooks critique of Graphical programming

A

Graphical programming is the development of software using some type of graphic tool or graphical user interface.

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