This template is provided for your reference, along with the others on the projects page. Note that it is written in markdown which is displayed differently here than it is on GitHub, so the formatting will look different once you have access to the repo — this is expected.
Describe the issues that need to be addressed or resolved prior to or while completing the design, as well as issues that may influence the design process.
Describe any assumption, background, or dependencies of the software, its use, the operational environment, or significant project issues.
Describe any constraints on the system that have a significant impact on the design of the system.
Describe the hardware and software that the system must operate in and interact with.
The architecture provides the high-level design view of a system and provides a basis for more detailed design work. These subsections describe the top-level components of the system you are building and their relationships.
This section provides a high level overview of the structural and functional decomposition of the system. The section should list the different components and concisely discuss the major responsibilities and roles such components must play.
This section discusses why you are using the architecture you have chosen.
This section should provide and describe a diagram that shows the various components and how they are connected. The conceptual view shows the logical/functional components of the system, where each component represents a cluster of related functionality.
Describe the low-level design for each of the system components identified in the previous section. For your component, you should provide details in the following UML diagrams to show its internal structure.
In the case of an OO design, the internal structure of a software component would typically be expressed as a UML class diagram that represents the static class structure for the component and their relationships (association, aggregation, generalization, etc.)
This diagram shows details of how and in which order objects within a component interact with one another.
This diagram shows the other components your software product interacts with. For each external component, you should list the interfaces that your software shares with it.
If your system does not interact with any external components, you may skip this section.
This section should provide the specific format/layout of the user interface of the system.