Reestructuración de Código
La reestructuración de código fuente nació como la “aplicación de modificaciones al código fuente para hacerlo más fácil de cambiar y de comprender, o hacerlo menos menos suscepti susceptible ble a errores errores cuando cuando futuros futuros cambios cambios sean sean aplicad aplicados”. os”. Cabe Cabe desta destacar car que en la defin definic ición ión utili utiliza zada da se exclu excluye ye a la rees reestru tructu cturac ración ión para para cualquier otro propósito, como la meora del código para aumentar performance, la transformación de código para paralelizar, etc. !ista como tal, la reestructuración es una herramienta que podr"a ayudar a resol#er el problema del enorme esfuerzo que que se requ requie iere re en la fase fase de mant manten enim imie ient nto, o, dent dentro ro del del cicl ciclo o de #ida #ida del del desarrollo del soft$are. %xisten otros moti#os por los cuales la reestructuración del código fuente debe ser tenida en cuenta por los ingenieros de &oft$are' •
•
• • •
(actores que están asociados a la comprensibilidad del código fuente' (acilitar la documentación. o (acilitar las tareas de testing. o (acilitar las tareas de auditor"a. o )educir potencialmente la compleidad del soft$are. o )educir )educir el tiempo que necesitan los programadores programadores para familiarizarse con el sistema antes de implementar tareas de mantenimiento. *acer más fácil el reconocimiento de errores. (acilitar la introducción de nue#a funcionalidad. +mplementación de estándares en la estructura del código.
La reestructuración de programas surge como herramienta necesaria para ser aplicada en los procesos de mantenimiento debido a las caracter"sticas esenciales del soft$are para reducir los costos de esta fase del proceso de desarrollo y como herramienta en la introducción de nue#a funcionalidad dentro del ciclo e#oluti#o de las aplicaciones. %l obet obeti# i#o o de la reest reestruc ructur turac ación ión de soft$ soft$are are es princ principa ipalme lment nte e mante mantener ner o aumentar el #alor del mismo. %xteriormente, el #alor se aumenta, mediante la satisfacción de los usuarios, ya estn -estos relacionados con el proyecto o no. medi medida da que que los los usuar suario ios s gene genera ran n y peti petici cion onan an camb cambio ios, s, debid ebidos os a las las caracter"sticas del dominio de la aplicación, estas modificaciones son plasmadas durante la etapa de mantenimiento, haciendo que los programas se #uel#an más y más r"gidos tornándose paulatinamente más dif"ciles de modificar. +nternamente, el #alor del soft$are puede ser medido' a/ por el ahorro en costo de mantenimiento que una aplicación puede aportar a otra0 b/ por el ahorro que proporciona la reutilización reutilización de componentes en otras aplicaciones0 y c/ por el ahorro incurrido en la ampliación del ciclo de #ida del sistema pre#io a su reposición por uno nue#o. Como puede #erse la reestructuración de código fuente reduce los costos de mantenimiento, a su #ez aumenta la posibilidad de reutilización de componentes
en otros sistemas y ampl"a el ciclo de #ida del sistema aumentando de esta manera el #alor del mismo. 1or ende, es importante a la hora de planear la aplicación de reestructuración de código e#aluar cómo ese proceso de reestructuración aumentará el #alor actual del sistema. &e proponen distintas tcnicas de restructuración de soft$are que se listan a continuación' 2. 3cnicas de reestructuración orientadas a medicaciones en el código fuente' a. %l estilo de programación' &e intenta reestructurar el código fuente de una aplicación para hacerlo más fácil de comprender' i. 1retty printing and code formatting' &e meora el aspecto del código fuente aplicando identación, espaciado, se lle#a a una instrucción por l"nea, etc. ii. %standarización del estilo de programación' &e modi4ca el código fuente del programa para hacerlo compatible con alg5n estándar, por eemplo estándar de C676L, (6)3)8, etc. iii. )eestructuración con pre9procesado' &e sustituye código fuente con directi#as más fáciles de comprender que posterior9 mente serán reemplazadas por el código original. b. 1aquetes : Código )eusable' %sta tcnica consiste en la utilización de componentes, paquetes, bibliotecas ya utilizadas anteriormente. i. )eestructuración para reusabilidad' &e modi4ca el código fuente de forma tal que se medique para poder ser apro#echado en otros programas. ii. dquirir un paquete para sustituir un sistema obsoleto' &e sustituye un programa #ieo con otro de similares caracter"sticas. iii. dquirir un componente para sustituir un programa y además extender su funcionalidad' &e compra un componente nue#o que pueda extender incluso la funcionalidad del sistema a reemplazar. %sta tcnica se utiliza cuando es muy riesgoso o económicamente in#iable la construcción de una nue#a aplicación para reemplazar una #iea. i#. dquirir un componente para reemplazar parte de un sistema #ieo' +gual que el anterior, pero el 8ue#o componente solo reemplaza una parte del !ieo programa. #. 3cnica del sistema sánd$ich' %sta tcnica es utilizada en aplicaciones con una intrincada y complea estructura. &e #an haciendo reestructuraciones en capas, por eemplo la interfaz de usuario, la capa de base de datos. &uponiendo una lógica de negocio complea, se utiliza esta capa como una caa negra. ; se encierra en sánd$ich entre las otras capas. c. Control de fluo'
n5mero de herramientas. >entro de las tcnicas de reestructuración es una de las más compleas. i. %liminación de go9to' todas las tcnicas abao enumeradas en este apartado, intentan eliminar los go9to no estructurados de un programa' 2. %arly goto9less approach. ?. @iant case statement approach. A. 7oolean =ag approach. B. >uplication of coding approach. . 7aDerEs graph9theoretic approach. F. )efined case statement approach. ii. Las herramientas enumeradas a continuación son utilizadas para reestructuración de programas C676L de di#ersas empresas' 2. )%3)6(+3 Gtm/. ?. &<1%)&3)
%) Gtm/. B. Cobol &tructuring (acility Gtm/. . >elta &3)oble con#ersión. d. >atos' La reestructuración de soft$are básicamente se centró en la reestructuración de las estructuras de control y no en los datos. %ste hecho no implica la imposibilidad de aplicar reestructuring a datos en una base de datos. 1or eemplo cuando se aplica el proceso de normalización, pasar de ?da. forma normal a Ara. forma normal, en ese proceso se puede decir que hay una reestructuración de los datos de una aplicación. ?. >ocumentación o ctualización de la documentación' Consiste en mantener actualizada la documentación de un sistema, facilitando as" la reingenier"a y la aplicación de ingenier"a in#ersa. a. )e9Iodularización' %studia la forma de descomponer una aplicación en módulos que posean alg5n criterio de signi4cación. 1uede aplicarse a sistemas ya modularizados. b. uto documentación'
La reestructuración de datos es una acti#idad de reingenier"a a gran escala. %n la mayor"a de los casos, la reestructuración de datos comienza con una acti#idad de ingenier"a in#ersa. La arquitectura de datos actual se analiza con minuciosidad y se define los modelos de datos necesarios, se identifican los obeti#os de datos y los atributo, y despus se re#isa la calidad de las estructuras de datos existentes.
• • •
•
•
1rimero se realiza el análisis del código. &e e#al5an las definiciones de los datos, archi#os, +:6 e +nterfaces. %xtraer elementos y obetos de datos para obtener información del fluo de datos y comprender la estructura )ediseJo de datos trata de que exista consistencia de los mismos Gnombres y formatos de registro/ en una estructura o archi#o. )acionalización de nombre asegura que el nombramiento de datos concuerde con el estándar local y elimina los pseudónimos Gfluo de datos a tra#s del sistema/
Definición de Datos (Variables)
Las notaciones de los distintos datos de almacenamiento dentro de código se centran en qu es lo que guardan y su uso final, es tal la forma que normalmente se mantienen una notación para entender muy bien estos aspectos, tales como' •
•
Camel' %sta notación funciona más que todo para la diferenciación de secuencia con respecto a un nombre de más de una palabra' o
Constantes
&on creadas usando los modificadores static final y se debe utilizar solo may5sculas, si son ? palabras o más se separan mediante guion bao KK. Bases de Datos •
• • • •
para meorar su diseJo manteniendo su semántica y comportamiento. )efactorizar aspectos estructurales' definiciones de tablas y #istas. )efactorizar aspectos funcionales' stored procedures y triggers. )efactorizaciones sobre 7>s son más dif"ciles de implementar. Los impedimentos son del tipo cultural y carencia de herramientas.
Iecanismos para reestructuración de base de datos' &i la columna es cla#e principal, remo#erla de las cla#es foráneas asociadas y reemplazar la cla#e primaria en la tabla. •
• • • •
•
•
Iecanismos de migración Iecanismos de actualización de esquemas )emo#er restricciones de cla#es foráneas hacia la tabla a eliminar )enombrar la tabla y automáticamente se cambian todas las referencias hacia la tabla renombrada >eterminar estrategia de sincronización' batch obs, actualizaciones, triggers. Crear la tabla que será la mezcla de las dos tablas ¿Cuándo Refactorizar?
• •
•
Cuando el soft$are no es claro yuda a e#itar redundancia de código originando en muchos casos menor tamaJo. plicar regla de tres' 1ara aJadir una nue#a funcionalidad o Cuando se necesita localizar un error o o Como re#isión del código Consideraciones
• • • •
!a más allá de limpiar código %s el arte de meorar de manera segura el diseJo de código existente 8o es reescribir todo desde cero 8o se calendariza