MSc-IT Study Material
January 2011 Edition

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

Functional independence

Functional independence occurs where modules (such as a package or class) address a specific and constrained range of functionality. The modules provide interfaces only to this functionality. By constraining their functionality, the modules require the help of fewer other modules to carry out their functionality.

The functional independence of a module can be judged using two concepts: cohesion and coupling: cohesion is the degree to which a module performs only one function. coupling is the degree to which a module requires other modules to perform its function.

Note

The goal of functional independence is to maximise cohesion while minimising coupling.

Having many functionally independent modules helps a software system be resilient to change: because functionally independent modules rely on fewer other modules, there is less chance of changes to these modules spreading to those which are functionally independent.

Functional independence makes modules easier to develop and test. Changes made to how they perform their function are less likely to affect the software as a whole.

Functional independence is one of the goals of using information hiding and modularity. Consider this: there can be no good information hiding if the software has not been broken into modules. If the software has not been broken into modules, there can not ever be functionally independent modules. If no information is hid from other modules of the software, if every module always depended on all the others to perform its function, any change made to the software will always result in changes having to be made elsewhere in the software in order to handle these changes.