Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
48 views

CS07 - Software Architecture

Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views

CS07 - Software Architecture

Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 88

Welcome to Session 6

June 6 2020

Software Architecture
Patterns and Tactics
Dr.D.VENKATA SUBRAMANIAN
GUEST FACULTY, BITS, Pilani,WILP
© Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
Session Outline

• What is a Pattern?
• Pattern Catalogue
• Module patterns
• Component and Connector Patterns
• Allocation Patterns

• Relation Between Tactics and Patterns


• Using tactics together
• Summary
What is a Pattern?

An architectural pattern establishes a relationship between:

• A context. A recurring, common situation in the world that gives rise to a problem.
• A problem. The problem, appropriately generalized, that arises in the given context.
• A solution. A successful architectural resolution to the problem, appropriately
abstracted. The solution for a pattern is determined and described by:
• A set of element types (for example, data repositories, processes, and objects)
• A set of interaction mechanisms or connectors (for example, method calls, events,
or message bus)
• A topological layout of the components
• A set of semantic constraints covering topology, element behavior, and
interaction mechanisms
Welcome to Session 7
June 06th 2020

Software Architecture
Patterns and Tactics
TNGK Ranganath
BITS, Pilani,WILP
© Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
Publish-Subscribe Pattern
Publish-Subscribe Pattern
• Context:
• There are a number of independent producers and consumers of data that must interact.
The precise number and nature of the data producers and consumers are not
predetermined or fixed, nor is the data that they share.

• Problem:
• How can we create integration mechanisms that support the ability to transmit messages
among the producers and consumers so they are unaware of each other’s identity, or
potentially even their existence?

• Solution:
• In the publish-subscribe pattern, components interact via announced messages, or events.
Components may subscribe to a set of events.
• Publisher components place events on the bus by announcing them; the connector then
delivers those events to the subscriber components that have registered an interest in
those events.
Publish-Subscribe Pattern
• Typical examples of systems that employ the publish-subscribe pattern are:
• Graphical user interfaces, in which a user’s low-level input actions are treated as
events that are routed to appropriate input handlers
• MVC-based applications, in which view components are notified when the state of
a model object changes
• Enterprise resource planning (ERP) systems, which integrate many components,
each of which is only interested in a subset of system events
• Extensible programming environments, in which tools are coordinated through
events
• Mailing lists, where a set of subscribers can register interest in specific topics
• Social networks, where “friends” are notified when changes occur to a person’s
website
• The publish-subscribe pattern is used to send events and messages to an unknown
set of recipients.
Publish-Subscribe Pattern
• The publish-subscribe pattern can take several forms:
• List-based publish-subscribe is a realization of the pattern where every publisher maintains a
subscription list—a list of subscribers that have registered an interest in receiving the event.

• Broadcast-based publish-subscribe differs from list-based publish-subscribe in that publishers have less
(or no) knowledge of the subscribers.
• Publishers simply publish events, which are then broadcast.
• Subscribers examine each event as it arrives and determine whether the published event is of interest.

• Content-based publish-subscribe is much more general. Each event is associated with a set of
attributes and is delivered to a subscriber only if those attributes match subscriber-defined patterns.
• Publish-subscribe pattern is typically realized by some form of message-oriented middleware, where
the middleware is realized as a broker, managing the connections and channels of information
between producers and consumers.
• This middleware is often responsible for the transformation of messages in addition to routing and
storing the messages.
• The publish-subscribe pattern inherits the strengths and weaknesses of the broker pattern.
Publish-Subscribe Example
Publish – Subscribe - Example
• Order creation event is subscribed to by Picking module, Transport module,
Loyalty module

Picking
module
New
Order order
Event
Transport
module notifier module

Loyalty
module

Publisher Subscribers
Publish - Subscribe
• Components interested in knowing about events, subscribe to relevant events
• Publisher place events on an Event bus
• Event bus delivers events to subscribers who have registered for those events

Example of Topics in a stock exchange


• Change in share price
• Increase in volume of trading
Publish - Subscribe

Post office

Telephone

Magazine
Company
Publish - Subscribe
• A process may subscribe to more than one topic / channel
• A topic / channel can be subscribed to by more than 1 process
Publish – Subscribe implementations

List based – All subscribers in the list, will be notified

Content based
• Topic based – Ex. Sports, Business, Politics – One can subscribe
for a topic
• Content Pattern based – Ex. (Stock = Tata Steel & Value > Rs.
3000 per share) – Subscriber is notified when the condition is
met
Publish-Subscribe tools

Tools

MQTT (MQ Telemetry


Amazon Simple Notification Transport) for IoT:
Azure Service Bus Apache Kafka Apache Pulsar
Service (SNS) Extremely lightweight
publish/subscribe protocol
Amazon SNS: Notification end points

SNS supports a variety of subscription types, allowing you to push


messages directly to Amazon Simple Queue Service (SQS)
queues, AWS Lambda functions, and HTTP endpoints
Exercise: Publish & Subscribe

When a new employee joins, the HR department creates an employee record in the database, storing various details of the
employee such as employee id, name, address, tel #, department, salary, bank account #, etc.

After this, HR needs to notify other departments such as Finance dept. for initiating PF, Transport dept. for arranging pickup &
drop, IT dept. for issuing laptop & to provision access rights to different systems & applications, etc.
The systems of these different departments are informed by calling the API provided by them.

The HR department finds that they keep getting requests from other departments to inform them whenever a new employee joins
so that they can do their processing.
This results in frequent changes to the HR’s Employee Joining module. So the systems department decided to use a Publish and
Subscribe architecture.

Draw the old and new architecture diagrams of the system.


Indicate what changes need to be made to the systems in order to implement the Publish and Subscribe architecture.
Exercise: Old architecture

Finance
system
HR API

Employee
joins Transport API Transport
HR system
system

IT API
IT system
Exercise: New architecture

Finance
system
HR API

Employee
joins Transport
API Transport
HR system SNS
system

IT API

IT system

SNS supports a variety of subscription types, allowing you to push


messages directly to Amazon Simple Queue Service (SQS)
queues, AWS Lambda functions, and HTTP endpoints
Benefits of Publish-Subscribe

Loose coupling between producer & consumer

New listeners can be added without impacting producer

Eliminates polling
Publish-Subscribe Solution – 1

Elements:
Overview:
Components publish • Any C&C Relations: The
and subscribe to component with at attachment relation
events. least one publish or associates components
subscribe port. with the publish-
When an event is subscribe connector by
• The publish-
announced by a prescribing which
component, the subscribe
connector, which components announce
connector events and which
infrastructure will have announce
components are
dispatches the event and listen roles for registered to receive
to all registered components that events.
subscribers. wish to publish and
subscribe to
events.
Publish-Subscribe Solution - 2

Weaknesses:
Constraints: All components are
connected to an event distributor • Typically increases latency and
that may be viewed as either a bus has a negative effect on
—connector—or a component. scalability and predictability of
Publish ports are attached to message delivery time.
announce roles and subscribe • Less control over ordering of
ports are attached to listen roles. messages, and delivery of
messages is not guaranteed.
Shared-Data Pattern
Shared-Data Pattern

Context: Problem: Solution:

• Various computational • How can systems store • In the shared-data


components need to and manipulate pattern, interaction is
share and manipulate persistent data that is dominated by the
large amounts of data. accessed by multiple exchange of persistent
This data does not independent data between multiple
belong solely to any one components? data accessors and at
of those components. least one shared-data
store. Exchange may be
initiated by the
accessors or the data
store.
• The connector type is
data reading and
writing.
Shared Data Example
Shared Data Solution - 1

Overview: Elements:
• Communication between data • Shared-data store. Concerns
accessors is mediated by a include types of data stored,
shared data store. data performance-oriented
• Control may be initiated by properties, data distribution,
the data accessors or the data and number of accessors
store. Data is made persistent permitted.
by the data store. • Data accessor component.
• Data reading and writing
connector.
Shared Data Solution - 2

Relations: Constraints: Weaknesses:

• Attachment relation • Data accessors • The shared-data store


determines which interact only with the may be a performance
data accessors are data store(s). bottleneck.
connected to which • The shared-data store
data stores. may be a single point
of failure.
• Producers and
consumers of data
may be tightly
coupled.
Blackboard Architecture Pattern
Context and Problem

A set of heterogeneous specialized


modules which dynamically change their
Problem
strategies as a response to unpredictable
events
• Non-deterministic strategies • When there is no deterministic solutions
to process raw data, and it is required to
interchange algorithms processing some
intermediate computation
• Solutions to partial problems require
different representation
• No predetermined strategy is present to
solve a problem (in functional
decomposition sequence of activations
are more hard-coded)
• Dealing with uncertain knowledge
29
Forces

Forces

• A complete search of the solution space is not possible


• Different algorithms to be used for partial solutions
• One algorithm uses results of another algorithm
• Input, intermediate data, output can have different
representation
• No strict sequence between algorithms, one can run them
concurrently if required

30
Examples

Robot control
Modern
(navigation,
machine Modern
Speech environment
Vehicle learning Adobe OCR compilers tend
recognition learning,
identification algorithms for text to be more
(HEARSAY reasoning,
and tracking complex task recognition Blackboard
project 1980) destination
(Jeopardy oriented
route
challenge)
planning)

31
Examples

32
Blackboard Pattern

Blackboard Pattern Components of Blackboard

• Two kinds of components • The blackboard is the shared data


• Central data structure — blackboard structure where solutions are built
• Components operating on the • The control plan encapsulates
blackboard information necessary to run the system
• It is accessed and up dated by control
• System control is entirely driven by the knowledge sources
blackboard state • DomainKS are concerned with the solving
of domain specific problems
• Control KS adapt the current control plan
to the current situation
• The control component selects,
configures and executes knowledge
sources
33
Runs in a loop Solution Structure
• Monitors change in blackboard
• Activates next KS Highly specialized modules
• Selection strategy may depend on • Each is different
ControlData • Has a set of triggering
conditions
• Executable code that retrieves
data from the blackboard and
updates blackboard
• Don’t interact with each other

Updates control Data


Such as:
• progress estimation,
Shared datastore • computation cost to execute a KS
containing partial • Control plan
solutions
Automated Robot Navigation

Robot’s high level goal is to visit a set of


places as so on as possible
• The successive subgoals are
• to decide on a sequence of places to visit
• to compute the best route and
• to navigate with a constraint of rapidity

35
Benefits

Benefits Liabilities

• Experimentation- try with • Difficulty in testing


different strategies, • No good solution guaranteed
• Support for modifiability- each • Computational overhead in
KS is strictly decoupled rejecting wrong solutions
• Reuse of KS • High development effort
• Fault-tolerance even when the • Concurrent access to blackboard
data is noisy must be synchronized,
parallelization is difficult

36
Map-Reduce Pattern
Map-Reduce Pattern

Context: Problem: Solution:

• Businesses have a pressing need • For many applications with ultra- • The map-reduce pattern requires
to quickly analyze enormous large data sets, sorting the data three parts:
volumes of data they generate or and then analyzing the grouped • A specialized infrastructure takes
access, at petabyte scale. data is sufficient. care of allocating software to the
• The problem the map-reduce hardware nodes in a massively
pattern solves is to efficiently parallel computing environment
perform a distributed and and handles sorting the data as
parallel sort of a large data set needed.
and provide a simple means for • A programmer specified
the programmer to specify the component called the map which
analysis to be done. filters the data to retrieve those
items to be combined.
• A programmer specified
component called reduce which
combines the results of the map
Map-Reduce Example
Map-Reduce pattern
• Used to analyse vast amounts of data

• Let us say we want to find out the top 3 web pages visited by users of a website every
month

• Top web page is a page where users spend maximum time

• We will have to capture data about different pages visited by each user and record the
duration for which they stayed on that page

• Then we need to determine the average time spent by users on every page during the 30
days of the month
• How can we speed up this analysis?
Map-Reduce pattern: Example

DB DB DB

Analyse data on Analyse data on Analyse data on


this server this server this server
Web Avg. # of Web Avg. # of Web Avg. # of
page time visits page time visits page time visits
spent spent spent

Web Avg. time


DB page spent

Calculate
weighted average
Map-Reduce pattern

• Data is distributed across a cluster of servers


• Processing is performed in parallel
• This leads to low latency & high availability

• Map is an algorithm that is executed on each server resulting in <Key, Value>


instances
• Reduce is an algorithm that takes uses output of Map process and performs
further processing to produce another list of <Key, value> pairs
Map – Reduce pattern
Example: Determine the average duration spent by users on different web pages
Map-Reduce Solution - 1

Overview: Elements:

• The map-reduce pattern provides a • Map is a function with multiple instances


framework for analyzing a large distributed deployed across multiple processors that
set of data that will execute in parallel, on a performs the extract and transformation
set of processors. portions of the analysis.
• This parallelization allows for low latency • Reduce is a function that may be deployed
and high availability. as a single instance or as multiple instances
• The map performs the extract and transform across processors to perform the load
portions of the analysis and the reduce portion of extract-transform-load.
performs the loading of the results. • The infrastructure is the framework
responsible for deploying map and reduce
instances, shepherding the data between
them, and detecting and recovering from
failure.
Map-Reduce Solution - 2

Relations: Constraints: Weaknesses:

• Deploy on is the relation • The data to be analyzed • If you do not have large
between an instance of must exist as a set of data sets, the overhead
a map or reduce files. of map-reduce is not
function and the • Map functions are justified.
processor onto which it stateless and do not • If you cannot divide your
is installed. communicate with each data set into similar
• Instantiate, monitor, and other. sized subsets, the
control is the relation • The only communication advantages of
between the between map reduce parallelism are lost.
infrastructure and the instances is the data • Operations that require
instances of map and emitted from the map multiple reduces are
reduce. instances as <key, value> complex to orchestrate.
pairs.
Multi-Tier Pattern

Context: Problem: Solution:

• In a distributed • How can we split the • The execution


deployment, there is system into a number structures of many
often a need to of computationally systems are
distribute a system’s independent organized as a set of
infrastructure into execution structures logical groupings of
distinct subsets. —groups of software components. Each
and hardware— grouping is termed a
connected by some tier.
communications
media?
Multi-Tier Pattern
Multi-Tier Pattern

Context: Problem: Solution:

• In a distributed • How can we split the • The execution


deployment, there is system into a number structures of many
often a need to of computationally systems are
distribute a system’s independent organized as a set of
infrastructure into execution structures logical groupings of
distinct subsets. —groups of software components.
and hardware— • Each grouping is
connected by some termed a tier.
communications
media?
Multi-Tier Example
Multi-Tier Solution

Overview: Elements: Relations: Constraints: Weaknesses:

• The execution • Tier, which is a • Is part of, to • A software • Substantial up-


structures of logical grouping group component front cost and
many systems of software components into belongs to complexity.
are organized as components. tiers. exactly one tier.
a set of logical • Communicates
groupings of with, to show
components. how tiers and the
Each grouping is components they
termed a tier. contain interact
with each other.
• Allocated to, in
the case that
tiers map to
computing
platforms.
SOA vs Micro-Services Architecture (MSA)

Key features: More granular, Minimal sharing, no ESB


Micro-services architecture: Retail application

Security
Protocol translation
Service composition

Reference: https://microservices.io/patterns/microservices.html
API Gateway
The granularity of APIs provided by microservices is often different than what a
service client needs.

API Gateways implement facades and

They provide additional services like proxying, protocol translation, security


Micro-services

Communication method - Most commonly ReST

Other communication methods – Messages, gRPC


Designing & deploying Micro-Services
app - Example

FTGO application

1. Consumers place
food order
2. Restaurants
manage orders
3. FTGO assigns
courier to deliver
food
4. FTGO pays
restaurants and
couriers

The application uses various web


services, including Stripe for
payments, Twilio for messaging, and
Amazon Simple Email Service (SES)
for email.
Micro-Services architecture example

Stripe is a
Payment
service

Twilio is a
messaging
service

SES is a
Simple
email
service

Reference: Book: Micro-services pattern – Chris Richardson


Scaling Micro-Services application

Z-axis is data partitioning for


example partitioning by
customer id

Reference: Book: Micro-services pattern – Chris Richardson


Micro-Services architecture: Reference
material
Reading material

1. Book: Micro-services pattern – Chris Richardson


2. Article “Pattern: Micro-service Architecture” in microservices.io
3. Article “Microservices in Practice” https://dzone.com/articles/microservices-in-practice-1

Micro-services
pattern
Key benefits & Challenges of Micro-
services architecture
Key Benefits
• Faster delivery,
• Improved scalability, and
• Greater autonomy

Key Challenges
• Resource monitoring and management
• Failure, recovery and self-repair
Micro-services case study

Danske Bank Forex system redesign

Danske Bank
Micro-services
Danske Bank – Case study

Questions:

1. What are the micro-services in Danske bank FX application?


2. How do they communicate with each other?
3. What is the benefit of such as communication?
4. What tools are used for logging & monitoring?
5. What new issues had to be handled when micro-services were introduced?
Danske Bank – Case study

What are the micro-services in Danske bank FX application?


• LineCheck
• Trading
• Data Sync
• Logging
• Monitoring
• Etc.
 

 
Danske Bank – Case study

How do they communicate with each other?


– Internally, the microservices integrate only via messaging on RabbitMQ
 
What is the benefit of such as communication?
– Results in very low coupling and no interfaces to violate
 
What tools are used for logging & monitoring?
– LoggingService, ElasticSearch, and Kibana
– MonitoringService, Icinga, and cAdvisor,
 
What new issues had to be handled when micro-services were introduced?
– Aspects like fault-tolerance mechanisms, concurrency handling, and monitoring
Case study

SOA at Cigna

1. How did Cigna go about identifying common business services?


2. Draw an architecture diagram of the system.
3. What benefit did CIGNA get from this architectural approach?
Case study: Cigna

1. How did CIGNA go about identifying common business services?


 
• Cigna went through the different business processes such as
• Enrolment,
• Eligibility & Billing to identify the granular level common business functions
such as ‘Calculate benefit for an individual’ used by multiple processes.

• Then they grouped related business functions into business services.


2. Cigna SoA architecture

Legacy system New system

Enrolment Eligibility Monitor Other


Billing process employee
process process capabilities
health

Extending capabilities using


existing services

Re-use of business functions

SoA service 1 SoA service X


Other Other
Calculate Get claim
business business
benefit details
functions functions
Case study: Cigna

3. What benefit did CIGNA get from this architectural approach?


 
• Increased reuse:
• Legacy Business processes call newly built reusable business services instead of the
existing Legacy functions.
• This reduces maintenance effort. (Earlier these functions existed in multiple business
processes).
 
• Agility in creating new functionality:
• Example: Predict health issues, by analysing the past history and patient related data. This
make use of the newly built services.
• Such extensions would have been difficult if they did not have common business functions,
identified and packaged as services.
Case study: TripAdvisor
Questions:
1. What was the basis for designing services?
2. Are the services course-grained or Fine-grained? Justify.
3. What techniques are used to improve performance?

TripAdvisor
architecture
Case study: TripAdvisor

Questions & Answers:


1. What was the basis for defining / designing services
– Each functional area is packaged as a Service - media, members, reviews, travel lists, etc.

2. Are the services ‘Course’ grained or ‘Fine’ grained. Justify.


– Course grained.
– Each service is high level, business oriented API

3. What techniques are used to improve performance?


– Content Delivery Network (CDN)
– Memcached for caching
– Sharding of the largest table (1 Billion rows) into 12 partitions, to address Input-Output bottleneck
issue
Case study: 3D-P Publish Subscribe
Questions:

1. Who is the publisher and who are the subscribers of GPS correction data?
 
2. How was the network traffic reduced?

3D-P GPS
Publish-Subscribe
Case study: 3D-P Publish Subscribe

Questions & Answers:

1. Who is the publisher and who are the subscribers of GPS correction data?
• Publisher: GPS correction data provider
• Subscribers: Earth Moving Equipment (EME)
 
2. How was the network traffic reduced?
• Unicast instead of broadcast. That is sending data only to relevant EME and not to all
EMEs. Thus reducing data transmission
• Maintain list of active EME. Send GPS correction data only if the EME is active. Thus
further reducing data transmission
Exercise: Identify the architecture
patterns
For the following situations, identify the arch pattern that can be used:

1. Let us say, MakeMyTrip.com provides APIs for


a. Enquiring about availability of tickets on flights to a destination from an origin city
b. Booking ticket on a certain flight
c. Cancelling ticket
SoA

2. The city traffic control center shows a map of the city roads along with information about the level of congestion on different
roads: Red for heavy congestion, Orange for medium and Green for no congestion. This is enabled by sensors sensing the
traffic density on important roads. The sensor data is stored in a database which is then analysed to display the level of
congestion on the road map
Pipe & Filter, MVC, Shared data

3. A cooking gas company wants to implement a system to provide different services to consumers – services such as booking of
gas cylinder, requesting for a technician visit, ordering a tube, etc.. Users should be able to access this system via browser, smart
phone or SMS. Backend database is Oracle.
Layered, Micro-services
Exercise: Identify the architecture
patterns
Mention the architecture patterns used in the architecture described below of an ERP system:

a. Sending ‘Request for Quote’ to Vendors who have registered for supplying the item
• Publish – Subscribe

b. Instruction to bank at end of month to pay salary to employees by calling a service supported by the
banking IT system
• SoA

c. Automatic tracking of inventory received & dispatched from warehouses using RFID
• Pipe & Filter

d. Send transport request to logistics partners


• SoA, Pub-Sub
Relationships Between Tactics and Patterns

Patterns are built from tactics; MVC, for example utilizes the
tactics:
if a pattern is a molecule, • Increase semantic coherence
a tactic is an atom. • Encapsulation
• Use an intermediary
• Use run time binding
Tactics Augment Patterns

Consider the Using tactics such


Patterns
broker pattern as
• Solve a specific • May have • Increase
problem but are performance resources will
neutral or have bottlenecks help
weaknesses with • May have a performance
respect to other single point of • Maintain
qualities. failure multiple copies
will help
availability
Tactics and Interactions

Each tactic has pluses


(its reason for being) Use of tactics can help
But nothing is free…
and minuses – side alleviate the minuses.
effects.
Tactics and Interactions - 2
A common tactic for detecting faults is Ping/Echo.
Common side-effects of Ping/Echo are:

Security: Performance: Modifiability:

• How to prevent a • How to ensure • How to add


ping flood that the ping/echo to the
attack? performance existing
overhead of architecture?
ping/echo is
small?
Tactics and Interactions - 3

System

Ping/Echo

Add to Ping Performance


system flood overhead
Tactics and Interactions - 4

cost:
• increased performance:
A tactic to resources
address the Common side cost more • how to
performance effects of utilize the
side-effect is Increase increase
“Increase Available resources
Available Resources are: efficiently?
Resources”.
Tactics and Interactions - 5

System

Ping/Echo

Add to Ping Performance


system flood overhead

Increase Available
Resources

Resource
Cost
Utilization
Tactics and Interactions - 6

modifiability:
modifiability: • how to
A tactic to
address the • how to add change the
Common side scheduling
efficient use of the
effects of policy in the
resources side- scheduling
Scheduling future?
effect is policy to the
Policy are:
“Scheduling existing
Policy”. architecture
Tactics and Interactions - 7
System

Ping/Echo

Add to Ping Performance


system flood overhead

Increase Available
Resources

Resource
Cost
Utilization

Scheduling
Policy

Add to Modify
system policy
Tactics and Interactions - 8

Common side effects of Use


an Intermediary are:
• how to ensure
that all
communication
passes through
the intermediary?
A tactic to address the
addition of the scheduler to
modifiability:
the system is “Use an
Intermediary”.
Tactics and Interactions - 9
System

Ping/Echo

Add to Ping Performance


system flood overhead

Increase Available
Resources

Cost Resource
Utilization

Scheduling
Policy

Add to Modify
system policy

Use an
Intermediary

Ensure
usage
Tactics and Interactions – 10.

A tactic to address the


concern that all
communication passes
through the
intermediary is “Restrict
Communication Paths”.
Common side effects of
Restrict Communication
Paths are:
• how to ensure that the performance overhead of the intermediary are
performance:
not excessive?

Note: this design problem has now become recursive!


How Does This Process End?

Each use of tactic introduces new concerns.

Each new concern causes new tactics to be added.

Are we in an infinite progression?

No. Eventually the side-effects of each tactic become small enough to ignore.
Summary

Patterns are underspecified


Tactics are simpler than with respect to real
An architectural pattern patterns systems so they have to be
augmented with tactics.

is a package of design Augmentation ends when


has known properties that describes a class of
decisions that is found requirements for a specific
permit reuse, and architectures.
repeatedly in practice, system are satisfied.
Thank You!

Any Questions ?

You might also like