Software engineering crisis Flashcards

1
Q

What makes software complex?

A
  • There are many platforms to consider
  • Many types of model to choose from (standalone, client-server, peer to peer)
  • It’s solving hard problems (that may use NNs or AI)
  • they can be large (thousands of lines of code)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What are the two types of failure classifications?

A
  • Catastrophic (rare) in terms of cost, livers lost
  • Chronic failures (more common)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What are examples of chronic failures?

A
  • Project overruns
  • Functionality problems
  • Poor performance
  • Low quality code
  • Poorly structured code
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Why would we not want to use generative AI to write software?

A

It writes code that isn’t reliable or correct.

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

What are the 3 types of project resolutions in the Standish Chaos report?

A

Type 1: Successful: project was completed on time and on budget with all features/requirements
Type 2: Challenged: project completed/operational but over time estimate or over budget and offers less functionality than originally promised
Type 3: impaired: project is cancelled

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

What was the most frequent issue that led to projects being considered challenged or incomplete?

A

Project objectives were not specified correctly: 51% of failings

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

What needs to be true about an estimation for how long a project is going to take to complete, when considering if a project failed because it didn’t meet this estimation?

A

The estimation needs to be realistic in the first place. If it was ridiculously underestimated in the first place, it couldn’t be achieved anyway so it’s not really a failure to have not achieved it.

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

What was a criticism about the standish chaos report’s data on the number of incomplete projects?

A

The standish chaos report didn’t publish their data so their claim couldn’t be fact checked

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

What was a criticism about the standish chaos report definition of an incomplete project?

A

The standish chaos report declared success as relative to the original estimation

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

What are the formulas for measuring failure in terms of time and functionality?

A
  • forecast / actual < 1 (didn’t achieve in time given) e.g. 6/8 = 0.75 < 1
  • forecast / actual > 1 (didn’t achieve as much as was planned) e.g 10/5 = 2
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is the first problem with the classification of projects that the standish report uses?

A

The classification is incomplete, some projects don’t fit any of the criteria’s for project outcomes

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

What is the more serious problem with the standish chaos report’s methodologies?

A
  • projects that are successful have a forcast/actual >= 1 time and forcast/actual <= 1 functionality
  • however this is dependent on the estimates that were made in the first place
  • which may be over or under estimates
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What was the interesting point that was found by the rise and fall of the chaos report about the first organisation?

A

They had a high accuracy of forecast yet only managed a 59% success rate

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

What was the interesting point that was found by the rise and fall of the chaos report about the second organisation?

A

The company admitted they used the standish criteria to determine if a project was successful so consequently increased resources when forecasting to achieve a higher success rate.

  • They’re bias was larger, so accuracy was less but they achieved a higher success rate
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What was the interesting point that was found by the rise and fall of the chaos report about the third organisation?

A
  • They had good performance for forecasting with an institutional bias to produce low time forecasts. So they had a low success rate, based on their bias.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What does the rise and fall of the chaos reports case study of 3 organisations show us?

A

That the raw f/a ration is a poor judge of project success and organisations following that criteria often bias their forecasts to achieve better success rates.

17
Q

Why is software engineering hard?

A
  • It must perform
  • it is limited (by time, money, requirements)
  • it is constrained by hardware, designs and use
  • it can become obsolete very quickly
  • it solves complex problems
18
Q

What is inherent complexity?

A
  • Complexity that naturally arises from the problem domain itself.
  • It’s unavoidable difficulty that comes with solving that particular problem, no matter what tools or methods you use
19
Q

What is accidental complexity?

A
  • complexity that arises from the solution, tools or technology being used to solve the problem, rather than the problem itself.
  • developers introduce this complexity inadvertently
20
Q

What are the 4 essential difficulties of software development defined in the “No Silver Bullet: Essence and Accidents of Software Engineering” paper ?

A
  • Complexity
  • Conformity
  • Changeability
  • Invisibility
21
Q

Describe complexity as one of the essential difficulties of software development defined in the “No Silver Bullet: Essence and Accidents of Software Engineering”:

A
  • Software systems are complex due to their size, they have many states.
  • Often when scaling up complexity increases much more than linearly
  • “its nonlinear increases with size”.
  • Both technical and management problems arise from complexity of software engineering
22
Q

Describe conformity as one of the essential difficulties of software development defined in the “No Silver Bullet: Essence and Accidents of Software Engineering”:

A
  • difficulty is added as software must conform to different institutions and systems
  • this makes it hard as there’s loads of different systems which all have different rules that need to be followed
23
Q

Describe changeability as one of the essential difficulties of software development defined in the “No Silver Bullet: Essence and Accidents of Software Engineering”:

A
  • Software is constantly subjected to the pressure of change
  • after manufacture, things may still need to change to conform with new standards
  • changes in hardware can force software to need to be updated
  • users frequently demand new functionality for the software
24
Q

Describe invisibility as one of the essential difficulties of software development defined in the “No Silver Bullet: Essence and Accidents of Software Engineering”:

A
  • Software is hard to visualise, so contradictions and omissions are more likely to occur.
  • attempting to design software is hard because it doesn’t usually fit into one type of diagram, it becomes multiple types of diagrams
25
Q

How can accidental complexity be avoided?

A
  • By coding your software well: having strict data types that catch errors
  • using high level languages
  • Designing your software with good code structure and abstraction
  • By testing and refactoring: use CASE
26
Q

What are considered some Silver Bullets by brookes?

A
  • Better high level languages (reduce accidental complexity)
  • Object oriented programming (improves code reuse, encapsulation - improves testing, error messages improves debugging)
  • AI
  • Expert systems
  • Automatic programming
  • graphical programming
  • program verification
  • environment and tools
27
Q

From brookes no silver bullets paper, describe how OOP can enhance software development?

A
  • Advances in OOP can eliminate a certain amount of complexity from accidental difficulties
  • offers significant improvement if difficulty arises from the programming language
  • improves design of the solution
28
Q

How can programming verification help software development?

A
  • It can reduce testing load
29
Q

How can environment and tools help software development?

A

It can increase productivity and reliability

30
Q
A