Un código espagueti que no para de crecer y crecer. ¡Hasta el infinito!
Los espaguetis: esos largos fideos italianos que nos encantan desde niños, y que tienen la habilidad de complicarnos la vida a la hora de comerlos por su longitud. En el mundo del desarrollo de software no hay pasta italiana por en medio ni harina (afortunadamente para un celiaco como yo), pero sí que esa misma incomodidad se percibe cuando los desarrollos van creciendo de manera poco organizada.
A veces el desarrollo de los programas informáticos se plantea para solucionar los escasos requisitos iniciales, no siendo conscientes posiblemente de la evolución que puede tener ese software, sobre todo si se trata o se convierte en una pieza fundamental en el engranaje del negocio. La generación de facturas, o la creación de etiquetas, parecen funcionalidades menores, pero suelen ser buenos ejemplos de este crecimiento exponencial.
El software que va creciendo como un espagueti hace que sea difícil su análisis y mantenimiento, suponiendo un riesgo cada vez que se tiene que diseñar, desarrollar, probar, poner en producción y mantener cualquier nueva funcionalidad en su seno. Este tipo de software suele venir acompañado de una deficiente documentación, pues aunque las primeras versiones se hubiesen documentado perfectamente en todas sus etapas, con el paso del tiempo y con sólo una o dos versiones que no hayan incluido esta tarea se complica la documentación posterior o se hace incompleta.
Qué es #CodigoEspagueti? El momento de volver a un desarrollo y preguntarte: ¿de dónde ha salido todo esto? Share on XOtro punto que tiene mucho impacto en este tipo de software es la contribución de varias empresas o incluso el cambio en las personas que lo desarrollan y mantienen dentro de una misma empresa. Cada grupo se centra en su labor concreta, sin una visión de conjunto que de la estructura y directrices generales. Uniendo esto a los plazos muy ajustados y requisitos cambiantes hacen que la masa del espagueti esté “al dente”.
Actualmente hay herramientas para facilitar, organizar el trabajar en paralelo y prevenir el crecimiento en forma de espagueti como por ejemplo SonarQube. Pero igualmente depende del grado de implantación de las mismas en la organización, de que todo el código tenga al menos la misma filosofía incluyendo pruebas por cada requisito que se implementa y para el cual se crea o actualiza la documentación correspondiente.
Integra SonarQube en Visual Studio y evita el código espagueti
Cortesía de Microsoft Visual Studio
Descubrir en nuestra organización que tenemos este tipo de aplicaciones no es agradable, o describirlo en un cliente cuando nos toca enfrentarnos a un nuevo proyecto en el que no hemos podido analizar todo el código de antemano nos provoca pesadillas. El esfuerzo se tiene que centrar en la medida de lo posible en no repetir los mismos errores, en crecer con sentido, refactorizando el código siempre que sea posible para hacerlo más homogéneo.
A veces es necesaria una completa reingeniería (o refactorización). En los proyectos OpenSource a veces esto se produce de modo natural, por nuevos desarrolladores que movidos por añadir nuevas funcionalidades a su software favorito, estudian meticulosamente el código y proponen nuevas implementaciones más limpias, manejables y ampliables de partes de código existente.
«El esfuerzo, para evitar el código espagueti, se tiene que centrar en la medida de lo posible en no repetir los mismos errores, en crecer con sentido, refactorizando el código siempre que sea posible para hacerlo más homogéneno.
En los proyectos empresariales es difícil convencer a los responsables de que un programa debe realizar tareas de mantenimiento internas del código (sin añadir nuevas funcionalidades) para poder seguir creciendo con mayor velocidad y eliminando riesgos. Sin embargo a veces es lo más económico cuando hay una alta dependencia del negocio y las alternativas comerciales o realizadas a medida en mayor o menor grado son mucho más costosas (no sólo económicamente, también en cambios culturales más difíciles de asumir incluso).
Siempre queda seguir haciendo crecer el espagueti, incluyendo posiblemente código legacy que no es posible portar cuando se migra de servidores a nuevas versiones del sistema operativo, de versión de base de datos, se sube a la nube, como actividades habituales para mantener la infraestructura, o bloquea actualización de navegadores, movilización de aplicaciones y sistemas ofimáticos como inconvenientes para los clientes y para los que solo se puede ofrecer alternativa con la virtualización.
Si te ha gustado este artículo, puede que también te interese…
METODOLOGÍAS ÁGILES COMO BENCHMARKING |
Social Links: