Architectural Patterns
Architectural Patterns
Architectural Patterns
Ani Megerdoumian
Design patterns Course
Dr. Noorhosseini
Winter 2010
Amirkabir University of Technology
Computer Engineering Faculty
Introduction
Classification of patterns
Programming
Design
Architectural
Organizational
The software architecture of a system is set
of structures needed to reason about the
system, which comprise software elements,
relations among them, and properties of both
Amirkabir University of Technology - Computer Engineering Faculty 2
Software Architectural Patterns(1)
Software Architectural Patterns address
various issues in Software Engineering
Hardware performance limitations
High availability
Minimization of business risk
An architectural pattern is rather a concept
that solves and delineates some essential
cohesive elements of a software architecture.
Amirkabir University of Technology - Computer Engineering Faculty 3
Software Architectural Patterns(2)
Architectural patterns are a key concept in the
field of software architecture:
They offer solutions to architectural problems,
Help to document the architectural design decisions,
Facilitate communication between stakeholders
through a common vocabulary,
Describe the quality attributes of a software system as
forces.
It is adhoc and systematic
Amirkabir University of Technology - Computer Engineering Faculty 4
Software Architectural Patterns(3)
Architectural patterns express fundamental
structural organisation schemas for software
systems
set of predefined subsystems
specify responsibilities
rules and guidelines for organizing subsystem
relationships
For example INTERPRETER pattern for view
software inside elements
Amirkabir University of Technology - Computer Engineering Faculty 5
Classifying Architectural Patterns:
Categorized according to the global system properties that they
support
F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal.
Patternorinented Software Architecture - A System of Patterns. J.Wiley and Sons
Ltd., 1996.
Classified with respect to a framework of features [1997,1998]
like the types of components and connectors, and control and data issues
M. Shaw and P. C. Clements. A field guide to boxology: Preliminary
classification of architectural styles for software systems. In COMPSAC 97:
Proceedingsbof the 21st International Computer Software and Applications
Conference, pages 613. IEEE Computer Society, 1997.
L. Bass, P. Clements, and R. Kazman. Software Architecture in Practice. Addison-
Wesley Longman, Reading, MA, 1998.
Based on the concept of architectural views
P. Clements, F. Bachmann, et al,Documenting Software Architectures: Views and
Beyond. Addison-Wesley, 2002.
Amirkabir University of Technology - Computer Engineering Faculty 6
Architectural View
An Architectural View is a representation of a system
from the perspective of a related set of concerns
An Architectural Pattern defines types of elements
and relationships that work together in order to solve
a particular problem from some perspective.
Views
Components
Connectors
Module
Allocation
Amirkabir University of Technology - Computer Engineering Faculty 7
An Overview on Patterns(1)
1. The Layered View deals with how the system as a complex heterogeneous entity
can be decomposed into interacting parts.
LAYERS
INDIRECTION LAYER (a variant of this pattern is called virtual Machine
2. The Data Flow View deals with how streams of data are successively processed
or transformed by components.
BATCH SEQUENTIAL
PIPES AND FILTERS
3. The Data-centered View is appropriate when the concerns involve how a central
repository of data is accessed by multiple components.
SHARED REPOSITORY
ACTIVE REPOSITORY
BLACKBOARD
4. The Adaptation View deals with how the system adapts itself during evolution.
MICROKERNEL
REFLECTION
INTERCEPTOR
Amirkabir University of Technology - Computer Engineering Faculty 8
An Overview on Patterns(2)
5. The Language Extension View is concerned with how systems offer an abstraction
layer to the computation infrastructure.
INTERPRETER
VIRTUAL MACHINE
RULE-BASED SYSTEM
6. The User Interaction View shows the runtime structure of components that offer a user
interface.
MODEL-VIEW-CONTROLLER
PRESENTATION-ABSTRACTION-CONTROL
C2
7. The Component Interaction View focuses on how individual components exchange
messages but retain their autonomy.
EXPLICIT INVOCATION (called communicating processes)
IMPLICIT INVOCATION (also called event systems)
CLIENT-SERVER
PEER-TO-PEER
PUBLISH-SUBSCRIBE (called publisher-subscriber )
8. The Distribution View tackles concerns about disseminating components in a
networked environment.
BROKER
REMOTE PROCEDURE CALLS (called distributed objects)
MESSAGE QUEUING (called messaging )
Amirkabir University of Technology - Computer Engineering Faculty 9
1.Layered View
In the Layered View the system is viewed as a
complex heterogeneous entity that can be
decomposed into interacting parts. The
concerns addressed by this view are:
What are the parts that make up the whole system?
How do these parts interact with each other?
How do the parts perform their functionality and still
remain decoupled from each other?
How are the quality attributes of modifiability,
scalability, and integrability supported?
Amirkabir University of Technology - Computer Engineering Faculty 10
Layered View
Pattern: LAYERS
Decoupling the components in a vertical manner
On the other hand components also require some
horizontal structuring
Within each LAYER all constituent components
work at the same level of abstraction and can
interact through connectors.
In the pure form of the pattern, layers should not
be by-passed: higher-level layers access lower-
level layers only through the layer beneath.
Explicit interface/change the details inside
Two adjacent LAYERS can be considered as a
CLIENT-SERVER pair, the higher layer being the
client and the lower layer being the server.
It can be used in other patterns:
MICROKERNEL
PRESENTATION-ABSTRACTION-CONTROL
Amirkabir University of Technology - Computer Engineering Faculty 11
Layered View
Pattern: INDIRECTION LAYER
A sub-system should be accessed by
one or more components, but direct
access to the subsystem is problematic.
The same problem appears at different levels of scale:
it can happen between two ordinary components in one environment,
components in two different languages,
components in two different systems
INDIRECTION LAYER wraps all accesses to the relevant sub-system and should not be
bypassed
The INDIRECTION LAYER can either be:
integrated to the sub-system (as in virtual machine)
be an independent entity (as in ADAPTER or FAADE)
The INDIRECTION LAYER pattern is a foundation for the architectures of
INTERPRETER, VIRTUAL MACHINE, and RULE-BASED SYSTEM.
Amirkabir University of Technology - Computer Engineering Faculty 12
2.Data Flow View
In the Data Flow View the system is viewed as a
number of subsequent transformations upon
streams of input data. The concerns addressed by
this view are:
What are the elements that perform the transformations?
Are components that are independent of one another, and
have input and output ports.
What are the elements that carry the streams of data?
Are connectors and similarly have data-in and data-out
roles.
How are the two aforementioned types of elements
connected to each other?
How are the quality attributes of modifiability, reusability,
and integrability supported?
Amirkabir University of Technology - Computer Engineering Faculty 13
Data Flow View
Pattern: BATCH SEQUENTIAL
In a BATCH SEQUENTIAL architecture the whole
task is sub-divided into small processing steps,
which are realized as separate, independent
components
It is useful for simple data flows
Entails severe overhead
Makes the component complex
Hinders modifiability and reusability
Amirkabir University of Technology - Computer Engineering Faculty 14
Data Flow View
PATTERN: PIPES AND FILTERS
In a PIPES AND FILTERS architecture a complex task is divided into
several sequential subtasks.
Each of these sub-tasks is implemented by a separate, independent
component, a filter, which handles only this task.
Filters:
Filters have a number of inputs and a number of outputs and they are
connected flexibly using pipes but they are never aware of the identity of
adjacent filters.
Each filter consumes and delivers data incrementally, which maximizes the
throughput of each individual filter, since filters can potentially work in parallel.
Pipes:
Each pipe realizes a stream of data between two components
Pipes act as data buffers between adjacent filters.
There are performance overheads for transferring data in pipes and
data transformations, and error handling is rather difficult.
Amirkabir University of Technology - Computer Engineering Faculty 15
Traditional Compiler Architecture
Pipelined Compiler Architecture
Amirkabir University of Technology - Computer Engineering Faculty
16
object
code
Lex Syn
Opt Code
program
source
Sem
object
code
Lex Syn Opt Code
program
source
Sem
3.Data-centered View
In the Data-centered View the system is viewed as a persistent,
shared data store that is accessed and modified by a number of
elements. The concerns addressed by this view are:
How is the shared data store created, accessed, and updated?
How is data distributed?
Is the data store passive or active, i.e. does it notify its accessors or are the
accessors responsible of finding data of interest to them?
How does the data store communicate with the elements that access it?
Do the accessor elements communicate indirectly through the shared data or
also directly with each other?
How are the quality attributes of scalability, modifiability, reusability, and
integrability supported?
The data store and the elements that access it are components.
The data store is independent of the components, and the
components are usually independent of one another.
Amirkabir University of Technology - Computer Engineering Faculty 17
Data-centered View
Pattern: SHARED REPOSITORY
In the SHARED REPOSITORY pattern one component of the system
is used as a central data store, accessed by all other independent
components.
The SHARED REPOSITORY
must be scalable to meet the clients requirements
it must ensure data consistency
It must handle problems of resource contention
for example by locking accessed data.
The SHARED REPOSITORY might also introduce transaction
mechanisms.
A SHARED REPOSITORY also might offer additional services, such
as security.
Amirkabir University of Technology - Computer Engineering Faculty 18
Data-centered View
Pattern: ACTIVE REPOSITORY
A system needs to have a SHARED REPOSITORY, but it should
not just be passively accessed by accessor components.
Clients need to be immediately informed of specific events in
the shared repository,
such as changes of data or access of data.
An ACTIVE REPOSITORY is a SHARED REPOSITORY that is
active in the sense that it informs a number of subscribers of
specific events that happen in the shared repository.
The ACTIVE REPOSITORY maintains a registry of clients and
informs them through appropriate notification mechanisms.
EXPLICIT INVOCATIONS
IMPLICIT INVOCATIONS
PUBLISH-SUBSCRIBE
Amirkabir University of Technology - Computer Engineering Faculty 19
Data-centered View
Pattern: BLACKBOARD
In an immature domain in which no deterministic approach to a
solution is known
Step-wise improvement of the solution.
The complex task is divided into smaller sub-tasks for which
Each client can access the BLACKBOARD to see if new inputs
are presented for further processing and to deliver results after
processing.
Image and speech recognition application
A control component monitors the blackboard and coordinates
the clients according to the state of the blackboard
separate component,
it may be part of the clients,
the blackboard itself,
or a combination of the above.
20
Overview: Patterns of the
Layered, Data Flow and Data-
centered Views
Amirkabir University of Technology - Computer Engineering Faculty 21
4.Adaptation View
In the Adaptation View the system is viewed as a core
part that remains invariable and an adaptable part
that either changes over time or in different versions
of a system. The concerns addressed by this view are:
How can a system adapt better to evolution over time or to
multiple different versions of a basic architecture?
What is the system functionality that is more likely to change
and what will possibly remain invariable?
How do the invariable parts communicate with the adaptable
parts?
How are the quality attributes of modifiability, reusability,
evolvability, and integrability supported?
1. Invariable components
2. Adaptable components(Variation points)
Amirkabir University of Technology - Computer Engineering Faculty 22
Adaptation View
Pattern: MICROKERNEL
Consider a system family where different versions of a system need to
be supported.
Nonetheless, the system family should be realized using a common
architecture to ease software maintenance and foster reuse.
A MICROKERNEL realizes services that all systems, derived from the
system family, need and a plug-and-play infrastructure for the system-
specific services.
Internal servers (not visible to clients) are used to realize version-specific
services and they are only accessed through the MICROKERNEL.
External servers offer APIs and user interfaces to clients by using the
MICROKERNEL.
Amirkabir University of Technology - Computer Engineering Faculty 23
Adaptation View
Pattern: REFLECTION
Also Known As: Open Implementation, Meta-Level Architecture
In a REFLECTION architecture all structural and behavioral aspects of a
system are stored into meta-objects and separated from the application
logic components.
The latter can query the former (that may have changed at any point of
time) in order to execute their functionality.
The REFLECTION pattern is organized into LAYERS:
the meta-level
the base level
It can be used in Aspect-Oriented composition frameworks
Amirkabir University of Technology - Computer Engineering Faculty 24
Adaptation View
Pattern: INTERCEPTOR
Another variant of Chain of Responsibility pattern
In cases where we need an adaptable framework to accommodate future
services, the INTERCEPTOR pattern is appropriate
registering new services with the system,
letting the system trigger these services automatically when certain events occur,
letting the new services access the systems internal state and control its behavior.
An application can register with the framework any number of
INTERCEPTORS that implement new services.
for aspect-oriented composition as MESSAGE INTERCEPTOR
for middleware architectures as INVOCATION INTERCEPTOR
Amirkabir University of Technology - Computer Engineering Faculty 25
5.Language Extension View
In the Language Extension View the system is
viewed as a part that is native to the
software/hardware environment and another part
that is not. The concerns addressed by this view are:
How can a part of the system that is written in a non-native
language be integrated with the software system?
How can the non-native part be translated into the native
environment?
How are the quality attribute of portability and modifiability
supported?
These communicate indirectly through another type
of component, an interpreter component that
translates the latter into the former.
Amirkabir University of Technology - Computer Engineering Faculty 26
Language Extension View
Pattern: INTERPRETER
An INTERPRETER for the language is
provided, which provides both parsing
facilities and an execution environment.
The program that needs to be interpreted is
provided in form of scripts which are
interpreted at runtime.
Amirkabir University of Technology - Computer Engineering Faculty 27
Language Extension View
Pattern: VIRTUAL MACHINE
An efficient execution environment for a
programming language is needed. The
architecture should facilitate portability, code
optimizations, and native machine code
generation
Runtime interpretation of the language is not
necessarily required.
A VIRTUAL MACHINE defines a simple machine
architecture on which not machine code but an
intermediate form called the byte-code can be
executed. The language is compiled into that
byte-code.
Amirkabir University of Technology - Computer Engineering Faculty 28
Language Extension View
Pattern: RULE-BASED SYSTEM
Logical problems are hard to express
an expert system that provides the knowledge of an expert or a set of
constraints
Alternative for if-else statements
It consists mainly of three things:
facts,
represent data
Rules,
Represent knowledge in form of a condition and associated actions
an engine that acts on them
A RULE-BASED SYSTEM applies its rules to the known facts.
The actions of a rule might assert new facts, which, in turn,
trigger other rules.
Amirkabir University of Technology - Computer Engineering Faculty 29
Overview: patterns of the
Adaptation and Language
Extension View
Amirkabir University of Technology - Computer Engineering Faculty 30
6.User Interaction View
In the User Interaction View the system is viewed
as a part that represents the user interface and a
part that contains the application logic,
associated with the user interface. The concerns
addressed by this view are:
What is the data and the application logic that is
associated to the user interface?
How is the user interface decoupled from the application
logic?
How are the quality attributes of usability, modifiability,
and reusability supported?
Amirkabir University of Technology - Computer Engineering Faculty 31
User Interaction View
Pattern: MODEL-VIEW-CONTROLLER
Amirkabir University of Technology - Computer Engineering Faculty 32
User Interaction View
Pattern: PRESENTATION-ABSTRACTION-CONTROL
An interactive system may offer multiple diverse functionalities
that need to be presented to the user through a coherent user
interface.
1. the leaves of the tree are agents that are responsible for specific
functionalities
2. At the middle layers there are agents that combine the functionalities
of related lower-level agents to offer greater services;
3. at the top of the tree, there is only one agent that orchestrates the
middle-layer agents to offer the collective functionality.
Each agent is comprised of three parts:
A Presentation takes care of the user interface;
An Abstraction maintains application data and the logic that modifies it;
A Control intermediates between the Presentation and the Abstraction
and handles all communication with the Controls of other Agents.
Amirkabir University of Technology - Computer Engineering Faculty 33
User Interaction View
Pattern: C2
An interactive system is comprised of multiple components
The system may need to support several requirements
Yet the system needs to be designed to achieve separation of concerns and
satisfy its performance constraints.
The system is decomposed into a top-to-bottom hierarchy of concurrent
components that interact asynchronously by sending messages through
explicit connectors.
Components submit request messages upwards in the hierarchy, knowing the
components above, but they send notification messages downwards in the
hierarchy, without knowing the components lying beneath.
The purposes of connectors is to broadcast, route, and filter messages.
34
Overview: patterns of the User
Interaction View
Amirkabir University of Technology - Computer Engineering Faculty 35
REFERENCES
P. Avgeriou, U. Zdun, Architectural Patterns
Revisited A Pattern Language, the European
Pattern Languages of Programming (EuroPLOP) 6
10 July 2005, Irsee, Germany.
Amirkabir University of Technology - Computer Engineering Faculty 36
Thanks for you attention
Amirkabir University of Technology - Computer Engineering Faculty 37