Architectural Design
Architectural Design
Architectural Design
3/11/09
Topics covered
Architectural design decisions System organization Decomposition styles Control styles Reference architectures
What is Architecture?
A high-level model of a thing Describes critical aspects of the thing Understandable to many stakeholders Allows evaluation of the things properties before it is built Provides well understood tools and techniques for constructing the thing from its blueprint
Which aspects of a software system are architecturally relevant? How should they be represented most effectively to enable stakeholders to understand, reason, and communicate about a system before it is built? What tools and techniques are useful for implementing an architecture in a manner that preserves its properties?
Software architecture
The design process for identifying the subsystems making up a system and the framework for sub-system control and communication is architectural design. The output of this design process is a description of the software architecture.
System analysis
Means that analysis of whether the system can meet its non-functional requirements is possible.
Large-scale reuse
The architecture may be reusable across a range of systems.
Kruchten
Software architecture deals with the design and implementation of the high-level structure of software. Architecture deals with abstraction, decomposition, composition, style, and aesthetics.
Components
A component is a unit of computation or a data store Components are loci of computation and state clients servers databases filters layers A component may be simple or composite composite components describe a (sub)system an architecture consisting of composite components describes a system of systems
Connectors
A connector is an architectural element that models interactions among components rules that govern those interactions Simple interactions procedure calls shared variable access Complex and semantically rich interactions client-server protocols database access protocols asynchronous event multicast piped data streams
System organization
Reflects the basic strategy that is used to structure a system. Three organisational styles are widely used:
A shared data repository style; A shared services and servers style; An abstract machine or layered style.
When large amounts of data are to be shared, the repository model of sharing is most commonly used.
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.
Client-server model
Distributed system model which shows how data and processing is distributed across a range 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.
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 organisation. 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.
Modular decomposition
Another structural level where subsystems are decomposed into modules. Two modular decomposition models covered
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.
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.