The software architecture proposed in Marshaw and Davidgarlan is defined as an architecture that can be used to describe the control structure and the overall organization of a software system, which can represent the framework structure of a system. Used to describe the relationships and interfaces between the parts from a higher level.
Software architecture is a high-level abstract description of the system. Mainly reflects the topological attributes, intentionally ignoring the details;
Software architecture is composed of components and components, and the component has its own system structure.
The description of the component has 3 Aspects: computational function, structural characteristics and other characteristics.
It can be seen from the definition of software architecture that the software architecture mainly involves the connection and constraint between components and components, and the three aspects of the system architecture formed by the interaction between the components.
By using the software architecture, we can effectively analyze user requirements, facilitate system modification and reduce the risk of program construction.
The core question of software framework design is: Can we reuse the already formed architecture scheme. Thus, the concept of software architecture style is produced. Software architecture styles include artifacts, connectors, and a set of constraint constraints that combine them, such as topological constraints and semantic constraints.
Architecture Style Classification:
Data flow style: Batch processing sequence, pipeline / filter;
Warehouse Style: Database system, super-text system, blackboard system;
Independent component style: Process communication, event system;
Call / return style: Main program / subroutine, object oriented style, hierarchical structure;
Virtual organization: Interpreter, rule-based system.
Pipe / filter Style
The pipeline / filter Architecture is a typical data flow software architecture style. Mainly includes filter and pipeline two kinds of elements. In this architecture, each module has a set of inputs and a set of outputs. Each part reads data from the input interface, which is processed to place the resulting data in the output interface, which is called a filter.
The connector of this model transmits the output of one filter to the input of another filter, which is called a pipe.
in the pipeline / in the filter style, the filters must be independent entities that are not shared with each other. Each filter does not recognize its data flow upstream and downstream of the filter's identity, then it needs to be in the filter input and output port of the pipeline must be to ensure that the input data and output data type of convergence of correctness.
The traditional compiler is another notable example of the plumbing / filter Architecture style.
Object Oriented Architecture style
Objects are interactive through calls to functions and procedures, object-oriented architecture
An object hides its representation from other objects, so it can change the representation of an object without affecting other objects;
The object encapsulates the data and operations together, improves the cohesion of the system, reduces the coupling between the modules, and makes the system more easily decomposed into a set of objects which are both interacting and independent;
Inheritance and encapsulation methods provide technical support for object reuse.
Layered architecture Style
Layered architecture style is A representation of the call/return style. Hierarchical style organized into a hierarchical structure, through decomposition, can be divided into a number of independent complex systems, each layer has a high degree of cohesion, and requires each layer for the upper service, and as the lower level of the customer, the higher levels to specific application problems, the lower layer is more general.
In a hierarchical structure, the connectors between the layers are defined by the Protocol of the layer interaction, and the upper and lower layers are one-way call relationships, that is, the upper layer uses the lower-level functions through the interfaces provided by the downlevel, while the lower levels cannot use the upper-level functions.
Cond
Software Architecture Style