Transcript for:
Overview of Software Architecture Patterns

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