Luego de investigar con especialistas en este tema, programadores de diversas ramas y maestros dimos con la respuesta al dilema y la plasmamos en este post.
Solución:
Interesante pregunta. No creo que haya definiciones formales de lo que es una clase monolítica, pero tienes la idea. Una clase que contiene múltiples componentes que están lógicamente desconectados o acoplados sin sentido es una clase monolítica.
si has leído The Pragmatic Programmer
que recomiendo encarecidamente, puede definir una clase monolítica como un antipatrón que va en contra de casi todo lo de ese libro.
En cuanto a los ejemplos, encontrará más en el ámbito del diseño de chips y sistemas operativos, donde hay definiciones formales de chips/núcleos monolíticos, que son similares a una clase monolítica. Aquí hay algunos ejemplos, aunque se puede argumentar que cada uno de ellos no está en esta lista:
- JOGL: enlaces Java para OpenGL. Esto podría ser discutible, y con buena razón.
- La mayoría de los proyectos académicos – Por razones obvias.
Si comenzó a programar solo, en lugar de unirse a un equipo, es probable que pueda abrir uno de sus primeros proyectos y habrá una clase que es monolítica.
Si buscas la etimología de la palabra, verás que proviene del griego monos (único) y lithos (piedra). En el contexto del software como lo menciona, describe una aplicación de un solo nivel en la que el código para la interfaz de usuario y el acceso a los datos se combinan en un solo programa desde una sola plataforma.
“Monolítico” es un término que se ha utilizado para calificar de software exitoso. Este enlace expone los supuestos inherentes al término, y su utilidad limitada.
La suposición básica es que un sistema funciona mejor si se construye a partir de componentes de software, cada uno de los cuales tiene una tarea individual bien definida. Intuitivamente, esto parece correcto. Si cada componente funciona, todo el sistema debe funcionar, ¿no?
En realidad, no es tan fácil. Un sistema de composición más grande (no monolítico) puede perder una función crítica, incluso cuando no hay un solo componente al que culpar. Esto sucede cuando el diseño arquitectónico no logra asignar una función a ningún componente específico. Esto puede suceder especialmente si se trata de una función que no se asigna claramente a un solo componente.
Ahora Linux (para continuar con el ejemplo vinculado) en realidad no es monolítico. Tiene un espacio de usuario modular sobre un kernel monolítico, un espacio de usuario que viene con muchas utilidades separadas. Excepto cuando no es así.
Si te gustó nuestro trabajo, tienes la habilidad dejar una división acerca de qué le añadirías a este escrito.