Page 129 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 129
Unit 6: Functional Design
Introduction Notes
A design method is a systematic approach to creating a design by applying of a set of techniques
and rule. Most design methodologies focus on the system design, and do not reduce the
design action to a sequence of steps that can be blindly followed by the designer. In function-
oriented methods for design and describe one exacting methodology—the structured design
methodology—in some detail. In a function-oriented design approach, a system is viewed as
a transformation function, transforming the inputs to the desired out-puts. The purpose of the
design phase is to specify the components for this transformation function, so that each component
is also a transformation function. That is, each module in design supports a functional abstraction.
The basic output of the system design phase, when a function oriented design approach is being
followed, is the definition of all the major data structures in the system, all the major modules
of the system, and how the modules interact with each other. The design activity begins when
the requirements document for the software to be developed is available and the architecture
has been designed. During design we further refine the architecture. Generally, design focuses
on the we have called the module that is, during design we determine what modules should the
system have and which have to be developed. Sometimes, the module view may effectively be a
module structure of each component in the architecture. That is, the design exercise determines
the module structure of the components. However, this simple mapping of components and
modules may not always hold. In that case we have to ensure that the module view created
in design is consistent with the architecture. Functional Design is a paradigm used to simplify
the design of hardware and software devices such as computer software and increasingly, 3D
models. A functional design assures that each modular part of a device has only one responsibility
and performs that responsibility with the minimum of side effects on other parts. Functionally
designed modules tend to have low coupling.
The advantage for implementation is that if a software module has a single purpose; it will
be simpler, and therefore easier and less expensive, to design and implement. Systems with
functionally designed parts are easier to modify because each part does only what it claims to
do. Since maintenance is more than 3/4 of a successful system’s life, this feature is a crucial
advantage. It also makes the system easier to understand and document, which simplifies
training. The result is that the practical lifetime of a functional system is longer. In a system of
programs, a functional module will be easier to reuse because it is less likely to have side effects
that appear in other parts of the system.
6.1 Concept of Functional Design
The standard way to assure functional design is to review the description of a module. If the
description includes conjunctions such as “and” or “or”, then the design has more than one
responsibility, and is therefore likely to have side effects. The responsibilities need to be divided
into several modules in order to achieve a functional design.
A functional requirement defines a function of a software system or its component. A function
is described as a set of inputs, the behaviour, and outputs (see also software). Functional
requirements may be calculations, technical details, data manipulation and processing and
other specific functionality that define what a system is supposed to accomplish. Behavioural
requirements describing all the cases where the system uses the functional requirements are
captured in use cases. Functional requirements are supported by non-functional requirements
(also known as quality requirements), which inflict constraints on the design or implementation
(such as performance requirements, security, or reliability). Generally, functional requirements
are expressed in the form “system must do <requirement>”, while non-functional requirements
are “system shall be <requirement>”. The plan for implementing functional requirements is
detailed in the system design. The plan for implementing non-functional requirements is detailed
in the system architecture.
LOVELY PROFESSIONAL UNIVERSITY 123