miércoles, 5 de marzo de 2014

Reingenieria de Software



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.