You are on page 1of 5

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 susceptible a errores cuando futuros cambios sean aplicados”. Cabe
destacar que en la definición utilizada se excluye a la reestructuración para
cualquier otro propósito, como la mejora del código para aumentar performance, la
transformación de código para paralelizar, etc. Vista como tal, la reestructuración
es una herramienta que podría ayudar a resolver el problema del enorme esfuerzo
que se requiere en la fase de mantenimiento, dentro del ciclo de vida del
desarrollo del software. Existen otros motivos por los cuales la reestructuración del
código fuente debe ser tenida en cuenta por los ingenieros de Software:




Factores que están asociados a la comprensibilidad del código fuente:
o Facilitar la documentación.
o Facilitar las tareas de testing.
o Facilitar las tareas de auditoría.
o Reducir potencialmente la complejidad del software.
Reducir el tiempo que necesitan los programadores para familiarizarse con
el sistema antes de implementar tareas de mantenimiento.
Hacer más fácil el reconocimiento de errores.
Facilitar la introducción de nueva funcionalidad.
Implementació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 software para reducir los costos de esta fase del proceso de desarrollo y como
herramienta en la introducción de nueva funcionalidad dentro del ciclo evolutivo de
las aplicaciones.
El objetivo de la reestructuración de software es principalmente mantener o
aumentar el valor del mismo. Exteriormente, el valor se aumenta, mediante la
satisfacción de los usuarios, ya estén ´estos relacionados con el proyecto o no. A
medida que los usuarios generan y peticionan cambios, debidos a las
características del dominio de la aplicación, estas modificaciones son plasmadas
durante la etapa de mantenimiento, haciendo que los programas se vuelvan más y
más rígidos tornándose paulatinamente más difíciles de modificar. Internamente, el
valor del software puede ser medido: a) por el ahorro en costo de mantenimiento
que una aplicación puede aportar a otra; b) por el ahorro que proporciona la
reutilización de componentes en otras aplicaciones; y c) por el ahorro incurrido en
la ampliación del ciclo de vida del sistema previo a su reposición por uno nuevo.
Como puede verse la reestructuración de código fuente reduce los costos de
mantenimiento, a su vez aumenta la posibilidad de reutilización de componentes

Adquirir un componente para reemplazar parte de un sistema viejo: Igual que el anterior. espaciado. Adquirir un paquete para sustituir un sistema obsoleto: Se sustituye un programa viejo con otro de similares características. Técnica del sistema sándwich: Esta técnica es utilizada en aplicaciones con una intrincada y compleja estructura. Por ende. ii. Pretty printing and code formatting: Se mejora el aspecto del código fuente aplicando identación. iii. se lleva a una instrucción por línea. Control de flujo: Uno de los motivos por los cuales surge la reestructuración. Técnicas de reestructuración orientadas a medicaciones en el código fuente: a. Y se encierra en sándwich entre las otras capas. v. por ejemplo la interfaz de usuario. ii. etc. Reestructuración para reusabilidad: Se modifica el código fuente de forma tal que se medique para poder ser aprovechado en otros programas. Se proponen distintas técnicas de restructuración de software que se listan a continuación: 1. Esta categoría permitió desarrollar un gran .en otros sistemas y amplía el ciclo de vida del sistema aumentando de esta manera el valor del mismo. c. Reestructuración con pre-procesado: Se sustituye código fuente con directivas más fáciles de comprender que posterior. El estilo de programación: Se intenta reestructurar el código fuente de una aplicación para hacerlo más fácil de comprender: i. Esta técnica se utiliza cuando es muy riesgoso o económicamente inviable la construcción de una nueva aplicación para reemplazar una vieja. iii. pero el Nuevo componente solo reemplaza una parte del Viejo programa. i. se utiliza esta capa como una caja negra. por ejemplo estándar de COBOL. b. FORTRAN. iv.mente serán reemplazadas por el código original. Paquetes / Código Reusable: Esta técnica consiste en la utilización de componentes. Adquirir un componente para sustituir un programa y además extender su funcionalidad: Se compra un componente nuevo que pueda extender incluso la funcionalidad del sistema a reemplazar. paquetes. Estandarización del estilo de programación: Se modifica el código fuente del programa para hacerlo compatible con algún estándar. Se van haciendo reestructuraciones en capas. es importante a la hora de planear la aplicación de reestructuración de código evaluar cómo ese proceso de reestructuración aumentará el valor actual del sistema. la capa de base de datos. etc. Suponiendo una lógica de negocio compleja. bibliotecas ya utilizadas anteriormente. es justamente para mejorar y hacer más sencillo el flujo de un programa.

3. Datos: La reestructuración de software básicamente se centró en la reestructuración de las estructuras de control y no en los datos. 6. pasar de 2da. SUPERSTRUCTURE (tm). Puede aplicarse a sistemas ya modularizados. d. 4. Auto documentación: Utiliza herramientas que permitan agregar meta información dentro de los programas para mejorar la comprensibilidad del mismo. y después se revisa la calidad de las estructuras de datos existentes. b. 4. a. 5. en ese proceso se puede decir que hay una reestructuración de los datos de una aplicación. forma normal. i. Delta STRUCTURIZER (tm). Baker’s graph-theoretic approach. Las herramientas enumeradas a continuación son utilizadas para reestructuración de programas COBOL de diversas empresas: 1. En la mayoría de los casos. 2. forma normal a 3ra. RETROFIT (tm).número de herramientas. 2. 6. Eliminación de go-to: todas las técnicas abajo enumeradas en este apartado. intentan eliminar los go-to no estructurados de un programa: 1. Por ejemplo cuando se aplica el proceso de normalización. 2. Este hecho no implica la imposibilidad de aplicar reestructuring a datos en una base de datos. ii. Boolean flag approach. Documentación o Actualización de la documentación: Consiste en mantener actualizada la documentación de un sistema. Early goto-less approach. 3. 5. Doble conversión. Re-Modularización: Estudia la forma de descomponer una aplicación en módulos que posean algún criterio de significación. La arquitectura de datos actual se analiza con minuciosidad y se define los modelos de datos necesarios. Giant case statement approach. Refined case statement approach. Duplication of coding approach. se identifican los objetivos de datos y los atributo. RECORDER (tm). Dentro de las técnicas de reestructuración es una de las más complejas. la reestructuración de datos comienza con una actividad de ingeniería inversa. facilitando así la reingeniería y la aplicación de ingeniería inversa. Reestructuración de Datos La reestructuración de datos es una actividad de reingeniería a gran escala. Cobol Structuring Facility (tm). .

o lowerCamelCase: igual que la anterior con la excepción de que la primera letra es minúscula. tales como:   Camel: Esta 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 UpperCamelCase: cuando la primera letra de cada una de las palabras es mayúscula. Racionalización de nombre asegura que el nombramiento de datos concuerde con el estándar local y elimina los pseudónimos (flujo de datos a travé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. Refactorizar aspectos estructurales: definiciones de tablas y vistas. Constantes Son creadas usando los modificadores static final y se debe utilizar solo mayúsculas. Refactorizaciones sobre BDs son más difíciles de implementar. archivos. Se evalúan las definiciones de los datos. Refactorizar aspectos funcionales: stored procedures y triggers. Bases de Datos      Un cambio en el esquema de BD para mejorar su diseño manteniendo su semántica y comportamiento. . Mecanismos para reestructuración de base de datos:  Si la columna es clave principal. I/O e Interfaces. Extraer elementos y objetos de datos para obtener información del flujo de datos y comprender la estructura Rediseño de datos trata de que exista consistencia de los mismos (nombres y formatos de registro) en una estructura o archivo. Notación húngara: Consiste en tener variables autodocumentadas agregando un prefijo de tres caracteres o menos para indicar su tipo. Los impedimentos son del tipo cultural y carencia de herramientas. removerla de las claves foráneas asociadas y reemplazar la clave primaria en la tabla.     Primero se realiza el análisis del código. si son 2 palabras o más se separan mediante guion bajo "_". es tal la forma que normalmente se mantienen una notación para entender muy bien estos aspectos.

actualizaciones.      Mecanismos de migración Mecanismos de actualización de esquemas Remover restricciones de claves foráneas hacia la tabla a eliminar Renombrar la tabla y automáticamente se cambian todas las referencias hacia la tabla renombrada Determinar estrategia de sincronización: batch jobs. triggers. Aplicar regla de tres: o Para añadir una nueva funcionalidad o Cuando se necesita localizar un error o Como revisión del código Consideraciones     Va más allá de limpiar código Es el arte de mejorar de manera segura el diseño de código existente No es reescribir todo desde cero No se calendariza . Crear la tabla que será la mezcla de las dos tablas ¿Cuándo Refactorizar?    Cuando el software no es claro Ayuda a evitar redundancia de código originando en muchos casos menor tamaño.