FR 2840089 A1 20031128 FR 0206287 A 20020523 informations de contact. OUTIL DE DEVELOPPEMENT LOGICIEL POUR ASSURER DES LIENS ENTRE LES MODELES UML ET LEUR IMPLEMENTATION EN ENVIRONNEMENT CORBA L'invention concerne un outil de developpement logiciel pour assurer des liens entre les modeles UML des interfaces CORBA et de leur implementation. UML est l'acronyme de ['expression anglaise Unified Modeling Language. CORBA est l'acronyme de ['expression anglaise Common Object Request Broker Architecture. IDL est l'acronyme de ['expression anglaise Interface Description Language. Le langage UML fournit des moyens efficaces pour specifier des systemes logiciels et decrire un modele de ces systemes. Quelques ateliers logiciels, c'est-a-dire des outils de developpement d'applications logicielles, permettent la generation de code a partir du modele UML. Pour le developpement d'un systeme distribue base sur CORBA et suivant un processus UML, deux modbles au moins doivent etre definis a savoir: un modele pour specifier les interfaces IDL et un autre pour definir leur implementation. Les ateliers logiciels proposent des solutions pour decrire les deux sortes de modeles et generer le code IDL et ['implementation du code a partir de ces modeles. Mais ces outils ne permettent pas d'equiper le modele d'interfaces UML pour realiser un lien avec le modele d'implementation UML et les deux modeles restent completement independants. Ceci implique la generation d'un code d'implementation qui n'integre pas les specificites CORBA du systeme. 2 2840089 Pour etablir un lien entre le modele UML des interfaces IDL d'un systeme distribue et le modele UML de ['implementation de ce systeme, la seule solution existante consiste a: - generer le code IDL des interfaces a partir du modele UML, - compiler ces interfaces avec un ORB (Object Request Broker), - passer par une phase de retro-ingenierie pour obtenir un modele UML de ['implementation a partir du code genere. La solution qui vient d'etre presentee n'est qu'une solution partielle du probleme puisqu'elle ne relic que les modeles UML et ne permet pas de d'equiper le modele d'interfaces UML afin de generer un code d'implementation relatif a ces interfaces. De plus cette solution depend tres fortement de la qualite de la phase de retro-ingenierie a pa rtir du code genere. La realisation ma nuelle d'une telle phase peut garantir une bonne qualite mais restera assez inefficace, et I'automatisation au moyen d'un atelier logiciel presente a ce jour une qualite insuffisante et demande un retour manuel sur le modele obtenu. Un autre inconvenient provient du fait que cette solution ne procure aucune dependance entre le modeie d'interface et le modele d'implementation. Ainsi, des changements, memes mineurs, des interfaces du modele UML ne peuvent pas etre reportes facilement sur le modele d'implementation. La presente invention consiste, d'une part a equiper automatiquement le modele d'implementation UML a partir du modele d'interfaces UML grace a une relation UML presente entre chaque classe d'interface et sa classe d'implementation, et d'autre part a utiliser ce lien pour generer le code d/implementation avec les specificites CORBA. L'invention s'applique a la transformation et ['instrumentation d'application servour et egalement a la transformation et ['instrumentation d'application clientes. 3 2840089 L'invention concerne done aussi un outil de developpement logiciel pour assurer des liens entre ies modeles UML des interfaces CORBA et les implementations clientes. On ra ppel le plus precisement q ue da ns le developpement d'u n systeme d'objets distribues dans 1'environnement Corba avec le langage UML, les deux modeles suivants au moins doivent etre definis: - un modele denomme modele d'analyse dans lequel les interfaces et leurs relations avec d'autres classes de haut niveau decrivent ['application. - un modele denomme modele d'implementation, dans lequel toutes les classes de ['application y vent designees. Dans ce modele de nombreuses classes techniques vent a joutees. Selon une autre caracteristique de ['invention, il est done propose d'assurer un lien entre le modele d'implementation UML a partir du modele 1 5 d'analyse. En outre, on rappelle qu'un document > (contenu dans la specification CORBA 2.4) offre quatre modeles differents pour invoquer une interface a un client a savoir: - I'invocation synchrone (ou bidirectionnelle), - I'invocation unidirectionnelle, - I'invocation asynchrone avec le modele >; - I'invocation asynchrone avec le modele . Les invocations asynchrones requierent une implementation de classes specifiques afin de traiter les reponses. il est done propose, conformement a 1'invention pour les invocations asynchrones, de stereotyper la relation UML > entre une classe (ou methode) et une interface. L'etiquette UML sur cette relation > specific la caracteristique de cette relation asynchrone qui peut etre > ou >. 4 2840089 Ainsi a partir du modele d'analyse on va construire automatiquement le modele d'implementation. Ceci va consister, comme on va le voir dans la suite, a creer une classe resumee > ou ' a partir des interfaces selon les specificites CORBA 2.4 et le langage C+ +. On va egalement generer le code correspondant selon les specificites CORBA 2.4 et le langage C++. L'invention a done pour objet un outil de developpement logiciel comprenant des moyens pour concevoir des objets d'interface UML et les generer en langage IDL, principalement caracterise en ce qu'il comprend: Des moyens pour concevoir des objets d'implementation UML et generer le code source d'implementation correspondant (C++), - Et en ce que les objets d'interface UML et les objets d'implementation UML vent lies lors de la phase de conception. Selon une autre caracteristique, les objets d'implementation UML et les objets d'interface UML vent reiies par une relation UML presente entre chaque classe d'interface et la ciasse d'implementation correspondante, ce lien eta nt utilise pour generer le code d'implementation avec les specificites CORBA. Un objet d'interface UML est le modele specifiant les interfaces IDL (Interface Description Language) d'un systeme distribue et l'autre objet definit leur implementation. Cet objet d'interface UML est le modele d'analyse dans lequel les interfaces et leurs relations avec d'autres classes de haut niveau decrivent I'application cliente, I'autre objet etant le modele d'implementation dans loquel toutes les classes de ['application y vent designees. D'autres particularites et avantages de ['invention appara^tront clairement a la lecture de la description qui est donnee ci-apres a titre d'exemple non limitatif et en regard des dessins sur lesquels: 2840089 - la figure 1 represente un schema illustrant l'outil de developpement pour la transformation et ['instrumentation d'une classe qui implemente une interface a partir d'un modele d'analyse; - la figure 2, represente de fac,on schematique le modele d'analyse d'une application cliente; - la figure 3, illustre schematiquement l'outil de developpement pour la transformation et ['instrumentation de ['application cliente representee a la figure 2. 11 est propose selon ['invention, d'equiper automatiquement le modele d'impiementation UML a partir du modele d'interfaces UML, reference MA sur la figure 1, gr&ce a une relation UML presente entre chaque classe d'interface et sa classe d'implementation. II est propose egalement d'utiliser ce lien pour generer le code d'implementation avec les specificites CORBA. Comme l'OMG (Object Management Group) I'a defini dans le profil UML pour CORBA, les interfaces IDL doivent etre decrites, dans un modele UML par des classes d'interface stereotypees >. A cette fin on va utiliser un lien UML "realize" (lien de realisation) entre les interfaces et les classes d'implementation correspondantes. Ce lien permet d'associer automatiquement les methodes d'implementation relatives a la description de ['interface IDL. Pour chaque operation definie dans une interface IDL, dans la classe d'implementation correspondante, une methode est automatiquement generee avec le meme nom et la bonne signature. Pour chaque attribut d'une interface IDL, 2 methodes d'acces vent definies dans la classe d'implementation, pour etablir et obtenir la valeur de cet attribut. L'invention s'applique tout aussi bien a des applications serveur qu'a des applications client. 6 2840089 Sur la figure 1 on a represente a titre d'exemple une application servour. Le schema de cette figure, illustre la transformation et ['instrumentation d'une classe qui implemente une interface > a partir d'un modele d'analyse MA. Selon l'exemple particulier illustre par cette figure, les 4 methodes de la classe d'implementation > et leur signature ont ete automatiquement a joutees grace au lien realise entre chaque classe. La solution consiste egalement a modifier la generation du code des classes d'implementation afin de prendre en compte les specificites CORBA. Par exemple, la gestion des espaces de nomage, des signatures et de ['heritage des objets CORBA est automatiquement realisee par le generateur a partir du modele. Dans l'exemple precedent, si ['interface > appartient a un module CORBA >, la classe ' en C++ generee herite de la classe >. Pour le modele de l'exemple precedent, le code C++ genere est tel que precise dans l'annexe a la description. L'invention est decrite dans la suite pour un modeie d'analyse MA d'une application cliente. Le modele d'analyse de ['application cliente est illustre sur la figure 2 et la figure 3 represente la transformation et ['instrumentation de cette application cliente afin de determiner comment ['interface sera utilisee par le client. Comme deja precise, il s'agit d'un modele d'analyse dans lequel les interfaces et leurs relations avec d'autres classes de haut niveau decrivent I'application. La relation UML > entre deux classes ou entre une methode et une classe signifie que la methode (ou des methodes de ia classe) utilise la classe designee. Si cette classe designee est une interface stereotypee CORBA, la methode utilise une interface. 7 2840089 11 est done propose de definir dans le modele d'analyse de queue maniere est utilisee cette interface (synchrone ou asynchrone) en ajoutant un stereotype denomme > dans la relation UML >. Le stereotype ' est complete par une etiquette UML denommee > ou . Cette etiquette indique comment le modele d'implementation est construit. II n'y a pas de difference entre le modele d'analyse et le modele d'implementation Ml pour les invocations unidirectionnelles et bidirectionnelles. Le code de generation C++ doit juste ajouter le contenu du > correspondant (I'element correspondant), dans le corps de la classe qui utilise les interfaces. Par exemple, comme on peut le voir illustre sur la figure 2, le modele d'analyse montre que la methode m() de la classe > utilise une interface appelee >. Sur ce lien le stereotype > specific grace a ['etiquette > de queue maniere est utilisee ['interface . Ce lien permet de modifier automatiquement le modele UML et de creer la classe > avec les methodes correspondantes telles que definies par la norme CORBA Messaging. Dans le cas d'une invocation asynchrone avec un modele >, il est propose d'a jouter un stereotype > sur le lien > et pour le modele >, il est propose dia jouter le stereotype . Avec ces informations, le modele UML contient suffisamment d'informations pour modifier le modele d'implementation. Selon les specificites de CORBA Messaging, des classes doivent etre introduites dans le nouveau modele UML. Ces classes vent liees a leur interface par un lien d'implementation afin de garantir les coherences entre les deux modeles. 8 2840089 Pour mettre en ceuvre la generation du code IDL, une classe stereotypee > qui comporte une relation > stereotypee > ajoute une option dans le compilateur IDL pour specifier qu'elle doit generer des squelettes et des > specifiques avec le module > ajoute. Pour mettre en couvre la generation de code C+ +, les classes comportent une etiquette > et > ou >. Les etiquettes vent utilisees pour que la generation de code C++ puisse prendre en compte les regles et syntaxes specifiees par le document > de l'OMG. 9 2840089 ANNEXE Class Streamimplantation: public:: POA-Messaging:: Stream void read( char*_out msg. Messaging:: Stream_out replyStream) {-- -}; void write( const char* msg) {-- -}; void* channei() {- - -}; void channel( const char* value) {}; }; o 2840089 REVENDICATIONS 1. Outil de developpement logiciel comprenant des moyens pour concevoir des objets d'interface UML et les generer en langage IDL, caracterise en ce qu'il comprend: - Des moyens pour concevoir des objets d'implementation UML et generer le code source d'implementation correspondant (C++), - Et en ce que les objets d'interface UML et les objets d'implementation UML vent lies lors de la phase de conception. 2. Outil de developpement logiciel selon la revendication 1, caracterise en ce que les objets d'implementation UML et les objets d'interface UML vent relies par une relation UML presente entre chaque classe d 'interface et la classe d 'implementation corresponda nte, ce lien eta nt utilise pour generer le code d'implementation avec les specificites CORBA. 3. Outil de developpement logiciel selon la revendication 1 ou 2, caracterise en ce qu'un objet d'interface UML est le modele specifiant les interfaces IDL (Interface Description Language) d'un systeme distribue et l'autre objet definit leur implementation. 4. Outil de developpement logiciel selon la revendication 1, 2 ou 3, caracterise en ce que cet objet d'interface UML est le modele d'analyse dans lequel les interfaces et leur relations avec d'autres classes de haut niveau decrivent ['application cliente et l'autre objet est le modele d'implementation dans lequel toutes les classes de ['application y vent designees.