Software Architecture

0.0(0)
studied byStudied by 0 people
0.0(0)
full-widthCall Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/50

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

51 Terms

1
New cards

What is the main goal when transforming requirements into software?

To produce maintainable, modifiable, and testable systems through well-chosen architecture.

2
New cards

Why must architecture be considered early in development?

Because structural decisions are hard to change later and greatly affect flexibility and scalability.

3
New cards

What is software entropy?

The degradation of a system’s structure over time, making it riskier to modify or extend.

4
New cards

What happens when Class A changes and Classes B, C, and D depend on it?

Changes propagate across the system, causing maintenance headaches and potential bugs.

5
New cards

Why do we want to reduce dependencies?

To minimize ripple effects when changing one part of the system.

6
New cards

What are the first steps before architecture design?

Requirements elicitation, technology exploration, repository setup, and build environment configuration.

7
New cards

What are the three main levels of design?

System Architecture, Software Architecture, and Low-Level Design.

8
New cards

What is an example of system architecture?

Designing all subsystems in an autonomous car, including sensors, cloud, and onboard systems.

9
New cards

How does software architecture fit in Apollo’s system?

It defines modules like Perception, Planning, and Control within the broader vehicle system.

10
New cards

Give an example of low-level design.

Implementing the Open Space Planner algorithm within Apollo’s Planning module.

11
New cards

How do Kruchten, Booch, Bittner, and Reitman define software architecture?

A set of significant decisions about structure, behavior, and style of a software system.

12
New cards

What does Martin Fowler say about software architecture?

It’s the “important stuff” — decisions that are hardest to change later.

13
New cards

What makes something architecturally significant?

It impacts key qualities like scalability, reliability, or maintainability.

14
New cards

What two aspects does architecture define?

Components (modules, databases, etc.) and interactions (data flow, APIs, communication).

15
New cards

Can a system have multiple architectural levels?

Yes — high-level for overall structure and low-level for detailed component interactions.

16
New cards

What is a reference architecture?

A blueprint capturing common structures and relationships for a domain.

17
New cards

Why use a reference architecture?

To standardize best practices and simplify designing new systems.

18
New cards

Give an example of a reference architecture.

A generic web browser with modules for rendering, networking, and persistence.

19
New cards

What is the Big Ball of Mud pattern?

A chaotic system built without preplanning, where features pile up with no clear structure.

20
New cards

Why is the Big Ball of Mud problematic?

It’s nearly impossible to maintain, test, or scale without breaking functionality.

21
New cards

How does Netscape Communicator illustrate architecture?

It shows how early browsers evolved from monolithic to modular designs.

22
New cards

What are the key elements of Chrome’s architecture?

Multiple process types, threads, IPC communication, and strong isolation for reliability.

23
New cards

What design goals did Chrome’s architecture support?

Robustness, security, and performance through process isolation.

24
New cards

What architectural styles does Chrome use?

A mix of client-server and layered architectures.

25
New cards

What is an architecture pattern?

A generalized, reusable strategy for organizing system components and solving recurring structural problems.

26
New cards

What are the three levels of software patterns?

Architecture patterns, design patterns, and code patterns.

27
New cards

Describe the Client-Server pattern.

Clients request services from centralized servers over a network.

28
New cards

What are the pros and cons of the Client-Server pattern?

Pros: Centralized control, easy maintenance. Cons: Bottlenecks, single point of failure.

29
New cards

What is the Repository architecture pattern?

All subsystems share data via a central repository, enabling easy data sharing.

30
New cards

When is the Repository pattern useful?

In systems with large amounts of shared data, like databases or compilers.

31
New cards

What is the Peer-to-Peer (P2P) pattern?

Multiple computers communicate directly, acting as both clients and servers.

32
New cards

Give examples of P2P systems.

BitTorrent, blockchain, file sharing, and distributed ledgers.

33
New cards

What defines the Layered Architecture pattern?

Hierarchical organization where each layer provides services to the one above and depends on the one below.

34
New cards

What are the three main layers in most software systems?

UI (Presentation), Business Logic (Controller), and Data Layer (Model).

35
New cards

What are the main benefits of layered architecture?

Flexibility, reusability, independent team work, and scalability.

36
New cards

What is the goal of designing good architecture?

To reduce the impact of change and promote maintainability.

37
New cards

What is the Publisher-Subscriber pattern?

Publishers broadcast messages that subscribers can receive when interested.

38
New cards

Where is Publisher-Subscriber used?

Event-driven systems, GUIs, messaging apps, and notification frameworks.

39
New cards

What is modularity?

Structuring a system into independent, self-contained components.

40
New cards

Why is modularity important?

It simplifies maintenance, enables reuse, and supports parallel development.

41
New cards

What does loose coupling mean?

Modules have minimal interdependencies, so changes in one don’t break others.

42
New cards

What is high cohesion?

When a module is focused on a single, well-defined responsibility.

43
New cards

What does “DRY” stand for, and why is it important?

Don’t Repeat Yourself — reduces redundancy and potential errors.

44
New cards

What is separation of concerns?

Dividing a program into parts that each handle a distinct concern (UI, logic, data, etc.).

45
New cards

What is information hiding?

Concealing implementation details so components interact through interfaces, not internals.

46
New cards

How does good architecture minimize the cost of change?

By isolating components, defining clear interfaces, and avoiding tangled dependencies.

47
New cards

How does architecture help multiple teams work efficiently?

Enables teams to work independently on layers or components with minimal overlap.

48
New cards

How are architecture patterns different from design patterns?

Architecture patterns shape the overall system; design patterns manage component interactions.

49
New cards

Does software architecture stay the same throughout a project’s lifetime?

No — architecture evolves as requirements and technology change.

50
New cards

Summarize the main purpose of software architecture.

To provide a clear structure that enables scalability, maintainability, reliability, and adaptability over time.

51
New cards