Microsoft PowerPoint - CISC322_03_ArchitectureStyles
CISC 322
Software Architecture
Lecture 03:
Architecture Styles
Ahmed E. Hassan
Architectural Design
Topics in
Architectural Design
Software Design (Software Architecture) © SERG
Material drawn from [Bass et al. 98, Shaw96, CORBA98,
CORBA96, IBM98, Gamma95, JavaIDL98]
[Slides by Spiros Mancoridis]
Software Architecture Topics
• Terminology and Motivation
• Abstraction
• Intuition About Architecture:
Software Design (Software Architecture) © SERG
– Hardware
– Network
– Building Architecture
Software Architecture Topics
• Architectural Styles of Software Systems:
– Repository
– Pipe and Filter
• Case Study of Compiler Architecture
Software Design (Software Architecture) © SERG
– Object-Oriented
– Implicit Invocation
– Layered
– Interpreter
– Process-Control
– Client/Server
Software Architecture Topics
• Technologies for Distributed Architectures:
– IBM’s MQSeries
– OMG’s CORBA
Software Design (Software Architecture) © SERG
What is
Software Architecture?
• The software architecture of a program or
computing system is the structure (or
structures) of the system.
• The structures comprise:
Software Design (Software Architecture) © SERG – Software components – Externally visible properties of the components – Relationships between the components
Externally Visible
Properties of Components
• Externally visible properties refers to those
assumptions other components can make of
a component, such as:
– Provided services
Software Design (Software Architecture) © SERG
– Performance characteristics
– Fault handling
– Shared resource usage
– Et cetera
A Software Architecture
is an Abstraction
• An architecture is an abstraction of a system
that suppresses details of components that
do not affect how they:
– Use
Software Design (Software Architecture) © SERG
– Are used by
– Relate to
– Interact with
other components.
Can a system have
more that one structure?
• Yes, no one structure holds the claim to
being the architecture.
• Below are some examples of structures:
– Module decomposition
Software Design (Software Architecture) © SERG
– Inheritance hierarchy
– Call graph
– Objects and message passing at runtime
– Build dependencies
– Et cetera
Does Every System have an
Architecture?
• Yes.
• For small systems the architecture may be
trivial.
• For large systems it definitely exists in the
Software Design (Software Architecture) © SERG
software product, but may not have been
documented.
Are box-and-line diagrams
descriptions of Software Architecture?
• No.
• A description of the behavior of each component
is part of the architecture.
• In box-and-line diagrams, readers imagine the
behavior of each component by interpreting the
Software Design (Software Architecture) © SERG
labels of the boxes & lines.
• One must document the extent that a component’s
behavior influences how another component must
be written to interact with it.
Why is Software Architecture
Important?
• Communication among stakeholders:
– Customers, managers, designers, programmers.
• Documentation of early design decisions:
– Constraints on implementation
Software Design (Software Architecture) © SERG
– Organizational structure
– Guides evolutionary prototyping
• Transferable abstraction of a system to similar
systems (reuse):
– Program families share a common architecture
– Architecture can be the basis for training.
Architectural Structures
(Module Structure)
• Components: work assignments.
– Work assignments have products
associated with them:
• Interface specifications
Software Design (Software Architecture) © SERG
• Code
• Test plans, etc.
• Relations: is-a-submodule-of
• Use: Allocating a project’s labor and other resources during development and maintenance.
Architectural Structures
(Conceptual or Logical Structure)
• Components: Abstractions of the system’s
functional requirements.
• Relations: shares-data-with
• Use: Understanding the interactions
Software Design (Software Architecture) © SERG
• Use: Understanding the interactions
between units in the problem space.
Architectural Structures
(Process or Coordination Structure)
• Components: Processes or threads.
• Relations:
– Synchronizes-with
– Can’t
-run
-without
Software Design (Software Architecture) © SERG
– Can’t
-run
-without
– Can’t-run-with
– Preempts, et cetera
• Use: Modeling dynamic aspects of a
running system.
Architectural Structures
(Physical Structure)
• Components: Hardware (computers,
networks, etc.)
• Relations: communicates-with
• Use: Create models to reason about
Software Design (Software Architecture) © SERG
• Use: Create models to reason about
performance, availability, security, etc.
Architectural Structures
(Uses Structure)
• Components: procedures or modules
• Relations: assumes-the-correct-presence-of
• Use: To model system extendibility and
incremental system building (e.g., Makefile
Software Design (Software Architecture) © SERG
dependencies).
Architectural Structures
(Calls Structure)
• Components: Procedures
• Relations: calls
• Uses: To model trace of execution in a
program.
Software Design (Software Architecture) © SERG
Architectural Structures
(Data Flow Structure)
• Components: Programs or modules
• Relations: transmits-data-to
• Use: To model data transmission which can
aid requirements traceability.
Software Design (Software Architecture) © SERG
Architectural Structures
(Class Structure)
• Components: classes and interfaces
• Relations: inherits-from, implements
• Use: To model collections of similar
behavior and parameterizes differences.
Software Design (Software Architecture) © SERG
The Importance of Structures
• Structures are important because they “boil
away” details about the software that are
independent of the concern reflected by the
abstraction.
Software Design (Software Architecture) © SERG
• Each structure provides a useful perspective
of the system.
• Sometimes the term view is used instead of
structure.
Abstraction
Software Design (Software Architecture) © SERG
Abstraction
• One characterization of progress in software
development has been the regular increase
in levels of abstraction: – I.e., the size of a software designer’s building
Software Design (Software Architecture) © SERG – I.e., the size of a software designer’s building blocks.
Abstraction (Cont’d)
• Early 1950s: Software was written in
machine language:
– programmers placed instructions and data
individually and explicitly in the computer’s
Software Design (Software Architecture) © SERG
memory
– insertion of a new instruction in a program
might require hand checking the entire program
to update references to data and instructions
Assemblers
• Some machine code programming problems
were solved by adding a level of abstraction
between the program and the machine: – Symbolic Assemblers:
• Names used for operation codes and memory
Software Design (Software Architecture) © SERG
addresses.
• Memory layout and update of references are
automated. – Macro Processors:
• Allow a single symbol to stand for a commonly used
sequence of instructions.
Programming Languages
• Late 1950s: The emerging of the first highlevel
programming languages. Well
understood patterns are created from
notations that are more like mathematics
Software Design (Software Architecture) © SERG
than machine code.
– evaluation of arithmetic expressions
– procedure invocation
– loops and conditionals
Programming Languages
(Cont’d)
• FORTRAN becomes the first widely used
programming language.
• Algol and its successors followed with
higher
-levels of abstraction for representing
Software Design (Software Architecture) © SERG
higher
-levels of abstraction for representing
data (types).
Abstract Data Types
• Late 1960s and 1970s: Programmers
shared an intuition that good data structure
design will ease the development of a
program.
Software Design (Software Architecture) © SERG
• This intuition was converted into theories of
modularization and information hiding.
– Data and related code are encapsulated into
modules.
– Interfaces to modules are made explicit.
Abstract Data Types (Cont’d)
• Programming Languages:
– Modula
– Ada
– Euclid
Software Design (Software Architecture) © SERG
• Module Interconnection Languages:
– MIL75
– Intercol
Software Architecture
• As the size and complexity of software
systems increases, the design problem goes
beyond algorithms and data structures.
• Designing and specifying the overall system
Software Design (Software Architecture) © SERG
structure (Software Architecture) emerges
as a new kind of problem.
Software Architecture Issues
• Organization and global control structure.
• Protocols of communication,
synchronization, and data access.
• Assignment of functionality to design
Software Design (Software Architecture) © SERG
elements.
• Physical distribution of data and processes.
• Selection among design alternatives.
State of Practice
• There is not currently a well-defined
terminology or notation to characterize
architectural structures.
• However, good software engineers make
common use of architectural principles
Software Design (Software Architecture) © SERG
when designing software.
• These principles represent rules of thumb or
patterns that have emerged informally over
time. Others are more carefully
documented as industry standards.
Descriptions of Architectures
• “Camelot is based on the client-server
model and uses remote procedure calls both
locally and remotely to provide
communication among applications and
Software Design (Software Architecture) © SERG
servers.”
Descriptions of Architectures
(Cont’d)
•
“Abstraction layering and system
decomposition provide the appearance of
system uniformity to clients, yet allow Helix
to accommodate a diversity of autonomous
Software Design (Software Architecture) © SERG
devices. The architecture encourages a
client-server model for the structuring of
applications.”
Descriptions of Architectures
(Cont’d)
• “We have chosen a distributed, objectoriented
approach to managing
information.”
Software Design (Software Architecture) © SERG
Descriptions of Architectures
(Cont’d)
• “The easiest way to make a canonical sequential
compiler into a concurrent compiler is to pipeline
the execution of the compiler phases over a
number of processors. A more effective way is to
Software Design (Software Architecture) © SERG
split the source code into many segments, which
are concurrently processed through the various
phases of compilation (by multiple compiler
processes) before a final, merging pass
recombines the object code into a single
program.”
Some Standard Architectures
• ISO/OSI Reference Model is a layered
network architecture.
• X Window System is a distributed
windowed user interface architecture based
Software Design (Software Architecture) © SERG
on event triggering and callbacks.
• NIST/ECMA Reference Model is a
generic software engineering environment
architecture based on layered
communication substrates.
Intuition About Architecture
Software Design (Software Architecture) © SERG
Intuition About Architecture
• It is interesting that we have so few named
software architectures. This is not because
there are so few architectures, but so many.
• Next we look at several architectural
Software Design (Software Architecture) © SERG
disciplines in order to develop an intuition
about software architecture:
– Hardware Architecture
– Network Architecture
– Building Architecture
Hardware Architecture
• RISC machines emphasize the instruction
set as an important feature.
• Pipelined and multi-processor machines
emphasize the configuration of architectural
Software Design (Software Architecture) © SERG
pieces of the hardware.
Differences and Similarities
Between SW & HW Architectures
• Differences:
– Relatively (to software) small number of design
elements.
– Scale is achieved by replication of design
Software Design (Software Architecture) © SERG
elements.
• Similarities:
– We often configure software architectures in
ways analogous to hardware architectures.
(e.g., we create multi-process software and use
pipelined processing).
Network Architecture
• Networked architectures abstract the design
elements of a network into nodes and
connections.
• Topology is the most emphasized aspect:
Software Design (Software Architecture) © SERG
– Star networks
– Ring networks
– Manhattan Street networks
• Unlike software architectures, in network
architectures only few topologies are of
interest.
Building Architecture
• Multiple Views: skeleton frames, detailed
views of electrical wiring, etc.
• Architectural Styles: Classical,
Romanesque, Colonial, and so on.
Software Design (Software Architecture) © SERG
• Materials: One does not build a skyscraper
using wooden posts and beams.
Architectural Styles
of Software Systems
Software Design (Software Architecture) © SERG
Architectural Styles of
Software Systems
• An Architectural Style defines a family of
systems in terms of a pattern of structural
organization. It determines:
– the vocabulary of components and connectors
Software Design (Software Architecture) © SERG
– the vocabulary of components and connectors
that can be used in instances of that style
– a set of constraints on how they can be
combined. For example, one might constrain:
• the topology of the descriptions (e.g., no cycles).
• execution semantics (e.g., processes execute in
parallel).
Determining an
Architectural Style
• We can understand what a style is by
answering the following questions:
– What is the structural pattern?
(i.e., components, connectors, constraints)
– What is the underlying computational model
?
Software Design (Software Architecture) © SERG
– What is the underlying computational model
?
– What are the essential invariants of the style?
– What are some common examples of its use?
– What are the advantages and disadvantages of
using that style?
– What are some of the common specializations
of that style?
Describing an Architectural Style
• The architecture of a specific system is a
collection of:
– computational components
– description of the interactions between these
Software Design (Software Architecture) © SERG
components (connectors)
Describing an
Architectural Style (Cont’d)
• Software architectures are represented as
graphs where nodes represent components:
• procedures
• modules
• processes
Software Design (Software Architecture) © SERG
• tools
• databases
• and edges represent connectors:
• procedure calls
• event broadcasts
• database queries
• pipes
Repository Style
• Suitable for applications in which the
central issue is establishing, augmenting,
and maintaining a complex central body of
information.
Software Design (Software Architecture) © SERG
• Typically the information must be
manipulated in a variety of ways. Often
long-term persistence is required.
Repository Style (Cont’d)
• Components:
– A central data structure representing the current
state of the system.
– A collection of independent components that
Software Design (Software Architecture) © SERG
operate on the central data structure.
• Connectors:
– Typically procedure calls or direct memory
accesses.
Repository Style (Cont’d)
Memory Access
Computation
Software Design (Software Architecture) © SERG
Shared Data
Memory
Repository Style Specializations
• Changes to the data structure trigger
computations.
• Data structure in memory (persistent
option).
Software Design (Software Architecture) © SERG
• Data structure on disk.
• Concurrent computations and data accesses.
Repository Style Examples
• Information Systems
• Programming Environments
• Graphical Editors
Software Design (Software Architecture) © SERG
• AI Knowledge Bases
• Reverse Engineering Systems
Repository Style Advantages
• Efficient way to store large amounts of
data.
• Sharing model is published as the
repository schema.
Software Design (Software Architecture) © SERG
• Centralized management:
– backup
– security
– concurrency control
Repository Style Disadvantages
• Must agree on a data model a priori.
• Difficult to distribute data.
• Data evolution is expensive.
Software Design (Software Architecture) © SERG
Pipe and Filter
Architectural Style
• Suitable for applications that require a
defined series of independent computations
to be performed on data.
• A component reads streams of data as input
Software Design (Software Architecture) © SERG
and produces streams of data as output.
Pipe and Filter
Architectural Style (Cont’d)
• Components: called filters, apply local
transformations to their input streams and
often do their computing incrementally so
that output begins before all input is
Software Design (Software Architecture) © SERG
consumed.
• Connectors: called pipes, serve as conduits
for the streams, transmitting outputs of one
filter to inputs of another filter.
Pipe and Filter
Architectural Style (Cont’d)
filter
Software Design (Software Architecture) © SERG
pipes
Pipe and Filter Invariants
• Filters do not share state with other filters.
• Filters do not know the identity of their
upstream or downstream filters.
Software Design (Software Architecture) © SERG
Pipe and Filter Specializations
• Pipelines: Restricts topologies to linear
sequences of filters.
• Batch Sequential: A degenerate case of a
pipeline architecture where each filter
Software Design (Software Architecture) © SERG
processes all of its input data before
producing any output.
Pipe and Filter Examples
• Unix Shell Scripts: Provides a notation for
connecting Unix processes via pipes.
– cat file | grep Erroll | wc -l
• Traditional Compilers: Compilation
Software Design (Software Architecture) © SERG
• Traditional Compilers: Compilation
phases are pipelined, though the phases are
not always incremental. The phases in the
pipeline include:
– lexical analysis + parsing + semantic analysis
+ code generation
Pipe and Filter Advantages
• Easy to understand the overall
input/output behavior of a system as a
simple composition of the behaviors of the
individual filters.
Software Design (Software Architecture) © SERG
• They support reuse, since any two filters
can be hooked together, provided they agree
on the data that is being transmitted
between them.
Pipe and Filter
Advantages (Cont’d)
• Systems can be easily maintained and
enhanced, since new filters can be added to
existing systems and old filters can be
replaced by improved ones.
Software Design (Software Architecture) © SERG
• They permit certain kinds of specialized
analysis, such as throughput and deadlock
analysis.
• The naturally support concurrent
execution.
Pipe and Filter Disadvantages
• Not good choice for interactive systems,
because of their transformational character.
• Excessive parsing and unparsing leads to
loss of performance and increased
Software Design (Software Architecture) © SERG
loss of performance and increased
complexity in writing the filters
themselves.
Case Study:
Architecture of a Compiler
• The architecture of a system can change in
response to improvements in technology.
• This can be seen in the way we think about
compilers.
Software Design (Software Architecture) © SERG
Early Compiler Architectures
• In the 1970s, compilation was regarded as a
sequential (batch sequential or pipeline)
process:
Software Design (Software Architecture) © SERG
Lex Syn Sem Opt CGen text code
Early Compiler Architectures
• Most compilers create a separate symbol
table during lexical analysis and used or
updated it during subsequent passes.
Software Design (Software Architecture) © SERG
Symbol Table
Lex Syn Sem Opt CGen text code
Modern Compiler Architectures
• Later, in the mid 1980s, increasing attention
turned to the intermediate representation of
the program during compilation.
Symbol Table
Software Design (Software Architecture) © SERG
Lex Sem CGen
text code
Attributed
Parse Tree
Syn Opt
Hybrid Compiler Architectures
• The new view accommodates various tools
(e.g., syntax-directed editors) that operate
on the internal representation rather than the
textual form of a program.
Software Design (Software Architecture) © SERG
• Architectural shift to a repository style,
with elements of the pipeline style, since
the order of execution of the processes is
still predetermined.
Hybrid Compiler Architectures
Lex Syn Sem Opt Cgen
Attributed
Software Design (Software Architecture) © SERG
Edit Flow
Attributed
Parse Tree
Symbol Table
Object-Oriented Style
• Suitable for applications in which a central
issue is identifying and protecting related
bodies of information (data).
• Data representations and their associated
Software Design (Software Architecture) © SERG
operations are encapsulated in an abstract
data type.
• Components: are objects.
• Connectors: are function and procedure
invocations (methods).
Object-Oriented Style (Cont’d)
obj
obj obj
object
Software Design (Software Architecture) © SERG
obj
obj
obj
obj
obj
obj
Object-Oriented Invariants
• Objects are responsible for preserving the
integrity
(e.g., some invariant) of the data
representation.
• The data representation is hidden from
Software Design (Software Architecture) © SERG
• The data representation is hidden from
other objects.
Object-Oriented Specializations
• Distributed Objects
• Objects with Multiple Interfaces
Software Design (Software Architecture) © SERG
Object-Oriented Advantages
• Because an object hides its data
representation from its clients, it is possible
to change the implementation without
affecting those clients.
Software Design (Software Architecture) © SERG
• Can design systems as collections of
autonomous interacting agents.
Object-Oriented Disadvantages
• In order for one object to interact with
another object (via a method invocation) the
first object must know the identity of the
second object.
– Contrast with Pipe and Filter Style.
Software Design (Software Architecture) © SERG
– Contrast with Pipe and Filter Style.
– When the identity of an object changes, it is
necessary to modify all objects that invoke it.
• Objects cause side effect problems:
– E.g., A and
B both use object
C, then B’s effects
on
C look like unexpected side effects to
A.
Implicit Invocation Style
• Suitable for applications that involve
loosely-coupled collection of components,
each of which carries out some operation
and may in the process enable other
Software Design (Software Architecture) © SERG
operations.
• Particularly useful for applications that must
be reconfigured “on the fly”:
– Changing a service provider.
– Enabling or disabling capabilities.
Implicit Invocation Style (Cont’d)
• Instead of invoking a procedure directly ...
– A component can announce (or broadcast) one
or more events.
– Other components in the system can register an
Software Design (Software Architecture) © SERG
– Other components in the system can register an
interest in an event by associating a procedure
with the event.
– When an event is announced, the broadcasting
system (connector) itself invokes all of the
procedures that have been registered for the
event.
Implicit Invocation Style (Cont’d)
• An event announcement “implicitly” causes
the invocation of procedures in other
modules.
procedure procedure procedure
Software Design (Software Architecture) © SERG
procedure procedure procedure
Broadcasting System
Implicit Invocation Invariants
• Announcers of events do not know which
components will be affected by those
events.
• Components cannot make assumptions
Software Design (Software Architecture) © SERG
about the order of processing.
• Components cannot make assumptions
about what processing will occur as a result
of their events (perhaps no component will
respond).
Implicit Invocation
Specializations
• Often connectors in an implicit invocation
system include the traditional procedure
call in addition to the bindings between
event announcements and procedure calls.
Software Design (Software Architecture) © SERG
Implicit Invocation Examples
• Used in programming environments to
integrate tools:
– Debugger stops at a breakpoint and makes that
announcement.
Software Design (Software Architecture) © SERG
– Editor responds to the announcement by
scrolling to the appropriate source line of the
program and highlighting that line.
Implicit Invocation
Examples (Cont’d)
• Used to enforce integrity constraints in
database management systems (called
triggers).
• Used in user interfaces to separate the
Software Design (Software Architecture) © SERG
• Used in user interfaces to separate the
presentation of data from the applications
that manage that data.
Implicit Invocation Advantages
• Provides strong support for reuse since any
component can be introduced into a system
simply by registering it for the events of
that system.
Software Design (Software Architecture) © SERG
• Eases system evolution since components
may be replaced by other components
without affecting the interfaces of other
components in the system.
Implicit Invocation
Disadvantages
• When a component announces an event:
– it has no idea what other components will
respond to it,
– it cannot rely on the order in which the
Software Design (Software Architecture) © SERG
responses are invoked
– it cannot know when responses are finished
Layered Style
• Suitable for applications that involve
distinct classes of services that can be
organized hierarchically.
• Each layer provides service to the layer
Software Design (Software Architecture) © SERG
above it and serves as a client to the layer
below it.
• Only carefully selected procedures from the
inner layers are made available (exported)
to their adjacent outer layer.
Layered Style (Cont’d)
• Components: are typically collections of
procedures.
• Connectors: are typically procedure calls
under restricted visibility.
Software Design (Software Architecture) © SERG
Layered Style (Cont’d)
Basic Utilities
Useful System
sets of
procedures
Software Design (Software Architecture) © SERG
procedure
calls
Core Layer
Layered Style Specializations
• Often exceptions are made to permit nonadjacent
layers to communicate directly.
– This is usually done for efficiency reasons.
Software Design (Software Architecture) © SERG
Layered Style Examples
• Layered Communication Protocols:
– Each layer provides a substrate for
communication at some level of abstraction.
– Lower levels define lower levels of interaction,
Software Design (Software Architecture) © SERG
the lowest level being hardware connections
(physical layer).
• Operating Systems
– Unix
Unix Layered Architecture
System Call Interface to Kernel
Socket Plain File Cooked
Block
Raw
Block
Raw
TTY
Cooked
TTY
Software Design (Software Architecture) © SERG
Hardware
Protocols
Network
Interface
File
System
Block Device Driver
Block
Interface
Block
Interface
TTY
Interface Line Disc.
Character Device Driver
Layered Style Advantages
• Design: based on increasing levels of
abstraction.
• Enhancement: Changes to the function of
one layer affects at most two other layers.
Software Design (Software Architecture) © SERG
• Reuse: Different implementations (with
identical interfaces) of the same layer can
be used interchangeably.
Layered Style Disadvantages
• Not all systems are easily structured in a
layered fashion.
• Performance requirements may force the
coupling of high
-level functions to their
Software Design (Software Architecture) © SERG
coupling of high
-level functions to their
lower-level implementations.
Interpreter Style
• Suitable for applications in which the most
appropriate language or machine for
executing the solution is not directly
available.
Software Design (Software Architecture) © SERG
Interpreter Style (Cont’d)
• Components: include one state machine
for the execution engine and three
memories:
– current state of the execution engine
Software Design (Software Architecture) © SERG
– program being interpreted
– current state of the program being interpreted
• Connectors:
– procedure calls
– direct memory accesses.
Interpreter Style (Cont’d)
Current State
of
Program Being
Interpreted
Program
Being
Interpreted
inputs
Memory
Software Design (Software Architecture) © SERG
Computation
State Machine
Interpreted
Execution
Engine
Current
State of
Execution
Engine
outputs
selected
instruction
Selected
data (fetch)
store
Interpreter Style Examples
• Programming Language Compilers:
– Java
– Smalltalk
• Rule Based Systems:
Software Design (Software Architecture) © SERG
– Prolog
– Coral
• Scripting Languages:
– Awk
– Perl
Interpreter Style Advantages
• Simulation of non-implemented hardware.
• Facilitates portability of application or
languages across a variety of platforms.
Software Design (Software Architecture) © SERG
Java Architecture
Java
Source
Code
Bytecode
Verifier
Class
Loader
Software Design (Software Architecture) © SERG
Java
Bytecode
Java
Compiler
INTERNET
Interpreter
Run-time
Environment
Hardware
Interpreter Style Disadvantages
• Extra level of indirection slows down
execution.
• Java has an option to compile code.
– JIT (Just In Time) compiler.
Software Design (Software Architecture) © SERG
Process-Control Style
• Suitable for applications whose purpose is
to maintain specified properties of the
outputs of the process at (sufficiently near)
given reference values.
Software Design (Software Architecture) © SERG
• Components:
– Process Definition includes mechanisms for
manipulating some process variables.
– Control Algorithm for deciding how to
manipulate process variables.
Process-Control Style (Cont’d)
• Connectors: are the data flow relations for:
– Process Variables:
• Controlled variable whose value the system is
intended to control.
Software Design (Software Architecture) © SERG
• Input variable that measures an input to the process.
• Manipulated variable whose value can be changed
by the controller.
– Set Point is the desired value for a controlled
variable.
– Sensors to obtain values of process variables
pertinent to control.
Feed-Back Control System
• The controlled variable is measured and the
result is used to manipulate one or more of
the process variables.
input variables
Software Design (Software Architecture) © SERG
Process Controller
set point
controlled
variable
input variables
changes to
manipulated
variables
sensor for
controlled variable
Open-Loop Control System
• Information about process variables is not
used to adjust the system.
input
variables controlled
Software Design (Software Architecture) © SERG
set point Controller
Process
variables
changes to
manipulated
variables
controlled
variable
Process Control Examples
• Real-Time System Software to Control:
– Automobile Anti-Lock Brakes
– Nuclear Power Plants
– Automobile Cruise-Control
wheel
Software Design (Software Architecture) © SERG
desired
speed
pulses from wheel
Controller
active/inactive
variables Engine
throttle
setting
wheel
rotation
Client-Server Style
• Suitable for applications that involve
distributed data and processing across a
range of components.
• Components:
Software Design (Software Architecture) © SERG
– Servers: Stand-alone components that provide
specific services such as printing, data
management, etc.
– Clients: Components that call on the services
provided by servers.
• Connector: The network, which allows
clients to access remote servers.
Client-Server Style
Client 1 Client 2 ... Client N
Software Design (Software Architecture) © SERG
File Server Database Server Object Server
Network
Client-Server Style Examples
• File Servers:
– Primitive form of data service.
– Useful for sharing files across a network.
– The client passes requests for files over the
Software Design (Software Architecture) © SERG
network to the file server.
Client-Server Style
Examples (Cont’d)
• Database Servers:
– More efficient use of distributing power than
file servers.
– Client passes SQL requests as messages to the
Software Design (Software Architecture) © SERG
DB server; results are returned over the
network to the client.
– Query processing done by the server.
– No need for large data transfers.
– Transaction DB servers also available.
Client-Server Style
Examples (Cont’d)
• Object Servers:
– Objects work together across machine and
network boundaries.
– ORBs allow objects to communicate with each
Software Design (Software Architecture) © SERG
other across the network.
– IDLs define interfaces of objects that
communicate via the ORB.
– ORBs are the evolution of the RPC.
RPCs Versus ORBs
call foo
Client
Code Data
Server Client Server
Object X Object Y
call foo
on
Object Y
call foo
on
Object X Code
Data
Code
Data
Software Design (Software Architecture) © SERG
RPC Mechanism Object Request Broker
1) Remote Procedure Call (RPC)
execute foo
Object X Object Y
2) Object Request Broker
Client-Server Advantages
• Straightforward distribution of data.
• Transparency of location.
• Mix and match heterogeneous platforms,
Software Design (Software Architecture) © SERG
• Easy to add new servers or upgrade existing
servers.
Client-Server Disadvantages
• Performance of the system depends on the
performance of the network.
• Tricky to design and implement C/S
systems.
Software Design (Software Architecture) © SERG
• Unless there is a central register of names
and services, it may be hard to find out what
services are available.
Technologies for Distributed
Architectures
Software Design (Software Architecture) © SERG
IBM’s MQSeries
• MQSeries provides applicationprogramming
services that enable programs
to communicate with each other in a
distributed fashion using messages and
Software Design (Software Architecture) © SERG
queues.
• This kind of communication is called
asynchronous messaging.
IBM’s MQSeries (Cont’d)
• The MQSeries software enables
applications to exchange information across
more than 25 different operating system
platforms.
Software Design (Software Architecture) © SERG
• This flexibility allows MQSeries
applications to run on hardware ranging
from modest desktops to high-end
mainframe computers.
MQSeries Components
• Queue Managers manage one or more
queues and ensure that messages are put on
the correct queue or that they are routed to
another (remote) queue manager.
Software Design (Software Architecture) © SERG
• Applications must make a successful
connection to a queue manager before they
can put or get messages to or from a queue.
MQSeries Applications
• An application can only connect to one
queue manager at a time.
• Before an application can use a queue, it
must open a queue for putting, getting, or
Software Design (Software Architecture) © SERG
both putting and getting messages.
MQSeries Queued Messages
• A queued message consists of two parts:
– The first part includes application-specific data
contained in a buffer.
– The second part includes control information,
Software Design (Software Architecture) © SERG
such as a message type, destination, and various
other options.
Programs Communicating via a
Queue on the Same Workstation
Queue Manager
A
B
put get
Software Design (Software Architecture) © SERG
Queue
A
B
Programs Communicating via a
Queue on the Same Workstation
• Figure illustrates two programs
A and
B
that are communicating through a managed
message queue.
• In this example,
A,
B, and the queue
manager are all executing on the same
Software Design (Software Architecture) © SERG
workstation.
• The communication between the programs
is conducted through a queue onto which
program
A puts messages and from which
program
B gets messages.
Programs Communicating via a
Queue on Different Workstations
A
put Queue Manager
Transmission Queue
Software Design (Software Architecture) © SERG
Queue Manager
Queue
get
B
Channel
Programs Communicating via a
Queue on Different Workstations
• Figure illustrates two programs
A and
B
that are communicating through a managed
message queue.
•
A,B are executing on different workstations.
Software Design (Software Architecture) © SERG
•
A,B are executing on different workstations.
• Program
A puts a message onto the queue,
specifying not a local queue but a local
definition of a remote queue.
Programs Communicating via a
Queue on Different Workstations
• The local queue definition identifies a nonlocal
queue that is managed by another
queue manager.
• The queue manager, to which program
A is
Software Design (Software Architecture) © SERG
• The queue manager, to which program
A is
connected to, puts the message on a special
queue called a transmission queue.
• The message is then automatically sent
along a defined channel that connects the
two queue managers.
Programs Communicating via a
Queue on Different Workstations
• If for some reason the channel is not active
(possibly due to a network failure) the
message remains on the transmission queue.
• The message will be sent automatically
Software Design (Software Architecture) © SERG
when the channel is available again.
Programs Communicating via a
Queue on Different Workstations
• The destination queue manager puts the
message on the queue that is specified by
program
A.
• Once a message is placed on the destination
Software Design (Software Architecture) © SERG
queue, the queue manager can invoke
program
B automatically and
B can then get
the queued message.
Using MQSeries to Create a Server
that Handles a Single Service S1
Client
Request Queue
Manager
Q
Trigger
Software Design (Software Architecture) © SERG
S1
Request
Manager
(QM)
R
Data
(Response)
Scaling-Up to Multiple Queues
and Services
Q1
Queue
Client
Requests
Q2 S1
Trigger
Data
(Response) Trigger
Software Design (Software Architecture) © SERG
Trigger
S2
Queue
Manager
(QM) Data
(Response)
Requests
R
S3
Q3
(Response)
OMG’s CORBA
• The Common Object Request Broker
Architecture (CORBA) is a standard
distributed object architecture developed by
the Object Management Group (OMG)
Software Design (Software Architecture) © SERG
consortium.
CORBA Objects
• CORBA objects can:
– be located anywhere on the network,
– interoperate with objects on other platforms,
– be written in a variety of programming
Software Design (Software Architecture) © SERG
languages:
• Java
• C++
•
C
• Smalltalk
• COBOL
• Ada.
CORBA Messages
• Distributed objects in a CORBA system
communicate by sending messages to each
other.
• These messages, however, are not queued,
Software Design (Software Architecture) © SERG
as is the case with MQSeries.
CORBA Method Request
Client
Object Reference
Server
Servant
Software Design (Software Architecture) © SERG
Stubs
ORB
Skeletons
ORB Network Message
(TCP/IP, SPX/ISX, ...)
Method Requests
CORBA Method Request (Cont’d)
• The Figure shows how a message from a
client object is sent to a server object.
• In order for a client to access a remote
server object, it must first obtain a handle
Software Design (Software Architecture) © SERG
(object reference) to that object.
• If the server object is remote, the handle
points to a stub function, which uses the
Object Request Broker (ORB) service to
forward invocations to the server object.
CORBA Stubs
• After the stub establishes a connection to
the server, it sends the following to the
destination object: – an object reference,
Software Design (Software Architecture) © SERG – an encoded representation of the method, – parameters to the skeleton code linked.
CORBA Skeletons
• The skeleton code transforms the call and
parameters into the required
implementation-specific format before
calling the object.
Software Design (Software Architecture) © SERG
CORBA Platform Independence
• The client is unaware of the CORBA
object’s location, implementation details,
and which ORB is used to access the object.
• The connections between distributed objects
Software Design (Software Architecture) © SERG
are managed through a name server.
CORBA IDL and IIOP
• The client may only invoke methods that
are specified in the CORBA object’s
interface.
• Object interfaces are defined using OMG’s
Software Design (Software Architecture) © SERG
Interface Definition Language (IDL).
• Different ORBs communicate via the
Internet InterORB Protocol (IIOP).
Server Objects in CORBA
• The server side ORB receives the request
over a network connection and then
determines which of the objects on its
machine is the target.
Software Design (Software Architecture) © SERG
• When the ORB locates the object, it must
prepare it to receive the request. E.g.,
– Start a server process that contains the object.
– Retrieve the object from persistent storage.
Hiding Services Behind an
Object Adapter
S1 S2 S3 S4
Adapter
Software Design (Software Architecture) © SERG
(CORBA OBJECT)
ORB
Object Adapters in CORBA
• The Figure shows how an adapter can act as
a proxy between a set of services and the
ORB.
• Clients will access each service through the
Software Design (Software Architecture) © SERG
adapter that is responsible for that service.
• The adapter will be responsible for finding
the appropriate filters to handle each client
request.
Object Adapters in CORBA (Cont’d)
• These filters may be:
– on the same machine as the adapter,
– or may be on another machine, in which case
the adapter must delegate the client request to
Software Design (Software Architecture) © SERG
another adapter.
References
• [Bass et al 98] Bass, L., Clements, P., Kazman R., Software Architecture in
Practice. SEI Series in Software Engineering, Addison-Wesley, 1998
• [CORBA98] CORBA. 1998. OMG’s CORBA Web Page. In:
http://www.corba.org
• [Gamma95] Gamma, E., Helm, R., Johnson, R., Vlissides, J., 1995. Design
Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley
Inc., Reading, Massachusetts.
Software Design (Software Architecture) © SERG
• [IBM98] MQSeries Whitepaper. In:
http://www.software.ibm.com/ts/mqseries/library/whitepapers/mqover
• [JavaIDL98] Lewis, G., Barber, S., Seigel, E. 1998. Programming with Java
IDL: Developing Web Applications with Java and CORBA. Wiley Computer
Publishing, New York.
• [CORBA96] Seigel, J. 1996. CORBA Fundamentals and Programming.
John Wiley and Sons Publishing, New York.
• [Shaw96] Shaw, M., Garlan, D. 1996. Software Architecture:
Perspectives on an Emerging Discipline. Prentice Hall.
Comments
Post a Comment