Unit III Partial
Unit III Partial
Unit III Partial
Design Engineering
It covers the set of principles, concepts, and practices that lead to the
development of a high quality system or product.
Goal of design engineering is to produce a model or representation that
depict:
Firmness program should not have any bug that inhibits its functions.
Commodity suitable to its intended use.
Delight pleasurable to use
Software Design
Design
Architectural Design
Interface Design
Component Design
Data/class design - Created by transforming the analysis model classbased elements into classes and data structures required to implement
the software
Architectural design - defines the relationships among the major
structural elements of the software, it is derived from the class-based
elements and flow-oriented elements of the analysis model
Interface design - describes how the software elements, hardware
elements, and end-users communicate with one another, it is derived
from the analysis model scenario-based elements, flow-oriented
elements, and behavioral elements
Component-level design - created by transforming the structural
elements defined by the software architecture into a procedural
description of the software components using information obtained from
the analysis model class-based elements, flow-oriented elements, and
behavioral elements
Risk
Test
Quality
Quality Guidelines
Characteristics of good design
A design should exhibit an architecture that
as been created using recognizable architectural styles or
patterns,
is composed of components that exhibit good design
characteristics and
can be implemented in an evolutionary fashion
A design should be modular; that is, the software should be
logically partitioned into elements or subsystems
A design should contain distinct representations of data,
architecture, interfaces, and components.
A design should lead to data structures that are appropriate for the
classes to be implemented and are drawn from recognizable data
patterns.
A design should lead to components that exhibit independent
functional characteristics
Design Principles
S/W design is both a process and a model.
Design process - sequence of steps that enable
the designer to describe all aspects of the
software to be built.
Design model - created for software provides a
variety of different views of the computer
software
The design process should not suffer from tunnel vision. - Designer
should consider alternative approaches.
The design should be traceable to the analysis model - a single element
of the design model often traces to multiple requirements, it is necessary
to have a means for tracking how requirements have been satisfied by
the design model.
The design should not reinvent the wheel- use already exists design
pattern because time is short and resource are limited.
The design should minimize the intellectual distance between the
software and the problem as it exists in the real world. design should
be self-explanatory
Design concepts
Abstraction
At the highest level of abstraction a solution is stated in broad
terms
At lower level of abstraction a more detailed description of the
solution is provided.
Two types of abstraction:
Procedural abstraction: Sequence of instructions that have a
specific and limited function.
Ex. Open a door
open implies long sequence of activities (e.g. walk to the door, grasp
knob, turn knob and pull the door, etc).
Data abstraction: collection of data that describes a data object.
Ex. Open a door. door is data object.
Data abstraction for door would encompass a set of attributes that
describe the door. (E.g. door type, swing direction, opening
mechanism, etc.)
Refinement
Modularity
Architecture
Control Hierarchy
Control Hierarchy
Structural Partitioning
Structure Partitioning
Data Structure
Contd
Software Procedure
Software procedure focuses on the processing
details of each module individually.
Procedure must provide a precise specification of
processing, including sequence of events, exact
decision points, repetitive operations, and even
data organization and structure.
Information Hiding
Independence
Functional Independence
Functional Independence
Cohesion
Cohesion
Types of cohesion
Coupling
Coupling
Coupling
Design Heuristics
Once program structure has been developed effective modularity
may be achieved by applying the following heuristics:
Evaluate the1st iteration to reduce coupling & improve cohesion
Minimize structures with high fan-out; strive for depth
Keep scope of effect of a module within scope of control of that
module
Documentation