In the area of software development are architectural patterns (including architectural style , English architectural pattern ) classify the kinds of patterns at the top level. In contrast to design patterns or idioms , they do not determine a specific (mostly small or local) sub-problem, but the basic organization and interaction between the components of an application.
Architectural patterns can be divided into different categories:
These patterns particularly support the expandability and adaptability of software systems.
Chaos to structure ( English mud-to-structure )
These patterns are designed to help organize the multitude of components and objects in a software system. The functionality of the overall system is divided into cooperating subsystems.
- Command Query Responsibility Segregation
- Get separation of the business model into parts, the data (query), and parts, change the data or Fachlichkeiten execute (command)
- Data context interaction
- Separation of business objects (data), use cases , algorithms (context) and business roles (interaction).
- Domain-driven design and naked objects
- Application domain-driven approach to architecture and design
- Pipes and Filters
- systems that process data streams . The system is structured by several independent units: processing steps, so-called filters , with a conversion (e.g. addition, removal, change) of data and connections between the filters, so-called pipes , for efficient forwarding of the data.
- Layer architecture
- Separates the components of a software system into layers that build on each other
- Bulletin board ( blackboard )
- An architectural pattern for managing problem-solving processes. Data from individual sub-processes are stored on the bulletin board in a hierarchically organized form. The bulletin board is now able to notify other sub-processes of the filing or change of this data. This enables the sub-processes to work almost in parallel.
Patterns in this category help to structure human-computer interactions.
- Model View Controller (MVC), Model View Presenter and Remote Presentation Model
- business logic . It is independent of presentation and control. The view is responsible for displaying the required data from the model and for receiving user interactions. It knows both its controller and the model whose data it is presenting, but is not responsible for further processing the data transferred by the user. The controller receives user actions from the view, evaluates them and acts accordingly. With the MVP, communication only comes from the controller, the view is completely passive.
- Presentation Abstraction Control (PAC)
- An architecture pattern for structuring interactive software systems. These are broken down into parts in such a way that each part offers exactly one task of the system. This gives the system a high degree of flexibility and you only have to ensure that these parts are put together to form a functioning whole and that they work together.
This category supports the use of distributed resources and services in networks such as B. the orchestration . Two other models ('Microkernel' and 'Pipes and Filters') support secondary distribution.
- Client server
- Describes another way of distributing tasks and services within a network. The tasks are done by programs that are divided into clients and servers. If desired, the client can request a task from the server, the server answers the request.
- peer to peer
- Describes a possibility of distributing tasks and services within a network. All computers have equal rights and can both use and provide services. The network participants can also be divided into different groups depending on their qualifications and take on specific tasks.
- Service Oriented Architecture (SOA)
- An architecture pattern for distributed systems to structure and use IT system services. By combining (orchestration) business processes are mapped through service implementations. By orchestrating services of lower abstraction levels, services of higher abstraction levels can be created quite flexibly and with the greatest possible reusability.
- Edge computing
- Decentralized data processing at the edge of the network, the so-called edge. The ever increasing computing power of end devices such as cell phones is used to make calculations for the user in order to save bandwidth and increase response times.
- Martin Fowler: Patterns of Enterprise Application Architecture . Addison-Wesley-Longman, Amsterdam 2002, ISBN 0-321-12742-0 ( martinfowler.com ).
- Jonathan Ufer: Architectural Patterns and Understanding Computer Systems. An analysis and teaching examples for the upper secondary level. Vdm Verlag Dr. Müller, Saarbrücken 2008, ISBN 3-639-00221-0 .
- Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal : Pattern-oriented software architecture. A pattern system. tape 1 . Addison-Wesley-Longman, Bonn 1998, ISBN 3-8273-1282-5 (English: Pattern-Oriented Software Architecture - A System of Patterns .).
- Frank Buschmann, Michael Stal, Hans Rohnert, Douglas Schmidt: Pattern-oriented software architecture. Pattern for concurrent and networked objects . Volume 2. dpunkt.verlag, 2002, ISBN 978-3-89864-142-5 (English: Pattern-Oriented Software Architecture - Patterns for Concurrent and Networked Objects .).
- Michael Kircher, Prashant Jain: Pattern-Oriented Software Architecture. Patterns for Resource Management . Volume 3. Wiley, 2004, ISBN 978-0-470-84525-7 .
- Frank Buschmann, Kevlin Henney, Douglas C. Schmidt: Pattern-Oriented Software Architecture. A Pattern Language for Distributed Computing . Volume 4. Wiley, 2007, ISBN 978-0-470-05902-9 .
- Software architecture specialist group. Deutsche Gesellschaft für Informatik (GI), accessed on March 31, 2013 .