domingo, 2 de abril de 2017

ENSAYO: La Reingeniería de Software

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