SE Lecture 1 Flashcards

1
Q

What are the learning objectives of the first lecture?

A

Appreciate software complexity

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

Why is software development complex?

A

Large systems require planning

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

Give an example of a large codebase to illustrate software complexity.

A

Boeing 787 → 14M lines of code; Windows 10 → 15M lines of code.

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

Why can’t large systems be implemented bottom-up?

A

Too complex to implement line-by-line; requires significant upfront planning.

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

How does the application domain add to software complexity?

A

Problems can be inherently complicated

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

What is an example of software complexity due to the application domain?

A

Building a hospital management system requires learning the hospital domain.

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

How does communication contribute to software complexity?

A

Different vocabularies

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

What is an example of communication challenges in software development?

A

Clarifying whether to store integers or floating-point numbers when clients request “storing numbers.”

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

Why is project management challenging in large software development?

A

Requires dividing projects

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

How does coding contribute to software complexity?

A

Writing reliable

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

What are some software quality problems caused by complexity?

A

Unreliable

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

What happened in the Ariane 5 rocket failure?

A

A tiny bug caused the rocket to explode.

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

What happened to the London Ambulance System in 1992?

A

System failure caused fatalities due to delayed ambulance service.

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

What happened to the London Stock Exchange System?

A

Abandoned after 5 years of development due to reliability issues.

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

How can software complexity affect software development projects?

A

Projects may be over-schedule

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

What percentage of large software systems face company-threatening issues?

A

0.17

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

What percentage of large software systems go over budget?

A

0.45

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

What percentage of large software systems are overtime?

19
Q

What percentage of large software systems deliver less value than expected?

20
Q

What is the first step to reduce complexity in software engineering?

A

Choose appropriate design goals at the start of the project.

21
Q

Why can’t all design goals be achieved simultaneously?

A

Conflicting goals due to time and budget constraints.

22
Q

What does modularity mean in software development?

A

Dividing large systems into smaller

23
Q

Define a module in software systems.

A

A part of the system that can be considered independently.

24
Q

What is the purpose of interfaces in modular systems?

A

Facilitate communication and interaction between modules.

25
What is abstraction in software design?
Skipping internal module details and focusing only on the interface.
26
What is encapsulation in software design?
Changing a module without affecting other parts of the system.
27
Name three benefits of modularity and incremental development.
Increased productivity
28
What are the two main tasks of a software engineer?
Programming-in-the-small (coding) and programming-in-the-large (software engineering).
29
What do software engineers do besides coding?
Communicate with stakeholders
30
What distinguishes software engineering from small programming tasks?
Software engineering is a disciplined
31
What is the role of Software Configuration Management in software engineering?
It tracks different versions of software to support multi-version projects and ensure proper version control.
32
What are the two primary models used in software engineering?
The Requirements Model captures user needs
33
What does rationale management involve in software engineering?
Documenting decisions and assumptions to revisit and adapt them as the project evolves.
34
How does software engineering differ from computer science?
Computer science focuses on algorithms and computing theory
35
What is the primary activity in software engineering?
Building models
36
Why is team communication crucial in software engineering?
Effective communication with clients
37
How does software engineering handle changes in requirements?
By continuously assessing and adjusting based on the evolving understanding of user needs and technological changes.
38
What is modularity in software engineering?
Breaking down a large software system into smaller
39
What is the benefit of abstraction and encapsulation in modular design?
They allow developers to interact with modules through interfaces
40
What are the consequences of poor software engineering practices?
Unreliable
41
Why is training important for software engineers?
It equips them with the necessary knowledge and skills to design
42
How does incremental development help manage complexity?
By focusing on one small piece of the system at a time
43
What is the divide-and-conquer approach in software engineering?
Dividing a large system into smaller modules to tackle each part separately