Introducción
Pensando en cualquier producto tecnológico,
nosotros estamos a acostumbrados a verlo diario, se nos es habitual utilizarlo,
pero día a día este va dejando de ser una tecnología de ultima generación,
envejece y se deteriora. Pensando en elementos de software, es probable que
cuando llegue un punto donde sean inutilizables, se tiren y se compren nuevos,
en el caso de productos de software, no existe la opción de deséchalos, menos
en casos de software hecho a medida o bases de datos funcionando, en todo caso necesita
reconstruir el software. A nivel de software, la reingeniería es ejecutada por
ingenieros del software.
Desarrollo
La reingeniería de procesos de
negocio, tiene formalmente dos definiciones a parir de una abstracta que se
publico en 1993:
Es un modo planificado de
establecer secuencias nuevas en los procesos con la pretensión de elevar la
eficiencia, la eficacia, la productividad y la efectividad para alcanzar un
balance global positivo. (Pressman,
2005)
Es el rediseño radical y la re concepción
fundamental de los procesos de negocios para lograr mejoras dramáticas en
medidas de desempeño tales como en costes, calidad, servicio y rapidez. (Pressman, 2005)
La reingeniería requiere tiempo,
conlleva un costo enorme y absorbe recursos que de otro modo podrían emplearse
en preocupaciones más inmediatas, esta es la razón por la cual toda organización
necesita una estrategia.
El modelo para reconstrucción mediante
el proceso de reingeniería es el siguiente:
Cada etapa del proceso se especifica
a continuación:
·
Análisis de inventario: Es la verificación de
los elementos existentes.
·
Reestructuración de documentos: Muchas veces
esta etapa se suprime ya que hay una documentación inicial pobre y es muy
costoso y tardado rehacerla, siendo que el sistema funciona muy bien sin ella.
·
Ingeniera inversa: Es el proceso de restructuración
del diseño y adaptación a nuevas funcionalidades.
·
Reestructuración de código: Es la etapa de recodificación
para adaptar el sistema y sus componentes lógicos a los nuevos procesos.
· Reestructuración de datos: Referido a los
gestores de base de datos, el rediseño de estas mismas y actualizaciones en
versiones etc.
·
Ingeniería directa: Recupera diseño y funcionalidad
existentes y pretende utilizarlas para aumentar la funcionalidad o estabilidad del sistema reconstruido.
Llegado a este punto podemos
hablar de la reestructuración, que modifica el código fuente y los datos con intención
de adecuar al software a futuros cambios. Esta solo se produce cuando las bases
de la aplicación son lo suficientemente solidas, aun cuando los cambios
necesarios sean mínimos, y cumple con la condición de que aun existen partes
del software que funcionan realmente.
Cabe destacar que todos los
procesos de reingeniería ocupan más del 60% de inversión inicial, con el fin de
rescatar sistemas que se han ido desfavoreciendo con el tiempo.
Conclusión
La reingeniería de software y los procesos de reconstrucción,
pueden ser vistos como una analogía al reconstruir una casa: Primero observamos
en qué condiciones actuales se encuentra la casa, posteriormente enlistamos los
cambios que haremos, buscamos las herramientas y materiales que vayamos a usar
y posteriormente inicia el proceso de remodelación, que puede ser al cambio de una
pared, de espacios etc., normalmente eso lo hace un equipo de ingenieros (al
igual quela remodelación de software) y también el costo es proporcional ,
muchas veces es más del 50% del costo total.
Bibliografía
Fouruzan,
B. A. (2007). Desarrollo de software y UML. McGraw-Hill.
Pressman, R. (2005). Ingeniería de Software.
Pearson.
Sommerville, I. (2005). Ingenieria de Software (Séptima ed.). Ciudad
de México: Pearson.
Weitzenfield, A. (2004). Ingenieria de Software
orientada a objetos con UML, Java e internet. Thomson.