Chapter 6 - Architectural Design (2-20)
Sub-systems and modules
- A sub-system is a system in its own right whose operation is independent of the services provided by other sub-systems. - A module is a system component that provides services to other components but would not normally be considered as a separate system.
Architectural design
- An early stage of the system design process. Represents the link between specification and design processes. - Often carried out in parallel with some specification activities. It involves identifying major system components and their communications.
Client-server model
- Distributed system model which shows how data and processing is distributed across arrange of components. - Set of stand-alone servers which provide specific services such as printing, data management, etc. - Set of clients which call on these services. - Network which allows clients to access servers.
Function-oriented pipelining
- Functional transformations process their inputs to produce outputs. - May be referred to as a pipe and filter model(as in UNIX shell). - Variants of this approach are very common. When transformations are sequential, this is a batch sequential model which is extensively used in data processing systems. - Not really suitable for interactive systems.
Object model advantages
- Objects are loosely coupled so their implementation can be modified without affecting other objects. - The objects may reflect real-world entities. - OO implementation languages are widely used. - However, object interface changes may cause problems and complex entities may be hard to represent as objects.
Object models
- Structure the system into a set of loosely coupled objects with well-defined interfaces. - Object-oriented decomposition is concerned with identifying object classes, their attributes and operations. - When implemented, objects are created from these classes and some control model used to coordinate object operations.
The repository model
- Sub-systems must exchange data. Shared data is held in a central database or repository and may be accessed by all sub-systems; - When large amounts of data are to be shared, the repository model of sharing is most commonly used.
Architecture and system characteristics
= Performance - Localize critical operations and minimize communications. Use large rather than fine-grain components. = Security - Use a layered architecture with critical assets in the inner layers. = Safety - Localize safety -critical features in a small number of sub-systems. = Availability - Include redundant components and mechanisms for fault tolerance. = Maintainability - Use fine-grain, replaceable components.
System Organization
= Reflects the basic strategy that is used to structure a system. = Two organizational models are widely used: - Data repository Model - Client-Server Model
Architectural conflicts
= Using large-grain components improves performance but reduces maintainability. = Introducing redundant data improves availability but makes security more difficult. = Localizing safety - related features usually means more communication so degraded performance.
Client-server characteristics
Advantages - Distribution of data is straightforward; - Makes effective use of networked systems. May require cheaper hardware; - Easy to add new servers or upgrade existing servers. Disadvantages - No shared data model so sub-systems use different data organization. Data interchange may be inefficient; - Redundant management in each server; - No central register of names and services - it may be hard to find out what servers and services are available.
Repository model characteristics
Advantages - Efficient way to share large amounts of data; - Sub-systems need not be concerned with how data is produced Centralized management e.g. backup, security, etc. - Sharing model is published as the repository schema. Disadvantages - Sub-systems must agree on a repository data model. Inevitably a compromise; - Data evolution is difficult and expensive; - No scope for specific management policies; - Difficult to distribute efficiently.
Control styles
Are concerned with the control flow between sub-systems. There are many different system decomposition model Including: = Call-return model = Manager model = Event-Driven Systems = Broadcast model - Interrupt - Driven Model
Architectural Design
The design process for identifying the sub-systems making up a system and the framework for sub-system control and communication
Software Architecture
The output of this design process is a description of the software architecture
Modular decomposition
The structural level where sub-systems are decomposed into modules. Two modular decomposition models are: - An object model where the system is decomposed into interacting object; - A pipeline or data-flow model where the system is decomposed into functional modules which transform inputs to outputs