Aplicación monolítica

En ingeniería de software, una aplicación monolítica describe una aplicación de software de un solo nivel en la que la interfaz de usuario y el código de acceso a los datos se combinan en un solo programa desde una única plataforma.

Una aplicación monolítica es autónoma e independiente de otras aplicaciones informáticas. La filosofía de diseño es que la aplicación es responsable no solo de una tarea en particular, sino que puede realizar todos los pasos necesarios para completar una función en particular. Hoy en día, algunas aplicaciones de finanzas personales son monolíticas en el sentido de que ayudan al usuario a llevar a cabo una tarea completa, de principio a fin, y son silos de datos privados en lugar de partes de un sistema más grande de aplicaciones que funcionan juntas. Algunos procesadores de texto son aplicaciones monolíticas. Estas aplicaciones a veces se asocian con computadoras centrales.

En ingeniería de software, una aplicación monolítica describe una aplicación de software diseñada sin modularidad. La modularidad es deseable, en general, ya que admite la reutilización de partes de la lógica de la aplicación y también facilita el mantenimiento al permitir la reparación o el reemplazo de partes de la aplicación sin requerir un reemplazo al por mayor.

La modularidad se logra en diversos grados mediante diferentes enfoques de modularización. La modularidad basada en código permite a los desarrolladores reutilizar y reparar partes de la aplicación, pero se requieren herramientas de desarrollo para realizar estas funciones de mantenimiento (por ejemplo, es posible que la aplicación deba recompilarse). La modularidad basada en objetos proporciona la aplicación como una colección de archivos ejecutables separados que se pueden mantener y reemplazar de forma independiente sin volver a desplegar la aplicación completa (por ejemplo, archivos «dll» de Microsoft; archivos «objetos compartidos» de Sun/UNIX). Algunas capacidades de mensajería de objetos permiten que las aplicaciones basadas en objetos se distribuyan entre varios equipos (por ejemplo, Microsoft COM+). Las arquitecturas orientadas a servicios utilizan estándares/protocolos de comunicación específicos para comunicarse entre módulos.

En su uso original, el término «monolítico» describía enormes aplicaciones de mainframe sin modularidad utilizable. Esto, en combinación con el rápido aumento de la potencia computacional y, por lo tanto, el rápido aumento de la complejidad de los problemas que podrían abordarse con el software, dio lugar a sistemas inalcanzables y a la «crisis del software».