El teorema fundamental de la ingeniería de software ( FTSE ) es un término originado por Andrew Koenig para describir una observación de Butler Lampson [1] atribuida a David J. Wheeler : [2]
"Podemos resolver cualquier problema introduciendo un nivel extra 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 se suele ampliar con la cláusula humorística "... excepto por el problema de demasiados niveles de indirección", que hace referencia al hecho de que demasiadas abstracciones pueden crear problemas de complejidad intrínseca propios. 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 indirección puede hacer que las capas superiores dupliquen la funcionalidad de las capas inferiores , lo que genera ineficiencia, y la funcionalidad de una capa puede necesitar datos presentes solo en otra capa, lo que viola fundamentalmente el objetivo de la separación en diferentes capas.