Chapter 1: Introduction Flashcards

1
Q

Describe the Software Crisis that occurred in the 1960’s

A

The software crisis of the 1960’s arose because the individual approach to software development did not scale up to large systems, leading to unreliable, expensive and late software.

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

Describe the Structured Programming paradigm

A

Structured programming involves using while loops and subroutines extensively instead of the more primitive “goto” statement that can lead to spaghetti code

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

Name some programming paradigms that arose in the 20th century

A

Examples:
- OOP Object Oriented Programming
- Rapid Application Development (RAD)
- Scrum
- Extreme Programming
and more

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

Approximately what percentage of software engineering is coding?

A

~7%

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

Why is it difficult to estimate the complexity of a software product?

A

Software is abstract and invisible. Purely estimating complexity on lines of code, developers working on the project, etc. may not be representative of the actual complexity. There is not an agreed upon method for measuring software complexity.

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

What are the two dimensions of software engineering?

A
  1. Technical Dimension - complexity of the actual system being built
  2. Management Dimension - complexity that arises from managing a team of software engineers
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

True or false: technical problems in software generally outweigh management problems

A

False: most problems in SWE arise at the management level

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

Define legacy code

A

Source code relating to a no longer supported computer technology or software

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

What is the difference between generic and customized software products?

A

Generic - stand-alone software that people can use - word processors, games, etc.
Customized - specialized software for companies to commission - embedded control systems, traffic monitoring systems, etc.

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

List the 4 essential attributes of good software

A
  1. Maintainability
  2. Dependability and security
  3. Efficiency
  4. Acceptability
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Define software heterogeneity

A

The amount of dissimilar elements to achieve the same purpose. i.e. writing the software in 2 languages to run on different operating systems increases heterogeneity

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

Define cyclomatic complexity

A

Increases with linearly-independent paths through a program module - essentially, more if/else statements leads to higher cyclomatic complexity

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

Describe the difference between a “coder/programmer” and a “software engineer”

A

A coder or programmer is somebody who knows how to code, a software engineer is a person who employs software engineering techniques to design, development and maintenance of software

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

Describe how Confidentiality is an issue of professional responsibility in SWE

A

Engineers should respect the confidentiality of their employers and clients

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

Describe how Competence is an issue of professional responsibility

A

Engineers should not misrepresent their level of competence

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

Describe how intellectual property rights are an issue of professional responsibility

A

Engineers should always be aware of local laws governing the use of intellectual property

17
Q

Describe how Computer Misuse is an issue of professional responsibility

A

Software engineers should not use their technical skills to misuse others’ computers - disseminations of viruses, malware, etc.

18
Q

Describe software entropy

A

“Software entropy is the risk that changing existing software will result in unexpected problems, unmet objectives, or both. Although negligible when software is first created, software entropy grows with each development iteration.” -the internet

19
Q

Describe why programming in a “professional setting” can be more difficult than programming in an academic setting

A

Generally, when programming for an assignment, there is a detailed, exact list of requirements and tools available to solve the problem. In a professional setting, the tools must be chosen by the programmer and the requirements may be less clear or more abstract.