domingo, 2 de abril de 2017

Reingeniería de Software

Cuando nos adentramos al mundo laboral del desarrollo de software, siempre deseamos construir sistemas desde cero para nuestra facilidad, pero no siempre es posible debido a que hoy en día la mayoría de las empresas  ya cuenta con un sistema que cumple con el proceso de negocios de la organización, y es ahí en donde recae el concepto de Reingeniería de Software.
Pero, ¿qué es la reingeniería de software?, muchos autores la definen como una “modificación de un producto de software, o de ciertos componentes, usando para el análisis del sistema existente técnicas de ingeniería inversa y, para la etapa de reconstrucción, herramientas de ingeniería directa, de tal manera que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento, reutilización, comprensión o evaluación.” (Sicilia, 2009). Esta definición nos habla de un proceso de modificación, en donde dicho concepto también es aplicable a los mantenimientos de software, entonces, ¿por qué no hacer un mantenimiento perfectivo en vez de una larga reingeniería? La respuesta dependerá de la situación en que nos encontremos, como sabemos “no se puede dar mantenimiento de forma eterna, no es técnica, ni económicamente viable” (Sistemasumma, 2011) y recordemos que la más marcada diferencia será el tiempo y el dinero.
La reingeniería consta de un proceso de 6 pasos, en donde puede variar dependiendo el autor que se esté leyendo, no obstante la mayoría coincide en que se deben realizar las siguientes actividades:
  1. Análisis de inventario.
  2. Reestructuración de documentos.
  3. Ingeniería inversa.
  4. Reestructuración del código.
  5. Reestructuración de datos.
  6. Ingeniería directa.



Imagen 1. Pasos de la Reingeniería del Software

Estas actividades son la esencia de toda reingeniería de software, todas y cada una de ellas nos aportan información que más adelante ayudará a la creación del sistema, sin embargo, no siempre es posible llevarlas a cabo; por ejemplo, imaginemos que el sistema al que le queremos aplicar una reingeniería tiene una longevidad muy grande, es poco probable que su documentación exista y la reestructuración de documentos será un punto que pasemos de largo. El seguimiento correcto nos llevará a tener una visión más amplia de la futura aplicación, lo que se puede traducir como una mayor facilidad para desarrollar.

“Cuando una aplicación lleva siendo usada años, es fácil que esta aplicación se vuelva inestable como fruto de las múltiples correcciones, adaptaciones o mejoras que han podido surgir a lo largo del tiempo. Esto deriva en que cada vez que se pretende realizar un cambio se producen efectos colaterales inesperados” (Sicilia, 2009), por lo que identificar en qué punto es necesario emplear una reingeniería será una de las partes más importantes para cualquier empresa. Este proceso es una alternativa viable pero bastante cara, su proceso conlleva una inversión monetaria y de tiempo de cifras con más de tres ceros, por lo que el escrutinio que se tenga que hacer al sistema deberá hacerse minuciosamente, analizando todas las posibles alternativas.

Referencias

Sicilia, M.-A. (9 de Enero de 2009). OpenStax CNX. Obtenido de http://cnx.org/contents/jXj8TA20@3/Qu-es-Reingeniera-del-Software
Sistemasumma. (26 de Mayo de 2011). Sistemas UMMA. Obtenido de https://sistemasumma.com/2011/05/26/mantenimiento-y-reingenieria-de-software/




No hay comentarios:

Publicar un comentario