| The Repository: |
 |
In the Repository model: |
 | Shared data is stored in centralized location (the repository subsystem), and accessed by various (other) subsystems |  | Shared data is passed from one subsystem to the next (“pipeline” architecture) | |
 |
Advantages: |
 | Efficient way to share large amounts of data |  | Data integrity localized to repository module | |
|
 |
Disadvantages: |
 | Subsystems must agree on a repository data model. |  | Schema evolution is difficult and expensive |  | Distribution can be a problem | |
| The Client-Server Model: |
 |
In the Client-Server model: |
 | Subsystems are viewed as independent processes |  | The set of stand-alone servers provide specific services such as printing and data management |  | The set of clients call on these services | |
 |
Advantages: |
 | Makes effective use of networked systems and thus may require cheaper hardware |  | It is easy to add new servers or upgrade existing servers |  | Increased availability of information by redundancy | |
|
 |
Disadvantages: |
 | Data interchange can be hampered by different data layouts |  | Communication may be expensive |  | Data integrity functionality must be implemented for each server | |
The Abstract Machine:
In the Abstract Machine model, the system is organized into a set of layers (tiers) each of which provide a specific set of services.
|
 |
The most popular architecture from this category is the Model-View-Controller architecture, which divides a business application into its three main components: |
 | the View (or Presentation) layer refers to the user interface and concentrates on making it as easy and intuitive to use as possible |  | the Model layer represents the business logic |  | the Controller handles the interaction between the first two | |
 |
Advantages: |
 | Minimal coupling between components performing totally independent functions |  | Specialized developers work only within their layer |  | Flexibility and portability, layers can be changed completely without affecting other layers if the interface remains the same | |
|
 |
Disadvantages: |
 | Not suitable for simple problems, for which it introduces additional artificial complexity | |
| After choosing a system architecture, the detailed Software Design Specification document is created: |
 |
A good SDS: |
 | Contains system architecture description (the high-level design), with an overview of modules or components, structure and relationships and user interface issues |  | Contains detailed descriptions of components (the detailed design), specifying type, purpose, function, dependencies, interfaces, subordinates, resources |  | Analyzes reuse and relationship to other products |  | Explains design decisions and examines trade offs | |