El teorema fundamental de la ingeniería de software ( FTSE ) es un término originado por Andrew Koenig para describir un comentario de Butler Lampson [1] atribuido a David J. Wheeler : [2]
"Podemos resolver cualquier problema introduciendo un nivel adicional de indirección ".
El teorema no describe un teorema real que pueda demostrarse; más bien, es un principio general para gestionar la complejidad a través de la abstracción .
El teorema a menudo se amplía con la cláusula humorística "... excepto por el problema de demasiados niveles de indirección", en referencia al hecho de que demasiadas abstracciones pueden crear sus propios problemas de complejidad intrínseca. Por ejemplo, el uso de capas de protocolos en redes informáticas , que hoy en día es omnipresente, ha sido criticado de maneras que son típicas de las desventajas más generales de la abstracción. [3] Aquí, la adición de niveles adicionales de direccionamiento indirecto puede hacer que las capas superiores dupliquen la funcionalidad de las capas inferiores , lo que genera ineficiencia, y la funcionalidad en una capa puede necesitar datos presentes solo en otra capa, lo que fundamentalmente viola el objetivo de separación en diferentes capas.