Software Design-@DeveloperLibrary
Software Design-@DeveloperLibrary
Module 4
Software design
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 behaviours & boundaries.
Objectives of Software Design
The design starts with initial requirements and ends with complete design
3
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
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.
The detailed design may include:
Decomposition of major system components into program units.
Allocation of functional responsibilities to units.
User interfaces
Data and control interaction between units
Modularity
A module is defined as the unique and addressable components of the
software which can be solved and modified independently without
disturbing (or affecting in very small amount) other modules of the
software. Thus every software design should follow modularity.
The process of breaking down software into multiple independent
modules where each module is developed separately is
called Modularization.
4
Coupling:
Coupling is a measure of strength in relationship between various
modules within a software. It is of 6 types which are listed below in the
order of low to high coupling:
1. Data Coupling
2. Stamp Coupling
3. Control Coupling
4. External Coupling
5. Common Coupling
6. Content Coupling
5
Cohesion:
Cohesion is a measure of strength in relationship between various
functions within a module. It is of 7 types which are listed below in the
order of high to low cohesion:
1. Functional cohesion
2. Sequential cohesion
3. Communicational cohesion
4. Procedural cohesion
5. Temporal cohesion
6. Logical cohesion
6
7. Co-incidental cohesion
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.
Top-down approach:
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 together, it turns out to be a complete
system.
Hybrid Design:
It is a combination of both the top – down and bottom – up design
strategies. In this we can reuse the modules.
Function Oriented Design
Function Oriented design is a method to software design where the model
is decomposed into a set of interacting units or modules where each unit or
module has a clearly defined function.
Design Notations
Example
Data Dictionaries
A data dictionary lists all data elements appearing in the DFD model of a
system. The data items listed contain all data flows and the contents of all
data stores looking on the DFDs in the DFD model of a system.
A data dictionary lists the objective of all data items and the definition of all
composite data elements in terms of their component data items.
Structured Charts
It partitions a system into block boxes. In a Black box system , its
functionality is known to the user without the knowledge of internal
design.
11
Pseudo-code
Example
Interaction Diagrams
From the term Interaction, it is clear that the diagram is used to describe
some type of interactions among the different elements in the model. This
interaction is a part of dynamic behavior of the system.
This interactive behavior is represented in UML by two diagrams known
as Sequence diagram and Collaboration diagram. The basic purpose of
both the diagrams are similar.
Sequence Diagram
Sequence diagrams in UML show how objects interact with each other and
the order those interactions occur. It’s important to note that they show the
15
Communication Diagram
They were called collaboration diagrams. Communication diagrams are
similar to sequence diagrams, but the focus is on messages passed between
objects. The same information can be represented using a sequence
diagram and different objects.
Class diagrams are the main building block of any object-oriented solution.
It shows the classes in a system, attributes, and operations of each class
and the relationship between each class.
In most modelling tools, a class has three parts. Name at the top, attributes
in the middle and operations or methods at the bottom. In a large
system with many related classes, classes are grouped together to create
class diagrams. Different relationships between classes are shown by
different types of arrows.
The class diagrams are used to draw state chart diagrams, which help in
continues.
The more complete the information you provide the development team
Software Reliability
Software Reliability means Operational reliability. It is described as the
ability of a system or component to perform its required functions under
static conditions for a specific period.
Software Quality
Software quality product is defined in term of its fitness of purpose. That is,
a quality product does precisely what the users want it to do. For software
products, the fitness of use is generally explained in terms of satisfaction of
the requirements laid down in the SRS document.
It includes five software quality factors, which are related with the
requirements that directly affect the operation of the software such as
operational performance, convenience, ease of usage and its
correctness. These factors help in providing a better user experience.
20
Correctness –
The extent to which software meets its requirements specification.
Efficiency –
The amount of hardware resources and code the software, needs to
perform a function.
Integrity –
The extent to which the software can control an unauthorized person
from the accessing the data or software.
Reliability –
The extent to which a software performs its intended functions without
failure.
Usability –
The extent of effort required to learn, operate and understand the
functions of the software.
2. Product Revision:
It includes three software quality factors, which are required for testing
and maintenance of the software.
Maintainability –
The effort required to detect and correct an error during maintenance
phase.
Flexibility –
The effort needed to improve an operational software program.
Testability –
The effort required to verify a software to ensure that it meets the
specified requirements.
3. Product Transition:
It includes three software quality factors that allow the software to adapt to
the change of environments in the new platform or technology from the
previous.
Portability –
The effort required to transfer a program from one platform to another.
Re-usability –
The extent to which the program’s code can be reused in other
applications.
Interoperability –
The effort required to integrate two systems with one another.
21
Each of these KPA’s defines the basic requirements that should be met by
a software process in order to satisfy and achieve that level of maturity.
No KPA’s defined.
Processes followed are adhoc and immature and are not well defined.
Level-2: Repeatable –
Level-4: Managed –
At this stage, quantitative quality goals are set for the organization for
software products as well as software processes.
The measurements made help the organization to predict the product
and process quality within some limits defined quantitatively
Level-5: Optimizing –