Sunteți pe pagina 1din 10

MDA, OO-Method y la Tecnologa OLIVANOVA Model Execution

Juan Carlos Molina, Oscar Pastor


CARE Technologies; Universidad Politcnica de Valencia jcmolina@care-t.com; opastor@dsic.upv.es

Abstract. La historia de la ingeniera del software se ha caracterizado desde sus inicios por sucesivos aumentos en el nivel de abstraccin, lo cual ha permitido a los desarrolladores abordar problemas de mayor tamao y complejidad. El prximo paso en esta evolucin trasladar el foco del cdigo a los modelos, convirtiendo a estos en el elemento principal del proceso de desarrollo de software. La iniciativa MDA, promovida por Object Management Group sienta las bases para este cambio de paradigma, separando la lgica de las aplicaciones de las platformas software en las que estas se ejecutan. La metodologa OOMethod, que se basa en separar la definicin abstracta de un sistema de informacin (Espacio del Problema) de sus implementaciones concretas (Espacio de la Solucin) es adecuada para implementar herramientas de edicin de modelos de alto nivel de abstraccin que sean transformados automticamente en cdigo de una aplicacin para su ejecucin sobre una plataforma software concreta.

1. Introduccin
La historia del desarrollo de software puede verse como una sucesin de incrementos en el nivel de abstraccin, en un recorrido que acerca la programacin a las representaciones del Espacio del Problema, y las aleja del mbito del Espacio de la Solucin. Desde los tiempos en los que las computadoras se programaban mediante cableado, pasando por el uso del lenguaje mquina, la aparicin del lenguaje ensamblador y los primeros compiladores de lenguajes procedurales, hasta la programacin orientada a objetos y el desarrollo basado en componentes, cada evolucin, cada incremento en el nivel de abstraccin permita a los programadores abordar problemas cada vez de mayor tamao y complejidad, y aumentaba la calidad, mantenibilidad y longevidad de las aplicaciones. Cualquier desarrollador acepta actualmente esta evolucin como algo natural, y a nadie parece maravillarle ni preocuparle (como sucedi en su da) que hubiera programas que automatizaran la transformacin de un programa escrito en un lenguaje de programacin a un programa escrito en un lenguaje de programacin de menor nivel. Cada paso en la evolucin del desarrollo de software ha venido marcada siempre por:

elevar el nivel de abstraccin para definir los sistemas a desarrollar en un lenguaje de mayor nivel que el del lenguaje en el que se va a implementar el sistema o aplicacin, y automatizar la transformacin de programas escritos en ese lenguaje de mayor nivel a programas escritos en otro lenguaje de ms bajo nivel. El desarrollo de software dirigido por modelos (DSDM) se perfila como siguiente paso en este proceso evolutivo. En este trabajo presentaremos brevemente las bases de la propuesta MDA[1][2]. En el punto 3 haremos una introduccin a OO-Method[3], una metodologa de desarrollo de aplicaciones a partir de Modelos Conceptuales basada en el lenguaje de especificacin formal OASIS[4]. En el punto 4 comentaremos cmo dichos modelos pueden ser compilados (transformados) en aplicaciones y en el punto 5 describiremos los requisitos para definir un proceso de compilacin de modelos conceptuales. El punto 6 ilustrar las analogas entre la propuesta MDA y la metodologa OO-Method. En el punto 7 presentaremos la tecnologa OLIVANOVA Model Execution[5] como implementacin de la metodologa OO-Method y, por tanto, de la propuesta MDA.

2. MDA
La meta de la iniciativa MDA, promovida por el Object Management Group[6], es la separacin de la lgica de las aplicaciones de la plataforma software en la que dicha lgica vaya a ser implementada. Esta separacin permite reducir el impacto que la evolucin de las tecnologas tiene en el desarrollo de aplicaciones, al permitir que una misma especificacin pueda ser reificada en diferentes plataformas software. Por otro lado, traslada el conocimiento o la propiedad intelectual de una aplicacin desde el cdigo fuente (enfoque tradicional) a la especificacin. MDA confiere a los modelos la mayor importancia en el proceso de desarrollo de aplicaciones, en detrimento del cdigo. El modelo se convierte en el elemento ms valioso (hasta el punto de afirmar que, en MDA, todo es un modelo [7]) puesto que a partir de l, mediante una serie de transformaciones se puede obtener el cdigo de la aplicacin. El desarrollo de aplicaciones basado en MDA se basa en modelar las aplicaciones a desarrollar mediante un modelo independiente de detalles de implementacin o de la plataforma software en la que la aplicacin vaya a ejecutarse (PIM, PlatformIndependent Model), refinar estos modelos independientes de plataforma transformndolos en otros que incorporen detalles de implementacin (PSM, Platform-Specific Model), y transformar finalmente estos modelos en el cdigo de la aplicacin (Implementation Model, tambin llamado Code Model).

3. OO-Method
OO-Method es una metodologa de desarrollo de software basada en una clara separacin del Espacio del Problema (el 'qu') del Espacio de la Solucin (el 'cmo'). La definicin de un problema (la descripcin abstracta de una aplicacin,

representada en el correspondiente Modelo Conceptual), puede suceder con independencia de cualquier reificacin concreta (implementacin concreta de una solucin). Esto posiciona a OO-Method como una metodologa para implementar herramientas que sigan las directrices MDA de separacin de la lgica de las aplicaciones de las posibles implementaciones de las mismas. El formalismo que subyace a OO-Method es OASIS, un lenguaje formal y orientado a objetos para la especificacin de sistemas de informacin. Este marco formal proporciona una caracterizacin de los elementos conceptuales requeridos para especificar un sistema de informacin. Sus dos componentes principales son el Modelo Conceptual y el Modelo de Ejecucin. El Modelo Conceptual est dividido en cuatro vistas complementarias: el modelo de objetos, el modelo dinmico, el modelo funcional y el modelo de presentacin. Estas cuatro vistas permiten que todos los aspectos funcionales de una aplicacin puedan ser descritos de forma abstracta por medio de una serie de elementos conceptuales (a los que tambin nos referimos como primitivas conceptuales o patrones conceptuales) que tienen una semntica precisa. La mayor parte de estos patrones conceptuales tienen una notacin grfica basada en UML, que oculta la complejidad y el formalismo de la especificacin OASIS subyacente. Cualquier Modelo Conceptual de OO-Method es una instancia del Metamodelo OO-Method [8] El Modelo de Ejecucin establece las reglas de transformacin de un Modelo Conceptual (sistema especificado) a su representacin software correspondiente en una plataforma tecnolgica concreta, de manera que se preserve la semntica de los elementos del Modelo Conceptual y se asegure que la aplicacin resultante es funcionalmente equivalente a dicho modelo. Un Compilador de Modelos puede implementar el conjunto de transformaciones que relacionan los patrones conceptuales con representaciones software, asumiendo que cualquier decisin de diseo e implementacin tiene su correspondiente contrapartida que puede ser obtenida y adecuadamente representada a un mayor nivel de abstraccin (Modelo Conceptual).

4. Compilacin de Modelos Conceptuales OO-Method


Un modelo conceptual OO-Method representa, a todos los efectos, una aplicacin a construir. El siguiente paso natural despus de construir el modelo conceptual y validarlo, es implementar la aplicacin segn dicho modelo conceptual. Al proceso de convertir un modelo conceptual en una aplicacin lo llamamos Compilacin de Modelos Conceptuales. Si la creacin de modelos conceptuales supone una elevacin del nivel de abstraccin respecto del cdigo fuente del mismo modo que el cdigo fuente supone una elevacin del nivel de abstraccin respecto del cdigo mquina, parece lgico referirse a este proceso de transformacin mediante el trmino "compilacin" del mismo modo que llamamos compilacin al proceso de transformacin de cdigo fuente en cdigo mquina. Los tradicionales compiladores de lenguajes de programacin transforman un programa escrito en cierto lenguaje de programacin, que abstrae detalles de la plataforma hardware en la que se ejecutar (uso de registros, organizacin fsica de la

memoria, etc.) a cdigo ejecutable sobre cierta mquina teniendo en cuenta los requisitos de la misma como plataforma hardware. Anlogamente, una compilacin de modelos transformar un modelo conceptual que abstrae detalles de la plataforma software en la que se ejecutar (control de ejecucin, representacin de la informacin en memoria, acceso a datos, etc.) en un programa escrito en cierto lenguaje de programacin que tendr en cuenta los requisitos de la plataforma software en la que se ejecutar. Puesto que los modelos conceptuales OO-Method son totalmente independientes de los detalles de plataforma software, un mismo modelo conceptual puede ser compilado para diferentes plataformas software. As, diferentes compilaciones de modelos conceptuales podran producir aplicaciones para distintas plataformas software a partir de un mismo modelo conceptual. Aunque una aplicacin se perciba como un todo, se puede dividir lgicamente en capas. Adems de aplicaciones monolticas, tenemos aplicaciones cliente/servidor, aplicaciones en tres capas (presentacin, lgica de negocio, persistencia) y, ms genricamente, aplicaciones multicapa. Una compilacin de modelos no tiene porqu convertir un modelo conceptual en una aplicacin completa o, dicho de otro modo, en todas las capas lgicas que componen la aplicacin. Es posible, e incluso aconsejable, emplear procesos de compilacin de modelos diferentes para cada una de las capas lgicas en las que dividamos nuestra aplicacin. La unin de los resultados de aplicar cada proceso de compilacin de modelos sobre un mismo modelo conceptual ser la aplicacin completa resultante de la compilacin de dicho modelo conceptual. Dado que la semntica de los elementos del modelo conceptual est claramente definida, la compilacin de un modelo conceptual podra perfectamente realizarse de forma manual. Es decir, la especificacin que constituye el modelo conceptual contiene el nivel de detalle suficiente sobre el sistema a implementar, que dicha implementacin podra realizarse de forma manual por un programador sin necesidad de ms informacin. Es ms, partiendo de un mismo modelo conceptual, desarrolladores diferentes implementaran aplicaciones funcionalmente equivalentes (las distintas aplicaciones funcionaran de la misma manera) con independencia de cmo se hubiera implementado cada aplicacin (lenguaje de programacin escogido, modelo de programacin, etc.) Sin embargo, de igual modo que es conveniente tener herramientas para la creacin de modelos conceptuales, es interesante disponer de herramientas que realicen automticamente la compilacin de modelos: a estas herramientas las llamamos Compiladores de Modelos Conceptuales. Con independencia de si el proceso de compilacin se realiza de forma manual o de manera automtica mediante un compilador de modelos, hay que tener en cuenta una serie de requisitos y fijar unas guas para poder realizar la compilacin correcta y completa de un modelo conceptual.

5. Requisitos para la Compilacin de Modelos Conceptuales


La compilacin de un modelo conceptual en una aplicacin debe ser un proceso determinista que pueda aplicarse de forma sistemtica. Para obtener dicho proceso,

OO-Method establece cul debe ser la representacin de un modelo conceptual cualquiera en un entorno de desarrollo cualquiera (atendiendo tanto a los aspectos estticos como a los dinmicos) y una estrategia de ejecucin asociada que garantiza la equivalencia funcional entre una especificacin y su implementacin. Adems es necesario definir cul ser la arquitectura de las aplicaciones que el proceso de compilacin producir a partir de modelos conceptuales. Por ltimo es preciso establecer una estrategia de transformacin de los elementos del modelo conceptual a los elementos de la arquitectura de la aplicacin, y de estos a cdigo. 5.1. Estrategia de Ejecucin de Aplicaciones El primer aspecto clave a tener en cuenta para implementar un proceso de compilacin de modelos conceptuales es definir cmo las aplicaciones utilizarn los elementos definidos en el modelo conceptual para su funcionamiento. OO-Method propone una estrategia de ejecucin de aplicaciones abstracta, ligada a la semntica de los elementos de modelado, no a la de las plataformas software en las que vayan a implementarse las aplicaciones. Esto permite que la estrategia no vare entre procesos de compilacin distintos, completa la semntica de los elementos de modelado y garantiza la equivalencia funcional de las aplicaciones resultado del proceso de compilacin con los modelos conceptuales utilizados como entrada de dichos procesos. 5.2. Arquitectura de las Aplicaciones La estrategia de ejecucin de aplicaciones fija el tronco comn para toda aplicacin compilada a partir de un modelo conceptual OO-Method y garantiza la equivalencia funcional de la aplicacin con el modelo conceptual. El conjunto de mecanismos fijado por la estrategia de ejecucin de aplicaciones es abstracto en el sentido de que nicamente indica un conjunto de mnimos que debe implementar toda aplicacin, pero no dice cmo deben implementarse dichos mecanismos. Es aqu donde entra en juego el segundo requisito: la arquitectura de las aplicaciones. En primer lugar, es obvio que la arquitectura de una aplicacin debe proporcionar mecanismos para todos y cada uno de los elementos de un modelo conceptual: clases, atributos, relaciones, derivaciones, ...etc. Pero adems, la arquitectura de una aplicacin deber concretar cmo se implementarn todos y cada uno de los mecanismos establecidos por la estrategia de ejecucin de aplicaciones, con la semntica ya expuesta. Estos mecanismos debern relacionarse e interactuar en tiempo de ejecucin, tal y como fija la estrategia de ejecucin de aplicaciones, para garantizar la equivalencia funcional de la aplicacin con el modelo conceptual. Finalmente, deben proporcionarse mecanismos independientes del modelo conceptual pero comunes a toda aplicacin: control de errores, protocolos de comunicacin, acceso a datos, etc. Conciliando el conjunto de mecanismos requeridos por el modelo conceptual y la estrategia de ejecucin de aplicaciones con los que pudiera imponer o requerir el

lenguaje de programacin y/o el modelo de programacin podremos definir la arquitectura de la aplicacin. Si el proceso de compilacin que vamos a aplicar no generase una aplicacin completa sino slo una de sus capas lgicas, todo lo anteriormente expuesto sigue siendo vlido. Habra que restringir, sin embargo, los mecanismos del modelo conceptual y los de la estrategia de ejecucin de aplicaciones a los que correspondan a la capa lgica a implementar. Una arquitectura de aplicacin perfectamente definida permitir aplicar el proceso de compilacin de modelos conceptuales de forma sistemtica sobre diferentes modelos, obteniendo distintas aplicaciones (una para cada modelo) que compartirn caractersticas y niveles de calidad. Si, en un momento dado, cambiasen los niveles de aceptacin para tiempos de respuesta o cualquier otra caracterstica de las aplicaciones, revisaramos la definicin de la arquitectura de aplicacin para alcanzar los nuevos niveles, pero no modificaramos nuestro modelo conceptual. Tras haber modificado la arquitectura de aplicacin, aplicaramos el nuevo proceso de compilacin de modelos conceptuales resultante a nuestro modelo conceptual para obtener una nueva aplicacin que proporcionara la misma funcionalidad (puesto que el modelo conceptual no habra variado) pero cumplira con los nuevos requisitos. Al conjunto de elementos con sus propiedades que componen la arquitectura de la aplicacin y a las relaciones entre dichos elementos lo denominamos Modelo de la Aplicacin. 5.3 Estrategia de Transformacin Para terminar de definir nuestro proceso de compilacin de modelos conceptuales es necesario contar con una estrategia de transformacin para obtener el modelo de la aplicacin a partir del modelo conceptual y, en un segundo paso, obtener el cdigo de la aplicacin a partir del modelo de la aplicacin. La estrategia de transformacin se basa en la definicin de: Correspondencias, que establecen relaciones entre los elementos del Modelo Conceptual y los elementos del Modelo de la Aplicacin. Transformaciones, que establecen cmo obtener la aplicacin a partir de cada uno de los elementos del Modelo de la Aplicacin. Las correspondencias establecen relaciones entre los elementos del Modelo Conceptual y los elementos del Modelo de la Aplicacin. Establecen cmo crear elementos del segundo modelo a partir de elementos del primer modelo, de manera que el conjunto de correspondencias permite crear una instancia del Modelo de la Aplicacin a partir del Modelo Conceptual. El conjunto de correspondencias puede verse como una funcin cuyo dominio es el Modelo Conceptual y cuya imagen es el Modelo de la Aplicacin. Dicha funcin debe ser sobreyectiva, pero no es necesario que sea biyectiva. Las transformaciones definen cmo obtener un fragmento de cdigo a partir de un elemento del Modelo de la Aplicacin y los valores de sus propiedades. Una transformacin puede verse como una funcin cuyo dominio es un elemento del

Modelo de la Aplicacin (o, ms concretamente, cuyo dominio es un subconjunto de las propiedades de un elemento del Modelo de la Aplicacin) y su imagen un elemento del Modelo de Cdigo o de Implementacin.

6. MDA y OO-Method
Tras lo expuesto hasta el momento, es fcil concluir que la metodologa OO-Method proporciona un mbito metodolgico compatible con la propuesta MDA. En primer lugar, la primera fase de OO-Method se basa en la construccin de un Modelo Conceptual. Dicho modelo conceptual puede asimilarse al PIM (PlatformIndependent Model) de MDA, puesto que describe todos los aspectos funcionales de la aplicacin independientemente de la plataforma software en la que vaya a implementarse y ejecutarse. La segunda fase de OO-Method es la transicin del Modelo Conceptual al cdigo de la aplicacin. En esta fase, y segn el Modelo de Ejecucin, se defina un Modelo de Aplicacin, que se correspondera con el PSM (Platform-Specific Model) de MDA. Adems, se define un conjunto de correspondencias entre los elementos del Modelo Conceptual y los elementos del Modelo de Aplicacin. Estas correspondencias se corresponderan con las transformaciones PIM-PSM en MDA. Finalmente, en OO-Method se asocia a cada uno de los elementos del Modelo de Aplicacin una transformacin para obtener el cdigo correspondiente a dicho elemento. Este conjunto de transformaciones se corresponderan con las transformaciones de PSM a Implementation Model (Code Model) en MDA.

7. Implementaciones de OO-Method
En [2], se indica que para que una propuesta tecnolgica sea adoptada, sta debe incluir un PIM y al menos un PSM y que, adems, debe haber una implementacin o el compromiso de proporcionar una implementacin en el plazo de un ao. La metodologa OO-Method, cuyas analogas con MDA ya hemos visto, cuenta ya con implementaciones realizadas por CARE Technologies [9] bajo el nombre de OLIVANOVA Model Execution donde encontramos, entre otras, la herramienta de modelado OLIVANOVA Modeler[10] y los compiladores de modelos llamados OLIVANOVA Transformation Engines[11]. As, OLIVANOVA Model Execution proporciona una metodologa de desarrollo de aplicaciones soportada por herramientas basadas en la iniciativa MDA [12]. 7.1. OLIVANOVA Modeler OLIVANOVA Modeler es una herramienta de edicin y validacin de modelos conceptuales OO-Method. Entre sus funciones principales se incluyen las siguientes: Soporte a los cuatro modelos: objetos, dinmico, funcional y presentacin. Soporte al modelado de vistas legadas.

Asistentes para la escritura de frmulas Validacin automtica de cada uno de los modelos Creacin de modelos a partir de la importacin de: o Modelos existentes creados por OLIVANOVA Modeler o Modelos existentes creados por herramientas de terceros (en formato XMI[13]) o Estructuras de base de datos Soporte al modelado cooperativo Generacin automtica de documentacin sobre un modelo Generacin automtica de mtricas para medir el tamao funcional asociado a un modelo

En trminos MDA diramos que OLIVANOVA Modeler es una herramienta de edicin y validacin de PIMs. La herramienta implementa un repositorio de modelos que pueden ser exportados a un formato XML[14] para su intercambio con otras herramientas.

7.2. OLIVANOVA Transformation Engines OLIVANOVA Transformation Engines son implementaciones de diferentes procesos de compilacin de modelos conceptuales OO-Method. Cada Transformation Engine, implementa un repositorio del modelo conceptual, un repositorio del modelo de aplicacin, un conjunto de correspondencias entre los elementos del repositorio del modelo conceptual y los elementos del repositorio del modelo de aplicacin, y el conjunto de transformaciones asociadas a cada uno de los elementos del repositorio del modelo de aplicacin. El repositorio del modelo conceptual es comn a todos los transformation engines y es capaz de cargar un modelo conceptual a partir de un fichero XML de intercambio producido por OLIVANOVA Modeler. Las correspondencias acceden al repositorio del modelo conceptual y se encargan de ir creando elementos en el repositorio del modelo de aplicacin. El repositorio del modelo de aplicacin contiene elementos para cada uno de los elementos del modelo conceptual, as como los necesarios para implementar la estrategia de ejecucin de aplicaciones en la plataforma software especfica del transformation engine, y los requeridos por la propia plataforma software. Las transformaciones acceden al repositorio del modelo de aplicacin y generan la porcin de cdigo de la aplicacin correspondiente a cada elemento del repositorio. En trminos MDA, diramos que un OLIVANOVA Transformation Engine es una implementacin de una herramienta opera las transformaciones de PIM a PSM y las transformaciones de PSM a IM (Implementation Model)

8. Conclusiones
La historia del desarrollo de software puede verse como una sucesin de incrementos en el nivel de abstraccin caracterizada por la utilizacin de lenguajes de desarrollo de mayor nivel construidos sobre lenguajes de desarrollo existentes y por herramientas que automatizan la transformacin de programas escritos en lenguajes de ms alto nivel en programas escritos en lenguajes de menor nivel. El siguiente paso en esta evolucin parece dirigirse a la utilizacin de lenguajes de modelado, y la iniciativa MDA sienta las bases para la consecucin de este paso, al proponer la definicin de las aplicaciones mediante modelos independientes de plataforma que se refinan en modelos especficos para una plataforma (incluyen detalles sobre la plataforma software en la que se implementar la aplicacin) a partir de los cuales se obtendra el cdigo de la aplicacin. Esta iniciativa, sin embargo, debe realizarse mediante la provisin de herramientas que permitan la creacin, edicin y validacin de dichos modelos y que automaticen las transformaciones entre ellos. OO-Method es una metodologa de desarrollo de aplicaciones que permite describir aplicaciones de forma abstracta mediante el uso de Modelos Conceptuales orientados a objetos (basados en el lenguaje de especificacin formal OASIS) y reificarlas automticamente en diferentes plataformas software. Las analogas entre la metodologa OO-Method y la iniciativa MDA son, pues, evidentes. OLIVANOVA Model Execution es una tecnologa de desarrollo de software a partir de modelos conceptuales orientados a objetos que constituye una implementacion, basada en la metodologa OO-Method, de la iniciativa MDA promovida por OMG. La herramienta OLIVANOVA Modeler permite la creacin, edicin y validacin de modelos conceptuales orientados a objetos, independientes de plataforma y equivalentes por tanto al concepto de PIM definido en MDA. OLIVANOVA Model Execution define modelos de aplicacin, equivalentes al concepto de PSM definido en MDA, para las diferentes capas lgicas de una aplicacin. Para cada modelo de aplicacin definido un OLIVANOVA Transformation Engine automatiza la transformacin de modelo conceptual a modelo de aplicacin (PIM-PSM) y del modelo de aplicacin al cdigo (PSM-IM).

References
1. 2. 3. 4. 5. http://www.omg.org/mda MDA Guide Version 1.0.1, http://www.omg.org/docs/omg/03-06-01.pdf O. Pastor, J. Gomez, E. Insfrn and V. Pelechano, "The OO-Method approach for information systems modeling: from object-oriented conceptual modeling to automated programming", Information Systems, 26, 2001, pp. 507-534. O. Pastor, F. Hayes and S. Bear, "OASIS: An object oriented specification language", Procs. CAiSE 1992, LNCS593, Springer-Verlag, Berlin, Germany, 1992, pp. 348-363. O. Pastor, J.C. Molina and E. Iborra, "Automated production of fully functional applications with OlivaNova Model Execution", ERCIM News No.57, April 2004.

6. 7. 8. 9. 10. 11. 12. 13. 14.

http://www.omg.org J. Bzivin, "MDA: From Hype to Hope, and Reality", Guest talk at the 6th International Conference on the Unified Modeling Language-UML'2003, October 20-24, 2003, San Francisco, California, USA V. Pelechano, E. Insfrn, O. Pastor, El Metamodelo OO-Method y su Repositorio Relacional, Technical Report, DSIC-II/16/98. Universidad Politcnica de Valencia. Valencia, Espaa. Mayo 1998. http://www.care-t.com http://www.care-t.com/products/modeler.html http://www.care-t.com/products/transengine.html http://www.care-t.com/technology/mda.html http://www.omg.org/technology/documents/formal/xmi.htm http://www.w3c.org/XML

S-ar putea să vă placă și