DEV Community

Cover image for Types Of Software Architecture
Oussama Bel
Oussama Bel

Posted on

Types Of Software Architecture

Image description

MVC Model View Controller:

Untitled

The Model-View-Controller (MVC) design pattern is an architectural pattern used in software engineering to separate concerns within an application, promoting organized and modular development. This pattern divides an application into three interconnected components:

  • Model: Represents the application's data and business logic.

  • View: Displays the data to the user.

  • Controller: Handles user input and interactions, updating the model and view accordingly.

Model-View-Presenter:

Untitled

The Model-View-Presenter (MVP) design pattern is another architectural pattern used in software engineering, similar to MVC but with some key differences. It also promotes separation of concerns, making the codebase more manageable and scalable. The main components in MVP are:

  • Model: Represents the application's data and business logic.

  • View: Displays the data to the user and handles user interaction.

  • Presenter: Acts as an intermediary between the model and the view, handling all the logic and communication between them.

Model-View-View-Model :

Untitled

The Model-View-View-Model (MVVM) design pattern is a structural design pattern specifically designed for UI development, primarily used in applications with a rich user interface such as WPF (Windows Presentation Foundation), Silverlight, and increasingly in web and mobile app development frameworks like Angular, React, and Xamarin. MVVM separates the development of the graphical user interface from the development of the business logic or back-end logic (the data model).

  • Model: Represents the application's data and business logic.

  • View: Represents the UI components and is responsible for rendering the data to the user.

  • View-Model: Acts as an intermediary between the View and the Model, handling the presentation logic and exposing data to the View.

Model-View-ViewModel-Coordinator :

Untitled

The Model-View-ViewModel-Coordinator (MVVM-C) design pattern is an extension of the MVVM pattern, often used in iOS development to further separate concerns and improve the maintainability of code. The addition of the Coordinator component helps manage navigation and the flow of screens in the application, making the MVVM-C pattern particularly useful for complex applications with multiple view transitions.

  • Model: Represents the application's data and business logic.

  • View: Represents the UI components and is responsible for rendering the data to the user.

  • ViewModel: Acts as an intermediary between the View and the Model, handling the presentation logic and exposing data to the View.

  • Coordinator: Manages the navigation flow and coordination between different parts of the application.

View-Interactor-Presenter-Entity-Router:

Untitled

VIPER (View, Interactor, Presenter, Entity, Router) is a design pattern commonly used in iOS development to create a modular and testable architecture. It aims to separate concerns more explicitly than other patterns like MVC, MVP, or MVVM, promoting single responsibility for each component and facilitating better maintainability and scalability of the code.

  • View: Responsible for the user interface and user interaction.

  • Interactor: Contains the business logic and handles the data.

  • Presenter: Acts as a mediator between the View and the Interactor, handling the presentation logic.

  • Entity: Represents the data models used by the Interactor.

  • Router: Manages navigation and routing between different modules or screens.

  • Entity: Represents the data models used by the Interactor.

  • Router: Manages navigation and routing between different modules or screens.

Top comments (0)