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/




Gestión de la Configuración del Software

GESTIÓN DE LA CONFIGURACIÓN DEL SOFTWARE.

La Gestión de Configuraciones del Software (GCS) es un conjunto de actividades desarrolladas para gestionar los cambios a lo largo del ciclo de vida. La GCS es una actividad de garantía de calidad del software que se aplica en todas las fases del proceso de ingeniería del software aplicando las siguientes actividades (Facultad De Ingeniería Universidad de la República)
  1. Identificación de elementos
  2. Control de versiones
  3. Control de cambios
  4. Auditar la configuración
  5. Generación de informes

“Dado que la configuración software es la única representación tangible de un programa o sistema software, debe ser controlada para conservar su exactitud, mantener la información actualizada, y asegurar una información clara y concisa conforme avanzamos paso tras paso en el proceso de Ingeniería del Software” (Universidad de Almería, 2013). “El propósito de la Gestión de Configuración del Software es establecer y mantener la integridad de los productos de software a través del ciclo de vida del proceso de software.” (Historia Internacional, 2007).


ELEMENTOS DE LA CONFIGURACIÓN DEL SOFTWARE

Un elemento de configuración del software (ECS) es la información creada como parte del proceso de ingeniería del software, sin embargo, también podemos decir que es “una unidad física y/o lógica parte de un conjunto mayor de elementos, producida o adquirida, que por sus características es distinguible de las demás y cuya evolución interesa administrar” (Historia Internacional, 2007).
Los elementos de la configuración del software según la Universidad de Almería son los siguientes:
  1. Especificación del sistema
  2. Plan del proyecto software
  3. Especificación de requerimientos del software
    1. Prototipo ejecutable o en papel
  4. Manual de usuario preliminar
  5. Especificación de diseño:
    1. Diseño preliminar
    2. Diseño detallado
  6. Listados del código fuente
  7. Planificación y procedimiento de prueba
    1. Casos de prueba y resultados registrados
  8. Manuales de operación y de instalación
  9. Programas ejecutables
  10. Manual de usuario
  11. Documentos de mantenimiento
    1. Informes de problemas del software
    2. Peticiones de mantenimiento
    3. Órdenes de cambios de ingeniería
  12. Estándares y procedimientos de ingeniería del software

1

Referencias

Facultad De Ingeniería Universidad de la República. (s.f.). Obtenido de https://www.fing.edu.uy/tecnoinf/maldonado/cursos/ingsoft/materiales/teorico/is11-SCM.pdf
Historia Internacional. (27 de 02 de 2007). Obtenido de http://www.histaintl.com/soluciones/configuracion/configuracion.php
Universidad de Almería. (2013). Obtenido de http://www.ual.es/~rguirado/posi/Tema5-Apartado5.pdf