Software Architecture
Architecture is the set of decisions that are expensive to reverse, and this area is about making, recording, evaluating and evolving them. Interviews at senior level lean here because they want to hear how you justify a structure against quality attributes rather than fashion.
part ofSoftware design & architectureoverview, primer and where to startread it →on this pageshowhide
explore
- Architecture Fundamentals35 questions
- Conway's Law and Team Topologies5 questions
- Architecturally Significant Decisions6 questions
- Technical Strategy and Direction6 questions
- Quality Attributes6 questions
- Architectural Styles (Catalog)6 questions
- Describing Architecture30 questions
- Views and Viewpoints6 questions
- Stakeholders, Concerns, and Perspectives6 questions
- Architectural Decisions (ADRs)6 questions
- Architecture Documentation6 questions
- Diagramming with C4 and UML6 questions
- Evaluating and Evolving Architecture29 questions
- Architecture Evaluation6 questions
- Trade-off Analysis6 questions
- Architecture Risk and Technical Debt6 questions
- Coupling Metrics and Connascence6 questions
- Architectural Principles34 questions
- Separation of Concerns5 questions
- Architectural Boundaries6 questions
- Dependency Direction6 questions
- Layering5 questions
- Component Cohesion Principles6 questions
- Design Principles (Code Scale)6 questions
- Backend Developerroleanchors this topic
- Full Stack Developerroleanchors this topic
- Java Backend Developerroleanchors this topic
- Kotlin Backend Developerroleanchors this topic
- Software Design & Architectureskillanchors this topic
- Forward Deployed Engineerrole
- Game Developerrole
- Server-Side Game Developerrole
- Software Architectrole
questions
128 · 4 sectionsWhat is Conway's Law, and what does it predict about the relationship between an organization's communication structure and the systems it builds?
basics
~20 sConway's Law says a system's structure ends up mirroring how the teams that built it communicate. Four teams building a compiler tend to produce a four-pass compiler, because each team's boundary becomes an interface in the software.
What is a quality attribute (non-functional requirement) in software architecture, and how does it differ from a functional requirement?
basics
~20 sA functional requirement says WHAT the system does ("users can reset a password"). A quality attribute says HOW WELL it does it — fast, available, secure, maintainable. Quality attributes shape the architecture; functions can usually be implemented in many architectures.
What makes a design decision architecturally significant rather than a routine implementation choice?
basics
~20 sA decision is architecturally significant when it is expensive to change later, affects many parts of the system or many teams, and drives qualities such as performance, security or availability. Routine choices are local and cheap to reverse.
In software architecture, what is an architectural style (such as layered, event-driven, or microservices), and how does it differ from a design pattern?
basics
~20 sAn architectural style is a named, whole-system shape — how the big pieces are split and how they talk (layered, event-driven, microservices). A design pattern is a small, local solution inside one piece (e.g. Strategy, Observer). Style = macro, pattern = micro.
What is a "north-star" (target) architecture vision, and how does it differ from the current-state architecture?
basics
~20 sThe north-star is the agreed target architecture: a picture of the desired future state and why it is better. Current-state is what actually runs today. The gap between them drives a roadmap of incremental steps.
What is an Architecture Decision Record (ADR), and what are the four core sections of Michael Nygard's classic ADR template?
basics
~20 sAn ADR is a short document recording one significant architecture decision and why it was made. Nygard's template has four sections: Context (the forces at play), Decision (what we chose), Status (proposed/accepted/superseded), and Consequences (what results, good and bad).
In Simon Brown's C4 model for describing software architecture, what are the four levels of diagram, and what does each level show?
basics
~20 sC4 is four zoom levels. Context: your system, its users, and neighbouring systems. Container: the separately runnable/deployable pieces (web app, API, database). Component: the major building blocks inside one container. Code: classes inside one component — usually skipped.
What is an Architecture Decision Record (ADR), and what does a typical ADR contain?
basics
~20 sAn ADR is a short document capturing one significant architecture decision: the context that forced the choice, the option chosen, and the consequences. ADRs are numbered, dated, kept in version control, and never rewritten — superseded ones stay for history.
In the ISO/IEC 42010 conceptual model for architecture description, what is the difference between a stakeholder, a concern, an architecture viewpoint, and an architecture view?
basics
~20 sStakeholders are people who care about the system; concerns are what they care about (cost, security, uptime). A viewpoint is a reusable template for describing one such area; a view is the actual description produced by applying that template to your system.
In Kruchten's "4+1" view model of software architecture, what are the five views and what does each one describe?
basics
~20 sLogical view: functionality and domain structure. Process view: runtime processes, threads, concurrency. Development view: code modules, packages, build units. Physical (deployment) view: mapping software onto machines and networks. Plus Scenarios: key use cases that tie the four together.
In Robert C. Martin's component/package metrics, what do afferent coupling (Ca), efferent coupling (Ce), and instability I = Ce / (Ca + Ce) measure, and what do I = 0 and I = 1 say about a component?
basics
~20 sCa counts things outside the component that depend on it (incoming arrows). Ce counts things it depends on (outgoing arrows). I = Ce/(Ca+Ce) runs 0 to 1: 0 = maximally stable (everyone depends on it, it depends on nobody), 1 = maximally unstable.
In architecture evaluation, what is a "quality attribute scenario", and why is a goal like "the system must be scalable" not usable as an evaluation criterion?
basics
~20 sA quality attribute scenario is a concrete, testable sentence: some source sends a stimulus to the system in a given environment, and the system responds with a measurable result. "Scalable" has no measure, so nobody can agree whether a design meets it.
In evolutionary architecture, what is an architectural fitness function, and how does it differ from an ordinary unit test of business logic?
basics
~20 sA fitness function is an automated, objective check that the system still meets a required architectural quality — response time, allowed dependencies, security rules. A unit test checks business behaviour; a fitness function guards a structural or quality property.
What is technical debt, and what do the terms "principal" and "interest" mean when applied to it?
basics
~20 sTechnical debt is a shortcut in design or code that makes today faster but future changes slower. The principal is the work needed to fix the shortcut; the interest is the extra effort every change costs while it stays unfixed.
Architects often say "there are no right answers in architecture, only trade-offs". What does that mean in practice, and can you name two quality attributes that pull against each other?
basics
~10 sIt means improving one desirable property usually costs another. Example: caching copies of data makes reads fast but copies can be stale; adding redundant servers raises availability but raises cost and operational complexity.
What is an architectural boundary in a software system, and what is the difference between a module's interface and its implementation?
basics
~20 sA boundary is a line separating parts of a system that change for different reasons. The interface is the small set of operations other parts may call; the implementation is the hidden internals (data structures, algorithms, storage) they must not touch.
What are the three component cohesion principles (REP, CCP, CRP) described by Robert C. Martin, and what does each one say about which code belongs together in a releasable component?
basics
~20 sREP: things released together should be usable together. CCP: put classes that change for the same reason in the same component. CRP: don't force users to depend on code they never use. Together they decide component contents.
What is the Dependency Inversion Principle (DIP), and how does introducing an interface change which way a dependency points between a high-level policy and a low-level detail?
basics
~20 sDIP says high-level policy should not depend on low-level details; both should depend on an abstraction. You define an interface next to the policy, the policy calls it, and the detail implements it — so the arrow now points from the detail to the policy.
In software design, what do the terms "coupling" and "cohesion" mean, and why is the standard goal low coupling with high cohesion?
basics
~20 sCoupling is how much one module depends on another; cohesion is how well the things inside one module belong together. Low coupling means changing one module rarely forces changes elsewhere; high cohesion means each module does one clear job.
In a layered software architecture with presentation, domain (business logic), and infrastructure/persistence layers, what is each layer responsible for and in which direction may dependencies point?
basics
~20 sPresentation handles input and output (UI, HTTP endpoints). Domain holds business rules and decisions. Infrastructure talks to databases, files, and other systems. Dependencies point one way — upper layers know about lower ones, never the reverse.