0% found this document useful (0 votes)
24 views7 pages

Unit 3 SE

Uploaded by

yashwaghmare921
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views7 pages

Unit 3 SE

Uploaded by

yashwaghmare921
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

TULSIRAMJI GAIKWAD-PATIL College of Engineering and Technology

Wardha Road, Nagpur - 441108


Accredited withNAACA+Grade
Approved by AICTE, New Delhi, Govt. of Maharashtra
(An Autonomous Institution Affiliated to RTM Nagpur University, Nagpur)

Department of Computer Science and Engineering

Unit 3:-

Design Concepts-

Creating an architectural Design-


Software Architecture & Design Introduction

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

Architecture serves as a blueprint for a system. It provides an abstraction to manage the


system complexity and establish a communication and coordination mechanism among
components.

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.

Explain the Software Design Concepts

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

1] Data centered architectures:


 A data store will reside at the center of this architecture and is accessed frequently by the
other components that update, add, delete or modify the data present within the store.
 The figure illustrates a typical data centered style. The client software access a central
repository. Variation of this approach are used to transform the repository into a
blackboard when data related to client or data of interest for the client change the
notifications to client software.
 This data-centered architecture will promote integrability. This means that the existing

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

2] Data flow architectures:


PC
TG
 This kind of architecture is used when input data is transformed into output data through a
series of computational manipulative components.
 The figure represents pipe-and-filter architecture since it uses both pipe and filter and it
has a set of components called filters connected by lines.
 Pipes are used to transmitting data from one component to the next.
 Each filter will work independently and is designed to take data input of a certain form and
produces data output to the next filter of a specified form. The filters don’t require any
knowledge of the working of neighboring filters.
 If the data flow degenerates into a single line of transforms, then it is termed as batch
sequential. This structure accepts the batch of data and then applies a series of sequential
components to transform it.
3) Call and Return architectures: It is used to create a program that is easy to scale and
modify. Many sub-styles exist within this category. Two of them are explained below.

 Remote procedure call architecture: This components is used to present in a main


program or sub program architecture distributed among multiple computers on a network.
 Main program or Subprogram architectures: The main program structure decomposes
into number of subprograms or function into a control hierarchy. Main program contains
number of subprograms that can invoke other components.

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

Explain the ASSESSING ALTERNATIVE ARCHITECTURAL DESIGNS .

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.

Architectural Complexity: A useful technique for assessing the overall complexity of a


proposed architecture is to consider dependencies between components within the architecture.
These dependencies are driven by information/control flow within the system. The three types of
dependencies:
TG
Sharing dependencies represent dependence relationships among consumers who use the
same resource or producers who produce for the same consumers. For example, for two
components u and v, if u and v refer to the same global data, then there exists a shared
dependence relationship between u and v.

Flow dependencies represent dependence relationships between producers and consumers


of resources. For example, for two components u and v, if u must complete before control flows
into v (prerequisite), or if u communicates with v by parameters, then there exists a flow
dependence relationship between u and v.
Constrained dependencies represent constraints on the relative flow of control among a set
of activities. For example, for two components u and v, u and v cannot execute at the same time
(mutual exclusion), then there exists a constrained dependence relationship between u and v.

Architectural Description Languages: Architectural description language (ADL) provides a


semantics and syntax for describing a software architecture. Hofmann and his colleagues
suggest that an ADL should provide the designer with the ability to decompose architectural
components, compose individual components into larger architectural blocks, and represent
interfaces (connection mechanisms) between components.
Explain an ARCHITECTURAL MAPPING USING DATA FLOW.

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:

(1) the type of information flow is established,


(2) flow boundaries are Software Engineering Lecture notes GPCET, Department of CSE | 109
indicated, (3) the DFD is mapped into the program structure,
(4) control hierarchy is defined,
(5) the resultant structure is refined using design measures and heuristics, and
(6) the architectural description is refined and elaborated.

ET
PC
TG

You might also like