¿Existe un antipatrón que describa un sistema de software desarrollado históricamente en el que varios desarrolladores simplemente agregaron nuevas funciones al sistema pero nadie realmente estuvo atento a la arquitectura general ni se realizaron refactorizaciones?
Creo que esto sucede cuando la gerencia / el cliente solicita nuevas funciones constantemente y nadie refactoriza nada, sino que solo agrega lo que otros desarrolladores han hecho antes.
Una razón también podría ser que el desarrollador está abrumado con el sistema de software y no comprende realmente cómo funciona actualmente y luego simplemente agrega / pega su código al final (en lugar de refactorizar el código y cambiarlo).
Entonces, con el tiempo, cada vez es más difícil mantener el sistema.
(Me pregunto si hay imágenes de este tipo de antipatrón para que esto sea más claro para la gente de programación, como un automóvil que fue construido simplemente agregando más y más funciones sin pensar en el diseño general. Como si alguien tuviera la necesidad de remolcar remolques mientras viaja hacia atrás y luego un ingeniero simplemente suelda una barra de remolque en la parte delantera del automóvil. Trabajo hecho. Pero ahora la cubierta ya no se abre).
Respuestas:
Te refieres a la deuda técnica .
Todos acumulamos deudas técnicas en los productos que desarrollamos con el tiempo; La refactorización es una de las formas más comunes y efectivas de reducir esta deuda técnica, aunque muchas empresas nunca pagan su deuda técnica. Estas compañías tienden a encontrar su software extremadamente inestable en el futuro, y la deuda técnica se vuelve tan espantosa que no puede pagarla gradualmente, porque tomaría demasiado tiempo pagarla de esa manera.
La deuda técnica tiene el término, porque sigue los mismos comportamientos de la deuda. Obtiene la deuda, y mientras continúe gastando (creando funciones) y sin pagar esa deuda, solo crecerá. Al igual que la deuda, cuando es demasiado grande, llega a puntos en los que puede desear deshacerse por completo con tareas peligrosas como reescrituras completas. También, como la deuda real, ya que se acumula hasta cierto punto, dificulta su capacidad de gastar (crear funciones) por completo.
Solo para incluir otro término en la mezcla, la cohesión se refiere a qué tan bien encaja un sistema, micro al nivel de línea o macro al nivel del sistema. Un sistema altamente cohesivo hará que todas sus piezas encajen muy bien y parezca que un ingeniero lo escribió todo. Su referencia anterior a alguien simplemente pegando su código hasta el final estaría violando la cohesión de ese sistema.
Gestión de la deuda técnica
Hay muchas maneras de administrar la deuda técnica, aunque, como la deuda real, el mejor enfoque es pagarla con frecuencia. Desafortunadamente, como la deuda real, ocasionalmente es una mejor idea acumular más por un período corto, donde, por ejemplo, el tiempo para comercializar una característica puede duplicar o triplicar sus ingresos. La parte difícil es sopesar estas prioridades en competencia, así como identificar cuándo el ROI de las deudas no vale la pena para la función dada frente a cuándo lo es.
Entonces, a veces vale la pena acumular la deuda por un período corto, pero rara vez es así, y como con todas las deudas, cuanto más corto sea el período, mejor. Entonces, eventualmente (preferiblemente rápidamente ) después de acumular deuda técnica, debe pagarla, estos son enfoques comunes:
fuente
Su descripción se ajusta a Foote and Big Ball of Mud de Yoder :
fuente