Software architectural patterns

Sharan Karthikeyan
4 min readMar 27, 2023

--

Software architectural patterns

Software architectural patterns are general, reusable solutions to common software design problems. They are high-level, abstract concepts that provide a structure for designing and building software systems.

Software architectural patterns help to establish the fundamental organization of software systems, including the relationships between different components and the communication between them. They provide a way to standardize the design process, making it easier to understand, communicate, and maintain complex software systems.

There are many different software architectural patterns, each with its strengths and weaknesses. Choosing the right pattern for a particular project depends on factors such as the size and complexity of the system, the scalability and maintainability requirements, and the skills and experience of the development team.

Some of the most commonly used software architectural patterns are:

  1. Monolithic architecture: In this pattern, the entire application is developed as a single, self-contained unit. This approach is relatively simple but can become difficult to manage and scale as the application grows.
  2. Client-server architecture (2-tier architecture): In this pattern, the application is split into two parts: the client, which runs on the user’s device and handles the user interface, and the server, which handles the business logic and data storage.
  3. Layered architecture: In this pattern, the application is divided into a set of layers, with each layer responsible for a specific set of tasks. Typically, this includes the presentation layer, business logic layer, and data access layer.
  4. Model-View-Controller (MVC) Architecture: The MVC architecture is a pattern that separates the application into three components: the model (which represents the data and business logic), the view (which presents the data to the user), and the controller (which handles user input and updates the model and view accordingly).
  5. Pipe and Filter Architecture: In a pipe and filter architecture, the system is divided into multiple components that linearly process data. The data flows through the components like water flows through a pipe and each component filters or modifies the data in some way.
  6. Repository Pattern: The repository pattern is a pattern that provides a way to access data from a database or other data source. It separates the data access logic from the business logic, making it easier to manage and maintain.
  7. Blackboard Pattern: The blackboard pattern is a pattern in which multiple components or agents work together to solve a problem. The blackboard serves as a shared repository where the components can read and write data, allowing them to work together to solve a problem.
  8. Peer-to-Peer Architecture: In a peer-to-peer architecture, the system is distributed across multiple nodes or peers. Each peer has equal status and can act as both a client and a server, making it useful for systems that require decentralized communication and processing.
  9. Master-Slave Architecture: In a master-slave architecture, the system is divided into two parts: a master node and one or more slave nodes. The master node controls the processing and communicates with the slave nodes, which perform the actual work.
  10. Broker Architecture: In a broker architecture, the system is divided into multiple components that communicate through a central broker or mediator. The broker routes messages between the components, making it useful for systems that require complex routing and message processing.
  11. Publish-Subscribe Architecture: In a publish-subscribe architecture, the system is divided into publishers (which generate events or messages) and subscribers (which consume the events or messages). The system uses a central message broker to route the messages between the publishers and subscribers.
  12. Space-Based Architecture: In a space-based architecture, the system is based on a shared memory space or data grid. Components can read and write data to the shared space, allowing them to work together to solve complex problems.
  13. Service-oriented architecture (SOA): In this pattern, the application is broken down into a set of loosely coupled services that can be developed and deployed independently. Each service exposes a well-defined interface that can be used by other services.
  14. Microservices architecture: This architecture pattern involves breaking down a large application into smaller, independent services that can communicate with each other via APIs. Each service is focused on performing a specific business function and can be developed, deployed, and scaled independently of other services.
  15. Domain-driven design (DDD): This pattern involves designing software around the core business domain, focusing on the entities, relationships, and workflows that are central to the business. DDD encourages the use of a common language and models to ensure that everyone involved in the project has a shared understanding of the business domain.
  16. Event-driven architecture: This pattern involves the use of events to trigger actions and communicate between different parts of the application. Events are used to notify other services or components when something happens, and they can be used to implement complex workflows and business logic.

These are just some of the common software architectural patterns used in modern software development. Different patterns may be more appropriate depending on the specific requirements and constraints of a given project.

--

--

Sharan Karthikeyan
Sharan Karthikeyan

Written by Sharan Karthikeyan

CS student at IIT, Chicago | prev. @Zoho

Responses (1)