You are on page 1of 4

SOFTWARE ENGINEERING

SOFTWARE ENGINEERING

Assignment # 04

Muhammad Zain ul Abdin


01 135221 040
BS IT ( 4 A )
Architectural Design:
Architectural designs play a crucial role in software engineering as they provide a framework for
organizing and structuring the different components of a software system. These designs help
address various design challenges such as scalability, maintainability, and modifiability. In this
reflective answer, I will discuss the applicability of different architectural patterns in real-world
scenarios and analyze their advantages and disadvantages.

Layered Architecture:
One real-world use case for the layered architecture model is web applications. In this context,
layered architecture helps meet the challenge of separating concerns and achieving modularity.
The layers in this model are the presentation, application, business logic, and data entry layers.
The presentation layer handles user interaction and displays information to the user. The
application layer acts as an intermediary between the presentation layer and the business logic
layer, processing user requests and configuring data flows the business logic layer implements
the application's core functionality, business rules, and logic. Finally, the data access layer
interacts with the database or external systems to retrieve or update the data.
Advantages:
➢ Improved modularity: The separation of concerns into different layers allows for easier
maintenance and extensibility of the application.
➢ Scalability: Each layer can be scaled independently, allowing for better performance and
resource utilization.
➢ Reusability: The layers can be reused in different applications or scenarios, reducing
development time and effort.

Disadvantages:
➢ Increased complexity: The layered architecture introduces additional complexity due to
the separation of concerns and the need for communication between layers.
➢ Performance overhead: The communication between layers can introduce some
performance overhead, especially if the layers are distributed across different machines.

1|Page
Client-Server Architecture:
The real-world use case for client-server architecture is a mobile banking application. In this
context, the client-server architecture helps meet the challenge of providing banking services to
devices while maintaining security and reliability
The client-facing part of the application works on mobile devices, making it easy to use for the
customer to interact with the banking system. The server-side handles business logic, data
processing, and storage. Communication between client and server is often facilitated through
APIs or web services.
Advantages:
➢ Scalability: The server-side can be scaled horizontally to handle increased load and
accommodate a growing number of users.
➢ Security: The server-side can enforce security measures such as authentication,
encryption, and access control.
➢ Reliability: The separation of the client-side and server-side allows for easier
maintenance, upgrades, and fault tolerance.

Disadvantages:
➢ Network dependency: The client-server architecture relies on network connectivity, and
any network issues can affect the usability of the application.
➢ Cost: Setting up and maintaining the server-side infrastructure can be costly, especially
for small-scale applications.

Pipe and Filter Pattern


The real-world use case for the pipe and filter model is the Image Processing Pipeline. Pipelines
of filters can be used to process images and enhance them in visualization.
The image is also passed through a series of filters, with each filter performing a specific
function such as, noise reduction, color adjustment, and size unaffected by other filters.
Modular processing, reusability, and separation of image manipulation concerns.
Advantages:
➢ Encourages modularity and reusability
2|Page
➢ Allows easy addition or removal of filters
➢ Simplifies maintenance by isolating different image processing tasks.

Disadvantages:
➢ Potential performance overhead due to processing multiple filters sequentially
➢ Increased complexity in managing inter-filter communication and data transformations
➢ Difficulty in handling complex dependencies between filters.

Repository Pattern
The real-world use case for the store model is a Social Media Platform. The store model of a
social media platform can be used to manage interactions with data types, such as user profiles,
posts, comments and media files
The example describes the storage of each data entity, and abstracts the underlying data access
logic. For example, a user repository can handle operations related to user data, such as
retrieving, creating, updating, and deleting.
Challenges addressed include separating concerns, isolating data usage, and centralizing data
governance logic.
Advantages:
➢ Encapsulates data access logic
➢ Promotes code maintainability
➢ Enables easier unit testing by allowing mock repositories
➢ Facilitates a clear separation between business logic and data access code.

Disadvantages:
➢ Potential complexity in managing repositories for complex domain models
➢ Possible performance overhead due to abstraction layers
➢ The need for careful design to prevent overly generic repositories that violate the Single
Responsibility Principle.

3|Page

You might also like