ESTA VEZ VA DE RATIONAL ROSE.
En el proyecto que estoy actualmente, tenemos como en el 99% de los proyectos TI un Modelo de Datos (BD relacional). El nucleo de la aplicación y por lo tanto los objetos de negocio con C++ y además hay Interfaces CORBA. Entre las interfaces CORBA, hay interfaces para dar de alta Objetos de Negocio.
Para modelar tanto los Objetos de Negocio como los interfaces CORBA se esta usando Rational Rose. Para realizar el modelo de datos, se esta usando Oracle Designer (¿adivinas cual es la BD?). Aunque también se podría haber utilizado el Rose.
El problema que tenemos actualmente es que tenemos entidades equivalentes en CORBA y en C++, con lo cual hay duplicidad de trabajo realizado. Pero lo mas grave será cuando estemos en fases mas adelantadas y haya que hacer cambios. Dichos cambios habrá que realizarlos en 3 sitios. Osea, ¡UN INFIERNO!.
Lo ideal sería realizar dichos cambios en un sitio y que estos se propagasen.
Olvidemos lo ideal y centremosnos en lo que tenemos en RR. Ahi van las acciones realizadas:
+ La primera prueba realizada fue el generar una clase en dos componentes. RR no lo permite.
+ He preguntado a gente que pilota de RR y no me han podido ayudar. JJ me comentó que con Together tuvo alguna movida similar pero que le sonaba que Paradign Plus si era capaz de hacerlo. De todas formas por lo que tengo oido Paradign no es una herramienta 'user friendly'.
+ La siguiente y estupida prueba consistió en heredar 2 clases de una de analisis y asociarla a cada una de las hijas un componente diferente. Tampoco es la forma.
+ Como somos tan inteligentes no se nos ha ocurrido ninguna otra manera, por lo que me he dado de alta en un grupo de www.rational.com y he puesto un post. Haber si es posible realizarlo...
Ahora solo me queda esperar... y mientras tanto investigare otras herramientas. Me gustaría ver si alguna de las que hay por ahí Open Source maneja esta situación.
Ya para acabar... Hay una forma de solo tener que hacer los cambios en un sitio. Pero no me gusta nada. La solución consistiría en:
+ Hacer las modificaciones en el objeto CORBA
+ Tener el objeto C++ que herede de un Objeto Base (particular para el). Añadirá funcionalidad de la capa de negocio.
+ La implementación del Objeto Base será un typedef al objeto C++ generado por el compilador de idl.
Esta solución aunque solventa el problema de tener que hacer cambios en más de un sitio tiene como problemas:
+ Se arrastran los tipos del mapping de CORBA a C++, y procesos que no tendrían por que saber nada de CORBA, van a tener que. Además obliga a linkar/compilar con codigo CORBA.
+ Los objetos C++ no van a tener atributos, por lo que en ningun momento se podrá hacer referencia a ellos.
No hay comentarios:
Publicar un comentario