Introduction • Goals and constraints • Scenarios • Logical view • Process view • Useful links
This note is about how to write a software architecture document
This document provides a comprehensive architectural overview of the system, using a number of different architectural views to depict different aspects of the system. It is intended to capture the significant architectural decisions which have been made on the system.
The following key requirements and system constraints have a significant impact on the software architecture.
Goals are clear objectives for what you want your end state to be. Constraints are given conditions, or circumstances the solution must satisfy.
Constraints are usually non-negotiable. Goals can be traded off against each other when they conflict.
This section defines the most important scenarios that represent significant central functionality.
A scenario is an instance of a use case: it is one path through the flow of events for the use case. Scenarios ground the rest of the document the other views should explain how the system realizes them.
Diagrams: use-case
The logical view is concerned with the functionality that the system provides to end-users: the key abstractions, their responsibilities, and how they relate to each other.
Diagrams: class, state
The process view deals with the dynamic aspects of the system, explains the system processes and how they communicate, and focuses on the run time behavior of the system. The process view addresses concurrency, distribution, integrator, performance, and scalability, etc.
Diagrams: sequence, communication, activity