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
   124   125   126   127   128   129   130   131   132   133   134