domingo, 23 de febrero de 2014

Reingeniería de Software.


Introducción.
Cuando un software ha tenido una vida útil de 10 a 15 años, ha sufrido muchos cambios y modificaciones tanto en su código, como en su arquitectura, su documentación, diseño, etc. y aun se provee realizar muchos más cambios para seguir satisfaciendo las necesidades del usuario, se llega a un punto en que el equipo encargado de realizar dichos cambios no comprenden a detalle las funciones del sistema y la complejidad actual del mismo complica las cosas. En este punto, la mejor opción es aplicarle reingeniería al software, aunque esto implique grandes costos, pero traerá mejores beneficios.
Reingeniería de Software.

Para entender todo lo que implica la reingeniería de software, primero debemos plantear que es y en qué consiste dicho proceso.
La reingeniería de software es la actividad de reconstrucción de un sistema, en el que el estado actual del sistema es muy complejo y dificultará realizar cambios en él, por lo que la opción más viable para que siga siendo útil es reconstruirlo (Pressman). Consta de seis etapas, que pueden seguir o no una secuencia lineal, pero siempre se desarrollarán cíclicamente.
Las etapas son:
  • Análisis de inventarios: se analizan los inventarios que poseen las empresas o el usuario sobre las características del programa y descripciones detalladas sobre su importancia, edad, etc., así se sabrá a que recursos se aplicará la reingeniería.
  • Reestructuración de documentos: aquí se analiza si se necesita documentar de nuevo todo el sistema, si se tiene que actualiza pero se cuentan con pocos recursos o si la documentación requiere de demasiado tiempo.
  • Ingeniería inversa: en esta etapa se analiza el programa para crear una representación mucho más abstracta que el código fuente y se recupera el diseño.
  • Reestructuración de código: aquí se analizan los módulos en los que se sospecha que el código que lo compone no sigue las estructuras de programación estructurada, para reestructurarlo y que siga dichas normas.
  • Reestructuración de los datos: esta etapa se lleva a cabo en un grado de abstracción bajo, y su respectiva reingeniería es de gran escala. Se definen los objetos de datos y los atributos, para después revisar la actual estructura de los datos.
  • Ingeniería avanzada. 
Conclusión.
Es importante conocer en qué consiste la reingeniería de software porque de esta manera sabremos en que casos y en qué momento es adecuado aplicarla para evitar que el sistema se vuelva mucho más complejo de lo que ya es, y así proveerle un sistema funcional y con mejores técnicas de programación al usuario.
Referencias.

Pressman, R. Ingeniería de Software. Un enfoque práctico. Mc Graw Hill.

No hay comentarios:

Publicar un comentario