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