Lecture 1
Lecture 1
Architectural Design
For the program to represent software design, architectural design
is required. "The process of defining a collection of hardware and
software components and their interfaces to establish the
framework for the development of a computer system. The
following tasks are carried out by an architectural design. One of
these numerous architectural styles can be seen in software
designed for computer-based
Every style shall outline asystems.
system category made up of the
following:
A collection of parts (such as computing modules and databases)
that together will carry out a task that the system needs.
The connector set will facilitate the parts' cooperation, coordination,
and communication.
Requirements that specify how parts can be combined to create a
system.
Semantic models aid in the designer's comprehension of the
system's general characteristics.
Software requirements should be converted into an
architecture that specifies the components and top-level
organization of the program. This is achieved through
architectural design, also known as system design, which serves
as a "blueprint" for software development. Architectural design
is "the process of defining a collection of hardware and software
components and their interfaces to establish the framework for
developing a computer system," The software requirements
document is examined to create this framework, and a
methodology for supplying implementation details is designed.
The system's constituent parts and their inputs, outputs,
Components of Architectural Design
High-level organizational structures and connections between
system components are established during architectural design's
crucial software engineering phase. It is the framework for the
entire software project and greatly impacts the system's
effectiveness, maintainability, and quality. The following are some
essential components of software engineering's architectural
design:
Modularity:
Architectural design encourages modularity by dividing the software
system into smaller, self-contained modules or components. Because
each module has a clear purpose and interface, modularity makes the
system simpler to comprehend, develop, test, and maintain.
Scalability:
Scalability should be supported by a well-designed architecture, enabling
the system to handle increased workloads and growth without extensive
Maintainability:
A software system's architectural design aims to make it maintainable
over time. This entails structuring the system to support quick updates,
improvements, and bug fixes. Maintainability is facilitated by clear
documentation and adherence to coding standards.
Flexibility:
The flexibility of architectural design should allow for easy adaptation to
shifting needs. It should enable the addition or modification of features
without impairing the functionality of the current features. Design
patterns and clearly defined interfaces are frequently used to accomplish
this.
Reliability:
A strong architectural plan improves the software system's dependability.
It should reduce the likelihood of data loss, crashes, and system failures.
Redundancy and error-handling procedures can improve reliability.
Performance:
A crucial aspect of architectural design is performance. It entails fine-
tuning the system to meet performance standards, including
throughput, response time, and resource utilization. Design choices
like data storage methods and algorithm selection greatly influence
performance.
Security:
Architectural design must take security seriously. The architecture
should include security measures such as access controls, encryption,
authentication, and authorization to safeguard the system from
potential threats and vulnerabilities.
Distinguishing Concerns:
By enforcing a clear separation of concerns, architectural design
ensures that various system components-such as the user interface,
business logic, and data storage-are arranged and managed
independently. The separation makes maintenance, testing, and
Interoperability:
The system's ability to communicate with other systems or
components should be considered when designing the
architecture. Interoperable software can be integrated with
other platforms or services, facilitating communication and
teamwork.
Usability:
The system's usability and user experience should be
considered when making architectural decisions. User
interfaces and workflows must be designed to ensure users
can interact with the software effectively and efficiently.
Documentation:
Architectural design that works is extensively documented.
Developers and other stakeholders can refer to the
documentation, which explains the design choices,
Price-Performance:
The architectural plan should take the project's resources and
budget into consideration. It entails choosing technologies,
resources, and development initiatives wisely and economically.
Validation and Testing:
The architectural design should include plans for evaluating and
verifying the interactions and parts of the system. This
guarantees that the system meets the requirements and
operates as intended.
Adherence to Standards:
Consistency and interoperability with other systems and tools
are ensured in architectural design by adhering to industry and
organizational standards and best practices.
Advantages of Architectural Design