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.