PECB CMSA study materials
PECB CMSA study resources

PECB CMSA practice questions

One question at a time. Build your PECB CMSA understanding.

First 50 of 200 questions. Each one lists the choices, the correct answer, and an explanation. The checker at the top of this page saves progress in this browser when it is available.

Continue in the practice tool above to load more questions, 50 at a time.

Question 1Software Architecture Fundamentals and Principles

In a layered architecture, which principle most directly justifies allowing a presentation layer to depend on a domain layer while forbidding the domain layer from depending on the presentation layer?

  1. The Common Closure Principle, because classes changed together belong together
  2. The Stable Dependencies Principle, because dependencies should point toward the more stable components Correct answer.
  3. The Release Reuse Equivalency Principle, because the unit of reuse is the unit of release
  4. The Acyclic Dependencies Principle, because dependency graphs must be free of cycles

Explanation

The Stable Dependencies Principle states that a component should depend in the direction of greater stability, so volatile presentation code depends on the more stable domain. Forbidding the reverse dependency keeps the domain independent of UI churn. The other principles address cohesion, release granularity, and cycle elimination rather than direction of stability.

Question 2Software Architecture Fundamentals and Principles

Which statement best captures the core intent of separation of concerns as an architectural principle?

  1. Each module should be assigned a distinct responsibility so that changes to one concern do not ripple through unrelated code Correct answer.
  2. Every module should expose its internal state so that other modules can coordinate efficiently
  3. Concerns should be separated only at deployment time, while source code remains monolithic
  4. All concerns should be centralized in a single orchestrator to guarantee consistent behavior

Explanation

Separation of concerns partitions a system so each part addresses a distinct responsibility, limiting the blast radius of change. It is about responsibility boundaries, not about exposing state or centralizing logic. Deployment-time splitting alone does not achieve the design-time isolation the principle describes.

Question 3Software Architecture Fundamentals and Principles

A team argues that a service should be split so that each service owns its data store. Which architectural characteristic does this decision most directly promote?

  1. Higher transactional consistency across services
  2. Loose coupling through independent data ownership Correct answer.
  3. Simplified cross-service reporting
  4. Reduced need for API contracts

Explanation

Giving each service its own data store removes shared-schema coupling and lets services evolve independently. It typically trades away easy cross-service transactions and reporting, which become harder. API contracts become more important, not less, because the database is no longer a shared integration point.

Question 4Software Architecture Fundamentals and Principles

Which pair of metrics is most commonly used to quantify coupling and cohesion at the module level?

  1. Function points and story points
  2. Afferent and efferent coupling for coupling; relational cohesion for cohesion Correct answer.
  3. Lines of code and cyclomatic complexity
  4. Mean time to recovery and change failure rate

Explanation

Afferent coupling counts incoming dependencies and efferent coupling counts outgoing ones, giving a direct measure of module coupling. Relational cohesion measures how strongly the operations of a class are connected through shared attributes. The other pairs measure size, estimation, or operational performance rather than structural coupling and cohesion.

Question 5Software Architecture Fundamentals and Principles

In the context of the SOLID principles, which statement describes the Interface Segregation Principle?

  1. High-level modules should depend on abstractions rather than on concrete implementations
  2. A class should have only one reason to change
  3. Clients should not be forced to depend on methods they do not use, so interfaces should be fine-grained Correct answer.
  4. Software entities should be open for extension but closed for modification

Explanation

Interface Segregation advises splitting fat interfaces into smaller role-specific ones so that implementers and clients are not burdened by unused methods. It targets unnecessary dependency surface rather than change reasons or abstraction direction. The other descriptions correspond to the Single Responsibility, Dependency Inversion, and Open-Closed principles respectively.

Question 6Software Architecture Fundamentals and Principles

A payment module must support new providers without editing existing provider-handling code. Which design approach most directly satisfies the Open-Closed Principle?

  1. Define a provider abstraction and add new implementations that are registered at runtime Correct answer.
  2. Recompile the whole module whenever a provider is added
  3. Expose the handler's internal fields so new providers can adjust them directly
  4. Add a conditional branch for each new provider inside the existing handler

Explanation

The Open-Closed Principle is satisfied when behavior is extended by adding new code rather than modifying existing code. A stable abstraction plus runtime registration lets new providers be introduced without touching the handler. Conditional branching and exposing internals both require modifying or destabilizing existing code.

Question 7Software Architecture Fundamentals and Principles

Which description best characterizes the role of a reference architecture?

  1. A deployment runbook describing operational procedures
  2. A detailed low-level design document for one specific system
  3. A project schedule that sequences architecture activities
  4. A reusable, standardized structure and set of patterns that guides the design of systems in a domain Correct answer.

Explanation

A reference architecture provides a template of structures, patterns, and vocabulary that can be tailored across systems in a domain. It is intentionally generic and reusable rather than system-specific. It is not a low-level design, an operations runbook, or a schedule.

Question 8Software Architecture Fundamentals and Principles

An architect documents a decision to use asynchronous messaging between two services, including the context, the alternatives considered, and the consequences. Which artifact is being produced?

  1. A requirements traceability matrix
  2. A service-level agreement
  3. A capacity plan
  4. An architecture decision record Correct answer.

Explanation

An architecture decision record captures a single significant decision with its context, options, and consequences so future readers understand the rationale. It is lightweight and decision-focused. Traceability matrices, SLAs, and capacity plans serve different purposes and do not record design rationale.

Question 9Software Architecture Fundamentals and Principles

Which architectural style is most appropriate when the system must allow independent deployment and scaling of distinct business capabilities with minimal shared runtime state?

  1. Pipe-and-filter batch pipeline
  2. Client-server with a single shared database
  3. Microservices architecture Correct answer.
  4. Layered monolith

Explanation

Microservices organize the system around independently deployable services owning their own state, enabling per-capability scaling. A layered monolith and a single shared database create shared runtime and schema coupling that limit independent deployment. Pipe-and-filter suits stream processing rather than independent capability deployment.

Question 10Software Architecture Fundamentals and Principles

In event-driven architecture, what is the primary distinction between a choreography and an orchestration approach?

  1. Choreography is synchronous, while orchestration is always asynchronous
  2. Both approaches require a shared database to sequence steps
  3. Choreography lets services react to events without a central coordinator, while orchestration uses a coordinator to direct the flow Correct answer.
  4. Choreography requires a central coordinator, while orchestration relies on broadcast events

Explanation

In choreography, participants subscribe to events and act autonomously, so control is decentralized. In orchestration, a coordinator explicitly invokes and tracks each step. Neither approach requires a shared database, and both can be implemented with synchronous or asynchronous transport.

Question 11Software Architecture Fundamentals and Principles

Which statement accurately describes the relationship between architecture and design in a software project?

  1. Design precedes architecture because code must exist before structures are chosen
  2. Architecture and design are synonyms and differ only in document length
  3. Architecture concerns significant structural decisions and qualities, while design addresses the detailed realization of components Correct answer.
  4. Architecture applies only to distributed systems, while design applies to all systems

Explanation

Architecture focuses on the significant structural choices and quality attributes that are costly to change, while design elaborates the internals of components. The two are complementary and iterative rather than synonymous. Architecture is not restricted to distributed systems, and design does not precede it as a rule.

Question 12Software Architecture Fundamentals and Principles

A quality attribute scenario specifies a stimulus, source, environment, artifact, response, and response measure. Which purpose does this structure primarily serve?

  1. Describing the deployment topology of the system
  2. Listing functional features the system must implement
  3. Recording the project budget and schedule
  4. Making a quality requirement concrete and testable so it can drive architectural decisions Correct answer.

Explanation

Quality attribute scenarios turn vague qualities such as performance or availability into measurable requirements by specifying stimulus, response, and response measure. This concreteness lets architects evaluate whether a design satisfies the requirement. They do not enumerate features, budgets, or deployment topology.

Question 13Software Architecture Fundamentals and Principles

An architect must choose between two designs and wants to evaluate how each handles modifiability and performance trade-offs. Which technique is designed specifically for this purpose?

  1. Static code linting
  2. Sprint velocity tracking
  3. Architecture tradeoff analysis using quality attribute scenarios Correct answer.
  4. Code coverage analysis

Explanation

Tradeoff analysis methods evaluate candidate architectures against prioritized quality attribute scenarios to reveal risks and trade-offs. Code coverage and linting assess code-level quality, not architectural trade-offs. Velocity tracking measures team throughput rather than design quality.

Question 14Software Architecture Fundamentals and Principles

Which principle states that the structure of a system tends to mirror the communication structure of the organization that builds it?

  1. Conway's Law Correct answer.
  2. The Dependency Inversion Principle
  3. The Liskov Substitution Principle
  4. The Principle of Least Knowledge

Explanation

Conway's Law observes that system designs reflect the communication boundaries of the organizations that produce them. Teams therefore often align architecture with team structure, or vice versa. The other options are object-oriented design principles unrelated to organizational structure.

Question 15Software Architecture Fundamentals and Principles

Which statement best describes the role of bounded contexts in domain-driven design?

  1. They define explicit boundaries within which a domain model and its ubiquitous language are consistent Correct answer.
  2. They specify the physical servers on which each service runs
  3. They replace the need for integration contracts between teams
  4. They guarantee that all subdomains share a single unified data model

Explanation

A bounded context delimits where a particular model and ubiquitous language apply, preventing a single model from being stretched across inconsistent meanings. Different contexts may model the same concept differently and integrate through explicit contracts. Bounded contexts are model boundaries, not deployment or data-unification mandates.

Question 16Software Architecture Fundamentals and Principles

A team needs to integrate two bounded contexts where one is upstream and the other downstream, and the downstream team wants to protect itself from frequent upstream model changes. Which pattern best addresses this?

  1. Shared kernel
  2. Separate ways
  3. Anticorruption layer Correct answer.
  4. Conformist

Explanation

An anticorruption layer translates between the upstream model and the downstream model, insulating the downstream context from upstream changes and semantics. A shared kernel couples teams to a common model, and conformist accepts the upstream model wholesale. Separate ways forgoes integration altogether.

Question 17Software Architecture Fundamentals and Principles

Which characteristic distinguishes a pipe-and-filter style from a blackboard style?

  1. Pipe-and-filter is exclusively used for user interfaces, while blackboard is used for databases
  2. Pipe-and-filter requires a central coordinator, while blackboard style forbids shared state
  3. Pipe-and-filter and blackboard differ only in their deployment environment
  4. Pipe-and-filter streams data through ordered transformation stages, while blackboard style relies on shared knowledge sources reacting to a central data store Correct answer.

Explanation

In pipe-and-filter, independent filters transform data as it flows through connectors, giving a deterministic dataflow structure. In blackboard style, independent knowledge sources opportunistically contribute to a shared central data structure. The distinction is structural, not about coordinators, user interfaces, or deployment.

Question 18Software Architecture Fundamentals and Principles

Which of the following best describes the primary responsibility of an architecture review board in an organization?

  1. Writing all production code for project teams
  2. Providing governance over significant architectural decisions and ensuring alignment with standards and principles Correct answer.
  3. Operating the production monitoring dashboards
  4. Managing the daily task assignments of developers

Explanation

An architecture review board governs significant architectural decisions, ensuring consistency with organizational standards, principles, and risk tolerance. It reviews and advises rather than performing implementation work. Coding, task management, and operations remain with delivery and operations teams.

Question 19Software Architecture Fundamentals and Principles

When applying the Dependency Inversion Principle, which arrangement is correct?

  1. Abstractions depend on the concrete details they are meant to stabilize
  2. Low-level detail owns the abstractions and high-level policy depends on them
  3. Both high-level policy and low-level detail depend on abstractions owned by the high-level policy Correct answer.
  4. High-level policy depends directly on low-level detail to keep the design simple

Explanation

Dependency Inversion has both policy and detail depend on abstractions, and the abstractions are typically owned by the higher-level policy so it is not forced to change with details. Direct dependency on details or abstraction ownership by low-level modules inverts the intended stability. Abstractions should not depend on details.

Question 20Software Architecture Fundamentals and Principles

Which statement accurately contrasts a monorepo with a polyrepo strategy from an architectural governance perspective?

  1. A monorepo and a polyrepo differ only in the programming languages they support
  2. A monorepo prevents any code sharing, while a polyrepo mandates shared libraries
  3. A monorepo centralizes shared code and enforces consistent build and dependency policies, while a polyrepo grants teams independent release cadence at the cost of cross-repo consistency Correct answer.
  4. A monorepo eliminates the need for version control, while a polyrepo requires it

Explanation

Repository strategy affects governance: a monorepo makes atomic cross-project changes and uniform tooling easier, while a polyrepo decentralizes autonomy and release cadence. Neither strategy is about prohibiting sharing or about version control existence. Language support is independent of repository topology.

Question 21Software Architecture Fundamentals and Principles

Which view in a common architecture description framework is intended to address concerns such as concurrency, performance, and scalability?

  1. The data view
  2. The deployment view
  3. The runtime or process view Correct answer.
  4. The logical or functional view

Explanation

The runtime or process view describes how components interact at execution time, capturing concurrency, throughput, and resource behavior. The logical view addresses functional structure, the deployment view addresses physical placement, and the data view addresses data structures and lifecycle.

Question 22Software Architecture Fundamentals and Principles

A system must continue operating with acceptable service when a downstream dependency fails. Which architectural tactic most directly addresses this availability concern?

  1. Introducing a circuit breaker with graceful degradation Correct answer.
  2. Reducing the number of developers on the team
  3. Adopting a stricter code review process
  4. Increasing code test coverage

Explanation

Availability tactics such as circuit breakers and graceful degradation bound the impact of failing dependencies by failing fast or serving reduced functionality. Test coverage and code review improve defect detection but do not directly manage runtime failure propagation. Team size is unrelated to the tactic.

Question 23Software Architecture Fundamentals and Principles

Which statement best explains why cyclic dependencies between packages are considered harmful in architectural design?

  1. They prevent the use of object-oriented programming
  2. They automatically cause runtime deadlocks in all cases
  3. They make independent release, testing, and comprehension harder because changes and defects propagate around the cycle Correct answer.
  4. They reduce the number of available design patterns

Explanation

Cycles couple packages so tightly that they must be built, tested, and released together, and changes ripple around the loop. The Acyclic Dependencies Principle therefore recommends breaking cycles. Cycles do not automatically cause deadlocks and are unrelated to language paradigm or pattern availability.

Question 24Software Architecture Fundamentals and Principles

An architect is decomposing a system and wants to maximize cohesion. Which guideline should guide the decomposition?

  1. Group responsibilities so that each module depends on as many others as possible
  2. Group responsibilities randomly to distribute workload evenly across modules
  3. Group responsibilities that operate on the same data and change for the same reasons into the same module Correct answer.
  4. Group responsibilities by the order in which they were implemented

Explanation

High cohesion means the elements inside a module are strongly related, often by shared data and common reasons to change. Random, chronological, or dependency-maximizing groupings produce weak cohesion. The goal is functional relatedness, not distribution of effort or implementation order.

Question 25Software Architecture Fundamentals and Principles

Which statement best describes the relationship between tactics and patterns in software architecture?

  1. Tactics are design decisions aimed at a specific quality attribute, while patterns are reusable structural solutions that often combine several tactics Correct answer.
  2. Tactics and patterns are identical concepts with different names
  3. Patterns apply only to data storage, while tactics apply only to user interfaces
  4. Tactics are reusable structures, while patterns are single quality-attribute decisions

Explanation

A tactic is a focused design decision that achieves a quality attribute response, such as introducing redundancy for availability. An architectural pattern is a broader reusable structure that typically embodies multiple tactics. The two concepts are related but distinct, and neither is limited to a particular layer.

Question 26Software Architecture Fundamentals and Principles

In a layered architecture, which rule best preserves the intended separation of concerns between layers?

  1. A layer may call any layer beneath it and skip intermediate layers whenever latency matters
  2. A layer may call both the layer above and the layer below to reduce duplication of logic
  3. A layer may call only the layer directly beneath it, and may expose its services to the layer directly above it Correct answer.
  4. A layer may call any other layer as long as the calls are documented in the architecture description

Explanation

Strict layering restricts each layer to interacting only with its immediate neighbor, which keeps coupling predictable and prevents upper layers from becoming entangled with low-level details. Allowing arbitrary downward calls (relaxed layering) or bidirectional calls weakens the abstraction boundaries and makes substitution of layers difficult. The documentation of a call does not remove the structural dependency it creates.

Question 27Software Architecture Fundamentals and Principles

An architect must describe how a system's modules are organized into layers and packages for the development team. Which view type is the most appropriate vehicle for this concern?

  1. A use case view showing actors and their goal interactions
  2. A deployment view showing physical nodes and network links
  3. A module (implementation) view showing units of implementation and their dependencies Correct answer.
  4. A concurrency view showing threads and synchronization

Explanation

Module or implementation views address the concerns of developers by showing code units, packages, and their static dependencies. Deployment views address mapping to hardware, concurrency views address runtime parallelism, and use case views address functional goals. Selecting the view that matches the stakeholder concern is a core architecture description skill.

Question 28Software Architecture Fundamentals and Principles

Which statement best captures the purpose of an architecture decision record (ADR)?

  1. It captures a single significant decision with its context, the option chosen, and the consequences accepted Correct answer.
  2. It lists the coding standards that developers must follow when implementing modules
  3. It records the meeting minutes of every architecture review session held during a project
  4. It replaces the architecture description by summarizing the final system structure

Explanation

An ADR is a lightweight, immutable record of one architecturally significant decision, including the forces at play, the choice made, and the resulting trade-offs. It complements rather than replaces architecture documentation, and it is narrower than meeting minutes or coding standards. Grouping decisions this way preserves rationale that would otherwise be lost.

Question 29Software Architecture Fundamentals and Principles

A team is told that a component must be 'loosely coupled' from its collaborators. Which design outcome is the clearest evidence that this goal has been achieved?

  1. The component can be recompiled only when all of its collaborators are recompiled together
  2. The component and its collaborators are always deployed together as a single unit
  3. The component depends on abstract interfaces rather than on concrete collaborator implementations Correct answer.
  4. The component shares its internal data structures directly with collaborators to avoid copying

Explanation

Loose coupling means a component knows as little as possible about its collaborators, which is achieved when it depends on stable abstractions instead of concrete implementations. Sharing internal data structures or forcing joint recompilation increases coupling. Requiring joint deployment is evidence of tight runtime coupling rather than independence.

Question 30Software Architecture Fundamentals and Principles

An architect is documenting a system and wants each stakeholder group to see only the information relevant to its concerns, while keeping all views consistent with one another. Which practice best supports this goal?

  1. Document only the runtime behavior and omit structural information to reduce effort
  2. Let each stakeholder group maintain its own independent documentation of the system
  3. Derive each view from a shared underlying model so that elements and relationships stay consistent Correct answer.
  4. Produce a single comprehensive diagram that contains every element and relationship in the system

Explanation

Viewpoints let an architect present the system from the perspective of different concerns, but consistency across views requires that they be derived from a single underlying model. Independent documentation drifts, and a single overloaded diagram serves no stakeholder well. Omitting structural information leaves key concerns unaddressed.

Question 31Software Architecture Fundamentals and Principles

A system must remain available during rolling upgrades of individual services, and each service team wants to release on its own schedule. Which architectural characteristic is being prioritized?

  1. Minimization of the total number of network hops
  2. Strict transactional consistency across all components
  3. Deployability and independent release of components Correct answer.
  4. Centralization of all business logic in a single process

Explanation

Independent release schedules and rolling upgrades are expressions of deployability, the quality attribute that measures how easily a system can be built, tested, and released in parts. This characteristic usually trades against consistency and simplicity. The other options describe different, sometimes opposing, qualities.

Question 32Software Architecture Fundamentals and Principles

An architect applies the 'information hiding' principle during decomposition. Which decomposition outcome best reflects that principle?

  1. Modules are grouped by file type so that all data access code resides in a single module
  2. Modules are organized to match the current organizational chart so that each team owns one module
  3. Modules are split so that each one contains exactly one function to minimize module size
  4. Modules are organized so that each one conceals a design decision likely to change, exposing only a stable interface Correct answer.

Explanation

Information hiding assigns each module the responsibility for a secret, a design decision that is volatile or difficult, and hides it behind a stable interface. This localizes the impact of change. Organizing by org chart, by file type, or by one-function-per-module does not address volatility and can produce poor cohesion.

Question 33Software Architecture Fundamentals and Principles

A team argues that a microkernel (plug-in) architecture is appropriate for a product whose core capabilities are stable but whose feature set must be extended by third parties. Which reasoning best supports that choice?

  1. It allows every feature to be compiled into the core so that extensions require no new code
  2. It eliminates the need for any interface specification between the core and extensions
  3. It guarantees that third-party plug-ins cannot introduce defects into the system
  4. It isolates variable features in plug-ins that interact with a stable core through defined contracts Correct answer.

Explanation

The microkernel style separates a minimal, stable core from variable functionality implemented as plug-ins that conform to the core's contracts. This matches a scenario with stable core capabilities and frequently changing extensions. It does not remove the need for contracts, nor can it guarantee defect-free third-party code.

Question 34Software Architecture Fundamentals and Principles

During architecture evaluation, a stakeholder asks how a design will behave when the user load doubles. Which response uses a quality attribute scenario correctly?

  1. Enumerate the design patterns that appear in the architecture documentation
  2. Describe the team's past experience delivering similar systems
  3. List the technologies in the proposed stack and their vendor support levels
  4. State the expected response time under the doubled load and the percentage of requests that must meet it Correct answer.

Explanation

A quality attribute scenario makes a requirement testable by specifying a stimulus, the affected artifact, the expected response, and a measurable response measure. Naming the load and the required latency or success percentage provides that measure. Technology lists, team history, and pattern inventories do not state measurable behavior.

Question 35Software Architecture Fundamentals and Principles

An architect is choosing between a service-oriented design with coarse-grained services and a fine-grained microservice decomposition. Which consideration most directly argues against excessive granularity?

  1. Fine-grained services cannot expose well-defined interfaces to consumers
  2. Coarse-grained services always prevent teams from deploying independently
  3. Coarse-grained services make it impossible to apply domain-driven design
  4. Each additional service boundary multiplies operational overhead and inter-service communication cost Correct answer.

Explanation

Decomposition granularity is a trade-off: finer services improve independent deployability and team autonomy but increase the number of network calls, deployment pipelines, and monitoring surfaces. The architect must weigh these costs against the modularity gained. The other statements are absolute claims that do not hold in general.

Question 36Software Architecture Fundamentals and Principles

A system integrates with a legacy mainframe that cannot be modified. The architect introduces an anti-corruption layer. Which outcome justifies this decision?

  1. The legacy system is refactored to adopt the new domain model
  2. The legacy system's performance is improved by the translation layer
  3. The integration is eliminated entirely, removing the dependency
  4. The new domain model is protected from the legacy model's concepts and data shapes Correct answer.

Explanation

An anti-corruption layer translates between the new model and a foreign model so that the foreign concepts do not leak into and distort the new domain. It is a protective boundary, not a mechanism for changing the legacy system or removing the integration. It also does not improve the legacy system's performance.

Question 37Software Architecture Fundamentals and Principles

An architect claims that a proposed design 'is scalable' without further qualification. Which critique is most consistent with sound architectural reasoning?

  1. The claim is acceptable because scalability is a universal property of distributed systems
  2. The claim is acceptable only if the system uses a message broker between components
  3. The claim is meaningless without specifying the dimension of scale, the workload, and the acceptable response Correct answer.
  4. The claim should be replaced by a statement that the system uses horizontal scaling

Explanation

Scalability is not a single property; it is meaningful only relative to what is being scaled (requests, data volume, users), the workload mix, and the response measures that must hold. An unqualified claim cannot be evaluated or tested. Naming a technology or a scaling technique does not supply the missing measures.

Question 38Software Architecture Fundamentals and Principles

A team must choose between a monolithic deployment and independently deployable services for an early-stage product with an uncertain domain model and a very small team. Which reasoning best reflects architectural trade-off analysis?

  1. Choose the monolith because modular monoliths can never be decomposed into services later
  2. Choose the monolith initially because the simplicity and low operational cost favor a small team exploring an uncertain domain, and plan for later decomposition Correct answer.
  3. Choose services because a small team cannot maintain a monolith
  4. Choose services because independent deployability is always the dominant quality attribute

Explanation

Trade-off analysis weighs quality attributes against constraints such as team size and domain uncertainty. A modular monolith reduces operational overhead and allows the domain model to stabilize before boundaries are committed to as distributed contracts. Treating any single attribute as universally dominant ignores the context.

Question 39Software Architecture Fundamentals and Principles

An architect wants to record the rationale for choosing a specific messaging topology and the conditions under which the choice should be revisited. Which documentation practice best supports future maintainers?

  1. Record the decision, the alternatives considered, the forces that drove the choice, and the triggers that would justify revisiting it Correct answer.
  2. Record only the final topology diagram, since rationale becomes obsolete as the system evolves
  3. Record the decision only after the system is decommissioned, when outcomes are known
  4. Record the decision in a chat channel so that it remains informal and easy to change

Explanation

Durable rationale includes the decision, the rejected alternatives, the forces at play, and explicit revisit triggers such as scale thresholds or changed requirements. This lets future maintainers judge whether the original reasoning still applies. Diagrams alone, informal channels, and retrospective-only records lose the context needed to evaluate the decision.

Question 40Software Architecture Fundamentals and Principles

An organization wants to enforce that no component in the presentation tier accesses the persistence tier directly. Which mechanism most reliably enforces this constraint over time?

  1. A wiki page describing the intended layering convention
  2. Automated static analysis of dependencies that fails the build on violations Correct answer.
  3. A code review checklist that reviewers apply when they remember
  4. An annual architecture training session for new developers

Explanation

Architectural constraints decay unless they are enforced mechanically. Automated dependency analysis integrated into the build makes violations immediately visible and blocks them before merge. Documentation, checklists, and training rely on human diligence and degrade as teams and deadlines change.

Question 41Software Architecture Design and Modeling

In a layered architecture, which statement best describes the role of the domain layer?

  1. It defines deployment topology and network segmentation.
  2. It renders views and handles user gesture events for each screen.
  3. It manages connection pooling and SQL statement caching.
  4. It holds business rules and invariants independent of presentation and persistence technologies. Correct answer.

Explanation

The domain layer encapsulates business concepts, rules, and invariants so they remain independent of delivery mechanisms and storage. Presentation, persistence, and infrastructure concerns belong to other layers and should depend on the domain rather than the reverse.

Question 42Software Architecture Design and Modeling

A team needs to document how a payment request flows from an external client through several services, showing each participant and the order of messages. Which UML behavior diagram is most appropriate?

  1. Deployment diagram
  2. Class diagram
  3. Component diagram
  4. Sequence diagram Correct answer.

Explanation

A sequence diagram models interactions among participants over time, showing message order and lifelines, which matches the need to trace a request flow. Class, component, and deployment diagrams describe structure rather than temporal message ordering.

Question 43Software Architecture Design and Modeling

Which characteristic is a defining property of a microservices architecture rather than a monolithic one?

  1. A single deployable unit shared by all functional modules
  2. One database schema owned collectively by every module
  3. Shared in-process memory used for all inter-module calls
  4. Services independently deployable and organized around business capabilities Correct answer.

Explanation

Microservices are independently deployable services aligned to business capabilities, which allows separate release cadences and scaling. Monoliths typically ship as one deployable unit with in-process calls and often a shared schema.

Question 44Software Architecture Design and Modeling

In UML, what does an association class represent?

  1. A class attached to an association to hold attributes belonging to the link itself Correct answer.
  2. A class that cannot be instantiated directly
  3. A class that inherits from two parent classes at once
  4. A class that packages a set of unrelated utility functions

Explanation

An association class attaches to a relationship and captures data that belongs to the link rather than to either endpoint, such as an enrollment holding a grade between student and course. It is distinct from inheritance, abstractness, or utility grouping.

Question 45Software Architecture Design and Modeling

A system must let new report export formats be added without modifying existing exporter code. Which design approach best supports this requirement?

  1. Store format identifiers in a database column and branch on them at runtime
  2. Hard-code a switch statement over format strings inside one exporter class
  3. Copy the exporter class for each format and edit the copies directly
  4. Define an exporter interface and add a new implementation per format, resolved by a factory Correct answer.

Explanation

An interface with one implementation per format follows the open-closed principle: new formats extend behavior without editing existing code, and a factory centralizes selection. Branching on identifiers or copying classes keeps change localized in existing code and increases maintenance risk.

Question 46Software Architecture Design and Modeling

Which modeling construct in C4 is intended to show a single container's internal components and their interactions?

  1. Code diagram
  2. System context diagram
  3. Container diagram
  4. Component diagram Correct answer.

Explanation

In the C4 model, the component diagram zooms into one container to show its components and their collaborations. Context diagrams show the system among users and other systems, container diagrams show deployable units, and code diagrams show class-level detail.

Question 47Software Architecture Design and Modeling

An architect applies the dependency inversion principle. Which outcome should result?

  1. Dependencies are removed entirely so modules never reference each other.
  2. Both high-level and low-level modules depend on abstractions owned by the policy side. Correct answer.
  3. High-level policy modules reference concrete low-level modules directly.
  4. Low-level modules own the interfaces that high-level modules must implement.

Explanation

Dependency inversion makes high-level policy and low-level detail both depend on abstractions, with the abstraction typically owned by the higher-level policy. This inverts the naive direction where policy depends on volatile implementation details.

Question 48Software Architecture Design and Modeling

Which quality attribute tactic primarily improves system availability against a single server failure?

  1. Introducing redundancy with active-passive failover Correct answer.
  2. Increasing code coverage in unit tests
  3. Compressing network payloads between tiers
  4. Applying a caching layer in front of the database

Explanation

Redundancy with failover lets a standby instance take over when the active one fails, directly addressing availability. Caching, compression, and test coverage affect performance or defect rates but do not by themselves remove a single point of failure.

Question 49Software Architecture Design and Modeling

A team must integrate two systems whose bounded contexts use different meanings for the term 'Customer'. Which integration pattern explicitly protects each model from the other's semantics?

  1. Open host service alone
  2. Anticorruption layer Correct answer.
  3. Conformist
  4. Shared kernel

Explanation

An anticorruption layer translates between models so one context's semantics do not leak into and distort the other. A shared kernel couples models, conformist subordinates one model to another, and an open host service publishes an API without necessarily translating meaning.

Question 50Software Architecture Design and Modeling

In UML state machine modeling, what distinguishes a composite state?

  1. It contains nested substates and may define entry and exit points. Correct answer.
  2. It can only be entered once during the object's lifetime.
  3. It is used exclusively for modeling concurrent threads.
  4. It has no outgoing transitions by definition.

Explanation

A composite state encloses substates, allowing hierarchical state logic with entry and exit behavior and optional entry or exit points. Reentrancy, transition counts, and concurrency are separate modeling concerns.