Software Engineering Overview Flashcards

1
Q

Characteristics of a Software Engineering project

A
Large scale
Specific set of requirements
Limited time/budget
working in a team environment
More than one version
Follows software engineering guidelines
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

4 factors of software development

A

Time
Money
Quality
Functionality

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

Success factor of software development

A

Productivity
Money - more work done in less time results in lesser cost
Functionality - reduced time allows for more features
Quality - reduced time allows for better polish

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

Define: Correctness

A

“Building the right system”

A measure of how well the software follows the client specifications

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

Define: Robustness

A

“Building the system right”

A measure of how well the software operates outside the given parameters

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

Define: Maintenance

A

The continuous correction of errors, and updating of construction of a software project, in order to keep it up to date with changing requirements/specs.
Also ensures security, efficiency and robustness

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

Symptoms of a difficult to maintain system

A

A maintainable system should have high cohesion and low coupling. If a system has high coupling, this could make it difficult to maintain.

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

Define: Interface

A

A contract between the software system and the environment I.e. a keyboard is an interface between the user and a word processing program

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

Why not no interfaces?

A

No interfaces means that there is no way for the environment to interact with the software system, and for many projects, environmental interaction is a critical component. Very few software projects are self contained.

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

Benefits of reusing software components

A

Saves development time significantly

Prevents accidental mistakes from sneaking into already verified methods

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

Drawbacks of reusing software components

A

Code reuse results in dependency from the source of the component
Increases system coupling

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

Why is Software Engineering considered to be in a ‘crisis’

A

Many projects are cancelled, finish up to 10x over budget and 2x late.

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

Why isn’t the crisis over?

A

Software Engineering is a new discipline, still growing and changing. Peoples expectations are growing faster than the practises of the discipline

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

What is the relationship between interface size and

maintainability of a component?

A

A larger interface will mean that a component is less maintainable, as there is more being guaranteed by the system.

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

What is the relationship between interface size and

maintainability of a component?

A

A larger interface will mean that a component is less maintainable, as there is more being guaranteed by the system.
A component with a good interface size will be:

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

How to address fragility in a system?

A

Add abstract elements, and make the system more robust

17
Q

Core problems in modern software engineering?

A

Projects running overtime, overbudget, being cancelled. Software with quality problems
Poor reliability and correctness