welcome to whiteboard programming, where we simplify programming with easy-to-understand whiteboard videos and today i'll be sharing with you the most common software architecture patterns that are used by enterprises all
across the globe so let's get started! first, as basics, let me briefly explain what is a software architecture patterns well, it is nothing but a pictorial representation of the it system
that serves as a blueprint for a system. it provides an abstraction to manage the system complexity and establish a communication and coordination mechanism among different components it also helps define a structured solution to meet all the technical and operational requirements, while optimizing the common quality attributes like performance and security. the primary goal of the architecture is to identify requirements that affect the structure of the application a well-laid architecture reduces the business risks associated with building a technical solution and builds a bridge between business and technical requirements with that being said, lets start understanding major software architecture patterns, starting with, 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. here, each layer provides services to the next higher layer. the most commonly found 4 layers of a general information system are as follows presentation layer (which is also known as ui layer) application layer (which is also known as service layer) business logic layer (which is also known as domain layer) data access layer (which is also known as persistence layer) such a setting of software architecture is widely
used in building general desktop applications and e commerce web applications 2. client-server
pattern this pattern consists of two parties; a server and multiple clients. here, 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. this software architecture is generally used in online
applications such as email, document sharing, banking, etc 3. master-slave pattern this pattern
consists of two parties; master and slaves. here, the master component distributes the work
among identical slave components, and computes a final result from the results which the slaves
return. this architecture pattern is employed in database replication methods and situations where
peripherals are connected to a bus in a system 4. event-bus pattern this pattern primarily
deals with events and has 4 major components; event source, event listener, channel and event
bus. here, the sources publish messages to particular channels on an event bus and listeners
subscribe to particular channels. therefore, listeners are notified of messages that are
published to a channel to which they have subscribed to before. this software architecture
pattern is used in android development and widely in building notification services 5. pipe-filter
pattern this pattern can be used to structure systems which produce and process a stream of
data. here, 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. this
architecture pattern is used in building compilers and defining workflows in bioinformatics. 6.
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. here, servers publish their
capabilities (services and characteristics) to a broker and clients request a service from the
broker, and the broker then redirects the client to a suitable service from its registry. this
particular architecture is generally employed in message broker software such as apache kafka, and
jboss messaging. 7. 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. it is used in building file-sharing networks, multimedia
protocols and various blockchain-based products 8. model-view-controller pattern this
pattern, also known as mvc pattern, divides an interactive application in to 3 parts
as, 1. model that contains the core functionality and data 2. view that displays the information
to the user (more than one view may be defined) 3. controller which handles the input from
the user this is done to separate internal representations of information from the ways
information is presented to, and accepted from, the user. it decouples components and
allows efficient code reuse. this software architecture pattern forms as the foundation
of web frameworks such as django and rails. 9. interpreter pattern this pattern is used for
designing a component that interprets programs written in a dedicated language. it mainly
specifies how to evaluate lines of programs, known as sentences or expressions written in a
particular language. the basic idea is to have a class for each symbol of the language. this
software architecture is used in database query languages such as sql. 10. blackboard pattern now,
this pattern is useful for problems for which no deterministic solution strategies are known. the
blackboard pattern consists of 3 main components. blackboard in which a structured global memory
containing objects from the solution space knowledge source that is specialized
modules with their own representation control component that selects, configures and
executes modules 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.
this architectural pattern is widely used in applications that use speech recognition,
vehicle identification and tracking, etc with that, i hope this video was helpful to
you and served value. if you love my content, feel free to smash that like button and if
you haven't already subscribed to my channel, please do as it keeps me motivated and helps
me create more content like this for you