CPSA Views and Documentation Questions and Answers — Questions and Answers
Question 1: An architect needs to create documentation for the operations team to plan server capacity and network configuration. Which architectural view is MOST suitable for communicating how software components are mapped to physical machines, servers, and other hardware nodes?
- Building Block View
- Runtime View
- Deployment View (Correct answer)
- Context View
Correct answer: Deployment View
The Deployment View is specifically designed to show the physical topology of the system, illustrating how software artifacts are deployed onto hardware nodes. This directly addresses the concerns of an operations team regarding infrastructure planning.
Question 2: What is the primary purpose of the Context View in software architecture documentation?
- To detail the internal modular structure and dependencies of the code.
- To show the system's boundaries and its relationships with external users, systems, and interfaces. (Correct answer)
- To describe the sequence of interactions between components for a specific use case.
- To map the software components to the underlying hardware infrastructure.
Correct answer: To show the system's boundaries and its relationships with external users, systems, and interfaces.
The Context View's main goal is to delimit the system from its environment. It identifies all external entities (users, other systems, APIs) that interact with the system, defining the system's scope and external interfaces without going into internal detail.
Question 3: A new developer is joining the team and needs to understand the static organization of the source code, including its decomposition into modules, subsystems, and the dependencies between them. Which of the following views would be the MOST effective starting point for this developer?
- The Runtime View
- The Deployment View
- The Building Block View (Correct answer)
- The Logical View
Correct answer: The Building Block View
The Building Block View (also known as the component or development view) shows the static structure and organization of the software. It illustrates how the system is broken down into components or modules and how they relate to each other, which is essential for a developer to understand the codebase structure.
Question 4: You are documenting a critical user transaction that involves a web server, an application server, and a database. To explain how these components interact at runtime, including the sequence of calls and data flow, which architectural view should you create?
- Runtime View (Correct answer)
- Context View
- Building Block View
- Deployment View
Correct answer: Runtime View
The Runtime View (or process view) describes the dynamic behavior of the system. It illustrates how instances of building blocks interact with each other to accomplish a specific function or use case, often using sequence or communication diagrams.
Question 5: In the context of architectural documentation, what is the key distinction between a 'view' and a 'viewpoint'?
- A view is a high-level summary, while a viewpoint is a detailed diagram.
- A view is for technical stakeholders, whereas a viewpoint is for business stakeholders.
- A viewpoint is a template or set of conventions for constructing a view, which is the actual representation for a specific system. (Correct answer)
- There is no significant difference; the terms are used interchangeably in modern architecture practices.
Correct answer: A viewpoint is a template or set of conventions for constructing a view, which is the actual representation for a specific system.
A viewpoint defines the conventions, stakeholders, and concerns to be addressed for a particular type of view (e.g., the deployment viewpoint). A view is the concrete result of applying a viewpoint to a specific system, creating an actual diagram and description.
Question 6: When using the arc42 documentation template, in which section would you primarily document the system's scope by identifying neighboring systems, users, and external interfaces?
- Section 5: Building Block View
- Section 9: Architectural Decisions
- Section 8: Crosscutting Concepts
- Section 3: Context and Scope (Correct answer)
Correct answer: Section 3: Context and Scope
The arc42 template explicitly dedicates Section 3, 'Context and Scope,' to defining the system's boundary. This section is used to describe all communication partners, such as users and external systems, and the interfaces through which they interact.
An architect needs to create documentation for the operations team to plan server capacity and network configuration.
Which architectural view is MOST suitable for communicating how software components are mapped to physical machines, servers, and other hardware nodes?