A written description of a product to give a development team overall guidance to the project architecture.
Structure:
- Context and scope—rough overview of the landscape and what is being built.
- Goals and non-goals—bulleted list of requirements.
- Design—design overview and details.
- Alternatives—alternative designs that would’ve achieved similar outcomes.
- Cross-cutting concerns—how the design impacts security, privacy, observability.
Lifecycle:
- Creation; rapid iteration—write the doc, share with the project team, drive to a first stable version.
- Review—share and discuss with a wider range of colleagues.
- Implementation; iteration—begin implementation.
- Maintenance; learning—update the doc and re-read over time to find uncertainties.