1/50
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
|---|
No study sessions yet.
What is the main goal when transforming requirements into software?
To produce maintainable, modifiable, and testable systems through well-chosen architecture.
Why must architecture be considered early in development?
Because structural decisions are hard to change later and greatly affect flexibility and scalability.
What is software entropy?
The degradation of a system’s structure over time, making it riskier to modify or extend.
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.
Why do we want to reduce dependencies?
To minimize ripple effects when changing one part of the system.
What are the first steps before architecture design?
Requirements elicitation, technology exploration, repository setup, and build environment configuration.
What are the three main levels of design?
System Architecture, Software Architecture, and Low-Level Design.
What is an example of system architecture?
Designing all subsystems in an autonomous car, including sensors, cloud, and onboard systems.
How does software architecture fit in Apollo’s system?
It defines modules like Perception, Planning, and Control within the broader vehicle system.
Give an example of low-level design.
Implementing the Open Space Planner algorithm within Apollo’s Planning module.
How do Kruchten, Booch, Bittner, and Reitman define software architecture?
A set of significant decisions about structure, behavior, and style of a software system.
What does Martin Fowler say about software architecture?
It’s the “important stuff” — decisions that are hardest to change later.
What makes something architecturally significant?
It impacts key qualities like scalability, reliability, or maintainability.
What two aspects does architecture define?
Components (modules, databases, etc.) and interactions (data flow, APIs, communication).
Can a system have multiple architectural levels?
Yes — high-level for overall structure and low-level for detailed component interactions.
What is a reference architecture?
A blueprint capturing common structures and relationships for a domain.
Why use a reference architecture?
To standardize best practices and simplify designing new systems.
Give an example of a reference architecture.
A generic web browser with modules for rendering, networking, and persistence.
What is the Big Ball of Mud pattern?
A chaotic system built without preplanning, where features pile up with no clear structure.
Why is the Big Ball of Mud problematic?
It’s nearly impossible to maintain, test, or scale without breaking functionality.
How does Netscape Communicator illustrate architecture?
It shows how early browsers evolved from monolithic to modular designs.
What are the key elements of Chrome’s architecture?
Multiple process types, threads, IPC communication, and strong isolation for reliability.
What design goals did Chrome’s architecture support?
Robustness, security, and performance through process isolation.
What architectural styles does Chrome use?
A mix of client-server and layered architectures.
What is an architecture pattern?
A generalized, reusable strategy for organizing system components and solving recurring structural problems.
What are the three levels of software patterns?
Architecture patterns, design patterns, and code patterns.
Describe the Client-Server pattern.
Clients request services from centralized servers over a network.
What are the pros and cons of the Client-Server pattern?
Pros: Centralized control, easy maintenance. Cons: Bottlenecks, single point of failure.
What is the Repository architecture pattern?
All subsystems share data via a central repository, enabling easy data sharing.
When is the Repository pattern useful?
In systems with large amounts of shared data, like databases or compilers.
What is the Peer-to-Peer (P2P) pattern?
Multiple computers communicate directly, acting as both clients and servers.
Give examples of P2P systems.
BitTorrent, blockchain, file sharing, and distributed ledgers.
What defines the Layered Architecture pattern?
Hierarchical organization where each layer provides services to the one above and depends on the one below.
What are the three main layers in most software systems?
UI (Presentation), Business Logic (Controller), and Data Layer (Model).
What are the main benefits of layered architecture?
Flexibility, reusability, independent team work, and scalability.
What is the goal of designing good architecture?
To reduce the impact of change and promote maintainability.
What is the Publisher-Subscriber pattern?
Publishers broadcast messages that subscribers can receive when interested.
Where is Publisher-Subscriber used?
Event-driven systems, GUIs, messaging apps, and notification frameworks.
What is modularity?
Structuring a system into independent, self-contained components.
Why is modularity important?
It simplifies maintenance, enables reuse, and supports parallel development.
What does loose coupling mean?
Modules have minimal interdependencies, so changes in one don’t break others.
What is high cohesion?
When a module is focused on a single, well-defined responsibility.
What does “DRY” stand for, and why is it important?
Don’t Repeat Yourself — reduces redundancy and potential errors.
What is separation of concerns?
Dividing a program into parts that each handle a distinct concern (UI, logic, data, etc.).
What is information hiding?
Concealing implementation details so components interact through interfaces, not internals.
How does good architecture minimize the cost of change?
By isolating components, defining clear interfaces, and avoiding tangled dependencies.
How does architecture help multiple teams work efficiently?
Enables teams to work independently on layers or components with minimal overlap.
How are architecture patterns different from design patterns?
Architecture patterns shape the overall system; design patterns manage component interactions.
Does software architecture stay the same throughout a project’s lifetime?
No — architecture evolves as requirements and technology change.
Summarize the main purpose of software architecture.
To provide a clear structure that enables scalability, maintainability, reliability, and adaptability over time.