Summary: Valoraciones sobre la Reingeniería del Software y cálculo cuantitativo.
Se entiende por reingeniería la modificación de un producto 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.
La reingeniería requiere tiempo; conlleva un coste de dinero enorme y absorbe recursos que de otro modo podrían emplearse en preocupaciones más inmediatas. La reingeniería es una actividad que absorberá recursos de las tecnologías de la información durante un período de tiempo grande.
Ante la perspectiva de aplicar procesos de reingeniería, cabe preguntarse si existen alternativas a esto:
Desde luego, cualquier opción (incluyendo la reingeniería) incurre en costes de mantenimiento y de operaciones. No obstante, la reingeniería se suele considerar una buena opción frente al desarrollo de una nueva aplicación cuando:
De manera objetiva, se puede calcular el beneficio cuantitativo tanto para comprar un software que lo sustituya como para el desarrollo del software nuevo.
Si se mantiene el software como está, el beneficio se puede calcular de la siguiente manera:
BM = [VA – (CMA + COpA)] x T. Vida
Siendo
BM: el beneficio de mantenimiento
VA: el valor de negocio actual (anual)
CMA: el coste de mantenimiento actual
COpA: el coste actual de operación de la aplicación, es decir, los costes derivados de mantener la aplicación en uso (servicios de atención al cliente, administración,...).
Si por el contrario se elige hacer reingeniería, el beneficio obtenido será:
BR = [(GF x T. Vida) – (CR x FR)] – BM
GF = VF – (CMF x COpF)] – BM
T. Vida = T. Vida Estimado –T. Reingeniería
Donde:
BR: beneficio de reingeniería
GF: ganancia final
CR: coste de reingeniería
FR: factor de riesgo de la reingeniería
BM: beneficio de mantenimiento
VF: el valor de negocio tras la reingeniería (anual)
CMF: coste de mantenimiento final
COpF: coste de operación final
Mucha gente al ver las grandes y viejas mansiones queda asombrado de su belleza, pero no se preguntan que tan bien se puede vivir en ellas. Las personas que lo hacen dicen que es una pesadilla mantenerlas. Todas ellas fueron construidas con viejas tecnología estándar. Sus paredes externas no tienen aislamiento. El alambrado eléctrico tiene limitaciones y claramente es inadecuada para las necesidades de energía de hoy y su cableado decadente crea un severo peligro eléctrico.
Los viejos sistemas son muy similares a los grandes y viejos edificios. Ellos tienen los mismos problemas de mantenimiento, un hecho en gran parte irreconocible por parte de la comunidad corporativa. Muchos de esos edificios son demolidos por que no son mantenibles y ya no sirven para las necesidades de sus ocupantes.
Las viejas computadoras tal vez se puedan ver solamente en museos. Pero en muchos casos, software escrito para viejos modelos de computadora están ejecutándose hoy en día. Un caso extremo es el de un software escrito para una IBM 1401 Autocoder. Cuando la compañía remplazó la 1401 con una IBM 360/40, compraron un emulador de la 1401 para poder ejecutar el software. Esa aplicación hoy día corre en una PC – la compañía compro otro emulador.
Los clientes demandan que las nuevas capacidades sean agregadas al código escrito en sus viejos sistemas. Casi siempre, las empresas encuentran que no pueden modificar su código – el programador que lo mantenía murió recientemente o nadie sabe programar en el lenguaje en el que fue escrito. Por lo que la funcionalidad de ese programa quedará así para siempre.
La siguiente lista son las razones por las que es aplicable la reingeniería a los sistemas de información heredados:
Estas razones pueden ser solucionadas al aplicar un proceso de mantenimiento de software, pero cuando dicho mantenimiento deja de ser viable, entonces se toma la decisión de aplicar reingeniería.
Aunque la reingeniería se usa principalmente durante el mantenimiento del software, va mas allá de una simple ayuda para el mantenimiento. La reingeniería es el puente desde viejas tecnologías hacía nuevas tecnologías que las organizaciones deben usar en la actualidad para responder al cambio de requerimientos del negocio.
Los viejos programas representan la tecnología del ayer. Ahora sabemos que los años tienen cuatro dígitos y no dos, que los datos pueden ser manejados mejor en bases de datos y que tenemos nuevos diseños de construcción y lenguajes de programación que permiten diseñar programas notablemente mantenibles.
Cuando el costo de mantener viejos edificios es altamente excesivo, se remplazan estos edificios. Nosotros deberíamos hacer lo mismo con los programas. Los programas no se hacen obsoletos al paso del tiempo ya que fueron escritos para hardware y sistemas operativos que ya no existen, muchos están llenos de características y parches no documentados. Sólo cuando hayamos aprendido a que es mejor invertir en nuevo hardware y nuevos edificios podremos reconocer el valor de remplazar los viejos sistemas raquíticos.