You are on page 1of 30

Chapter 5 :Design Concepts

Software Design Definition:-


Software design is an iterative process
during which the software requirements
specifies in SRS are analyzed and
converted into description of the internal
structure and organization of the system.
There are two main Activities:-
 Software architectural design or high level
design:- In this, the system is decomposed and
organized into high level components or
modules and the interfaces between these
components are also described.
 Software implementation or detailed design:-
Here each component is described in sufficient
detail so that it can be easily coded by the
programmers.
What is a Good Design/Objectives
of software design
Design phase plays an important role in SDLC as
it affects the quality of the proposed system. A
design is said to be good if it is:
Complete:- it will build everything as required by
the end user.
Economical:-it will not build what is not required.
Structured:-it can accommodate changes due to
changed requirements, error etc.
 Constructive:- it says how to build the product.
 Traceable:- it can be traceable to analysis
model.
 Uniform:-it uses the same building technique
throughout.
 Testable:- it can be shown to work.
Software Design Process:-
 The design phase of software development deals
with transforming the customer requirements as
described in the SRS documents into a form
implementable using a programming language. The
software design process can be divided into the
following three levels or phases of design:
1. Interface Design
2. Architectural Design
3. Detailed Design
Interface Design:-
Interface design is the specification of the interaction between a
system and its environment. This phase proceeds at a high level
of abstraction with respect to the inner workings of the system
i.e, during interface design, the internal of the systems are
completely ignored, and the system is treated as a black box.
Attention is focused on the dialogue between the target system
and the users, devices, and other systems with which it
interacts. The design problem statement produced during the
problem analysis step should identify the people, other systems,
and devices which are collectively called agents.
Interface design should include the
following details
1. Precise description of events in the environment, or
messages from agents to which the system must respond.
2. Precise description of the events or messages that the
system must produce.
3. Specification of the data, and the formats of the data
coming into and going out of the system.
4. Specification of the ordering and timing relationships
between incoming events or messages, and outgoing events
or outputs.
Architectural Design

 Architectural design is the specification of the


major components of a system, their
responsibilities, properties, interfaces, and the
relationships and interactions between them. In
architectural design, the overall structure of the
system is chosen, but the internal details of
major components are ignored.
Issues in architectural design includes:
1. Gross decomposition of the systems into major
components.
2. Allocation of functional responsibilities to components.
3. Component Interfaces.
4. Component scaling and performance properties, resource
consumption properties, reliability properties, and so forth.
5. Communication and interaction between components.
Detailed Design:-

 Design is the specification of the internal


elements of all major system components,
their properties, relationships, processing,
and often their algorithms and the data
structures.
The detailed design may include:
1. Decomposition of major system components into program
units.
2. Allocation of functional responsibilities to units.
3. User interfaces.
4. Unit states and state changes.
5. Data and control interaction between units.
6. Data packaging and implementation, including issues of
scope and visibility of program elements.
7. Algorithms and data structures.
Elements of a system:-
1. Architecture: This is the conceptual model that defines the
structure, behavior, and views of a system. We can use
flowcharts to represent and illustrate the architecture.
2. Modules: These are components that handle one specific task
in a system. A combination of the modules makes up the
system.
3. Components: This provides a particular function or group of
related functions. They are made up of modules.
4. Interfaces: This is the shared boundary across which the
components of a system exchange information and relate.
5. Data: This is the management of the information and data flow.
Software Design Documentation
 Software Design Document is a written document that
provides a description of a software product in terms of
architecture of software with various components with
specified functionality.
 The design specification addresses different aspects of the
design model and is completed as the designer refines his
representation of the software. These design documents are
written by software engineers/designers or project
managers and further passed to the software development
team to give them an overview of what needs to be built
and how.
S.No Software Design Document Module, Subpart

1. Existing software documentation


2. System Documentation
01. Reference Documents
3. Vendor(hardware or software) documents
4. Technical reference

1. Processing narrative
2. Interface description
02. Modules for each module
3. Design language(or other) description
4. Modules used

1.System objective
2. Hardware, software and human interfaces
03. Scope 3. Major software functions
4. Externally defined database
5. Major design constraints, limitations

1.Data description
04. Design Description 2.Derived program structure
3.Interface within structure

1.Test guidelines
05. Test Provisions 2.Integration strategy
3.Special considerations

1.Special program overlay provisions


06. Packaging
2.Transfer consideration

1.External Files structure


07. File Structure and global data 2.Global data
3.File and data cross – reference

08. Requirement cross-reference 1. cross-reference


Importance of Design Documentation
1. Requirements are well understood: With proper documentation, we
can remove inconsistencies and conflicts about the requirements.
Requirements are well understood by every team member.
2. Architecture/Design of product: Architecture/Design documents give
us a complete overview of how the product look like and better insight
to the customer/user about their product.
3. New Person can also work on the project: New person to the project
can very easily understand the project through documentations and start
working on it. So, developers need to maintain the documentation and
keep upgrading it according to the changes made in the
product/software
4. Everything is well Stated: This documentation is helpful to
understand each and every working of the product. It explains
each and every feature of the product/software.
5. Proper Communication: Through documentation, we have
good communication with every member who is part of the
project/software. Helpful in understanding role and
contribution of each and every member.
Design Methodology:
 Design methodology refers to the development
of a system or method for a unique situation.
 The way in which design methods are used in
the context of the organization, the project, the
product, all stakeholders, and all other aspects
that influence the development cycle.
Design Methodology in Technology

• Top Down Design or Stepwise Refinement: This


starts from the end solution and works backwards,
refining each step along the way.
• Bottom Up Design: This methodology starts with
a foundation and works up towards a solution.
• Structured Design: This is an industry standard.
The technique starts by identifying inputs and
desired outputs to create a graphical representation.
• Structured Analysis and Design Technique: This
approach utilizes a diagram to describe the
hierarchy of a system's functions.
• Data Structured Systems Development: Data
structure determines the system structure in this
methodology.
• Object Oriented Design: This methodology is
based on a system of interacting objects.
Software Design Approaches
A number of software design
approaches are proposed in the
literature. Details of software design
approaches can very greatly.
 Different approaches have been used
to develop software solutions for
different problems.
Top-down approach:

 Each system is divided into several subsystems and


components. Each of the subsystems is further
divided into a set of subsystems and components.
This process of division facilitates forming a
system hierarchy structure. The complete software
system is considered a single entity and in relation
to the characteristics, the system is split into sub-
systems and components. The same is done with
each of the sub-systems.
 This process is continued until the lowest level
of the system is reached. The design is started
initially by defining the system as a whole and
then keeps on adding definitions of the
subsystems and components. When all the
definitions are combined, it turns out to be a
complete system.
 For the solutions of the software that need to be
developed from the ground level, a top-down
design best suits the purpose.
 Advantages of Top-down approach:
• The main advantage of the top-down approach
is that its strong focus on requirements helps to
make a design responsive according to its
requirements.
 Disadvantages of Top-down approach:
• Project and system boundaries tend to be
application specification-oriented. Thus, it is more
likely that the advantages of component reuse will
be missed.
• The system is likely to miss, the benefits of a well-
structured, simple architecture.
Bottom-up approach:

 The design starts with the lowest level components and


subsystems. By using these components, the next immediate
higher-level components and subsystems are created or
composed. The process is continued till all the components
and subsystems are composed into a single component,
which is considered as the complete system.
 The amount of abstraction grows high as the design moves to
more high levels. By using the basic information existing
system, when a new system needs to be created, the bottom-
up strategy suits the purpose.
 Advantages of Bottom-up approach:
• The economics can result when general solutions can be reused.
• It can be used to hide the low-level details of implementation and be
merged with the top-down technique.
 Disadvantages of Bottom-up approach:
• It is not so closely related to the structure of the problem.
• High-quality bottom-up solutions are very hard to construct.
• It leads to the proliferation of ‘potentially useful’ functions rather than
the most appropriate ones.

You might also like