This artifact describes the Software Architecture.
It provides a place for maintaining the list of architectural issues, along with the associated architectural
decisions, designs, patterns, code documented (or pointed to), and so forth -- all at appropriate levels to make it
easy to understand what architectural decisions have been made and remain to be made.
It is helpful for architects to use this artifact to collaborate with other team members in developing the architecture
and to help team members understand the motivation behind architectural decisions so that those decisions can be
robustly implemented. For example, the architect may put constraints on how data is packaged and communicated between
different parts of the system. This may appear to be a burden, but the justification in the Architecture Notebook can
explain that there is a significant performance bottleneck when communicating with a legacy system. The rest of the
system must adapt to this bottleneck by following a specific data packaging scheme.
This artifact should also inform the team members how the system is partitioned or organized so that the team can adapt
to the needs of the system. It also gives a first glimpse of the system and its technical motivations to whoever must
maintain and change the architecture later.