Certified Professional for Software Architecture – Foundation Level Free Sample Questions

Covers the goals and responsibilities of software architects, quality requirements and constraints, domain-driven design and architectural design principles, and architecture assessment.

20 free sample questions153 in the full practice test

Try simulator

CPSA-F Sample Questions

  1. Question 1

    A financial services company is modernizing its monolithic core banking system. The primary architectural goals are to improve time-to-market for new features and enhance fault isolation between different banking functions (e.g., loans, accounts, transfers). The development team is highly skilled in Java but has limited experience with cloud-native technologies. Which architectural approach best balances these goals and constraints?

    Answer and explanation

    Correct answer: B

    The Strangler Fig pattern is the optimal choice as it allows for an incremental, risk-managed migration. It directly addresses the goals of improving time-to-market and fault isolation by creating independent services. It also respects the team's Java skills (new services can be in Java) while allowing them to learn containerization gradually. A big-bang rewrite is too risky, a lift-and-shift doesn't solve the core architectural problems, and a modular monolith improves code structure but not independent deployability or fault isolation as effectively.

  2. Question 2

    Multiple answers

    During an architecture review for a new distributed logistics platform, the architect presents a plan for handling cross-cutting concerns. The platform will consist of dozens of microservices. Which of the following concerns are best addressed through a globally enforced, consistent strategy rather than being implemented uniquely within each service? (Select THREE)

    Answer and explanation

    Correct answers: A, C, E

    Cross-cutting concerns are aspects of a system that affect multiple components. Distributed tracing, centralized logging, and security (authN/authZ) are classic examples that require a consistent, system-wide approach to be effective. Inconsistent implementation would render them useless. Business logic and database schemas are specific to the bounded context of an individual service and are not cross-cutting.

  3. Question 3

    True or False: In a system designed with the Pipes and Filters architectural pattern, a key benefit is that individual filters can be developed and tested in isolation, provided they adhere to the common data format for the pipe.

    Answer and explanation

    Correct answer: A

    This statement is true. A core advantage of the Pipes and Filters pattern is the decoupling of individual processing steps (filters). Because each filter only depends on the input data format and produces an output in the agreed-upon format, they can be developed, deployed, and tested independently, which enhances modularity and maintainability.

  4. Question 4

    A software architect is designing a system component that must be extensible without modification. New functionality will be added frequently by different teams. The architect wants to allow new behaviors to be added to the component's core process while avoiding a cascade of if-else or switch statements. Which design principle is most critical to apply here?

    Answer and explanation

    Correct answer: C

    The Open/Closed Principle states that software entities (classes, modules, functions, etc.) should be open for extension but closed for modification. This directly addresses the requirement to add new functionality without changing the existing, core code, thus avoiding complex conditional logic. Patterns like Strategy or Decorator are common implementations of OCP.

  5. Question 5

    A new architect joins a project and finds that the UserService is directly instantiating the PostgreSQL_Logger class for logging activities. The OrderService does the same. This has led to difficulties in testing and a desire to switch to a file-based logger in the future. The architect recommends changing the code so that both services depend on an ILogger interface instead of a concrete class. This change exemplifies the application of which design principle?

    Answer and explanation

    Correct answer: B

    The Dependency Inversion Principle states that high-level modules should not depend on low-level modules; both should depend on abstractions. By changing UserService (high-level) to depend on ILogger (abstraction) instead of PostgreSQL_Logger (low-level), the architect is directly applying DIP. This decouples the services from the concrete logging implementation, making the system more flexible and easier to test.

  6. Question 6

    An architect needs to document the system's boundaries, its users (both human and machine), and the other systems it interacts with. The goal is to provide a high-level, technology-agnostic overview for business stakeholders and new developers. Which architectural view is most appropriate for this purpose?

    Answer and explanation

    Correct answer: D

    The Context View is specifically designed to show the system as a 'black box' within its environment. It focuses on defining the system's scope and its relationships with external actors and systems, making it the ideal view for providing a high-level overview to a broad audience without delving into internal implementation details.

  7. Question 7

    Multiple answers

    A project team is using Architecture Decision Records (ADRs) to document significant architectural choices. Which pieces of information are essential to include in a well-formed ADR? (Select TWO)

    Answer and explanation

    Correct answers: B, D

    A well-formed ADR must capture the 'why' behind a decision. This includes the 'Context' (the problem, constraints, and requirements) and the 'Consequences' (the resulting trade-offs, benefits, and drawbacks). This information is crucial for future architects and developers to understand the rationale and avoid re-litigating past decisions. Implementation code and developer names are not core components of an ADR's purpose.

  8. Question 8

    A software architect is conducting a qualitative analysis of a system's modifiability. Which of the following sources of information would be most valuable for this analysis?

    Answer and explanation

    Correct answer: C

    Qualitative analysis, especially for a quality like modifiability, relies on structured reasoning rather than purely quantitative metrics. Quality scenarios provide concrete, hypothetical changes (e.g., 'A change to the tax calculation algorithm should be deployable within one day and affect only one component'). Analyzing the architecture's ability to handle these scenarios is a primary method for assessing modifiability. Server logs relate to performance, and support tickets relate more to usability or reliability.

  9. Question 9

    Which statement best defines the relationship between an architectural goal, such as 'achieve high scalability', and a project goal, such as 'launch the product before the holiday season'?

    Answer and explanation

    Correct answer: C

    Architectural goals (the 'ilities' like scalability, maintainability) focus on the long-term health and viability of the system. Project goals (time, scope, budget) are often short-term and tactical. A key responsibility of an architect is to manage the tension between these two. For instance, achieving high scalability might require more time, directly conflicting with an aggressive launch date. This necessitates trade-offs and clear communication with stakeholders.

  10. Question 10

    A project is developing a data processing pipeline that ingests raw data, enriches it, validates it against business rules, and finally stores it in a data warehouse. Each step is complex and developed by a separate team. The architect wants to ensure that these steps are decoupled and can be easily reordered or replaced in the future. Which architectural pattern is the most suitable fit for this scenario?

    Answer and explanation

    Correct answer: B

    The Pipes and Filters pattern is ideal for processing streams of data where the processing can be broken down into a series of sequential, independent steps (filters). The data flows through channels (pipes). This pattern provides excellent decoupling between the steps, meeting the architect's requirement to reorder or replace them easily. MVC is for UI, Broker is for distributed component communication, and Layered is for separation of concerns in a more general application structure.