You are on page 1of 5

ASSIGNMENT 1

MAY 2023 SEMESTER

SUBJECT CODE : CSA400

SUBJECT TITLE : SOFTWARE ARCHITECTURE & DESIGN

LEVEL : BACHELOR

STUDENT’S NAME : ROJIP RAI

MATRIC NO. : C30105210060

PROGRAMME : BICT (Hons)

ACADEMIC : Shyam Adhikari


FACILITATOR

LEARNING CENTRE : VIRINCHI, NEPAL

INSTRUCTIONS TO STUDENTS

1) This assignment consists of TWO (2) questions. Answer ALL questions.

2) Plagiarism in all forms is forbidden. Students who submit plagiarised assignment will be
penalised.

3) Your assignment will be examined based on the followings


 a complete working solution.
 ability of using methods available in the learning materials.

4) This assignment carries a 30% weightage toward final grade.

THERE ARE TWO [2] PAGES OF QUESTIONS, INCLUDING THIS PAGE


INSTRUCTION. Answer ALL questions. [Total : 30 Marks]

Question 1

a) Define the term software architecture.


Ans:
Software architecture is the discipline of developing such structures and systems as well
as the collection of structures required to reason about a software system.

[1 Mark]

b) Briefly explain THREE (3) reasons why software architecture is important.


Ans:
1. Maintainability: Updates and maintenance are made simpler by a clearly
specified software architecture. Developers can make changes to individual
components without affecting the overall system by modularizing the system
and isolating concerns. By lowering the chance of adding new flaws and
simplifying troubleshooting, this increases the software's lifetime maintenance
effectiveness and efficiency.
2. Scalability: Software architecture provides a scalable structure that allows the
system to handle increased demands and user loads. A well-designed
architecture can accommodate growth by adding or replicating components as
needed, ensuring that the software can meet performance requirements as the
user base or data volume grows.
3. Flexibility and Reusability: A strong software design encourages component
reuse. Developers can reuse existing components in other projects thanks to
clearly defined interfaces and module boundaries, which reduces the amount of
time and effort spent on development. This not only boosts productivity but also
helps an organisation build a standardised and consistent approach to
development.

[6 Marks]

c) Describe any FOUR (4) features of a clean software architecture.


Ans: The characteristics of a clean software architecture are those that support
simplicity, modularity, and maintainability. An effective software architecture has the
following four characteristics:
1. Separation of Concerns (SoC): A clean architecture places an emphasis on the
distinct division of various concerns or functionality within the software. Each
component ought to have well defined and constrained duties, allowing for
changes in one area of the system without having an impact on others. This
modularity makes the codebase easier to test, maintain, and comprehend.
2. Dependency Inversion Principle (DIP): Clean architecture abides by the
Dependency Inversion Principle, which holds that high-level components or
modules shouldn't depend on low-level ones; instead, they should both depend
on abstractions. This approach encourages the use of interfaces and
dependency injection, which allows the code to be separated from particular
implementations and increases flexibility and ease of component replacement.

3. Testability: A clean architecture is created to have a high degree of testability.


The key functionality can be independently tested using unit tests by keeping
business logic distinct from external dependencies and frameworks. The
construction of fake objects for testing, which ensures that the programme works
as expected under various circumstances, is further supported by the usage of
interfaces and dependency injection.

4. Clear Boundaries and Layers: A clean design places a strong emphasis on


using layers to efficiently organise the software. It usually comprises of a number
of concentric circles or layers, such as the infrastructure layer, the application
layer, and the domain layer. There is a clear and logical hierarchy because each
layer plays a defined purpose and only communicates with layers below it. This
separation enables developers to change or replace a component in one layer
without affecting components in other layers, which supports a system that is
enduring and manageable.

[8 Marks]

[Total : 15 Marks]

Question 2

Choosing the right style to satisfy required functions and quality attributes is very important.
However, in many cases, no single architecture style can meet all quality attributes
simultaneously.

a) Briefly explain FIVE (5) quality attributes in the requirement analysis.


Ans:
1. Performance: This characteristic evaluates how well the system responds to
commands, manages data, and satisfies response time specifications. It takes
into account elements like throughput, scalability, resource use, and speed.
Systems that need to manage a large number of users or process significant
amounts of data must meet strict performance criteria.
2. Reliability: Reliability is the capacity of a system to carry out its intended
functions repeatedly and precisely over time. It involves techniques like
availability, fault tolerance, and recoverability. Users may rely on a stable system
without worrying about frequent breakdowns or unplanned crashes.
3. Security: Security is a vital characteristic that focuses on guarding the system
and its data against unauthorised access, data breaches, and other destructive
activities. In order to guarantee the security of sensitive information, it contains
features like authentication, authorization, encryption, and audit trails.
4. Usability: Usability is concerned with how simple and user-friendly the system is
to use. It takes into account elements like navigation, user experience, and user
interface design. A system's usability determines how intuitively users can interact
with it, minimising the requirement for in-depth training and support.
5. Maintainability: This term describes how easily a system can be updated,
changed, or fixed. It takes into account things like documentation, modularity, and
code readability. A system must be able to be maintained in order to lower
maintenance costs, respond quickly to problems, and accommodate future
changes or improvements.

[10 Marks]

b) As a software architect, what would you do when an architecture style does not satisfy all
the desired quality attributes?
Ans: As a software architect, I would take the following actions to rectify the situation if
an architecture style did not satisfy all the desired quality attributes:
1. Re-examine criteria: I would first go back and carefully analyse the criteria to
determine which quality attributes are not sufficiently covered. Prioritising the
most important qualities requires having a comprehensive understanding of the
stakeholders' expectations.

2. Determine Trade-Offs: I would decide which qualitative qualities to sacrifice.


Occasionally, improving one trait may have a detrimental effect on another.
Making educated decisions about the architecture is aided by having a clear
understanding of these trade-offs.
3. Explore Alternative Architectures: Next, I would look into alternative
architecture designs or patterns that are more appropriate for addressing the
deficiency in quality attributes. To attain balance, this may entail taking into
account various design strategies or even merging various architectural styles.
4. Testing and prototyping: I might build models or run simulations to assess how
various architectural decisions affect how the system behaves with regard to the
intended quality attributes. Prior to choosing an architecture, this method can
offer insightful information.
5. Collaboration and review: I would consult with other interested parties, including
project managers, business representatives, and development teams, in order to
talk about the various architectural choices and get their input. The optimum
architectural approach can be decided upon through collaborative conversations
and reviews.

6. Document the Decisions: After an appropriate architecture has been chosen, I


would carefully record the decisions made, the justifications for them, and any
trade-offs taken into consideration. This documentation supports architectural
coherence by acting as a helpful reference for upcoming development phases.

END OF ASSIGNMENT QUESTIONS

You might also like