Leer Artículo - Inicio - Universidad de los Andes

Anuncio
Conviviendo con sistemas legados
Nolberto Jaimes Rojas
[email protected]
Universidad de los Andes, Bogotá, Colombia.
Resumen.
El continúo cambio tecnológico que han sufrido las organizaciones durante
los últimos años, la masificación de Internet, los paradigmas de objetos,
componentes y servicios, las nuevas necesidades que han surgido en las
compañías para tener un contacto mas cercano con sus clientes, han
generado, que toda la información que permanecía en sistemas
heterogéneos, independientes y aislados, cobre importancia y se empiecen a
evaluar estrategias para su aprovechamiento. En este documento se
presenta un análisis de las alternativas existentes para tratar con la
información de estos sistemas legados.
Palabras clave.
Sistemas legados, evolución
1 INTRODUCCION
Hoy en día es frecuente encontrar dentro de las organizaciones aplicaciones que fueron
desarrolladas desde los años 80 hasta esta época. A raíz de las restricciones que existían
en aquel entonces, estas aplicaciones eran dependientes de los grandes fabricantes de
hardware y software, generando una dependencia total por parte de las organizaciones.
Estos sistemas frecuentemente no estaban bien documentados, lo que llevaba a una
tarea de mantenimiento bastante compleja. Fueron construidos de forma rígida, con el
objetivo específico de solucionar los requerimientos funcionales; dejando de lado
aspectos importantes como la evolución, extensibilidad, portabilidad y compatibilidad
entre otros [1].
Estas necesidades de evolución y de implementación de nuevos requerimientos,
hacen necesario un mantenimiento que no es fácil de llevar a cabo, lo que termina
desencadenando en el planteamiento de algunas alternativas como: Llevar a cabo un
nuevo desarrollo que contemple la funcionalidad del sistema legado más los nuevos
requerimientos, otra alternativa es evaluar un cambio al sistema legado que permita
adicionar nuevos requerimientos de una forma sencilla, o la última opción es
simplemente desechar el sistema y adquirir una herramienta del mercado que supla las
necesidades actuales de la organización.
Las alternativas existentes para dar un adecuado tratamiento a este tipo de sistemas
serán revisadas a lo largo del documento, haciendo énfasis en las bondades y problemas
que pueden llegar a traer cada una de ellas para la organización, pero antes se revisarán
algunas características que indican si el sistema con el cual se va a tratar realmente puede
PARADIGMA REVISTA ELECTRONICA EN CONSTRUCCIÓN DE SOFTWARE
2
[email protected]
ser considerado un sistema legado y abordaremos una de las posibles clasificaciones que
pueden recibir.
Características que hacen de un sistema, realmente un legado [5]
1. Se trata de un sistema escrito en lenguajes de varios años atrás como: Cobol,
RPG, PL, Assembler.
2. Normalmente estos sistemas son soportados por un DBMS (manejador de base de
datos [13]) ya obsoleto.
3. La interface de cliente está basada en terminales (3270 [12] o 5250 [3]) las cuales
no son gráficas.
4. Las aplicaciones que componen el sistema, son frecuentemente monolíticas, las
cuales fueron desarrolladas para suplir una necesidad de la organización,
separadas del resto del sistema, presentando una integración normalmente
vertical.
5. Es un sistema fundamentalmente dirigido a la parte operativa de las
organizaciones, normalmente de misión crítica para la organización que requiere
estar operando todo el tiempo.
6. Suelen ser sistemas bastante complejos y grandes (millones de líneas de código y
lógica de negocio).
7. Estos tipos de sistema suelen no tener ningún tipo de documentación, no es
posible hacer trazabilidad de funcionalidad.
Clasificación de sistemas legados
En la figura 1 se ilustra la clasificación de un componente o aplicación desde el punto de
vista del manejo de la información.
Figure 1. Clasificación [5]
Altamente Desacoplados, el componente de la aplicación se encuentra separado en
lógica de presentación, lógica de negocio y acceso a datos. Este tipo de aplicaciones o
componentes presenta mayor facilidad a la hora de ser mantenido.
VOL. 1
PARADIGMA REVISTA ELECTRONICA EN CONSTRUCCIÓN DE SOFTWARE
Conviviendo con sistemas legados 3
Desacoplamiento de datos, son sistemas considerados semi-estructurados, el
componente es normalmente descompuesto en dos niveles. Un nivel de acceso a datos y
otro nivel que cubre la presentación y la lógica de negocio. En este tipo de sistemas es
posible acceder directamente a los datos, mas no a la lógica de negocio.
Desacoplamiento de programas, también considerado semi-estructurado, el
componente es descompuesto al igual que el anterior en dos niveles, con la diferencia que
el acceso a datos ahora es unido con la lógica de negocio, y en el otro nivel se encuentra
únicamente la presentación.
Monolítico, sistema no estructurado, en el cual el componente aplicativo es un solo
bloque que contiene todos los niveles. Son accedidos generalmente a través de la
invocación desde terminales.
2 TRATAMIENTO DE LOS SISTEMAS LEGADOS
Hoy en día es una realidad para todas las personas involucradas en tecnología,
encontrarse con cientos de sistemas legados dentro de las organizaciones.
Tipos de tratamiento de los sistemas legados
Las tareas de mantenimiento del sistema eran tareas operativas asociadas a la constante
evolución del software.
Últimamente estas labores de mantenimiento han adquirido una gran importancia
que requiere de un profundo conocimiento del sistema, lo que es conocido en la
reingeniería del software como reingeniería de tipo white-box, o limitarse a las interfaces
externas del sistema conocidas como tipo black-box.
El tipo white-box es parte de la ingeniería reversa y se enfatiza en una comprensión
profunda del sistema.
El tipo black-box se limita al estudio de las interfaces externas del sistema para la
adición de encapsulamiento (wrapping).
En la ingeniería reversa, el proceso de análisis del sistema, comprende la
identificación de todos los módulos existentes, y la interrelación existente entre ellos,
creando una representación de alto nivel de abstracción. A partir de esto, si es posible
llegar a pensar en sustituir el sistema.
El wrapping, evita la comprensión detallada de la estructura interna del sistema,
limitándose a conocer las interfaces ofrecidas y que se encuentran funcionando
correctamente. El wrapping se basa en el principio de encapsulamiento, idea original del
paradigma de programación orientada a objetos, y el cual consiste en ocultar el detalle de
la implementación de un objeto, mientras se provee una interfaz por medio de sus
métodos permitidos.
Una aproximación a las alternativas existentes para el tratamiento de los sistemas
legados puede ser:
PARADIGMA REVISTA ELECTRONICA EN CONSTRUCCIÓN DE SOFTWARE
VOL. 1
4
[email protected]
1.
2.
3.
4.
Retirar el sistema, excluir el sistema y reemplazarlo con un sistema comercial.
Sustitución completa, reescribir el sistema en su totalidad.
Migración gradual, realizar una transformación del sistema, de forma gradual.
Integración, considerar el mantener el sistema, sin modificarlo exportando su
funcionalidad efectuando wrapping con algún tipo de tecnología.
Figure 2. Tratamiento de un legado [1][14]
Analizando la Figura 2 se puede observar en la parte marcada con la letra A todo lo
relacionado con el sistema legado, el cual puede estar compuesto por una o más
aplicaciones acompañadas de una infraestructura, el objetivo es llegar a un sistema
Moderno el cual está marcado con la letra C, para esto es necesario pasar por un análisis
que está compuesto por varias alternativas contempladas dentro de lo que está marcado
con la letra B lo cual detallaremos en el desarrollo del documento.
Mantenimiento
Por mantenimiento se entiende el proceso necesario para mantener la funcionalidad y
eficiencia que ofrece el sistema a la organización.
El mantenimiento de un componente estratégico hecho de manera ágil y eficaz,
garantizará el mejoramiento del proceso productivo de la organización.
Por el contrario, un mantenimiento no estructurado llevará al rápido degradamiento
de un sistema, generando inestabilidad y de seguro una muerte lenta del sistema.
En general el mantenimiento es la base para el correcto funcionamiento de un
sistema, la velocidad con que éste se pueda efectuar, puede convertirse en una ventaja o
desventaja para el sistema legado, y depende en gran parte de la calidad del proceso de
mantenimiento del sistema.
El mantenimiento se divide en mantenimiento Correctivo, el cual suele ser utilizado
para medir la calidad del software dentro de la remoción de defectos, es de suma
importancia ya que un defecto origina un comportamiento no esperado en el sistema, el
cual debe ser corregido.
Mantenimiento evolutivo, el cual es observado desde los requerimientos funcionales,
pensando en el mejoramiento continuo del sistema.
VOL. 1
PARADIGMA REVISTA ELECTRONICA EN CONSTRUCCIÓN DE SOFTWARE
Conviviendo con sistemas legados 5
Retirar el sistema y reemplazarlo
Tomar la decisión de retirar un sistema no es una tarea sencilla de llevar a cabo. Esta
tarea se debe realizar cuando el sistema ya no es capaz de ser mantenido al ritmo que el
negocio lo exige o el costo de llegar a hacerlo es demasiado alto.
Se hace necesario hacer un estudio detallado comprendiendo el núcleo del sistema,
encontrando toda la funcionalidad ofrecida y datos utilizados para todo el proceso. Para
esto hay que encontrar la estrategia más adecuada a la organización la cual depende de
los recursos con los que se cuente como arquitectura del sistema, documentación del
diseño, casos de prueba, especificaciones, documentación de código, documentación de
procesos y restricciones.
Actualmente están creciendo las casas de Software especializadas en el
mantenimiento de este tipo de sistemas.
En muchas ocasiones es necesario establecer fronteras en lo que desea revisar y el
nivel de detalle al que se pretende llegar, detectar las relaciones que existe entre módulos
o componentes. Lo más importante es tomar una buena estrategia para la obtención de
toda esta información.
Pensar en un nuevo desarrollo también presenta nuevas dificultades ya que
normalmente las personas que conocen el negocio no conocen de nuevas tecnologías
como J2EE [4] o .NET [6], se han quedado obsoletos prestando mantenimiento al
software construido, tampoco se puede pensar en iniciar el nuevo proyecto sin tener en
cuenta todo el conocimiento y la información que existe en el sistema legado. Aunque
pensar en reescribir la aplicación puede traer beneficios a futuro como un ambiente ágil
que puede adaptarse rápidamente a los cambios del modelo de negocio, tener una
arquitectura flexible que permita extender fácilmente nuevas funcionalidades reduciendo
los costos de mantenimiento, no se puede desechar todo el conocimiento y la experiencia
existente, lo que hace necesario realizar todo un plan para hacer la migración de datos
migración de reglas de negocio transferencia de experiencia y conocimiento.
Migración
Una migración puede considerarse como el paso de un sistema existente hacia un nuevo
sistema. La migración suele ser un proceso altamente riesgoso, y el índice de proyectos
fallidos es alto.
Se podría pensar en una migración total o parcial, cada una de ellas puede ofrecer
algunas ventajas y desventajas.
Migración parcial, solo una parte del sistema es transformada, generalmente se hace
con aquella que tiene mayores problemas, mayores costos de mantenimiento, menor
flexibilidad etc. Esta suele ser una solución factible con un riesgo normal.
Migración completa, el riego es bastante alto, se hace una migración total del sistema
y es necesario redefinir arquitectura, diseño y todo lo que involucra crear un sistema.
Migración de interfaz cliente, la gran mayoría de los sistemas legados, aun hoy en
día son accedidos mediante terminales brutas, una típica son las terminales 3270 [11].
PARADIGMA REVISTA ELECTRONICA EN CONSTRUCCIÓN DE SOFTWARE
VOL. 1
6
[email protected]
El mercado actual ofrece algunas herramientas, que pueden ser usadas como
instrumento, para generar interfaces GUI o una interacción vía Web. Esta tecnología es
conocida como MiddleWare de Screen Scraping [11] basados en lenguajes de scripting.
Migración de datos, la migración de datos consiste en la transformación de un dato
en un formato específico, a un formato en otra plataforma. La solución de este problema
presenta la siguiente caracterización:
Conversión (por ejemplo de una base de datos no relacional a una relacional).
Transformación, Localización (de un sistema centralizado, a un sistema distribuido).
Integración
Modificación directa sobre el código para corregir anomalías o posibles problemas,
limpiar y hacer más claro el código para hacer la labor de mantenimiento de las
aplicaciones más sencilla, esto también incluye modificaciones menores como extraer
reglas que hagan más claro el código facilitando la labor posteriormente.
Este concepto es normalmente usado sobre aplicaciones que serán ejecutadas nuevamente
sobre un host.
Esta optimización de código logra en tiempo de ejecución mejoras de eficiencia en la
aplicación. Analizar, evaluar y limpiar el código asegura un mejor rendimiento y
trazabilidad de los sistemas.
Se obtienen beneficios como eliminación de código muerto estructuras no usadas,
reestructurar funcionalidades y simplificar el esfuerzo de una nueva arquitectura.
Normalmente estos sistemas no cuentan con documentación lo que hace más difícil
la labor, no se tiene trazabilidad entre el código implementado y los requerimientos
funcionales implementados.
En esta reorganización de código podemos contemplar la posibilidad de hacer un
wrapping de funcionalidad o de datos. A continuación detallaremos un poco más las
posibilidades existentes y la tecnología que podría ser usada para llevarlo a cabo.
a) Wrapping de datos [7]:
Consiste en acceder a los datos del sistema legado usando una interfaz diferente a
la contemplada inicialmente.
Usar puentes hasta los nuevos lenguajes de implementación haciendo uso de
Gateway de base de datos, el cual emplea interfases propietarias del motor de
datos del sistema legado (as/400) [2] y en otros casos interfases estándares en el
mercado como ODBC [9], JDBC [8].
Integración con tecnología XML aprovechando el intercambio de datos entre
sistemas o negocios.
Replicación de datos, esta es utilizada comúnmente para descentralizar el
almacenamiento masivo de datos de los Mainframes, buscando que bases de datos
locales repliquen parte de los datos centralizados.
VOL. 1
PARADIGMA REVISTA ELECTRONICA EN CONSTRUCCIÓN DE SOFTWARE
Conviviendo con sistemas legados 7
Capa de persistencia, ésta es construida específicamente para cada sistema,
buscando el acceso de aplicaciones desarrolladas con tecnología orientada a
objetos.
b) Wrapping funcional [7]
Este encapsula datos y funcionalidades del sistema legado, se suelen utilizar
alguna de las siguientes estrategias.
Integración con CGI [10], permitiendo el acceso al sistema legado mediante
un servidor Web o HTTP. Este es un método bastante interesante ya que está
pensado para sustituir las pantallas de texto por una interfaz gráfica, que sigue
ofreciendo al usuario la misma funcionalidad pero en una nueva interfaz, algo
similar a la técnica de Screen Scraping.
La tecnología de objetos distribuidos, es la combinación de objetos con la
distribución, un ejemplo clásico es CORBA. Este modelo es bastante complejo y
lo que busca es representar los aplicaciones, los datos del negocio y los servicios
como objetos, aquí se encuentran muchos problemas como pasar la semántica
monolítica de los legados a objetos ya que se debe conocer completamente el
dominio de la aplicación,
otro problema es la representación de los
requerimientos no funcionales.
c) Wrapping orientado a componentes [7]
Este utiliza el modelo de componentes distribuidos, donde la idea es separar la
interfase del sistema legado en módulos agrupados por unidades lógicas,
buscando un punto de contacto único, a través del cual se establece la
comunicación entre un EJB por ejemplo y una función concreta del sistema
legado.
La experiencia demuestra que a los sistemas legados les espera una larga vida, debido a la
gestión que las organizaciones han usado para su evolucion.
Las tendencias actuales de herramientas externas suelen adicionar ciertos riesgos a
los proyectos, pero ofreciendo una forma fácil y atractiva de obtener resultados rápidos,
muchas organizaciones terminan haciendo uso de ellos como un mecanismo de bajar
costos y entregar resultados inmediatos para atender estrategias de mercado de sus
negocios.
No existe una receta a seguir, cada problema debe asumirse de forma independiente
y de acuerdo a las variables involucradas en cada uno de estos, se toma la mejor decisión.
Existen muchos casos de éxito donde se emplearon cada una de las alternativas expuestas
de forma independiente con buenos resultados, así como otros tanto que terminaron en el
fracaso.
REFERENCES
PARADIGMA REVISTA ELECTRONICA EN CONSTRUCCIÓN DE SOFTWARE
VOL. 1
8
[email protected]
[1]
Eds. Application Modernization. http://www.eds.com Noviembre 2006.
[2]
IBM. As/400. http://www.recursos-as400.com Octubre 2006.
[3]
IBM. OS/400 V5R1. http://www.recursos-as400.com/v5r1.shtml Septiembre2006.
[4]
Java Technology. J2EE http://java.sun.com Noviembre 2006.
[5]
Massari A, Mecella. M IL TRATTAMENTO DEI LEGACY SYSTEM.
http://www.dis.uniroma1.it/~mecella/publications/Miscellanea/legacy_system.pdf
Noviembre 2006.
[6]
Microsoft. .Net Framework http://msdn2.microsoft.com/netframework/default.aspx
Noviembre 2006.
[7]
Rodríguez A, Márquez A, Toro M. Evolución del
http://lsi.ugr.es/~gedes/actividades/tallerEvolucion2001/docs/1DEF.pdf
2006.
[8]
Unam. Jdbc. http://www.mcc.unam.mx/~cursos/Algoritmos/javaDC99-1/jdbcexpo/expo.html Noviembre 2006.
[9]
Universidad de Valencia. ODBC. http://www.uv.es/~jac/guia/gestion/gestion3.htm
Noviembre 2006.
software.
Agosto
[10] Shklar, L. Web Access to Legacy Data. http://athos.rutgers.edu/~shklar/weblegacy/summary.html Mayo 2007.
[11] Wikipedia. Screen scraping. http://en.wikipedia.org/wiki/Screen_scraping
Noviembre 2006.
[12] Wikipedia. Emulador de terminal.
http://es.wikipedia.org/wiki/Emulador_de_terminal Agosto 2006.
[13] Wikipedia. Sistema de gestión de base de datos.
http://es.wikipedia.org/wiki/Sistema_de_gesti%C3%B3n_de_base_de_datos
Octubre 2006.
[14] Zoufaly F. Issues and Challenges Facing Legacy Systems.
http://www.developer.com/mgmt/article.php/11085_1492531_1 Agosto 2006.
VOL. 1
PARADIGMA REVISTA ELECTRONICA EN CONSTRUCCIÓN DE SOFTWARE
Descargar