MSc-IT Study Material
January 2011 Edition

Computer Science Department, University of Cape Town
| MIT Notes Home | Edition Home |

Modularity

When developing software, the software is broken into smaller and smaller components, into packages of classes, then into the classes themselves, into the base data-types that make up these classes, into the functions that they call, and so on.

This ability to divide a software system into discrete portions is called modularity, which is an important component of abstraction and architectural design. Having modular software allows it to be more easily comprehended by the developers and our customers. However, modularity has a drawback: while increasing modularity can increase our understanding of the software, after a certain point the software will consist of enough modules that we will again have a problem seeing how they all interact.

As with any abstraction tool, it is important to choose the right level of modularity (the right level of abstraction) for the software.

Modularised software is easier to develop and to test; it can more easily accommodate change, since change should be restricted to only a small number of modules.

Note

When we use the term module, we are referring to any division in the software, such as a package or a class.