El efecto de plataforma interna es la tendencia de los arquitectos de software a crear un sistema tan personalizable que se convierte en una réplica, a menudo deficiente, de la plataforma de desarrollo de software que están utilizando. Esto suele ser ineficiente y estos sistemas suelen considerarse ejemplos de un antipatrón .
Se pueden ver ejemplos en el software basado en complementos , como algunos editores de texto y navegadores web , en los que los desarrolladores suelen crear complementos que recrean el software que normalmente se ejecutaría sobre el propio sistema operativo. El mecanismo de complemento de Firefox se ha utilizado para desarrollar una serie de clientes FTP y exploradores de archivos que replican de manera eficaz algunas de las características del sistema operativo , aunque en una plataforma más restringida.
En el mundo de las bases de datos , los desarrolladores a veces se ven tentados a pasar por alto el RDBMS , por ejemplo, almacenando todo en una gran tabla con tres columnas etiquetadas como ID de entidad, clave y valor. Si bien este modelo de entidad-atributo-valor permite al desarrollador romper con la estructura impuesta por una base de datos SQL , pierde todos los beneficios, [1] ya que todo el trabajo que podría ser realizado de manera eficiente por el RDBMS se fuerza a la aplicación. Las consultas se vuelven mucho más complicadas, [2] los índices y el optimizador de consultas ya no pueden funcionar de manera efectiva y las restricciones de validez de los datos no se aplican. El rendimiento y la capacidad de mantenimiento pueden ser extremadamente deficientes.
Existe una tentación similar en el caso de XML , donde los desarrolladores a veces prefieren nombres de elementos genéricos y usan atributos para almacenar información significativa. Por ejemplo, cada elemento podría llamarse item y tener atributos type y value . Esta práctica requiere uniones entre múltiples atributos para extraer significado. Como resultado, las expresiones XPath son más complicadas, la evaluación es menos eficiente y la validación estructural brinda pocos beneficios.
Es normal que los desarrolladores de software creen una biblioteca de funciones personalizadas relacionadas con su proyecto específico. El efecto de plataforma interna se produce cuando esta biblioteca se expande para incluir funciones de propósito general que duplican la funcionalidad ya disponible como parte del lenguaje o la plataforma de programación. Dado que cada una de estas nuevas funciones generalmente llamará a varias de las funciones originales, tienden a ser más lentas y, si están mal codificadas, también menos confiables. [ cita requerida ]
Por otro lado, estas funciones suelen crearse para presentar una capa de abstracción más simple (y a menudo más portable) sobre servicios de nivel inferior que tienen una interfaz difícil, son demasiado complejos, no portables o insuficientemente portables, o simplemente no se adaptan bien al código de aplicación de nivel superior.
Una plataforma interna puede ser útil por razones de portabilidad y separación de privilegios; en otras palabras, para que la misma aplicación pueda ejecutarse en una amplia variedad de plataformas externas sin afectar nada que esté fuera de un entorno limitado administrado por la plataforma interna. Por ejemplo, Sun Microsystems diseñó la plataforma Java para cumplir con ambos objetivos.