Decomposition
The effectiveness of a modularization is dependent upon the criteria used in dividing the system into modules. Where a module is a work assignment unit.
Benefits of modularization:
-
Development time should be shortened as separate groups can work on each module with little need for communication.
-
Product flexibility should be increased changes should be able to be made in one module without changing others.
-
Comprehesibility should be increased as the system can be studied one module at a time with the result the system can be better designed because it was better understood.
Note Given what we now know from systems theory and complexity theory this may be too much of a simplification.
Governing principles
- Decompose based on a list of difficult design decisions or decisions which are likely to change.
Note The connections between modules are not just the interface that they communicate over and the data that they transfer but also the assumptions which they make about each other.
Note Decompostion on the basis of information hiding so that you reveal as little as possible about a modules inner workings if not careful can lead to inefficiencies as it may result in elaborate calling sequences ( Chatty systems ) due to repeated switching between modules.
Factoring
-
The separation of a function within one module into a new module of its own.
-
It should be done for one of the following reasons:
- Avoid the same function being implemented in more than one module.
- Separate work from management.
- Simplify the implementation.