KEMBAR78
Unit 2 SA | PDF | Conceptual Model | System
0% found this document useful (0 votes)
39 views30 pages

Unit 2 SA

Software Architecture notes unit 2 701

Uploaded by

vishakha soni
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views30 pages

Unit 2 SA

Software Architecture notes unit 2 701

Uploaded by

vishakha soni
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 30

What is a Static Model?

In software engineering, a static model is concerned with the


architectural characteristics of a system. It describes the system's
elements and how they are connected at a given time. Static
models do not model the behavior of the system but rather its state.
Some of the well-known static models are:

· Class Diagrams: Class Diagrams are the residual classes,


interfaces, and relationships between them in an
Object-Oriented System. They incorporate attributes, methods,
and the relationships of one class with another.

· Entity-Relationship Diagrams (ERD): Mainly employed in


database-related work, entity relationship diagrams depict the
entities in a database, their characteristics and the connections
they share.

· Component Diagrams: Component Diagram diagrams


depict how the entire software is organized and the relationship
that these components of the software have with one another.

· Deployment Diagrams: A Deployment Diagram illustrates


how software architecture, designed on a conceptual level,
translates into the physical system architecture where the
software will run as nodes.

What is a Dynamic Model?


Dynamic model describes the behavior of complex systems in
addition to time and comprises a group of models that give the
current state of the system. It describes how the system evolves
with regards to certain events, the control flow and how the various
components of the system interact. They are particularly crucial in
that they describe the real-time character, execution of activities,
roles, and occurrences within the system.
· Sequence Diagrams: Sequence diagrams represent the flow
of messages between the objects to achieve a particular task or
a process.

· State Machine Diagrams: Applied to specify the possible


conditions that an object can be in and the change of these
conditions based on events.

· Activity Diagrams: Activity diagrams illustrate the actions or


processes in a system as well as show when and if each
activity/operation occurs.

· Use Case Diagrams: Use Case Diagram are principally used


to document requirements but also give a dynamic view since
they depict the utilization of the system by the users.

Static vs Dynamic Modelling

Aspect Static Model Dynamic Model

Behavior and interactions


Structure and relationships
Focus

Changes and evolution over


Time Snapshot at a specific point
time
in time
Perspective

Sequence diagrams, state


Class diagrams, ER
machine diagrams, activity
diagrams, component
diagrams
diagrams
Examples
Behavior analysis, workflow
Architecture, design,
modeling
documentation
Usage

Behavioral
Descriptive
Nature

Dynamic processes and


Primary Static relationships and
state changes
dependencies
Concern

Level of Detailed behavioral


High-level structural details
Detail interactions

Analyze and validate system


Define system architecture
behavior
and data structures
Purpose

Suitable for simulation,


Suitable for design and
testing, and validation
specification phases
Suitability phases

UML sequence diagrams,


UML class diagrams, ERD
state machine tools, activity
tools, architecture
diagram tools
frameworks
Tools

In data flow architecture, the whole software system


is seen as a series of transformations on consecutive
pieces or set of input data, where data and operations
are independent of each other. In this approach, the
data enters into the system and then flows through
the modules one at a time until they are assigned to
some final destination (output or a data store).

The connections between the components or


modules may be implemented as I/O stream, I/O
buffers, piped, or other types of connections. The
data can be flown in the graph topology with cycles,
in a linear structure without cycles, or in a tree type
structure.

The main objective of this approach is to achieve the


qualities of reuse and modifiability. It is suitable for
applications that involve a well-defined series of
independent data transformations or computations
on orderly defined input and output such as compilers
and business data processing applications. There are
three types of execution sequences between
modules−

​ Batch sequential
​ Pipe and filter or non-sequential pipeline mode
​ Process control

Batch Sequential

Batch sequential is a classical data processing model,


in which a data transformation subsystem can initiate
its process only after its previous subsystem is
completely through −

​ The flow of data carries a batch of data as a


whole from one subsystem to another.
​ The communications between the modules are
conducted through temporary intermediate files
which can be removed by successive subsystems.
​ It is applicable for those applications where data
is batched, and each subsystem reads related
input files and writes output files.
​ Typical application of this architecture includes
business data processing such as banking and
utility billing.

Advantages

​ Provides simpler divisions on subsystems.


​ Each subsystem can be an independent program
working on input data and producing output
data.

Disadvantages

​ Provides high latency and low throughput.


​ Does not provide concurrency and interactive
interface.
​ External control is required for implementation.

What is Pipe and Filter Architecture?


The Pipe and Filter architecture is a design pattern that divides a process
into a series of distinct steps, called filters, linked by channels known as
pipes. Each filter is dedicated to a particular processing function, whether
it involves transforming, validating, or aggregating data. Data flows
through these filters via pipes, which carry the output of one filter to the
input of another.

● This architecture enhances modularity, as each filter operates

independently and concentrates on a singular function. It also

promotes reusability, allowing filters to be utilized across

different systems or applications.

● Moreover, it is both flexible and scalable; filters can be added,

removed, or rearranged with little effect on the overall system,

and multiple instances of filters can function concurrently to

manage larger data sets.

This organized structure makes the Pipe and Filter architecture a favored
choice for tasks like data processing, compilers, and applications that
require orderly and sequential data transformation.

Pipe and Filter Architecture


The architecture is highly modular, with each filter functioning
independently, simplifying system comprehension, maintenance, and
expansion. Filters can be added, removed, or rearranged without
significant impact on the overall system, and parallel pipelines can boost
throughput for larger data volumes.

Pipe and Filter Architecture

● Pumps: These components initiate the process by acting as data

sources, injecting data into the system and starting the flow

through the pipeline.

● Filters: Each filter carries out a specific, standalone task, whether

it be transforming, validating, or processing data before

forwarding it. In the setup, there are two levels of filters; the first

one processes data from the pump and hands it to the second

filter, which continues the processing before passing it on.

● Pipes: Pipes serve as the channels for data movement between

filters, linking each component in sequence and ensuring a


smooth transfer of data. In diagrams, pipes are depicted as

arrows connecting the components.

● Sinks: These are the endpoints where the processed data is

ultimately collected or utilized. After passing through all filters,

the data arrives at the sink, completing its pipeline journey.

● Parallel Processing: The architecture also supports a parallel

structure, where two independent pipelines operate side by side.

Each pipeline begins with its own pump, processes data through

a series of filters, and concludes at separate sinks. This indicates

the capability for simultaneous processing of different data

streams without conflict

Characteristics of Pipe and Filter Architecture


The Pipe and Filter architecture in system design possesses several key
characteristics that make it an effective and popular design pattern for
many applications. Here are its main characteristics:

● Modularity: Each filter is a standalone component that performs

a specific task. This separation allows for easy understanding,

development, and maintenance of individual filters without

affecting the entire system.

● Reusability: Filters can be reused across different systems or

within different parts of the same system. This reduces

duplication of effort and promotes efficient use of resources.

● Composability: Filters can be composed in various sequences to

create complex processing pipelines. This flexibility allows


designers to build customized workflows by simply reordering or

combining filters.

● Scalability: The architecture supports parallel processing by

running multiple instances of filters. This enhances the system's

ability to handle larger data volumes and improves performance.

● Maintainability: Isolating functions into separate filters simplifies

debugging and maintenance. Changes to one filter do not impact

others, making updates and bug fixes easier to manage.

Design Principles for Pipe and Filter Architecture


The Pipe and Filter architecture adheres to several fundamental design
principles that ensure its effectiveness, robustness, and maintainability.
Below is a detailed explanation of these principles:

● Separation of Concerns: Each filter is responsible for a single,

specific task. By isolating tasks, the system can be developed,

tested, and maintained more easily. This principle ensures that

changes in one part of the system have minimal impact on other

parts.

● Modularity: The system is divided into distinct modules called

filters. Each filter is an independent processing unit that can be

developed, tested, and maintained in isolation. This modularity

simplifies debugging and enables easier upgrades or

replacements.

● Pipeline Parallelism: The architecture supports parallel

processing by allowing multiple instances of filters to run


concurrently. This enhances the system’s ability to handle larger

data volumes and improves performance, especially for

data-intensive applications.

● Stateless Filters: Filters are generally stateless, meaning they do

not retain data between processing steps. This simplifies the

design and implementation of filters and enhances scalability.

Stateless filters can be easily replicated for parallel processing.

● Error Handling and Fault Isolation: Each filter should handle

errors internally and ensure that only valid data is passed to the

next stage. Faults in one filter should not propagate through the

pipeline, ensuring the system remains robust and fault-tolerant.

This isolation of faults enhances the system’s reliability.

Benefits of Pipe and Filter Architecture


The Pipe and Filter architecture offers numerous benefits that make it an
attractive choice for designing complex systems. Here are some of the key
benefits:

● Enhanced Data Processing: The architecture is well-suited for

applications requiring sequential data processing, such as data

transformation, validation, and aggregation. Each filter handles a

specific step in the processing pipeline, ensuring an orderly and

efficient data flow.

● Ease of Understanding: The clear and linear flow of data from

one filter to the next makes the system easy to understand and
visualize. This simplicity aids in the design, documentation, and

communication of the system’s structure and functionality.

● Isolation of Faults: Faults in one filter are isolated and do not

propagate through the pipeline, ensuring the system remains

robust and fault-tolerant. Each filter can handle errors internally,

enhancing the overall reliability of the system.

● Improved Testing: Each filter can be tested independently,

making it easier to identify and fix issues. This improves the

quality of the system and reduces the time required for testing

and debugging.

● Standardization: Uniform interfaces for filters and pipes promote

consistency in design and implementation. This standardization

reduces complexity

● Resource Optimization: By breaking down the processing into

smaller, manageable tasks, the system can optimize resource

usage. Filters can be allocated resources based on their specific

needs, improving overall system efficiency.

Challenges of Pipe and Filter Architecture


While the Pipe and Filter architecture offers numerous benefits, it also
comes with several challenges that need to be addressed for effective
implementation. Here are some of the key challenges:

● Performance Overhead: The data transfer between filters

through pipes can introduce performance overhead, especially if

filters are numerous or if the data requires frequent


transformations. This can slow down the overall processing

speed.

● Latency: The sequential nature of the processing pipeline can

introduce latency, particularly in real-time or low-latency

applications. Each filter adds to the overall processing time,

which may not be suitable for time-sensitive tasks.

● Complex Error Handling: While fault isolation is a benefit,

managing errors across multiple filters can become complex.

Ensuring that each filter properly handles and communicates

errors can require additional effort and coordination.

● State Management: Stateless filters are easier to implement but

may not be suitable for all applications. When state management

is necessary, it can complicate the design and implementation of

filters, requiring careful handling to maintain consistency and

correctness.

● Resource Utilization: Efficiently managing resources, such as

memory and CPU, can be challenging. Filters may have different

resource requirements, and balancing these across the system to

avoid bottlenecks and ensure efficient utilization can be complex.

Implementation Strategies
Implementing the Pipe and Filter architecture requires a strategic
approach to ensure the system is efficient, maintainable, and scalable.
Here are detailed strategies for implementing this architecture:

● Define Clear Interfaces:


○ Uniform Input/Output: Establish consistent input

and output formats for each filter to ensure

smooth data flow between filters.

○ Standardized Protocols: Use standardized

communication protocols (e.g., HTTP, gRPC) for

inter-process communication.

● Design Modular Filters:

○ Single Responsibility Principle: Each filter should

perform one specific task, making the system

easier to manage and debug.

○ Encapsulation: Keep the internal logic of each

filter hidden, exposing only necessary interfaces.

● Stateless Filters:

○ Statelessness: Design filters to be stateless

whenever possible to simplify scaling and parallel

processing.

○ State Management: If state is necessary, manage

it externally or ensure it's isolated and does not

affect other filters.

● Robust Error Handling:

○ Error Logging: Ensure that each filter logs errors

in a consistent manner.
○ Graceful Degradation: Design the pipeline to

handle errors gracefully, such as skipping

problematic data or using fallback mechanisms.

● Testing and Validation:

○ Unit Testing: Thoroughly test each filter

independently to ensure it performs its intended

function correctly.

○ Integration Testing: Validate the entire pipeline to

ensure filters work together seamlessly and data

flows correctly.

● Security Considerations:

○ Data Encryption: Ensure data is encrypted in

transit and at rest to protect sensitive information.

○ Access Controls: Implement strict access controls

to prevent unauthorized access to filters and data.

● Versioning and Deployment:

○ Version Control: Use version control systems to

manage changes to filters and pipeline

configurations.

○ Continuous Deployment: Implement continuous

deployment practices to ensure seamless updates

and rollbacks with minimal disruption.

Common Use Cases and Applications


The Pipe and Filter architecture is a versatile design pattern that can be
applied in various domains and applications. Here are some common use
cases and applications for this architecture:

● Data Processing Pipelines

○ Text Processing: Unix pipelines (e.g., grep, awk,

sed) allow chaining commands to process and

transform text data efficiently.

○ Compilers: Use a series of filters for lexical

analysis, syntax parsing, semantic analysis,

optimization, and code generation.

● Stream Processing

○ Real-Time Analytics: Systems like Apache Flink,

Apache Storm, and Apache Kafka Streams

process continuous data streams in real time.

○ Media Processing: Frameworks like GStreamer

process audio and video streams, performing

operations like decoding, filtering, and encoding.

● ETL (Extract, Transform, Load) Processes

○ Data Integration: Tools like Apache NiFi and

Talend perform data extraction, transformation,

and loading between different data sources and

destinations.
○ Data Cleansing: Transform and clean data

through multiple stages before loading it into a

database or data warehouse.

● Microservices and Service-Oriented Architectures (SOA)

○ Workflow Automation: Microservices act as

filters that process and transform data as it passes

through a series of services.

○ Business Process Management (BPM):

Implement workflows as a sequence of

processing steps connected by message queues

or APIs.

Real-world Examples
The Pipe and Filter architecture is employed in a variety of real-world
systems across different domains. Here are some notable examples:

● Unix/Linux Command Line:

○ Shell Pipelines: Unix and Linux shells (e.g., Bash)

allow users to chain commands together using

pipes. For example, cat file.txt | grep "pattern" |

sort | uniq processes a file through a series of

commands to filter, sort, and remove duplicates.

● Compilers:

○ GCC (GNU Compiler Collection): GCC processes

source code through several stages including


preprocessing, parsing, optimization, and code

generation. Each stage is a filter that transforms

the code from one form to another.

● Data Processing Frameworks:

○ Apache Flink and Apache Storm: These

frameworks process streams of data in real time.

Each component in the processing topology (map,

filter, reduce) acts as a filter in the pipeline.

○ Apache NiFi: A data integration tool that

automates the flow of data between systems,

using processors (filters) to transform, route, and

manage the data flow.

● Media Processing:

○ GStreamer: A multimedia framework that

processes audio and video streams through a

pipeline of elements (filters) for tasks such as

decoding, encoding, and filtering.

● Web Development Frameworks:

○ Express.js (Node.js): Middleware in Express.js

acts as filters that process HTTP requests and

responses. For example, logging, authentication,

and request parsing are handled by separate

middleware functions.
○ ASP.NET Core Middleware: Similar to Express.js,

ASP.NET Core uses middleware components to

handle HTTP requests in a pipeline.

● ETL (Extract, Transform, Load) Tools:

○ Talend: An ETL tool that uses a series of

components to extract data from various sources,

transform it according to business rules, and load

it into target systems.

○ Apache Hop: An open-source data integration

platform that processes data through a series of

transform steps, enabling complex ETL

workflows.

Popular Libraries and Frameworks Supporting Pipe


and Filter
Several popular libraries and frameworks support the Pipe and Filter
architecture, facilitating the development of scalable and modular
applications. Here are some notable ones:

● Apache NiFi:

○ Apache NiFi is an open-source data integration

tool that enables the automation of data flow

between systems.

○ It uses a graphical interface to design data

pipelines composed of processors (filters)

connected by data flows (pipes).


○ Supports data ingestion, transformation, routing,

and delivery with built-in processors for handling

various data formats and protocols.

● Apache Flink:

○ Apache Flink is an open-source stream processing

framework that supports distributed,

high-throughput, and low-latency data streaming

applications.

○ It organizes processing logic into data streams

and operations, resembling a Pipe and Filter

architecture where operations act as filters.

○ Provides support for event time processing,

stateful computations, windowing operations, and

integration with various data sources and sinks.

● Apache Storm:

○ Apache Storm is a real-time stream processing

system that processes large volumes of data with

low latency.

○ It uses a topology-based architecture where

spouts and bolts represent data sources and

processing units (filters), respectively.

○ Provides fault tolerance, scalability, and support

for complex event processing with guaranteed

message processing semantics.


● ASP.NET Core Middleware:

○ ASP.NET Core is a cross-platform web framework

for building modern, cloud-based applications.

○ It uses middleware components that can be

configured in a pipeline to handle HTTP requests

and responses.

○ Middleware components act as filters to perform

tasks such as authentication, logging, routing, and

exception handling in the request processing

pipeline.

● Express.js Middleware:

○ Express.js is a minimalist web framework for

Node.js that supports middleware.

○ Middleware functions act as filters in the

request-response cycle, processing incoming

requests and outgoing responses.

○ Enables developers to modularize and customize

request handling logic by composing middleware

functions in a pipeline.

1] Data centered architectures:


● A data store will reside at the center of this architecture and is

accessed frequently by the other components that update, add,

delete, or modify the data present within the store.

● The figure illustrates a typical data-centered style. The client

software accesses a central repository. Variations of this

approach are used to transform the repository into a blackboard

when data related to the client or data of interest for the client

change the notifications to client software.

● This data-centered architecture will promote integrability. This

means that the existing components can be changed and new

client components can be added to the architecture without the

permission or concern of other clients.

● Data can be passed among clients using the blackboard

mechanism.

Advantages of Data centered architecture:

● Repository of data is independent of clients

● Client work independent of each other

● It may be simple to add additional clients.

● Modification can be very easy


Data centered architecture

2] Data flow architectures:

● This kind of architecture is used when input data is transformed

into output data through a series of computational manipulative

components.

● The figure represents pipe-and-filter architecture since it uses

both pipe and filter and it has a set of components called filters

connected by lines.

● Pipes are used to transmitting data from one component to the

next.

● Each filter will work independently and is designed to take data

input of a certain form and produces data output to the next filter

of a specified form. The filters don’t require any knowledge of the

working of neighboring filters.

● If the data flow degenerates into a single line of transforms, then

it is termed as batch sequential. This structure accepts the batch

of data and then applies a series of sequential components to

transform it.
Advantages of Data Flow architecture:

● It encourages upkeep, repurposing, and modification.

● With this design, concurrent execution is supported.

Disadvantage of Data Flow architecture:

● It frequently degenerates to batch sequential system

● Data flow architecture does not allow applications that require

greater user engagement.

● It is not easy to coordinate two different but related streams

Data Flow architecture

3] Call and Return architectures

It is used to create a program that is easy to scale and modify. Many

sub-styles exist within this category. Two of them are explained below.

● Remote procedure call architecture: This components is used to

present in a main program or sub program architecture

distributed among multiple computers on a network.


● Main program or Subprogram architectures: The main program

structure decomposes into number of subprograms or function

into a control hierarchy. Main program contains number of

subprograms that can invoke other components.

4] Object Oriented architecture

The components of a system encapsulate data and the operations that

must be applied to manipulate the data. The coordination and

communication between the components are established via the message

passing.

Characteristics of Object Oriented architecture:

● Object protect the system’s integrity.

● An object is unaware of the depiction of other items.

Advantage of Object Oriented architecture:


● It enables the designer to separate a challenge into a collection of

autonomous objects.

● Other objects are aware of the implementation details of the

object, allowing changes to be made without having an impact on

other objects.

5] Layered architecture

● A number of different layers are defined with each layer

performing a well-defined set of operations. Each layer will do

some operations that becomes closer to machine instruction set

progressively.

● At the outer layer, components will receive the user interface

operations and at the inner layers, components will perform the

operating system interfacing(communication and coordination

with OS)

● Intermediate layers to utility services and application software

functions.

● One common example of this architectural style is OSI-ISO (Open

Systems Interconnection-International Organisation for

Standardisation) communication system.


Layered architecture

1. Agent-Based Architecture

Agent-Based Architecture is designed around autonomous agents that

interact to achieve specific goals. Each agent perceives its environment,

makes decisions, and performs actions. They can work collaboratively or

independently.

Key Features:

● Autonomy: Agents operate independently with their logic.

● Coordination: Agents communicate and cooperate for collective

tasks.

● Adaptability: Agents respond dynamically to changes in the

environment.

● Applications: AI systems, robotics, and distributed systems.

Diagram: Agent-Based Architecture


2. Microservices Architecture

Microservices Architecture is a modern approach where an application is

divided into small, independently deployable services. Each service

handles a specific business functionality and interacts through lightweight

protocols such as HTTP or messaging queues.

Key Features:

● Scalability: Individual services can scale independently.

● Fault Isolation: Failure in one service doesn’t affect the entire

system.

● Technology Diversity: Each service can use its preferred technology

stack.

Applications: E-commerce platforms, cloud-native applications.

Diagram: Microservices Architecture

+-----------+ +-----------+ +-----------+


| Service 1 | --> | Service 2 | --> | Service 3 |

+-----------+ +-----------+ +-----------+

↕ ↕ ↕

API Gateway Messaging Queue

External Client

3. Reactive Architecture

Reactive Architecture builds systems that are responsive, resilient,

elastic, and message-driven. It handles large-scale systems dynamically,

using asynchronous, non-blocking operations.

Key Features:

● Responsiveness: Ensures low latency.

● Resilience: Designed to handle failures gracefully.

● Elasticity: Scales up or down based on demand.

● Message-Driven: Components communicate via asynchronous

messages.

Applications: Real-time systems, IoT, gaming systems.


Diagram: Reactive Architecture

4. Representational State Transfer (REST) Architecture

REST is an architectural style for designing networked applications. It

uses standard HTTP methods to operate on resources identified by URIs.

Key Features:

● Statelessness: Each client request contains all the information

needed.

● Scalability: Statelessness and caching enable scalability.

● Resource-Based: Resources are identified and manipulated using

URIs.

● Standard Protocols: HTTP methods (GET, POST, PUT, DELETE) are

used.

Applications: Web APIs, mobile backend services.

Diagram: REST Architecture

Client 1 ----> HTTP GET ----> Resource 1 (Server)


Client 2 ----> HTTP POST ----> Resource 2 (Server)

Client 3 ----> HTTP PUT ----> Resource 3 (Server)

You might also like