Documenting Software Architecture

The core purpose of documenting software architecture is to communicate the design decisions and reasoning behind those decisions so that other project stakeholders can do their job. Producing and maintaining usable software architecture documentation is a laborious task due to the number of project stakeholders and varying degrees of information each stakeholder requires or is able to understand. No single view represents the architecture of a system. Rather a composition of different views along with supporting prose explains the meaning of shapes and flow of information.