Vous êtes sur la page 1sur 25

4-Reingeniera del SW

Mantenimiento de SW

1
Qu es Reingeniera del SW?

Def.- Modificacin de un producto SW o de ciertos


componentes, usando para el anlisis del sistema
existente tcnicas de Ingeniera Inversa y, para la
etapa de reconstruccin, herramientas de Ingeniera
Directa.

2
Qu es Reingeniera del SW?
Al paso del tiempo es fcil que una aplicacin se
vuelva inestable como fruto de las mltiples
correcciones, adaptaciones o mejoras que han
podido surgir a lo largo del tiempo.
Esto deriva en que cada vez que se desea realizar un
cambio se producen efectos colaterales inesperados
y hasta de gravedad, por lo que se prevee que si seguir
siendo de utilidad, se aplique reingeniera.

3
Beneficios de la Reingeniera
Reduccin de riesgos evolutivos de una organizacin.
Ayudar a las organizaciones a recuperar sus
inversiones en software.
Hacer el software ms fcilmente modificable.
Amplia las capacidades de las herramientas CASE.
Catalizador para la automatizacin del Mtto de SW.

4
Actividades tpicas
Incluyen:
Anlisis de inventarios
Reestructuracin de documentos
Ingeniera inversa
Reestructuracin de programas y datos
Ingeniera directa
Con el fin de crear versiones de programas
existentes que sean de mejor calidad y que tengan
mayor facilidad de mantenimiento.

5
Pasos de Reingeniera de SW

6
Ciclo de la reingeniera de
software

7
Anlisis de Inventarios
Toda organizacin debera tener un inventario de
todas sus aplicaciones activas.
Los candidatos a la reingeniera aparecen cuando se
ordena esta informacin en funcin de su
importancia para el negocio, longevidad,
mantenibilidad actual u otros criterios locales.
En este momento es cuando es posible asignar
recursos a las aplicaciones candidatas para el
trabajo de reingeniera.

8
Reestructuracin de
documentos
La documentacin dbil es la seal de los
sistemas heredados. Qu hacer con ellos?
Se puede:
Documentar cuando haya cambios.
Recortar la documentacin a un mnimo.
Tratar de mantener la documentacin que realmente agregue
valor.

9
Reestructuracin de
documentos

Opcin 1: La creacin de documentacin consume


muchsimo tiempo: si un programa es relativamente
esttico, es posible que est llegando al final de su vida
y no vale la pena la reestructuracin por lo que tampoco
vale la pena la redocumentacin.

10
Reestructuracin de
documentos
Opcin 2: es preciso actualizar la documentacin
pero se dispone de recursos limitados. Aqu lo que
se tiene que hacer es documentar slo si hay
modificaciones, no volver a documentar toda la
aplicacin, sino solamente aqullas partes que
corresponden a las modificaciones. Con esto la
documentacin til y relevante ir evolucionando con el
tiempo.

11
Reestructuracin de
documentos
Opcin 3: el sistema es fundamental para el
negocio y es preciso volver a documentarlo por
completo. Aqu un enfoque inteligente consiste en
reducir la documentacin al mnimo necesario.

12
Ingeniera Inversa
El concepto nace en el mundo del HW para
comprender los secretos del diseo y
fabricacin.
Una ingeniera inversa con xito precede de una
o ms especificaciones de diseo y
fabricacin del producto, mediante el examen
de ejemplos reales de ese producto.

13
Ingeniera Inversa
En el SW es similar, aunque con diferencias:
El SW no suele ser ajeno, es propio de la empresa.

Los secretos a descubrir suelen ser incomprensibles

porque nunca se lleg a desarrollar una especificacin.


Por lo anterior, tpicamente, la Ing. Inversa de SW es el
proceso de anlisis de un programa con el fin de crear una
representacin de programa con un nivel de abstraccin
ms alto que el cdigo fuente.
La Ing. Inversa es un proceso de recuperacin de diseo:
informacin de diseo arquitectnico y de proceso e
informacin de los datos.
14
Reestructuracin de cdigo
El tipo ms comn de reingeniera es la
reestructuracin del cdigo, se puede hacer con
mdulos individuales difciles de comprender, probar y
mantener, ya que la arquitectura general del programa
suele ser relativamente slida.
Requiere:
Analizar el cdigo fuente empleando una herramienta de
reestructuracin.
Sealar las violaciones de las estructuras de programacin
estructurada
Reestructurar el cdigo (se puede automatizar)
Se analiza el cdigo reestructurado para asegurar que no se
introdujeron anomalas. 15
Se actualiza la documentacin interna.
Reestructuracin de datos
Es una actividad de reingeniera a gran escala. Suele
comenzar con una actividad de ingeniera inversa.
Se analiza con detalle la arquitectura de datos actual, se
identifican los objetivos de datos y atributos y se revisa
la calidad de las estructuras de datos existentes.
Cuando hay estructuras de datos dbiles (Ej.-
Archivos en lugar de bases de datos) se puede aplicar
reingeniera de datos.
Debido a la estrecha relacin entre la arquitectura de
datos y la arquitectura del programa, suele ser comn
que a toda reestructuracin de datos le sigue una
16
reestructuracin de cdigo.
Ingeniera Directa
En un mundo ideal las aplicaciones se
deberan reconstruir utilizando un motor
de ingeniera automatizado.
El motor recibira el programa anterior, lo
analizara, reestructurara y regenerara
con los mayores estndares de calidad de
SW.

17
Ingeniera Directa
La ingeniera directa no slo recupera la informacin
de diseo a partir del software existente, tambin
utilizara esta informacin para alterar o reconstruir el
sistema existente con la finalidad de mejorar su
calidad global.
En la mayora de los casos el software sometido a
reingeniera vuelve a implementar la funcin del
sistema existente y tambin aade nuevas
funciones o mejoras.

18
Valoraciones sobre la
reingeniera del software

La reingeniera requiere tiempo;


conlleva un coste de dinero enorme y
absorbe recursos que de otro modo
podran emplearse en preocupaciones ms
inmediatas.
La reingeniera es una actividad que
absorber recursos de TI durante un
periodo grande.
19
Valoraciones sobre la
reingeniera del software

Ante la perspectiva de aplicar procesos de


reingeniera, cabe preguntarse si existen
alternativas a esto:
Comprar software que lo sustituya.
Desarrollar el software nuevo.

20
Valoraciones sobre la
reingeniera del software
La reingeniera suele considerarse una
buena opcin frente al desarrollo de una
nueva aplicacin cuando:
La aplicacin tiene fallos frecuentes que son difciles
de localizar.
La aplicacin es poco eficiente, pero realiza la accin
esperada.
Existen dificultades para integrar la aplicacin con
otros sistemas.

21
Valoraciones sobre la
reingeniera del software
La reingeniera suele considerarse una
buena opcin frente al desarrollo de una
nueva aplicacin cuando:
El software final de la aplicacin es de poca calidad.
No se dispone de personal suficiente para realizar
todas las modificaciones necesarias que puedan
surgir.
No se tiene la facilidad para realizar pruebas a los
cambios que se deban realizar.

22
Valoraciones sobre la
reingeniera del software
La reingeniera suele considerarse una
buena opcin frente al desarrollo de una
nueva aplicacin cuando:
Cuando el mantenimiento de la aplicacin consume
muchos recursos.
Cuando es necesario incluir nuevos requisitos a la
aplicacin, pero los fundamentales se mantienen.

23
Mtodo cuantitativo de
valoracin de la reingeniera
Si se mantiene el software como est, el beneficio se
puede calcular as:
BM=[VA-(CMA+COpA)]xT. Vida
Donde:
BM=Beneficio del mantenimiento
VA=Valor del negocio actual (anual)
CMA=Coste de Mtto actual
COpA=Coste de operacin de la aplicacin derivados de mantener
la aplicacin en uso (servicios de atencin al cliente, admon)

24
Mtodo cuantitativo de
valoracin de la reingeniera
Si se elige hacer reingeniera:
BR=[(GFxT.Vida)-(CRxFR)]-BM
GF=[VF-(CMFxCOpF)]-BM
T.Vida=T.Vida Estimado-T.Reingeniera
Donde:
BR: beneficio de reingeniera
GF: ganancia final
CR: coste de reingeniera
FR: factor de riesgo de la reingeniera
BM: beneficio de mantenimiento
VF: el valor de negocio tras la reingeniera (anual)
CMF: coste de mantenimiento final
COpF: coste de operacin final 25

Vous aimerez peut-être aussi