This process adds the necessary implementation details and non-functional requirements. Non-functional requirements are implicit requirements of the system. e.g. Security, Performance etc. At this stage of the design, the customer or the user is no involved anymore and the team tries to flesh out the functional specification.
The High Level Architecture is design at the level of a system or component, and generally includes:
- relevant goals or requirements (functional and non-functional);
- static structure (e.g., components, interfaces, dependencies);
- dynamic behavior (how components interacts);
- data models or external interfaces (external to the system/component described in the document); and
- deployment considerations (e.g., run-time requirements, third-party components).
Note that all of these descriptions are at an abstract level. The purpose is to give the reader a broad general understanding of the system or component. There may be many levels of design documents (e.g., system- or component-level).