You are on page 1of 5

Reestructuracin de Cdigo

La reestructuracin de cdigo fuente naci como la aplicacin de modificaciones


al cdigo fuente para hacerlo ms fcil de cambiar y de comprender, o hacerlo
menos susceptible a errores cuando futuros cambios sean aplicados. Cabe
destacar que en la definicin utilizada se excluye a la reestructuracin para
cualquier otro propsito, como la mejora del cdigo para aumentar performance, la
transformacin de cdigo para paralelizar, etc. Vista como tal, la reestructuracin
es una herramienta que podra 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 reestructuracin del
cdigo fuente debe ser tenida en cuenta por los ingenieros de Software:

Factores que estn asociados a la comprensibilidad del cdigo fuente:


o Facilitar la documentacin.
o Facilitar las tareas de testing.
o Facilitar las tareas de auditora.
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 ms fcil el reconocimiento de errores.
Facilitar la introduccin de nueva funcionalidad.
Implementacin de estndares en la estructura del cdigo.

La reestructuracin de programas surge como herramienta necesaria para ser


aplicada en los procesos de mantenimiento debido a las caractersticas esenciales
del software para reducir los costos de esta fase del proceso de desarrollo y como
herramienta en la introduccin de nueva funcionalidad dentro del ciclo evolutivo de
las aplicaciones.
El objetivo de la reestructuracin de software es principalmente mantener o
aumentar el valor del mismo. Exteriormente, el valor se aumenta, mediante la
satisfaccin de los usuarios, ya estn estos relacionados con el proyecto o no. A
medida que los usuarios generan y peticionan cambios, debidos a las
caractersticas del dominio de la aplicacin, estas modificaciones son plasmadas
durante la etapa de mantenimiento, haciendo que los programas se vuelvan ms y
ms rgidos tornndose paulatinamente ms difciles de modificar. Internamente, el
valor del software puede ser medido: a) por el ahorro en costo de mantenimiento
que una aplicacin puede aportar a otra; b) por el ahorro que proporciona la
reutilizacin de componentes en otras aplicaciones; y c) por el ahorro incurrido en
la ampliacin del ciclo de vida del sistema previo a su reposicin por uno nuevo.
Como puede verse la reestructuracin de cdigo fuente reduce los costos de
mantenimiento, a su vez aumenta la posibilidad de reutilizacin de componentes

en otros sistemas y ampla el ciclo de vida del sistema aumentando de esta


manera el valor del mismo. Por ende, es importante a la hora de planear la
aplicacin de reestructuracin de cdigo evaluar cmo ese proceso de
reestructuracin aumentar el valor actual del sistema.
Se proponen distintas tcnicas de restructuracin de software que se listan a
continuacin:
1. Tcnicas de reestructuracin orientadas a medicaciones en el cdigo fuente:
a. El estilo de programacin: Se intenta reestructurar el cdigo fuente de
una aplicacin para hacerlo ms fcil de comprender:
i. Pretty printing and code formatting: Se mejora el aspecto del
cdigo fuente aplicando identacin, espaciado, se lleva a una
instruccin por lnea, etc.
ii. Estandarizacin del estilo de programacin: Se modica el cdigo
fuente del programa para hacerlo compatible con algn estndar,
por ejemplo estndar de COBOL, FORTRAN, etc.
iii. Reestructuracin con pre-procesado: Se sustituye cdigo fuente
con directivas ms fciles de comprender que posterior- mente
sern reemplazadas por el cdigo original.
b. Paquetes / Cdigo Reusable: Esta tcnica consiste en la utilizacin de
componentes, paquetes, bibliotecas ya utilizadas anteriormente.
i. Reestructuracin para reusabilidad: Se modica el cdigo fuente
de forma tal que se medique para poder ser aprovechado en
otros programas.
ii. Adquirir un paquete para sustituir un sistema obsoleto: Se
sustituye un programa viejo con otro de similares caractersticas.
iii. Adquirir un componente para sustituir un programa y adems
extender su funcionalidad: Se compra un componente nuevo que
pueda extender incluso la funcionalidad del sistema a reemplazar.
Esta tcnica se utiliza cuando es muy riesgoso o
econmicamente inviable la construccin de una nueva aplicacin
para reemplazar una vieja.
iv. Adquirir un componente para reemplazar parte de un sistema
viejo: Igual que el anterior, pero el Nuevo componente solo
reemplaza una parte del Viejo programa.
v. Tcnica del sistema sndwich: Esta tcnica es utilizada en
aplicaciones con una intrincada y compleja estructura. Se van
haciendo reestructuraciones en capas, por ejemplo la interfaz de
usuario, la capa de base de datos. Suponiendo una lgica de
negocio compleja, se utiliza esta capa como una caja negra. Y se
encierra en sndwich entre las otras capas.
c. Control de flujo: Uno de los motivos por los cuales surge la
reestructuracin, es justamente para mejorar y hacer ms sencillo el
ujo de un programa. Esta categora permiti desarrollar un gran

nmero de herramientas. Dentro de las tcnicas de reestructuracin es


una de las ms complejas.
i. Eliminacin de go-to: todas las tcnicas abajo enumeradas en
este apartado, intentan eliminar los go-to no estructurados de un
programa:
1. Early goto-less approach.
2. Giant case statement approach.
3. Boolean ag approach.
4. Duplication of coding approach.
5. Bakers graph-theoretic approach.
6. Refined case statement approach.
ii. Las herramientas enumeradas a continuacin son utilizadas para
reestructuracin de programas COBOL de diversas empresas:
1. RETROFIT (tm).
2. SUPERSTRUCTURE (tm).
3. RECORDER (tm).
4. Cobol Structuring Facility (tm).
5. Delta STRUCTURIZER (tm).
6. Doble conversin.
d. Datos: La reestructuracin de software bsicamente se centr en la
reestructuracin de las estructuras de control y no en los datos. Este
hecho no implica la imposibilidad de aplicar reestructuring a datos en
una base de datos. Por ejemplo cuando se aplica el proceso de
normalizacin, pasar de 2da. forma normal a 3ra. forma normal, en ese
proceso se puede decir que hay una reestructuracin de los datos de
una aplicacin.
2. Documentacin o Actualizacin de la documentacin: Consiste en mantener
actualizada la documentacin de un sistema, facilitando as la reingeniera y la
aplicacin de ingeniera inversa.
a. Re-Modularizacin: Estudia la forma de descomponer una aplicacin en
mdulos que posean algn criterio de signicacin. Puede aplicarse a
sistemas ya modularizados.
b. Auto documentacin: Utiliza herramientas que permitan agregar meta
informacin dentro de los programas para mejorar la comprensibilidad
del mismo.
Reestructuracin de Datos
La reestructuracin de datos es una actividad de reingeniera a gran escala. En la
mayora de los casos, la reestructuracin de datos comienza con una actividad de
ingeniera inversa. La arquitectura de datos actual se analiza con minuciosidad y
se define los modelos de datos necesarios, se identifican los objetivos de datos y
los atributo, y despus se revisa la calidad de las estructuras de datos existentes.

Primero se realiza el anlisis del cdigo.


Se evalan las definiciones de los datos, archivos, I/O e Interfaces.
Extraer elementos y objetos de datos para obtener informacin del flujo de
datos y comprender la estructura
Rediseo de datos trata de que exista consistencia de los mismos (nombres
y formatos de registro) en una estructura o archivo.
Racionalizacin de nombre asegura que el nombramiento de datos
concuerde con el estndar local y elimina los pseudnimos (flujo de datos a
travs del sistema)

Definicin de Datos (Variables)


Las notaciones de los distintos datos de almacenamiento dentro de cdigo se
centran en qu es lo que guardan y su uso final, es tal la forma que normalmente
se mantienen una notacin para entender muy bien estos aspectos, tales como:

Camel: Esta notacin funciona ms que todo para la diferenciacin de


secuencia con respecto a un nombre de ms de una palabra:
o UpperCamelCase: cuando la primera letra de cada una de las
palabras es mayscula.
o lowerCamelCase: igual que la anterior con la excepcin de que la
primera letra es minscula.
Notacin hngara: Consiste en tener variables autodocumentadas
agregando un prefijo de tres caracteres o menos para indicar su tipo.

Constantes
Son creadas usando los modificadores static final y se debe utilizar solo
maysculas, si son 2 palabras o ms se separan mediante guion bajo "_".
Bases de Datos

Un cambio en el esquema de BD para mejorar su diseo manteniendo su


semntica y comportamiento.
Refactorizar aspectos estructurales: definiciones de tablas y vistas.
Refactorizar aspectos funcionales: stored procedures y triggers.
Refactorizaciones sobre BDs son ms difciles de implementar.
Los impedimentos son del tipo cultural y carencia de herramientas.

Mecanismos para reestructuracin de base de datos:


Si la columna es clave principal, removerla de las claves forneas
asociadas y reemplazar la clave primaria en la tabla.

Mecanismos de migracin
Mecanismos de actualizacin de esquemas
Remover restricciones de claves forneas hacia la tabla a eliminar
Renombrar la tabla y automticamente se cambian todas las referencias
hacia la tabla renombrada
Determinar estrategia de sincronizacin: batch jobs, actualizaciones,
triggers.
Crear la tabla que ser la mezcla de las dos tablas
Cundo Refactorizar?

Cuando el software no es claro


Ayuda a evitar redundancia de cdigo originando en muchos casos menor
tamao.
Aplicar regla de tres:
o Para aadir una nueva funcionalidad
o Cuando se necesita localizar un error
o Como revisin del cdigo
Consideraciones

Va ms all de limpiar cdigo


Es el arte de mejorar de manera segura el diseo de cdigo existente
No es reescribir todo desde cero
No se calendariza

You might also like