A central concept of modular organization . . .

Fan out and fan in

Conrad Weisert
February 12, 2017
©2017 Information discipines, Inc., Chicago.

For a given program module we always need to know:

What other modules this one uses or depends on

This is sometimes called a module's "fan out".

We may also be curious about:

What other modules use or depend on this one

This is called module "fan in". High fan-in is considered a desirable measure of modularity.

From a documentation maintenance point of view the two are not at all symmetric.

Normally, a programmer needs to know what a module uses, so that those other components get incorporated into "make" or "project" control files or packaged for delivery. However, I can think of only one occasion where a programmer needs to know who else uses a module: when the programmer is considering making an incompatible change to the module, a change that would make existing correct user code stop working.

My usual practice, then, is not to try to document "where used" for a module and to strongly discourage making incompatible changes to widely used components. However, I don't object to "where used", "called by", or "derived by" lists if they're generated automatically, but they still may not be up-to-date.

Last modified, February 14, 2017

Return to IDI home page
Programming items