Architectural Design

Tom Kelliher, CS 319

Nov. 4, 1998

Announcements

Presentation Friday?

From Last Time

  1. System model design examples. Conclusions?

Outline

  1. Architectural design.

  2. System structuring: repository, client-server, abstract machine models.

Assignment

Read Chapter 13.

Architectural Design

  1. Compare/contrast software, building architects. Where does this break down?

  2. Architecture is the framework upon which system design is built. Get this framework wrong and problems result.

Architectural design activities:

  1. System structuring: Decompose the system into independent sub-systems and define the relationships between the sub-systems.

  2. Control modeling: Establish a general model between parts of the system. (``Parts'' are not necessarily the sub-systems.)

  3. Modular decomposition: Decompose sub-systems into modules. Modules are generally not independent.

Building architecture is typically homogeneous, whereas software architecture is not.

System Structuring

  1. Block diagrams are used to informally indicate the structure of a system. Allows many different people to understand.

  2. Windows NT architecture:

  3. Three models: repository, client-server, abstract machine (layering).

Repository Model

  1. Sub-systems must exchange information. Two ways to do this:
    1. Central, shared database (the repository).

    2. Each sub-system maintains its own data, passing messages with other sub-systems.

  2. Most Applicable in situations where data is generated by one sub-system and used by others.

  3. Example: A CASE toolset.

  4. Advantages:
    1. Efficient for maintaining large stores of data.

    2. No explicit communication between sub-systems --- promotes independence of sub-systems.

    3. Maintenance activities (backup, etc.) are centralized.

    4. The sharing model is explicit in the repository schema, making integration of new tools simple.

  5. Disadvantages:
    1. Sub-systems must compromise on the repository data storage scheme.

    2. Repository evolution may be difficult, due to the large volume of data.

    3. Every sub-system is stuck with the same repository services policy. Suppose a sub-system needs a different security model?

    4. A distributed repository may be difficult to design.

Client-Server Model

  1. A distributed model, showing how applications and data interact across a network.

  2. Client-Server components:
    1. A set of standalone servers which offer services to other sub-systems.

    2. Clients which call upon the services of the servers. Usually several instances of the clients.

    3. A communication network (real or virtual).

  3. Example --- DNS:

  4. Advantages:
    1. Due to distributed nature, scales well: integrate new servers, upgrade servers.

    2. No shared data model, so servers can optimize storage layout.

  5. Disadvantages:
    1. Performance problems when large amounts of data are exchanged.

    2. Clients and servers may have to be changed to take advantage of new servers.

    3. No shared data model, so integrating new servers may be difficult.

    4. Servers must provide own maintenance tools.

    5. Discovering services and names is a problem. Migration, replication and synchronization.

Abstract Machine Model

  1. Layered model, modeling interfaces between sub-systems.

  2. Layers provide services, from raw to abstract. Each layer defines an abstract machine

  3. Example: p-code in Pascal systems.

  4. Example --- TCP/IP:

  5. Advantages:
    1. Supports incremental development.

    2. Changeable, portable.

  6. Disadvantages:
    1. Devising a workable structure can be difficult. May not be possible to maintain strict layering, reducing changeability.

    2. Poor performance, due to layer call overhead.



Thomas P. Kelliher
Wed Nov 4 10:11:23 EST 1998
Tom Kelliher