Software Architecture and Software Design
- The architectural design represents the structure of data and program components that are required to build a computer-based system.
- It considers the architectural style that the system will take, the structure and properties of the components
- that constitute the system and the interrelationships that occur among all architectural components of a system.
- Representations of software architecture are an enabler for communication between all parties (stakeholders) interested in the development of a computer-based system.
- The architecture highlights early design decisions that will have a reflective impact on all software engineering work that follows and, as important, on the ultimate success of the system as an operational entity.
- Architecture “constitutes a relatively small, intellectually graspable model of how the system is structured and how its components work together”
Architectural Styles of Software
The software that is built for computer-based systems also exhibits one of many architectural styles. Each style describes a system category that encompasses
- A set of components (e.g., a database, computational modules) that perform a function required by a system.
- A set of connectors that enable “communication, coordination, and cooperation” among components.
- Constraints that define how components can integrate to form the system.
- Semantic models that enable a designer to understand the overall properties of a system by analyzing the known properties of its constituent parts.
Data-centered architecture style
- A data store (e.g., a file or database) resides at the center of this architecture and accessed frequently by other components that update, add, delete, or otherwise modify data within the store.
- Client software accesses a central repository.
- In some cases the data repository is passive.
- That is, client software accesses the data independent of any changes to the data or the actions of other client software.
Data-flow architectures : Software Architecture
- This architecture applied when input data to transformed through a series of computational or manipulative components into output data.
- Also, A pipe and filter pattern has a set of components, called filters, connected by pipes that transmit data from one component to the next.
- Moreover, Each filter works independently of those components upstream and downstream, designed to expect data input of a certain form, and produces data output (to the next filter) of a specified form.
- However, the filter does not require knowledge of the working of its neighboring filters.
Call and return architecture
- This architectural style enables a software designer (system architect) to achieve a program structure. That is relatively easy to modify and scale.
- A number of sub-styles exist within this category:
- Moreover,Main program/subprogram architectures. This classic program structure decomposes the function into a control hierarchy where a “main” program invokes a number of program components. Which in turn may invoke still other components.
- Remote procedure call architectures. The components of a main program/ subprogram architecture distributed across multiple computers on a network.
Object-oriented architecture: Software Architecture
- The components of a system encapsulate data and the operations that must applied to manipulate the data.
- Communication and coordination between components accomplished via message passing.
- A number of different layers defined, each accomplishing operations that progressively become closer to the machine instruction set.
- Also, At the outer layer, components service user interface operations.
- Moreover, At the inner layer, components perform operating system interfacing.
- Intermediate layers provide utility services and application software functions.