Una gran bola de barro es un sistema de software que carece de una arquitectura perceptible. Aunque no son deseables desde el punto de vista de la ingeniería de software, estos sistemas son comunes en la práctica debido a las presiones comerciales, la rotación de los desarrolladores y la entropía del código . Son un tipo de diseño anti-patrón .
En programas de computadora
El término se popularizó en el artículo de 1997 de Brian Foote y Joseph Yoder del mismo nombre, que define el término:
A Big Ball of Mud es una jungla de código espagueti estructurado al azar, extenso, descuidado, con cinta adhesiva y alambre para empacar . Estos sistemas muestran signos inconfundibles de crecimiento descontrolado y reparaciones oportunas y repetidas. La información se comparte de manera promiscua entre elementos distantes del sistema, a menudo hasta el punto en que casi toda la información importante se vuelve global o se duplica.
Es posible que la estructura general del sistema nunca haya estado bien definida.
Si lo fue, es posible que se haya erosionado más allá del reconocimiento. Los programadores con una pizca de sensibilidad arquitectónica evitan estos atolladeros. Solo aquellos que no se preocupan por la arquitectura y, tal vez, se sienten cómodos con la inercia de la tarea diaria de reparar los agujeros en estos diques defectuosos, se contentan con trabajar en tales sistemas.
- Brian Foote y Joseph Yoder, Big Ball of Mud. Cuarta conferencia sobre lenguajes de patrones de programas (PLoP '97 / EuroPLoP '97) Monticello, Illinois, septiembre de 1997
Foote y Yoder han acreditado a Brian Marick como el creador del término 'gran bola de barro' para este tipo de arquitectura. [1]
Se recomienda encarecidamente a los programadores que controlan un gran proyecto de bola de barro que lo estudien y comprendan lo que logra, y que lo utilicen como una base flexible para un conjunto formal de requisitos para un sistema bien diseñado que podría reemplazarlo. Los cambios tecnológicos, como los de cliente-servidor a basados en la web o basados en archivos a basados en bases de datos, pueden proporcionar buenas razones para empezar de cero. [ cita requerida ]
En relación a Lisp
En la discusión del lenguaje de programación Lisp, el término gran bola de barro se usa de manera diferente, en este caso para describir la maleabilidad de un sistema Lisp. En Lisp, generalmente es posible:
- Escriba fácilmente macros que le den control sobre la sintaxis del lenguaje , de modo que la notación se parezca más al dominio del problema.
- Utilice un estilo de programación dirigido a datos
- Ejecutar partes de un programa en tiempo de compilación en lugar de tiempo de ejecución
- Guarde una imagen del sistema de una implementación Lisp modificada para uso futuro
Como resultado de la confluencia de estas características, Lisp es extraordinariamente flexible, incluso hasta tal punto que la implementación del lenguaje en sí puede reescribirse completamente durante el tiempo de ejecución (es decir, metaprogramación reflectante ), lo que puede hacer que los sistemas Lisp se vuelvan "confusos" con el tiempo debido a a la fluidez y facilidad con que se pueden ampliar y evolucionar mediante un uso sencillo. La abstracción metalingüística , una característica destacada de Lisp, también permite a los programadores desarrollar vocabularios conceptuales completamente nuevos e idiosincrásicos para describir los procesos y funciones por los que pasan sus programas al abordar un dominio de problemas y, si se combina con una documentación deficiente del software, puede resultar en sistemas Lisp. que funcionan bastante bien y de hecho están bastante bien estructurados desde una perspectiva de diseño, pero solo son comprensibles para los codificadores originales, o para cualquier otra persona que esté dispuesta a invertir el tiempo para examinar capas de código altamente recursivo .
A Joel Moses se le atribuye haber acuñado la frase en la década de 1970: [2]
APL es como un hermoso diamante: impecable, bellamente simétrico. Pero no puedes agregarle nada. Si intentas pegar otro diamante, no obtienes un diamante más grande. Lisp es como una bola de barro. Agregue más y seguirá siendo una bola de barro, todavía se parece a Lisp.
Moses lo niega enérgicamente, afirmando que en cambio llamó a Lisp una bolsa de frijoles porque siempre vuelve a su forma original. [3]
Ver también
Notas
- ^ Foote, Brian; Yoder, Joseph (26 de junio de 1999). "Gran bola de barro" . laputan.org . Consultado el 14 de abril de 2019 .
- ^ Richard P. Gabriel y Guy L. Steele (1996). "La evolución de Lisp" . Historia de los lenguajes de programación de ACM — II . 28 (3): 233–330. doi : 10.1145 / 155360.155373 .
- ^ Thomas J. Bergin y Richard J. Gibson (1996). "Material suplementario de HOPL II" . Avisos ACM SIGPLAN . 31 (11): 9-20. doi : 10.1145 / 240964.1198155 .
Referencias
- Guy L. Steele, Jr. y Richard P. Gabriel The Evolution of Lisp [1] , nota sobre la referencia 128
- Brian Foote y Joseph Yoder, Cuarta conferencia de Big Ball of Mud sobre lenguajes de patrones de programas (PLoP '97 / EuroPLoP '97) Monticello, Illinois, septiembre de 1997