The term architecture patterns - also architecture style - is used in connection with the development of complex software systems. Thereby architecture samples represent examined solution schemes for the fundamental organization structure of software systems. In the concrete use also the combination of different architecture patterns is possible, in order to be able to solve a problem definition purposefully. The background of the architecture samples is the objective to increase the quality of software architectures, since these have far-reaching consequences for the software life cycle. Architecture samples are to be distinguished from Idiomen and draft samples generally.
The classification of patterns takes place in different abstraction levels. On the highest level lie the architecture patterns, which form a template for software architectures and describe global system characteristics. Below this are the design patterns, which ultimately provide defined solutions for software components and their underlying problems and have no effect on the structure of the overall system. On lowest hierarchy levelidioms are responsible finally for the solution concepts in connection with specific programming languages.
Thereby the architecture patterns abstract concrete software architectures, represent their generalization so to speak and can so for the control of the complexity of software systems contribute. The uniform description of architecture patterns takes place after the structure "context - problem - solution" and supports thus their application. The context describes the situation in which a pattern is applicable. In the problem description problematic circumstances in the context of the use as well as their solution are summarized. The term forces is also used to identify intended properties and other influences of the pattern. It may well be that forces act in the opposite direction, so that other, further patterns must be used in combination to balance these forces. Ultimately, the solution takes on the representation of pragmatic and proven solutions to problems. Among other things, software architectures are specified and their dynamic behavior at runtime is mapped. The description structure mentioned can be supplemented flexibly by further examples as well as scenarios, rules for the implementation and the summary of advantages and disadvantages.
Classification of architecture patterns
Architecture patterns are classified analogous to their respective tasks into different - partially overlapping - categories, which are:
Structuring patterns Task is the structuring of components and subsystems regarding the distribution of functionalities on the total system. Classical examples are the following architecture patterns:
- Layers, subtasks on same abstraction levels are structured layered,
- Pipes and Filters, patterns for structuring data streams and
- Blackboard, specification of subsystems.
Patterns for distributed systems Task is structuring with respect to distributed resources and services for example Service Oriented Architectures. Classic examples are the following architecture patterns:
- Broker, structuring of distributed systems with decoupled components and
- Client- server, distribution of tasks within a network.
Adaptive systems The task is to modify, extend and adapt software architectures. Classic examples are the following architecture patterns:
- Micro Kernel, a core based on basic functions is isolated from the set of possible extensions,
- Reflection, the pattern defines the recognition of its structure in terms of properties and dynamic changes.
Interactive systems The task is to structure human- computer interactions. Classic examples are the following architectural patterns:
- Model View Controller( MVC), structuring the software architecture into the three-tier architecture, presentation and control,
- Presentation-Abstraction-Control( PAC), supplements the MVC pattern with the hierarchical structuring of so-called agents.