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
Q

What is abstraction in software design?

A

Skipping internal module details and focusing only on the interface.

26
Q

What is encapsulation in software design?

A

Changing a module without affecting other parts of the system.

27
Q

Name three benefits of modularity and incremental development.

A

Increased productivity

28
Q

What are the two main tasks of a software engineer?

A

Programming-in-the-small (coding) and programming-in-the-large (software engineering).

29
Q

What do software engineers do besides coding?

A

Communicate with stakeholders

30
Q

What distinguishes software engineering from small programming tasks?

A

Software engineering is a disciplined

31
Q

What is the role of Software Configuration Management in software engineering?

A

It tracks different versions of software to support multi-version projects and ensure proper version control.

32
Q

What are the two primary models used in software engineering?

A

The Requirements Model captures user needs

33
Q

What does rationale management involve in software engineering?

A

Documenting decisions and assumptions to revisit and adapt them as the project evolves.

34
Q

How does software engineering differ from computer science?

A

Computer science focuses on algorithms and computing theory

35
Q

What is the primary activity in software engineering?

A

Building models

36
Q

Why is team communication crucial in software engineering?

A

Effective communication with clients

37
Q

How does software engineering handle changes in requirements?

A

By continuously assessing and adjusting based on the evolving understanding of user needs and technological changes.

38
Q

What is modularity in software engineering?

A

Breaking down a large software system into smaller

39
Q

What is the benefit of abstraction and encapsulation in modular design?

A

They allow developers to interact with modules through interfaces

40
Q

What are the consequences of poor software engineering practices?

A

Unreliable

41
Q

Why is training important for software engineers?

A

It equips them with the necessary knowledge and skills to design

42
Q

How does incremental development help manage complexity?

A

By focusing on one small piece of the system at a time

43
Q

What is the divide-and-conquer approach in software engineering?

A

Dividing a large system into smaller modules to tackle each part separately