The holy grail of software development is the ability to apply the principle of Superposition to software components.

A "simple" way to look at superposition is to imagine LEGO® blocks.  The blocks do not depend on each other.  One can build "anything" with the blocks without being constrained by dependencies.


I show the problem caused by dependencies in my essay CALL / RETURN Spaghetti  

The essay CALL / RETURN Spaghetti indirectly discusses superposition. It shows what happens if one doesn't have superposition.

The ALGOL Bottleneck

CALL RETURN uses a global variable to store breadcrumbs.

This global variable is created/supported by most modern hardware.

I try to demonstrate this issue in my essay ALGOL Bottleneck

Superposition in EE

I first learned about superposition in EE school.

In EE, one analyzes (understands) a circuit by successively suppressing all voltage sources except one.  

All of the separate, one-source-only, analyses are then glued back together and summed to form the final analysis.

Analogy: Cartoon Movie Cels

An analogy of the use of superposition is to imagine how cartoon movies were created before computers became abundant.

An artist would paint a character onto a transparent sheet of plastic.

Many artists could to their tasks in parallel - without any dependencies between them.  Each artist could paint all of the cels for a single cartoon character.

The frames of the final movie would be formed by layering each cel onto a background and photographing the result.  The final movie would show frames in sequence.

Animated graphics still works this way today, except with computerized technology.  Animated GIFs work this way, also.