Functional decomposition of engineering is a method for analyzing engineered systems. The basic idea is to try to divide a system in such a way that each block of the block diagram can be described without an "and" or "or" in the description.

This innocent-sounding exercise forces each part of the system to have a pure function. When a system is composed of pure functions, they can be reused, or replaced. A usual side-effect is that the interfaces between blocks become simple and generic.

Since the interfaces usually become simple, it is easier to replace a pure function with a related, similar function.

For example, say that one needs to make a stereo system. One might functionally decompose this into speakers, amplifier, a tape deck and a front panel. Later, when a different model needs an audio CD, it can probably fit the same interfaces.

This process is powerful when applied to software.

Functional decomposition of mind