domingo, 2 de diciembre de 2012

Reingenieria

Reingeniería
Se puede definir como: "modificacion de un producto software, o de ciertos componentes usando para el analisis del sistema existente tecnicas de Ingenieria Inversa y, para la etapa de reconstruccion, herramienta de Ingenieria Directa, de tal manera que se oriente este cambio hacia mayores niveles de facilidad en cuanto a mantenimiento, reutilizacion, compresion o evaluacion.



Entre los beneficios de aplicar reingenieria a un producto existente se puede incluir:

  • Pueden reducir los riegos evolutivos de una organización.
  • Puede ayudar a las organizaciones a recuperar sus inversiones en software.    
  • Puede hacer el software más fácilmente modificable
  • Amplía las capacidades de las herramientas CASE       
  • Es un catalizador para la automatización del mantenimiento del software
  • Puede actuar como catalizador para la aplicación de técnicas de inteligencia artificial para resolver problemas de reingeniería.  
La reingenieria del software involucra diferentes actividades como son:

  • Análisis de inventarios      
  • Reestructuración de documentos
  • Ingeniería inversa              
  • Reestructuración de programas y datos
  • Ingeniería directa
con la finalidad de crear versiones de programas ya existentes que sean de mejor calidad y los mismos tengan una mayor facilidad de mantenimiento.
Análisis de Inventarios
El inventario tal vez no sea más que un modelo en una hoja de cálculo que contenga información que proporcione una descripción detallada (tamaño, edad, importancia para el negocio) de las aplicaciones activas.
El inventario deberá visitarse con regularidad, el estado de las aplicaciones puede cambiar en función del tiempo y, como resultado, cambiarán las prioridades para la reingeniería.

Reestructuración de documentos
Crear documentación consume mucho tiempo, si el sistema funciona vivirá con lo que tenga. La documentación debe actualizarse pero se tiene recursos limitados. Se utiliza un enfoque de “documentar cuando se toque”. El sistema es crucial para el negocio y debe volver a documentarse por completo incluso en este caso un enfoque inteligente es recortar la documentación a un mínimo esencial. Cada una de estas opciones es viable. Una organización de software debe elegir la más apropiada para cada caso.
Ingeniería inversa 
La Ingeniería inversa es un proceso de recuperación de diseño. Con las herramientas de la ingeniería inversa se extraerá del programa existente información del diseño arquitectónico y de proceso, e información de los datos.             

El siguiente video muestra la ocupacion de Ingenieria Inversa con base de datos

Reestructuración de programas y datos
Se puede hacer con módulos individuales que se codifican de una manera que dificultan comprenderlos, probarlos y mantenerlos.  la reestructuración de datos comienza con una actividad de ingeniería inversa. La arquitectura de datos actual se analiza con minuciosidad y se define los modelos de datos necesarios, se identifican los objetivos de datos y los atributos, y después se revisa la calidad de las estructuras de datos existentes.
Ingeniería directa
La ingeniería directa no solo recupera la información de diseño a partir del software existente, también utiliza esta información para alterar o reconstruir el sistema existente con la finalidad de mejorar su calidad global. En la mayoría de los casos el software sometido a reingeniería vuelve a implementar la función del sistema existente y también añade nuevas funciones o mejoras.

No hay comentarios: