10 Common Software Architectural Patterns in A Nutshell PDF
10 Common Software Architectural Patterns in A Nutshell PDF
10 Common Software Architectural Patterns in A Nutshell PDF
nutshell
Vijini Mallawaarachchi Follow
Sep 4, 2017 · 5 min read
Ever wondered how large enterprise scale systems are designed? Before major software
development starts, we have to choose a suitable architecture that will provide us with
the desired functionality and quality attributes. Hence, we should understand different
architectures, before applying them to our design.
2. Client-server pattern
3. Master-slave pattern
4. Pipe-filter pattern
5. Broker pattern
6. Peer-to-peer pattern
7. Event-bus pattern
8. Model-view-controller pattern
9. Blackboard pattern
1. Layered pattern
This pattern can be used to structure programs that can be decomposed into groups of
subtasks, each of which is at a particular level of abstraction. Each layer provides
services to the next higher layer.
The most commonly found 4 layers of a general information system are as follows.
Usage
General desktop applications.
2. Client-server pattern
This pattern consists of two parties; a server and multiple clients. The server
component will provide services to multiple client components. Clients request services
from the server and the server provides relevant services to those clients. Furthermore,
the server continues to listen to client requests.
Usage
Online applications such as email, document sharing and banking.
Client-server pattern
3. Master-slave pattern
This pattern consists of two parties; master and slaves. The master component
distributes the work among identical slave components, and computes a final result from
the results which the slaves return.
Usage
In database replication, the master database is regarded as the authoritative source,
and the slave databases are synchronized to it.
Master-slave pattern
4. Pipe-filter pattern
This pattern can be used to structure systems which produce and process a stream of
data. Each processing step is enclosed within a filter component. Data to be processed is
passed through pipes. These pipes can be used for buffering or for synchronization
purposes.
Usage
Compilers. The consecutive filters perform lexical analysis, parsing, semantic
analysis, and code generation.
Workflows in bioinformatics.
5. Broker pattern
This pattern is used to structure distributed systems with decoupled components. These
components can interact with each other by remote service invocations. A broker
component is responsible for the coordination of communication among components.
Usage
Message broker software such as Apache ActiveMQ, Apache Kafka, RabbitMQ and
JBoss Messaging.
Broker pattern
6. Peer-to-peer pattern
In this pattern, individual components are known as peers. Peers may function both as a
client, requesting services from other peers, and as a server, providing services to other
peers. A peer may act as a client or as a server or as both, and it can change its role
dynamically with time.
Usage
File-sharing networks such as Gnutella and G2)
7. Event-bus pattern
This pattern primarily deals with events and has 4 major components; event source,
event listener, channel and event bus. Sources publish messages to particular channels
on an event bus. Listeners subscribe to particular channels. Listeners are notified of
messages that are published to a channel to which they have subscribed before.
Usage
Android development
Notification services
Event-bus pattern
8. Model-view-controller pattern
This pattern, also known as MVC pattern, divides an interactive application in to 3 parts
as,
2. view — displays the information to the user (more than one view may be defined)
Usage
Architecture for World Wide Web applications in major programming languages.
Model-view-controller pattern
9. Blackboard pattern
This pattern is useful for problems for which no deterministic solution strategies are
known. The blackboard pattern consists of 3 main components.
All the components have access to the blackboard. Components may produce new data
objects that are added to the blackboard. Components look for particular kinds of data
on the blackboard, and may find these by pattern matching with the existing knowledge
source.
Usage
Speech recognition
Blackboard pattern
Usage
Database query languages such as SQL.
Hope you found this article useful. I would love to hear your thoughts. 😇
Thanks for reading. 😊
Cheers! 😃
Software Architecture Programming Computer Science Software Engineering