You are on page 1of 6

Chapter 6: Architectural design

Your name:
Bùi Anh Trung
Hồ Nguyễn Minh Khoa
Hồ Nguyễn Anh Tuấn
Tăng Viết Phúc

Answer all questions. 1 mark per question

1. What are the advantage of explicitly designing and documenting a


software architecture?
Explicitly designing and documenting a software architecture fosters clarity,
communication, alignment with requirements, risk mitigation, support for
maintenance and evolution, informed decision-making, and opportunities for reuse
and scalability, ultimately contributing to the overall success of the software project.

2. What are the two ways in which an architectural model of a system may
be used?
-Design and Development: Architectural models serve as blueprints for designing
and developing the system. They provide a high-level overview of the system's
structure, components, interactions, and behavior. Designers and developers use these
models to make informed decisions about system design, including the selection of
appropriate technologies, frameworks, and design patterns. Architectural models
guide the implementation process by defining the overall system architecture,
component interfaces, data flows, and integration points. They help ensure that the
system meets its functional and non-functional requirements while promoting
modularity, scalability, and maintainability.
-Analysis and Evaluation: Architectural models facilitate analysis and evaluation of
the system's properties, such as performance, scalability, reliability, and security. By
simulating system behavior and analyzing architectural dependencies, stakeholders
can identify potential risks, bottlenecks, and areas for improvement. Architectural
models support various analysis techniques, including architectural reviews,
simulations, performance modeling, and risk assessment. These analyses help
validate design decisions, assess the impact of changes, and identify optimization
opportunities. Additionally, architectural models enable stakeholders to communicate
and justify design choices to project sponsors, end-users, and other stakeholders,
fostering confidence and buy-in for the proposed system architecture.

3. List 4 fundamental questions that should be addressed in architectural


design?
-What are the system requirements?
-What is the overall system architecture?
-How will components communicate and interact?
-How will the system be implemented and deployed?

4. What are the fundamental architectural views proposed in Krutchenʼs


4+ 1 model?

-Logical View: The logical view focuses on the functionality and behavior of the
system from the perspective of its end-users. It describes the system's functionality
in terms of modules, components, and their interactions. This view provides a high-
level abstraction of the system's logical structure, emphasizing what the system
does rather than how it is implemented.
-Development View: The development view emphasizes the organization of the
system's source code and development environment. It describes the system's
software architecture from the perspective of developers, including software
modules, dependencies, and development tools. This view helps developers
understand the system's internal structure, code organization, and development
processes.
-Process View: The process view focuses on the system's dynamic behavior and
runtime characteristics. It describes how the system's components interact at
runtime to fulfill user requests and perform system tasks. This view includes
information about concurrency, synchronization, communication protocols, and
performance considerations. It helps stakeholders understand how the system
operates under various runtime conditions.
-Physical View: The physical view describes the system's physical deployment
architecture, including hardware components, networks, and infrastructure
configurations. It addresses concerns related to scalability, availability,
performance, and resource allocation. This view helps stakeholders understand how
the system is deployed and distributed across different hardware platforms and
environments.
-Scenarios (Use Cases) View: The scenarios view, also known as the use cases
view, illustrates how the system behaves in response to different user interactions or
scenarios. It describes specific user stories or use cases and how they drive the
system's behavior. This view helps stakeholders understand the system's functional
requirements and how users interact with it in various scenarios.

5. What is an architectural pattern?

An architectural pattern is a reusable solution to a recurring architectural problem


encountered in the design and implementation of software systems. It provides a
general structure or blueprint for organizing the components, relationships, and
interactions of a software system to address common design challenges effectively.
6. What is the fundamental characteristic of a repository architecture?

The fundamental characteristic of a repository architecture is the use of a


centralized storage repository to manage and access the system's data. In this
architecture, data is organized and stored logically and systematically within a
central database or centralized storage system. Other applications or services can
access this data through interfaces provided by the repository, ensuring data
consistency and security. The repository architecture optimizes data management,
enhances reusability, and minimizes data fragmentation and duplication within the
system.

7. What is the most important advantage of a client-server architecture?

The most important advantage of a client-server architecture is its ability to


facilitate distributed computing and scalability. In a client-server architecture, the
system is divided into two distinct components: the client, which initiates requests
for services or resources, and the server, which fulfills those requests.

8. Briefly describe pipe and filter architecture?

The pipe and filter architecture is a structural architectural style where data
processing tasks are divided into independent components called filters, which are
connected via pipes to form processing pipelines. Each filter performs a specific
transformation or operation on input data and produces output that is passed to
subsequent filters through the pipes.
9. What are transaction-processing applications?

Transaction-processing applications are designed to execute and manage business


or financial transactions. In these systems, a transaction refers to performing a
series of actions or data changes that have business significance, such as adding,
updating, or deleting data from a database. Transaction-processing applications are
commonly used in enterprise environments to perform tasks such as order
processing, payment processing, inventory management, customer management,
and other financial transactions. The key characteristics of these applications are
ensuring consistency, reliability, and performance in handling transactions while
also ensuring the security and integrity of the data.

10. What are the principal functions of the 4 layers in a generic information
system architecture?

-Presentation Layer: The presentation layer is the topmost layer of the architecture
and is responsible for presenting information to users and collecting user input. Its
primary functions include: User interface design and implementation. Displaying
data to users in a user-friendly format, such as web pages, graphical user interfaces
(GUIs), or mobile applications. Handling user interactions and input, such as mouse
clicks, keyboard input, or touchscreen gestures. Providing user authentication and
authorization mechanisms.
-Application Layer: The application layer, also known as the logic layer, contains
the core business logic and application functionality of the system. Its principal
functions include: Implementing business rules and logic to process and manipulate
data. Managing application workflows and orchestration of business processes.
Handling application-specific functionality, such as data validation, calculations,
and business rules enforcement. Integrating with external systems and services,
such as databases, APIs, or third-party services. Implementing security measures to
protect sensitive data and ensure compliance with regulations.
-Data Layer: The data layer, also known as the persistence layer, is responsible for
managing and storing data used by the system. Its principal functions include:
Storing and retrieving data from a persistent storage mechanism, such as databases,
file systems, or cloud storage services. Ensuring data integrity, consistency, and
reliability through mechanisms such as transactions, concurrency control, and data
validation. Implementing data access logic and query processing to retrieve and
manipulate data efficiently. Managing data caching and optimization strategies to
improve performance. Implementing data security measures to protect data at rest
and in transit.
-Infrastructure Layer: The infrastructure layer, also known as the foundation layer,
provides the underlying hardware and software infrastructure required to support
the operation of the information system. Its principal functions include:
Provisioning and managing computing resources, such as servers, storage,
networking equipment, and cloud infrastructure. Installing and configuring
operating systems, middleware, runtime environments, and other system software
components. Monitoring system performance, availability, and resource utilization.
Managing system scalability, fault tolerance, and disaster recovery mechanisms.
Implementing security measures at the infrastructure level, such as firewalls,
intrusion detection systems, and encryption.

You might also like