Soft Engg 4
Soft Engg 4
Soft Engg 4
UNIT – IV
SOFTWARE DESIGN
DESIGN CONCEPTS
● Software design is a process to transform user requirements into some suitable form,
which helps the programmer in software coding and implementation.
3) Interface design: Interfaces allow the sub-system’ services to be used by other sub-
systems. The representation of interface should be hidden. In this activity the interface
is designed and documented for each sub-system. The specification of interface must
be unambiguous.
5) Data structure design: The data structures used in the system implementation are
designed in detail and specified.
Design Guidelines
• A good design should exhibit good architectural structure, be modular.
1
• lead to data structures that are appropriate for the objects to be implemented and
be drawn from recognizable design patterns.
• lead to interfaces that reduce the complexity of connections between modules and
with the external environment.
Quality Guidelines
3) A design should be modular; that is, the software should be logically partitioned
into elements or subsystems.
2
FUNCTION-ORIENTED DESIGN
Function Oriented Design is an approach to software design where the design is
decomposed into a set of interacting units where each unit has a clearly defined
function.
Generic Procedure: Start with a high-level description of what the software / program
does. Refine each part of the description one by one by specifying in greater details the
functionality of each part. These points lead to Top-Down Structure.
3
Function Oriented Design Strategies:
Structure Charts
● Each module is represented by a box, which contains the module's name. The tree
structure visualizes the relationships between modules, showing data transfer
between modules using arrows.
● The tree shows the relationship between modules, showing data transfer between
the models. A structure chart is a nice representation for a design that uses functional
abstraction.
● It breaks down the entire system into lowest functional modules, describes functions
and sub-functions of each module of the system to a greater detail than DFD.
4
OBJECT-ORIENTED DESIGN
● Object–Oriented Design Object-oriented design includes two main stages, namely,
system design and object design.
● System Design In this stage, the complete architecture of the desired system is
designed. The system is conceived as a set of interacting subsystems that in turn is
composed of a hierarchy of interacting objects, grouped into classes.
● System design is done according to both the system analysis model and the proposed
system architecture. Here, the emphasis is on the objects comprising the system rather
than the processes in the system.
● “An instance is an object created from a class. The class describes the (behaviour and
information) structure of the instance, while the current state of the instance is defined
by the operations performed on the instance.”
Class
● “A class represents a template for several objects and describes how these objects are
structured internally. Objects of the same class have the same definition both for their
operations and for their information structures.”
2) Inheritance
OOD allows similar classes to stack up in a hierarchical manner where the lower or
sub-classes can import, implement, and re-use allowed variables and functions from
their immediate super classes. This property of OOD is called an inheritance. This
5
makes it easier to define a specific class and to create generalized classes from specific
ones.
3) Polymorphism
4) Encapsulation
6
DETAILED DESIGN
● Detailed design deals with the implementation part of what is seen as a system and
its sub-systems in the previous two designs. It is more detailed towards modules and
their implementations.
● It defines logical structure of each module and their interfaces to communicate with
other modules, developing the detailed design is useful for the more complex and
important modules, and is often done informally by the programmer as part of the
personal process of developing code.
A) Logic/Algorithm Design
A procedure is a finite sequence of well-defined steps or operations, each of which
requires a finite amount of memory and time to complete.
7
2) development of a mathematical model
● In modeling, one has to select the mathematical structures that are best suited for the
problem. It can help to look at other similar problems that have been solved.
● In most cases, models are constructed by taking models of similar problems and
modifying the model to suit the current problem.
VERIFICATION
Verification can mean the:
act of reviewing, inspecting, testing, checking, auditing, or otherwise establishing and
documenting whether items, processes, services or documents conform to specified
requirements.
Verification does not involve code execution, while Validation involves code execution.
Verification checks whether the software confirms a specification.
Verification finds the bugs early in the development cycle.
the Verification process targets software architecture, design, database, etc.
Verification is done by the QA team.
8
• It conducts software review, walk through, inspection, and evaluate documents.
Methods of Verification
• Static Verification: Static verification involves inspection of the code.
• Dynamic Verification: It concerns with the working behaviour of the software.
Coverage in Verification
• Statement Coverage: Code includes many statements. Code is verified.
• Path Coverage: Sequence of control flow from entry to exit.
• Decision Coverage: When and application is executed, it may have to make decisions
based upon the situation it faces.
Verification activities may include carrying out formal proofs. The activities to be
conducted in a project are described in the Software Verification and Validation Plan
(SVVP).
9
Software Metrics
A software metric is a measure of software characteristics which are measurable or countable. Software
metrics are valuable for many reasons, including measuring software performance, planning work
items, measuring productivity, and many other uses.
Within the software development process, many metrics are that are all connected. Software metrics are
similar to the four functions of management: Planning, Organization, Control, or Improvement.
1. Product Metrics: These are the measures of various characteristics of the software product. The
two important software characteristics are:
2. Process Metrics: These are the measures of various characteristics of the software development
process. For example, the efficiency of fault detection. They are used to measure the characteristics
of methods, techniques, and tools that are used for developing software.
1
0
Types of Metrics
Internal metrics: Internal metrics are the metrics used for measuring properties that are viewed
to be of greater importance to a software developer. For example, Lines of Code (LOC) measure.
External metrics: External metrics are the metrics used for measuring properties that are viewed
to be of greater importance to the user, e.g., portability, reliability, functionality, usability, etc.
Hybrid metrics: Hybrid metrics are the metrics that combine product, process, and resource
metrics. For example, cost per FP where FP stands for Function Point Metric.
Project metrics: Project metrics are the metrics used by the project manager to check the project's
progress. Data from the past projects are used to collect various metrics, like time and cost; these
estimates are used as a base of new software. Note that as the project proceeds, the project
manager will check its progress from time-to-time and will compare the effort, cost, and time with
the original effort, cost and time. Also understand that these metrics are used to decrease the
development costs, time efforts and risks. The project quality can also be improved. As quality
improves, the number of errors and time, as well as cost required, is also reduced.
1
1
For analysis, comparison, and critical study of different programming language concerning their
characteristics.
In comparing and evaluating the capabilities and productivity of people involved in software
development.
In making inference about the effort to be put in the design and development of the software
systems.
In comparison and making design trade offs between software development and maintenance cost
In providing feedback to software managers about the progress and quality during various phases
of the software development life cycle.
The application of software metrics is not always easy, and in some cases, it is difficult and costly.
The verification and justification of software metrics are based on historical/empirical data whose
validity is difficult to verify.
These are useful for managing software products but not for evaluating the performance of the
technical staff.
The definition and derivation of Software metrics are usually based on assuming which are not
standardized and may depend upon tools available and working environment.
Most of the predictive models rely on estimates of certain variables which are often not known
precisely.
1
2