Common Software Architectural Patterns
Before major software architecture 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.
What is an Architectural Pattern?
According to Wikipedia,
An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design patterns but have a broader scope.
In this article, we will briefly explain the following common architectural patterns.
- Model-View-Controller (MVC): This is a design pattern used to separate the application logic from the user interface. The model represents the data and business logic, the view displays the data, and the controller handles user interactions.
- Model-View-ViewModel (MVVM): This is similar to MVC, but it is specifically designed for use with UI frameworks like WPF and Silverlight. The ViewModel acts as a bridge between the view and the model.
- Microservices: This is an architectural style in which a large application is broken down into smaller, independent services that can be deployed, developed, and scaled independently.
- Layered architecture: This is a design pattern in which the application is divided into layers, each with a specific responsibility. The layers are stacked on top of each other, and each layer communicates only with the layer directly below it.
- Service-Oriented Architecture (SOA): This is an architecture in which the application is divided into loosely coupled services that communicate with each other through a well-defined interface.
- Event-Driven Architecture (EDA): This is an architecture in which the application is designed to respond to events and respond to changes in the application state.
- Command and Query Responsibility Segregation (CQRS): This is a design pattern in which the application is separated into two parts: one for handling commands (updates) and another for handling queries (reads).
- REST: API design pattern based on HTTP requests.
- Layered: The application is divided into hierarchical layers with well-defined responsibilities.
- Pipe and Filter: Processing data through a series of filters.
These are just a few of the many architectural patterns that are commonly used in software development. The choice of the pattern will depend on the requirements of the application and the goals of the development team.