You are on page 1of 33

SOFTWARE

LESSON 5
DESIGN
LEARNING
OBJECTIVES
At the end of the lesson, you must be able to:

State the importance of software


01 design in application development;
02 Identify the different design steps; and

Recognize the different design


03 concepts and explain their importance.
Software design sits at the technical
kernel of the software engineering
process and is applied regardless of the
software process model that is used.
The first of three technical activities –
design, code generation, testing – is
required to build and verify the
software. It includes an iterative process
through which requirements are
translated into a “blueprint” for
constructing the software.
Design Steps
a. Data Design transforms the information domain model created during
analysis into the data structures that will be required to implement the
software.
b. Architectural Design defines the relationship among major structural
elements of the program.
c. Interface Design describes how the software communicates within itself, to
systems that interoperate with it, and with humans who use it.
d. Procedural Design transforms structural elements of the program
architecture into procedural description of software components.
Design Concepts

1 Abstraction 6 Structural Partitioning

2 Refinement 7 Data Structure

3 Modularity 8 Software Procedure

4 Software Achitecture 9 information


hiding
5 Control Hierarchy
Levels of Abstraction
a. Procedural Abstraction
a named sequence of instructions that has a specific
and limited function.

b. Data Abstraction
a named collection of data that describes a data object.

c. Control Abstraction
implies a program control mechanism without specifying
internal details.
Refinement
Stepwise refinement is a top-down
design strategy originally proposed by
Niklaus Wirth. It is a process of
elaboration.

It causes the designer to elaborate on


the original statement, providing more
and more detail as each successive
refinement occurs.
Modularity
It includes the division of software into
separately named and addressable
components (modules) integrated to
satisfy problem requirements.

Modularity is the single attribute of


software that allows a program to be
intellectually manageable.
Criteria to define an effective
modular system
1 Modular decomposability

2 Modular composability

3 Modular understandability

4 Modular continuity

5 Modular protection
Software Architecture
Alludes to “the overall structure of the
software and the ways in which that
structure provides conceptual integrity
of the system”. The hierarchical
structure of program components
(modules), the manner in which these
components interact, and the structure
of the data that are used by the
components.
Different models in
architectural design
1 Structural model

2 Framework model

3 Dynamic model

4 Process model

5 Functional model
Control Hierarchy
It is also called program structure.
Control hierarchy represents the
organization (often hierarchical) of
program components (modules) and
implies a hierarchy of control.

It also represents two subtly different


characteristics of the software
architecture: visibility and connectivity.
Structural Partitioning
Horizontal partitioning defines separate
branches of the modular hierarchy for
each major program functions while
vertical partitioning, often called
"factoring", suggests that control
(decision making) and work should be
distributed top-down in the program
architectural.
Data Structure
Data structure is a representation of the logical relationship
among individual elements of data.

Data structures dictates the organization, methods of access,


degree of associativity, and processing alternatives for
information.
Software Procedure
Software procedure focuses on the
processing details of each module
individually. It must provide a
precise specification of processing
including sequence o of events,
exact decision points, repetitive
operations, and even data
organization/structure.
Information Hiding
In information hiding, modules
should be specified and designed
so that information (procedure and
data) contained within a module is
inaccessible to other modules that
have no need for such information.
Cohesion
a natural extension of the information
hiding concept.

A cohesive module performs a single task


within a software procedure, requiring
little interaction with procedures being
performed in other parts of a program. It
may be represented as a “spectrum”.
Coupling
Coupling is a measure of interconnection
among modules in a program structure. It
may also be represented on a spectrum.
Coupling depends on the interface
complexity between modules, the points
at which entry or reference is made to a
module, and what data pass across the
interface. At moderate levels, coupling is
characterized by passage of control
between modules.
Data Design
Data design is the first of four design activities
that are conducted during software engineering
and application development. The impact of data
structure on program structure and procedural
complexity causes it to have a profound influence
on software quality.
Principles for data specification
a. The systematic analysis principles applied to function and behavior should also be applied to data.
b. All data structures and the operations to be performed on each should be identified.
c. A data dictionary should be established and used to define both data and program design.
d. Low level data design decisions should be deferred until late in the design process.
e. The representation of data structure should be known only to those modules that must make direct
use of data contained within the structure.
f. A library of useful data structures and the operations that may be applied to them should be
developed.
g. A software design and programming language should support the specification and realization of
abstract data types.
Architectural Design
is the initial design process of identifying
these subsystems and establishing a
framework for subsystem control and
communication. Its objective is to develop a
modular program structure and represent the
control relationships between modules. It
melds program structure and data structure,
defining interfaces that enables data to flow
throughout the program. Architectural
design maybe based on a particular
architectural model or style.
Five step process to accomplish the transition from
information flow to structure:
1 The type of information flow is established.

2 The boundaries are indicated.

3 The DFD is mapped into program structure.

4 Control hierarchy is defined by factoring.

5 The resultant structure is refined using design measures and


heuristics.
Interface Design
It focuses on three areas of concern: the design of
interfaces between software modules; the design
of interfaces between the software and other
nonhuman producers and consumer’s information;
and the design of the interface between a human
(the user) and the computer.

The design of internal program interfaces,


sometimes called intermodular interface design, is
driven by the data that must flow between
modules and the characteristics of the
programming language in which the software is to
be implemented.
Procedural Design
Occurs after data, architectural and
interface designs have been
established. It must specify
procedural detail unambiguously. Its
foundation was formed in the early
1960s and was solidified with the
work of Edsgar Dijktra and his
colleagues.
Constructs of procedural design
are the following:
sequence – implements processing
steps that are essential in the
specification of any algorithm;
condition – provides the facility for
selected processing based on some
logical occurrence; and
repetition – provides for looping.
THANK YOU!
MEMBERS :
Justine Joy Barayuga
Yhuna Jecino
Aisenfaith Unido
Queenie Flores
Jamaica Garcia
Noel Espiritu
Guiller Espinoza

You might also like