0% found this document useful (0 votes)
45 views

Design Concepts and Principles

This document discusses key design concepts and principles for software engineering. It covers topics like abstraction, refinement, modularity, architecture, information hiding, and functional independence. The main points are: 1) Design principles should include traceability to analysis, minimizing intellectual distance from the problem domain, accommodation of change, and graceful degradation. 2) Fundamental concepts are abstraction of data, procedures, and control, as well as refinement, modularity, and architecture. 3) Modular design can make software easier to build, change, and fix, though there is a tradeoff between module development costs and integration costs.

Uploaded by

subandiwahyudi08
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views

Design Concepts and Principles

This document discusses key design concepts and principles for software engineering. It covers topics like abstraction, refinement, modularity, architecture, information hiding, and functional independence. The main points are: 1) Design principles should include traceability to analysis, minimizing intellectual distance from the problem domain, accommodation of change, and graceful degradation. 2) Fundamental concepts are abstraction of data, procedures, and control, as well as refinement, modularity, and architecture. 3) Modular design can make software easier to build, change, and fix, though there is a tradeoff between module development costs and integration costs.

Uploaded by

subandiwahyudi08
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 14

Chapter 13

Design Concepts and Principles


Analysis to Design
Design Principles
• The design process should not suffer from ‘tunnel vision.’
• The design should be traceable to the analysis model.
• The design should not reinvent the wheel.
• The design should “minimize the intellectual distance”
[DAV95] between the software and the problem as it
exists in the real world.
• The design should exhibit uniformity and integration.
• The design should be structured to accommodate change.
• The design should be structured to degrade gently, even
when aberrant data, events, or operating conditions are
encountered.
•From
Design is not coding, coding is not design.
Davis [DAV95]

• The design should be assessed for quality as it is being


created, not after the fact.
• The design should be reviewed to minimize conceptual
(semantic) errors.
Fundamental Concepts
• abstraction—data, procedure, control
• refinement—elaboration of detail for all
abstractions
• modularity—compartmentalization of
data and function
• architecture—overall structure of the
software
– Structural properties
– Extra-structural properties
Data Abstraction
door
manufacturer
model number
type
swing direction
inserts
lights
type
number
weight
opening mechanism

implemented as a data structure


Procedural Abstraction
open

details of enter
algorithm

implemented with a "knowledge" of the


object that is associated with enter
Stepwise Refinement
open

walk to door;
reach for knob;
open door; repeat until door opens
turn knob clockwise;
walk through; if knob doesn't turn, then
close door. take key out;
find correct key;
insert in lock;
endif
pull/push door
move out of way;
end repeat
Modular Design
easier to build, easier to change, easier to fix ...
Modularity: Trade-offs
What is the "right" number of modules
for a specific software design?
module development cost
cost of
software
module
integration
cost

optimal number number of modules


of modules
Architectur
e
“The overall structure of the software and the
ways in which that structure provides
conceptual integrity for a system.” [SHA95a]
Structural properties. This aspect of the architectural design
representation defines the components of a system (e.g., modules,
objects, filters) and the manner in which those components are packaged
and interact with one another. For example, objects are packaged to
encapsulate both data and the processing that manipulates the data and
interact via the invocation of methods .
Extra-functional properties. The architectural design description should
address how the design architecture achieves requirements for
performance, capacity, reliability, security, adaptability, and other system
characteristics.
Families of related systems. The architectural design should draw upon
repeatable patterns that are commonly encountered in the design of
families of similar systems. In essence, the design should have the ability
to reuse architectural building blocks.
EXECUTIVE

Fan out
Depth

MODULE A MODULE B MODULE C MODULE D MODULE E MODULE F MODULE G

Module X Module Y Module Q Module R Module M Module N

Fan in
Module K Module L Module S Module T

Breadth
Information Hiding
module • algorithm
controlled
interface • data structure
• details of external interface
• resource allocation policy

clients "secret"

a specific design decision


Why Information Hiding?
• reduces the likelihood of “side
effects”
• limits the global impact of local
design decisions
• emphasizes communication
through controlled interfaces
• discourages the use of global
data
Functional Independence
COHESION - the degree to which a
module performs one and only one
function.

COUPLING - the degree to which a


module is "connected" to other
modules in the system.

You might also like