The fundamental theorem of software engineering (FTSE) is a term originated by
Andrew Koenig to describe a remark by
Butler Lampson attributed to
David J. Wheeler:
The theorem does not describe an actual theorem that can be proven; rather, it is a general principle for managing complexity through
abstraction
Abstraction in its main sense is a conceptual process wherein general rules and concepts are derived from the usage and classification of specific examples, literal ("real" or " concrete") signifiers, first principles, or other methods.
"An a ...
.
The theorem is often expanded by the humorous clause "…except for the problem of too many levels of indirection," referring to the fact that too many abstractions may create intrinsic complexity issues of their own. For example, the use of protocol layering in
computer network
A computer network is a set of computers sharing resources located on or provided by network nodes. The computers use common communication protocols over digital interconnections to communicate with each other. These interconnections ar ...
s, which today is ubiquitous, has been criticized in ways that are typical of more general disadvantages of abstraction.
Here, the adding of extra levels of indirection may cause higher layers to
duplicate the functionality of lower layers, leading to inefficiency, and functionality at one layer may need data present only at another layer, which fundamentally violates the goal of separation into different layers.
See also
*
Indirection
In computer programming, indirection (also called dereferencing) is the ability to reference something using a name, reference, or container instead of the value itself. The most common form of indirection is the act of manipulating a value throug ...
References
{{reflist
Software engineering folklore