Hay ocasiones en las que necesitamos hacer ingeniería inversa a una base de datos existente para poder conocerla, entendarla y posiblemente modificarla. Esto suele suceder cuando heredamos una base de datos de un sistema legado. Veamos entonces cómo podemos utilizar Rational XDE para realizar la ingeniería inversa y generar el modelo correspondiente.
Para realizar esta práctica vamos a necesitar el IBM Toolbox para Java. Este es un conjunto de clases Java que nos permite accesar los datos en servidores iSeries y AS/400e. En caso que el servidor no contase con el IBM Toolbox para Java es necesaria su instalación. Para instalar este conjunto de utilidades haga lo siguiente:
• Desde la línea de comandos escriba GO MENU (LICPGM) y presione [ENTER].
• Selecione 11. Install licensed program.
• Seleccione 5722-JC1 IBM Toolbox for Java.
Para comenzar, creamos un nuevo proyecto en el XDE y seleccionamos alguno de los tipos de modelos predeterminados para realizar el modelado de datos. En nuestro caso utilizaremos el DB2 iSeries Data Model, el cual nos van a permitir albergar los elementos que esten dentro de la base de datos DB2.
Para realizar la ingeniería inversa podemos partir de un script DDL que contenga las sentencias SQL de la estructura de la base de datos, o nos podemos conectar directamente a la base de datos y obtener esta información. El script se puede generar con el IBM iSeries Navigator, a través del cual nos conectamos a la base de datos, seleccionamos los esquemas deseados y generamos el archivo. Para conectarnos a la base de datos desde XDE, podemos utilizar DB2 Connect. Esta es la herramienta de selección cuando necesitamos tener acceso a DB2 ya sea de la plataforma zSeries, iSeries y AS/400 principalmente. Sin embargo, desde XDE también podemos accesar una gran variedad de manejadores de bases de datos sobre diferentes plataformas.
Una vez que XDE haya importado el contenido de la base de datos (ya sea a través del DDL o por conexión directa), se procede a generar diagramas donde se puede modelar visualmente los elementos de la base de datos.
Pasos
1. En la vista del Explorador de Modelos, que se encuentra ya abierta en la perspectiva de modelado, seleccionar el modelo que recibirá la ingeniería inversa.
2. Activar el asistente de ingenieria en reversa haciendo click derecho sobre el modelo de datos y seleccionando Data Modeler > Reverse Engineer (Fig. 1). Seleccionamos la opción de DDL Script, el tipo de base de datos IBM DB2 iSeries 5.x y el archivo con las sentencias SQL que nos proporcionó el iSeries Operation Navigator.
3. Luego debemos filtrar los elementos de la base de datos que necesitamos conocer (índices, procedimientos almacenados, vistas, tablas, etc) y con esto terminamos la operación. Siempre debemos verificar en la vista de Output de XDE que no se hayan reportado problemas a la hora de leer el script, de ser asi, debemos revisar los errores y corregirlos manualmente en el archivo con sentencias SQL. Esto evita que algún detalle de la base de datos sea omitido. Una vez que el asistente es ejecutado, XDE hace una correspondencia entre el DDL y el perfil UML, por ejemplo; cada sentencia CREATE TABLE es transformada a una tabla del modelo relacional y cada CREATE DISTINCT TYPE es convertido a una columna del dominio dentro del modelo del dominio.
Fig. 1. Invocando al asistente para ejecutar la ingeniería en reversa.
Terminado esto, pasamos a revisar el contenido del modelo generado en el Explorador de Modelos, podemos modificar el nombre de la base de datos, por uno más representativo. El Nombre RDB (Relational Database Name) es el nombre de la base de datos en el servidor (Fig. 2) y se puede obtener con el comando de línea WRKRDBDIRE.
Fig. 2. Representación de la base de datos del servidor y tablas de los esquemas seleccionados.
Utilizando los diagramas de clases o de formato libre de XDE podemos crear algunos que nos den una idea de cómo están asociadas las diferentes entidades de nuestro modelo de datos (Fig. 3), lo cual nos brinda una forma sencilla de visualizar el modelo. También podemos revisar la correspondencia que efectuó XDE entre los datos de DB/2 UDB iSeries y el perfil UML para base de datos consultando la ayuda de XDE.
Fig. 3. Diagrama de clases visualizando la relación entre los componentes del modelo de datos.
Luego de conocer nuestro dominio y ejecutar cambios sobre este, el diseñador puede pasar a aplicar estos cambios a la base de datos, posicionandose sobre uno de los esquemas modificados y nuevamente haciendo click derecho Data Modeler > Forward Engineer, seleccionamos los elementos que queremos actualizar y el nuevo archivo donde se guardarán las sentencias SQL con las modificaciones a la base de datos. Para hacer los cambios efectivos, este archivo tenemos que ejecutarlo sobre el iSeries Operation Navigator como un script SQL. Asegurese que la ejecución no le arrojó mensajes de error, si es asi corrijalos y continue la ejecución.
Drivers para producción Si fuese el caso que los cambios serán puestos en producción, tenemos dos opciones para conectarnos a la base de datos desde el servidor de aplicaciones de Java, dependiendo de donde se encuentre instalado éste:
1. Si el servidor de aplicaciones se encuentra en la misma máquina que la base de datos, conviene utilizar el driver nativo, que viene dentro del AS/400 Developer Kit, que es más rápido y está implementado con la clase com.ibm.db2.jdbc.app.DB2Driver. Este driver también lo podemos obtener directamente del mismo servidor AS/400, el archivo que deben buscar es /QIBM/ProdData/http/Public/jt400/lib/jt400.jar
2. Si el servidor de aplicaciones se encuentra en otra máquina, entonces necesitamos un driver JDBC, de preferencia el que viene con el IBM Toolbox para Java. Este es un manejador tipo 4, que es un manejador de protocolo nativo que provee un mejor rendimiento que los drivers del tipo 1 y 2, ya que se comunica directamente con el host utilizando sockets sin pasar por la capa de ODBC. La clase que lo implementa es com.ibm.as400.access.AS400JDBCDriver
Conclusión
A través del modelado visual podemos entender mejor la estructura de una base de datos, así como sus dependencias. El modelado visual es una de las mejores practicas del desarrollo de de software que contribuyen a aumentar la probabilidad de la ejecucuión exitosa de proyectos de software. Hay que recordar que la ingenieria en reversa debe ser considerada una herramienta que nos asiste en el proceso de entender y visualizar una configuración existente, y no como una fuente de verdad irrefutable. El resultado debe ser revisado para asegurarnos que la herramienta ha capturado los detalles de manera correcta.
Referencias
• IBM Developerworks www-136.ibm.com/developerworks/
• iSeries Information Center publib.boulder.ibm.com/iseries/v5r2/ic2924/
• JDBC Drivers: How Do You Know What You Need? archive.devx.com/dbzone/articles/dd_jdbc/sosinsky-1.asp
- Log in to post comments