Instructions:

Describe any design decisions and/or strategies that affect the overall system and its higher-level structures.



These strategies should provide insight into the key abstractions and mechanisms used in the system architecture. Describe the reasoning employed for each decision and/or strategy (possibly referring to previously stated design goals and principles) and how any design goals or priorities were balanced or traded-off.

Examples of design decisions might concern (but are not limited to) things like the following:

  • Use of a particular type of product (programming language, database, library, commercial off-the-shelf (COTS) product, etc.)

  • Reuse of existing software components to implement various parts/features of the system

  • Future plans for extending or enhancing the software

  • User interface paradigms (or system input and output models)

  • Hardware and/or software interface paradigms

  • Error detection and recovery

  • Memory management policies

  • External databases and/or data storage management and persistence

  • Distributed data or control over a network

  • Generalized approaches to control

  • Concurrency and synchronization

  • Communication mechanisms

  • Management of other resources