# Architecture Strategies

 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
