Documenting software architecture

Contents

IntroductionGoals and constraintsScenariosLogical viewProcess viewUseful links

This note is about how to write a software architecture document

Introduction

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.

Goals and constraints

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.

Scenarios

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

Logical view

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

Process view

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

#sw #documentation