Page 134 - DCAP405_SOFTWARE_ENGINEERING
P. 134

Unit 8: Design Engineering




                    Is each module’s interface sufficiently abstract that you do not need to think about  Notes
                    its implementation in order to understand it? Does it hide its implementation details
                    from other modules?
                    Have you subdivided modules as far as usefully possible?
                    Have you verified that different modules do not replicate functionality?

                    Have you isolated those aspects of the design that are most hardware specific, complex,
                    or otherwise likely to change?

          8.4.1 Modularity

          Modularity refers to the division of software into separate modules which are differently named
          and addressed and are integrated later on in order to obtain the completely functional software.
          It is the only property that allows a program to be intellectually manageable. Single large
          programs are difficult to understand and read due to large number of reference variables,
          control paths, global variables, etc. The desirable properties of a modular system are:

               Each module is a well defined system that can be used with other applications.
               Each module has a single specific purpose.
               Modules can be separately compiled and stored in a library.
               Modules can use other modules.
               Modules should be easier to use than to build.

               Modules are simpler from outside than inside.
          Modularity thus enhances the clarity of design which in turn eases coding, testing, debugging,
          documenting and maintenance of the software product. It might seem to you that on dividing a
          problem into sub problems indefinitely, the effort required to develop it becomes negligibly
          small. However, the fact is that on dividing the program into numerous small modules, the
          effort associated with the integration of these modules grows. Thus, there is a number N of
          modules that result in the minimum development cost. However, there is no defined way to
          predict the value of this N.
          In order to define a proper size of the modules, we need to define an effective design method to
          develop a modular system. Following are some of the criteria defined by Meyer for the same:
               Modular decomposability: The overall complexity of the program will get reduced if the
               design provides a systematic mechanism to decompose the problem into sub-problems
               and will also lead to an efficient modular design.
               Modular composability: If a design method involves using the existing design components
               while creating a new system it will lead to a solution that does not reinvent the wheel.

               Modular understandability: If a module can be understood as a separate standalone unit
               without referring to other modules it will be easier to build and edit.

               Modular continuity: If a change made in one module does not require changing all the
               modules involved in the system, the impact of change-induced side effects gets minimized.
               Modular protection: If an unusual event occurs affecting a module and it does not affect
               other modules, the impact of error-induced side effects will be minimized.








                                           LOVELY PROFESSIONAL UNIVERSITY                                   127
   129   130   131   132   133   134   135   136   137   138   139