REINGENIERIA DE SOFTWARE
La reingeniería de software es un término, una práctica
constantemente utilizada en el campo de los sistemas de información. Esto se
debe a toda una gama de factores, que van desde las necesidades de una empresa,
errores humanos en los sistemas, el avance tecnológico, sistemas heredados y
sistemas inservibles. En todos los casos, se utilizara a la reingeniería de
software para poder recuperar información, fracciones del sistema o, incluso el
sistema entero.
Primeramente definiremos a la reingeniería de software como:
“La reingeniería del software abarca una serie de actividades entre las
que se incluye el análisis de inventario, la reestructuración de documentos, la
ingeniería inversa, la reestructuración de programas y datos, y la ingeniería
directa. El objetivo de esas actividades consiste en crear versiones de los
programas existentes que muestren una mayor calidad, y una mejor
mantenibilidad.” (Pressman, 2010)
Basándonos en la definición de Roger Pressman, la reingeniería
de software nos permitirá, entonces, desarrollar desde nuevas versiones de un
sistema ya existente a través de los mantenimientos perfectivos y correctivos,
hasta desarrollar nuevos sistemas cuya base sea un sistema ya elaborado.
Sin embargo, antes de explicar el proceso de la reingeniería
de software, nos preguntaremos, ¿Por qué hacer reingeniería? Como se mencionó
previamente, hay todo un rango de posibilidades por las cuales una organización
o un individuo quisieran realizar reingeniería de un sistema. Por ejemplo, si
una compañía cuenta con un sistema que fue programado hace tanto tiempo que su tecnología
se torna obsoleta, haciendo que la compañía este en una desventaja debido a su
sistema, esta querría obtener un sistema que se parezca al anterior, pero
mejorara en todos aspectos y que además conservara la información considerada
valiosa para la compañía, entonces, recurrirían a la reingeniería.
Actividades de la reingeniería:
1.
Análisis de artefactos:
Durante esta actividad se deberán
recolectar todos los documentos y artefactos bajo los cuales de desarrollo el
sistema en sus inicios, así como todos los que registran sus posteriores
modificaciones y mantenimientos. De esta manera tendremos una “descripción detallada
del sistema, desde su funcionamiento como de su interfaz” (Bianchiotti, 2014) .
2.
Reestructuración de Documentos:
Una vez analizados, se
recuperaran los documentos que sean posibles, basándonos en el código del
sistema y su interpretación a “primera vista”, de cualquier manera esto se
retomara en la siguiente actividad. Se pueden utilizar herramientas CASE.
3.
Ingeniería Inversa:
Es el proceso de análisis de los
programas (fuentes y ejecutables) con el fin de crear una representación de un
nivel de abstracción más elevado que el código fuente. Se extraerá de los
códigos existentes información del diseño arquitectónico y de proceso, e
información de los datos. Una vez se tenga toda la aplicación al nivel de abstracción
necesario, que es aquel en el que se tienen todos los recursos para poder
rehacer dicha aplicación, se toma la decisión de mantener el sistema actual,
pero con mantenimientos o ligeros cambios, o, hacer un sistema nuevo.
4.
Restructuración de Código:
Actividades destinadas a la normalización
del código fuente, así como la verificación del mismo respecto a los documentos
originales y los resultados provenientes de la ingeniería inversa.
Restructuración de Datos:
La reestructuración de datos toma
como insumos la documentación y registros obtenidos en la etapa anterior:
entidades identificadas, diccionarios de almacenamientos, DER, etc. Estos
esquemas que denominamos arquitectura de datos actual, aunque no cumplan todos
las condiciones de una arquitectura, se analiza minuciosamente y en
profundidad. A continuación se define el nuevo modelo de datos necesario, que
implica la identificación de los objetos de datos y atributos y, a
continuación, se revisan las estructuras de datos a efectos de mejorar su
calidad. (Bianchiotti, 2014)
5.
Ingeniería Directa:
Se realiza el desarrollo del
nuevo sistema basándonos en todos los resultados obtenidos en las fases
anteriores. De esta manera, se toman decisiones acerca del nuevo sistema y se
modifica su documentación, por ejemplo, agregando requerimientos a esta. Una
vez recopiladas todas las nuevas especificaciones se desarrolla, prueba e
implementa el nuevo sistema.
Para concluir, la reingeniería de
software es aquel proceso donde tomaremos un sistema existente, conocemos su estructuración
y funcionalidad con el fin de tomar la decisión de mantener el sistema haciendo
uso de mantenimientos correctivos y perfectivos, o, si preferimos y es
conveniente desarrollar un nuevo sistema, por supuesto, basados en el antiguo. De
esta manera, conseguiremos que el sistema antiguo sea actualizado y se vea enriquecido
en aspectos sustanciales, mejorando su
productividad, o, de lo contrario, obtendremos un sistema completamente nuevo
que será mejor en todas sus características respecto al sistema antiguo.
Referencias
Bianchiotti, F. (2014). Guía para la Reingeniería de
Sistemas Legados: Una Experiencia Practica y Real. Revista Lationo
Americana de Ingeniera de Software, 99-106.
Pressman, R. (2010). Ingeniera
del Software. MCGRAW-HILL.
No hay comentarios:
Publicar un comentario