Reingeniería

refactorizar


¿Qué es Refactorización Arquitectónica?

Abril 21 de 2017 por SoTechCo


La mayoría de las personas están familiarizadas con el término refactorización, aunque muchos conocen la refactorizacion del código. En realidad, la refactorización comprende dos partes fundamentales y son: el código y la arquitectura, ‘La refactorización arquitectónica mejora el diseño de una aplicación del software existente’. ‘La refactorización arquitectónica cambia la estructura, pero no la funcionalidad.’

El problema es que, con el tiempo, la arquitectura del software se erosiona a medida que evoluciona (próximamente hablaremos sobre erosión arquitectónica). Lo que significa es que el diseño original puede perderse o nunca fue pensado para abordar nuevos requisitos. La refactorización arquitectónica, funciona como si quisiéramos rediseñar una ciudad, necesita ser hecha por partes y cada parte debe ser parte de un proceso de desarrollo controlado e iterativo. Esta refactorización se ocupa de resolver las deficiencias arquitectónicas, como romper los ciclos de dependencia, dividir los subsistemas y aplicar estrictas capas.

El objetivo es mejorar un conjunto de atributos de calidad tales como rendimiento, escalabilidad, extensibilidad, testeo y robustez. Dado que estás características están más involucradas a la refactorización arquitectónica que a la refactorización del código, la refactorización arquitectónica es algo más que una tarea técnica: trata de justificar su diseño, crear un caso y presentar sus ideas en un plan bien pensado para su negocio.

Refactorización arquitectónica vs refactorización de código

La refactorización arquitectónica suele implicar la refactorización de código, por eso suele presentarse la confusión entre los dos. Como decia Martin Fowler, “la refactorización de código reestructura el código para hacerlo más fácil de mantener sin cambiar su comportamiento observable”. Para la refactorización de código, se enfoca en entidades de software como paquetes, clases y métodos.

La refactorización del código es una actividad de fondo que preserva la estructura. La refactorización arquitectónica es una actividad descendente que mejora la estructura. La refactorización arquitectónica pertenece a componentes, conectores, subsistemas e interfaces. La refactorización arquitectónica es un proceso deliberado para eliminar deficiencias arquitectónicas sin cambiar el ámbito ni la funcionalidad del código. Cuando se refactoriza la arquitectura, se puede revisar decisiones arquitectónicas, ahora con más conocimiento de dominio, y buscar mejores alternativas.

Cómo realizar refactorización arquitectónica

"Architecture is the stuff that’s hard to change"

- Martin Fowler

La refactorización arquitectónica debe ser parte de un proceso de desarrollo iterativo. La meta es hacer mejoras incrementales en cada ciclo de desarrollo o sprint. A continuación, se describen los pasos para realizar está refactorización:

1. Comprender y visualizar la arquitectura actual. Este primer paso es fundamental para dejar los errores de lado y los cambios permitan ser soluciones y no problemas en el corto y largo plazo. Una Matriz de Estructura de Dependencias (DSM) es una excelente manera de visualizar la arquitectura actual "Cómo Leer un Matriz de Estructura de Dependencias". Esto rápidamente le da una comprensión de los componentes en su sistema de software y cómo están conectados entre sí. Con este conocimiento, es posible que encuentre que sus sistemas o componentes están demasiado acoplados o demasiado dependientes entre sí.

2. Determinar qué cambios arquitectónicos son necesarios. Por ejemplo, si usted tiene una aplicación monolítica, tal vez la división en múltiples unidades o servicios es la respuesta (microservicios).

3. Desarrollar un plan de refactorización de alto nivel. Cree una lista de trabajo de elementos que deben ser arreglados. Si está utilizando una herramienta como Lattix Architect, puede establecer reglas para asegurarse de que las futuras compilaciones no rompan la arquitectura que desea "Cómo especificar las reglas de arquitectura".

4. Supervise la arquitectura mientras refactoriza. La refactorización arquitectónica debe hacerse de forma incremental. La arquitectura debe ser monitoreada para asegurarse de que está tendiendo hacia un estado limpio y no se están introduciendo nuevas infracciones de arquitectura.

Resumen

La refactorización arquitectónica es más que una tarea técnica. Se trata de crear un caso adecuado y vender sus ideas. Siempre recuerde identificar el valor del negocio asociado con el esfuerzo de refactorización para justificar el costo. Esto puede ser:

1. Un mayor rendimiento
2. Una reducción del tiempo de inactividad
3. Una entrega más rápida y tiempo de comercialización
4. Y una calidad mejorada.

Finalmente, la arquitectura del software debe ser monitoreada continuamente porque a medida que el software evoluciona (cambia), la arquitectura se pierde y decae. Cuanto más larga sea la arquitectura sin control, más costosa será la refactorización arquitectónica. Una solución como Lattix Architect que está diseñada para la refactorización arquitectónica puede simplificar en un 70% el proceso.

Para mayor información visita www.sotechco/lattix.html

Derechos reservados © by SoTechCo 2015