Architectural Patterns: Introduction

 

Overview

Architectural patterns express fundamental structural organization schemas for software systems

They provide as set of predefined subsystems, specify their responsibilities, and include rules and guidelines for organizing the relationships between them

Compared with Design Patterns, DP deals with a problem. AP tells you how to build a system

Architectural patterns represent the highest-level patterns in our pattern system

They help you to specify the fundamental structure of an application

Each AP helps you to achieve a specific global system property, such as distributed system, adaptability of the user interface

 

 

Categories

From Mud to Structure

Help you to avoid sea of components or objects

Examples are Layers, Blackboard and Pipes/Filters

Distributed Systems

Provides a complete infrastructure for distributed applications

Example is Broker

Interactive Systems

Support the structuring of software systems that feature human-computer interaction

Examples are Model-View-Controller and Presentation-Abstraction-Control

Adaptable Systems

Support extension of applications and their adaptation to evolving technology and changing functional requirements

Examples are Reflection and Microkernel patterns

 

 

Notes

The above categorization is not intended to be exhaustive

We could new one by using Pattern Systems (covered later)

Selection of architectural pattern should be driven by the general properties of the application at hand

Ask youself, if the system is for interactive, need changeability, reliability, etc

Alternatives should also be examined when possible

Different architectural patterns imply different results (even if address the same problem, e.g. MVC is more efficient than a PAC. But PAC is better for multitasking and task-specific user interfaces)

Most software systems will be built according to more than one architectural patterns (Combine and alternate when needed)

Remember: a particular architectural pattern, or a combination of several, is NOT a complete software architecture

AP remains a structural framework for a software system that must be further specificed and refined

It includes the task of integrating the application's functionality with the framework, and detailing its components and relationships, perhaps with help of design patterns and idioms

Chosing a AP is just the first step in general