0 ratings0% found this document useful (0 votes) 77 views14 pagesSoftware Design Principles
software design principles
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here.
Available Formats
Download as PDF or read online on Scribd
Software Design
Software design is a mechanism to transform
user requirements into some suitable form, which
helps the programmer in software coding and
implementation. It deals with representing the
client's requirement, as described in SRS
(Software Requirement Specification) document,
into a form, i.e., easily implementable using
programming language.
The software design phase is the first step in
SDLC (Software Design Life Cycle), which moves
the concentration from the problem domain to the
solution domain. In software design, we consider
the system to be a set of components or modules
with clearly defined behaviors & boundaries.Following are the purposes of Software design:
eeu erected rita
=
Flexibility pr ays Maintainability
Objectives of Software Design
1. Correctness:Software design should be
correct as per requirement.
2. Completeness:The design should have all
components like data structures, modules,
and external interfaces, etc.
3. Efficiency:Resources should be used
efficiently by the program.
4. Flexibility:Able to modify on changing
needs.
5. Consistency:There should not be any
inconsistency in the design.
6. Maintainability: The design should be so
simple so that it can be easily maintainable
by other designers.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 focussed 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.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.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.Software Design Principles
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.
Following are the principles of
Software Design
Software Design Principles
Top Down &
Modularity lee
dS a ye =
Problem Partitioning
Problem
PartitioningFor small problem, we can handle the entire
problem at once but for the significant problem,
divide the problems and conquer the problem it
means to divide the problem into smaller pieces
so that each piece can be captured separately.
For software design, the goal is to divide the
problem into manageable pieces.Benefits of Problem Partitioning
1. Software is easy to understand
2. Software becomes simple
3. Software is easy to test
4. Software is easy to modify
5. Software is easy to maintain
6. Software is easy to expand
These pieces cannot be entirely independent of
each other as they together form the system.
They have to cooperate and communicate to
solve the problem. This communication adds
complexity.An abstraction is a tool that enables a designer to
consider a component at an abstract level without
bothering about the internal details of the
implementation. Abstraction can be used for
existing element as well as the component being
designed.
Here, there are two common abstraction
mechanisms
1. Functional Abstraction
2. Data Abstraction
Functional Abstractioni. Amodule is specified by the method it
performs.
ii. The details of the algorithm to accomplish
the functions are not visible to the user of
the function.
Functional abstraction forms the basis for
Function oriented design approaches.
Data Abstraction
Details of the data elements are not visible to the
users of data. Data Abstraction forms the basis
for Object Oriented design approaches.
Modularity
Modularity specifies to the division of software
into separate modules which are differently
named and addressed and are integrated later on
in to obtain the completely functional software. It
is the only property that allows a program to be
intellectually manageable. Single large programs
are difficult to understand and read due to a large
number of reference variables, control paths,
global variables, etc.Advantages of Modularity
There are several advantages of Modularity
°
°
°
°
It allows large programs to be written by
several or different people
It encourages the creation of commonly
used routines to be placed in the library and
used by other programs.
It simplifies the overlay procedure of
loading a large program into main storage.
It provides more checkpoints to measure
progress.
It provides a framework for complete
testing, more accessible to test
It produced the well designed and more
readable program.Disadvantages of Modularity
There are several disadvantages of Modularity
Execution time maybe, but not certainly,
longer
© Storage size perhaps, but is not certainly,
increased
© Compilation and loading time may be
longer
Inter-module communication problems
may be increased
o More linkage required, run-time may be
longer, more source lines must be written,
and more documentation has to be doneStrategy of Design
A good system design strategy is to organize the
program modules in such a method that are easy
to develop and latter too, change. Structured
design methods help developers to deal with the
size and complexity of programs. Analysts
generate instructions for the developers about
how code should be composed and how pieces o'
code should fit together to form a program.
To design a system, there are two possible
approaches:
1. Top-down Approach
2. Bottom-up Approach1. Top-down Approach: This approach starts with
the identification of the main components and
then decomposing them into their more detailed
sub-components.
2. Bottom-up Approach: A bottom-up approach
begins with the lower details and moves towards
up the hierarchy, as shown in fig. This approach is
suitable in case of an existing system.
<—— Level
<—\_!_——— Level