Software Architecture Design Instructor: Dr. Jerry Gao
Software Architecture Design - Architecture design - General description - System structuring (repository model, client-server model, and abstract machine) - Control models (centralized control, event-driven systems) - Modular decomposition (object model, data-flow model) - Domain-specific architectures Jerry Gao, Ph.D. Jan. 1999
Software Architectural Design Large systems can be decomposed into sub-systems that provide some related set of services. The architectural design focus on: - partitioning a system into a logical sub-systems and modules. - identify their interactions and relationships. - System structuring: The system is structured into a number of principal sub-systems. Each is an independent software unit. They communicate with one and another. - Control modeling: Create a general model of the control relationships between the parts of the system. - Modular decomposition: Partition each sub-system into small modules. The architecture design must identify these modules and their interactions.
Architectural Design - The Repository Model Two ways to share data information in a distributed environment: - Share a central database - Each sub-system maintains a local database The repository model: Advantages: Efficient way to share large amount data Disadvantages: - Sub-systems must share the same repository data model - System evolution is difficult - Fault-tolerance problem - Different sub-systems may have different requirements Design editor Code generator Design translator Project repository Program editor Design analyser Report generator
Software Architecture Software architecture is the hierarchical structure of program components and their interactions. Shaw and Garlan [SHA95a] describe a set of properties of architecture design: - Structural properties: The architecture design defines the system components and their interactions. - Extra-functional properties: The architecture design should address how the design architecture achieves requirements for performance, capacity, reliability, adaptability, security. - Families of related systems: The architecture design should draw upon repeatable patterns in the design of families of similar systems. Figure 13.3.
Software Architecture Different architectural design methods: (Figure 13.3) - Structural models: represent architecture as an organized collection of components. - Framework models: increase the level of design abstraction by identifying repeatable architecture design frameworks (patterns) - Dynamic models: address the behavior aspects of the program architecture - Process models: focus on the design of the business or technical process - Functional models: can be used to represent the functional hierarchy of a system Fan-out Control Hierarchy Fan-in
Structural Partitioning The program structure should be partitioned both horizontally and vertically. (Figure 13.4) (1) Horizontal partitioning defines separate branches of the modular hierarchy for each major program function. Simplest way is to partition a system into: input, data transformation (processing), and output Advantages of horizontal partition: - easy to test, maintain, and extend - fewer side effects in change propagation or error propagation Disadvantage: more data to be passed across module interfaces --> complicate the overall control of program flow (2) Vertical partitioning suggests the control and work should be distributed top-down in program structure. Advantages: good at dealing with changes: - easy to maintain the changes - reduce the change impact and and propagation
Architectural Design - The Client-Server Model The major components of this model: - A set of stand-alone servers which offer services to other sub-systems. - A set of clients that call on the services offered by servers. - A network which allows the clients to access these services. The most advantage: distribution user access and network-centered Client 1 Client 2 Client 3 Client 4 Wide-bandwidth Network Catalogue server Catalogue Video server Film clip files Picture server Digitized photographs Hypertext server Hypertext web
Architectural Design - The Abstract Machine Model Abstract machine model (a layered model): - It organizes a system into a series of layers each of which provides a set of services. Each layer defines an abstract machine. OSI model is a typical example. It supports the incremental development of systems. Pros: changeable and portable. Cons: - Structuring system is difficult. - Performance may be a problem Version management Object management database management OS
Architectural Design - The Control Model Control model are concerned with the control flow between sub-systems. Control models supplement structural models. Two general approaches: a) centralized control and b) event-based control - Event-based control: - each sub-system can be respond to externally generated events. Main program Sensor processes Actuator processes Routine 1 Routine 2 Routine 3 System controller Routine 1.1 Routine 2.1 Routine 3.1 Fault handler Computation processes user interface Call-return model of control A centralized control model for a real-time system
Architectural Design - The Control Model Control model are concerned with the control flow between sub-systems. Control models supplement structural models. Two general approaches: a) centralized control and b) event-based control - Event-based control: - each sub-system can be respond to externally generated events. Interrupt vector Sub-system 1 Sub-system 2 Sub-system 3 Handler 1 Handler 2 Handler 3 Event and message handler A control model based on selective broadcasting Process 1 Process 2 Process 3 An interrupt-driven control model
Data Design Guidelines for data design: - Apply the systematic analysis on data - data objects, relationships, and data flow as well as contents. - Identify all data structures and related operations - Establish a data dictionary - data objects and their relationships as well as constraints - Defer the low-level design decisions until late in the design process - Use information hiding in the design of data structures - A library of useful data structures and operations - reusable data objects - reusable data structure templates - Use a software design and programming language to support data specification and abstraction