HOME

TheInfoList



OR:

The fundamental theorem of software engineering (FTSE) is a term originated by
Andrew Koenig Joshua Andrew Koenig (; August 17, 1968 – February 16, 2010) was an American character actor, film director, editor, writer, and human rights activist. He was known for his role as Richard "Boner" Stabone in ''Growing Pains''. Early ...
to describe a remark by
Butler Lampson Butler W. Lampson, ForMemRS, (born December 23, 1943) is an American computer scientist best known for his contributions to the development and implementation of distributed personal computing. Education and early life After graduating from t ...
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. 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 are ...
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