Unit 3 SE
Unit 3 SE
Unit 3:-
Design Concepts-
ET
The architecture of a system describes its major components, their relationships (structures),
and how they interact with each other. Software architecture and design includes several
contributory factors such as Business strategy, quality attributes, human dynamics, design, and
IT environment.
PC
TG
We can segregate Software Architecture and Design into two distinct phases: Software
Architecture and Software Design. In Architecture, nonfunctional decisions are cast and
separated by the functional requirements.
Software Architecture
Software Design
Software design provides a design plan that describes the elements of a system, how they
fit, and
work together to fulfill the It comes before the detailed design, coding, integration, and testing
and after the domain analysis, requirements analysis, and risk analysis.
ET
Software design principles are concerned with providing means to handle the complexity of
the design process effectively. Effectively managing the complexity will not only reduce the
effort needed for design but can also reduce the scope of introducing errors during design.
PC
Points to be Considered While Designing Software
TG
1. Abstraction (Hide Irrelevant data): Abstraction simply means to hide the details to
reduce complexity and increase efficiency or quality. Different levels of Abstraction are
necessary and must be applied at each stage of the design process so that any error that
is present can be removed to increase the efficiency of the software solution and to refine
the software solution. The solution should be described in broad ways that cover a wide
range of different things at a higher level of abstraction and a more detailed description of
a solution of software should be given at the lower level of abstraction.
1. Modularity (subdivide the system): Modularity simply means dividing the system or
project into smaller parts to reduce the complexity of the system or project. In the same
way, modularity in design means subdividing a system into smaller parts so that these
parts can be created independently and then use these parts in different systems to
perform different functions. It is necessary to divide the software into components known
as modules because nowadays, there are different software available like Monolithic
software that is hard to grasp for software engineers. So, modularity in design has now
become a trend and is also important. If the system contains fewer components then it
would mean the system is complex which requires a lot of effort (cost) but if we can divide
the system into components then the cost would be small.
1. Architecture (design a structure of something): Architecture simply means a technique
to design a structure of something. Architecture in designing software is a concept that
focuses on various elements and the data of the structure. These components interact
with each other and use the data of the structure in architecture.
1. Refinement (removes impurities): Refinement simply means to refine something to
remove any impurities if present and increase the quality. The refinement concept of
software design is a process of developing or presenting the software or system in a
detailed manner which means elaborating a system or software. Refinement is very
necessary to find out any error if present and then to reduce it.
1. Pattern (a Repeated form): A pattern simply means a repeated form or design in which
the same shape is repeated several times to form a pattern. The pattern in the design
process means the repetition of a solution to a common recurring problem within a certain
context.
1. Information Hiding (Hide the Information): Information hiding simply means to hide the
information so that it cannot be accessed by an unwanted party. In software design,
information hiding is achieved by designing the modules in a manner that the information
gathered or contained in one module is hidden and can’t be accessed by any other
ET
modules.
1. Refactoring (Reconstruct something): Refactoring simply means reconstructing
something in such a way that it does not affect the behavior of any other features.
Refactoring in software design means reconstructing the design to reduce complexity and
simplify it without impacting the behavior or its functions. Fowler has defined refactoring as
“the process of changing a software system in a way that it won’t impact the behavior of
the design and improves the internal structure”.
PC
Explain the creating of an Architectural Design
The software needs the architectural design to represents the design of software.
The software that is built for computer-based systems can exhibit one of these many
architectural styles.
Each style will describe a system category that consists of :
A set of components(eg: a database, computational modules) that will perform a function
required by the system.
TG
The set of connectors will help in coordination, communication, and cooperation between
the components.
Conditions that how components can be integrated to form the system.
Semantic models that help the designer to understand the overall properties of the system.
The use of architectural styles is to establish a structure for all the components of the system.
Explain an Architectural styles
ET
components can be changed and new client components can be added to the architecture
without the permission or concern of other clients.
Data can be passed among clients using blackboard mechanism
4] Object Oriented architecture: The components of a system encapsulate data and the
ET
operations that must be applied to manipulate the data. The coordination and communication
between the components are established via the message passing.
5] Layered architecture:
A number of different layers are defined with each layer performing a well-defined set of
operations. Each layer will do some operations that becomes closer to machine instruction
set progressively.
At the outer layer, components will receive the user interface operations and at the inner
PC
layers, components will perform the operating system interfacing(communication and
coordination with OS)
Intermediate layers to utility services and application software functions.
One common example of this architectural style is OSI-ISO (Open Systems
Interconnection-International Organisation for Standardisation) communication system.
TG
Design results in a number of architectural alternatives that are each assessed to determine
which is the most appropriate for the problem to be solved. Two different approaches for the
assessment of alternative architectural designs. The first method uses an iterative method to
assess design trade-offs. The second approach applies a pseudo-quantitative technique for
assessing design quality.
An Architecture Trade-Off Analysis Method: The Software Engineering Institute (SEI) has
developed an architecture trade-off analysis method (ATAM) that establishes an iterative
evaluation process for software architectures. The design analysis activities that follow are
performed iteratively:
1. Collect scenarios. A set of use cases is developed to represent the system from the user’s
point of
view.
2. Elicit requirements, constraints, and environment description. This information is
determined as part of requirements engineering and is used to be certain that all stakeholder
concerns have been addressed.
3 Describe the architectural styles/patterns that have been chosen to address the scenarios
and requirements. The architectural style(s) should be described using one of the following
architectural views: • Module view for analysis of work assignments with components and the
degree to which information hiding has been achieved. • Process view for analysis of system
ET
performance. • Data flow view for analysis of the degree to which the architecture meets
functional requirements.
4. Evaluate quality attributes by considering each attribute in isolation. The number of
quality attributes Quality attributes for architectural design assessment include reliability,
performance, security, maintainability, flexibility, testability, portability, reusability, and
interoperability.
5. Identify the sensitivity of quality attributes to various architectural attributes for a specific
architectural style. Any attributes that are significantly affected by variation in the architecture
PC
are termed sensitivity points.
There is no practical mapping for some architectural styles, and the designer must
approach the translation of requirements to design for these styles in using the techniques.
A mapping technique, called structured design, is often characterized as a data flow-
oriented design method because it provides a convenient transition from a data flow diagram to
software architecture. The transition from information flow (represented as a DFD) to program
structure is accomplished as part of a six step process:
ET
PC
TG