<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>1794-1237</journal-id>
<journal-title><![CDATA[Revista EIA]]></journal-title>
<abbrev-journal-title><![CDATA[Revista EIA]]></abbrev-journal-title>
<issn>1794-1237</issn>
<publisher>
<publisher-name><![CDATA[Escuela de ingenieria de Antioquia]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1794-12372007000200011</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[MDA Y EL PAPEL DE LOS MODELOS EN EL PROCESO DE DESARROLLO DE SOFTWARE]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Quintero]]></surname>
<given-names><![CDATA[Juan Bernardo]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Anaya]]></surname>
<given-names><![CDATA[Raquel]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad EAFIT  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<aff id="A02">
<institution><![CDATA[,Universidad EAFIT  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>12</month>
<year>2007</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>12</month>
<year>2007</year>
</pub-date>
<numero>8</numero>
<fpage>131</fpage>
<lpage>146</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_arttext&amp;pid=S1794-12372007000200011&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_abstract&amp;pid=S1794-12372007000200011&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_pdf&amp;pid=S1794-12372007000200011&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[El papel de los modelos es fundamental en el desarrollo de software para potenciar el reúso de los diferentes elementos del software y facilitar la labor de los diferentes roles que participan del proceso. La Arquitectura Dirigida por Modelos (MDA) propone un proceso de desarrollo basado en la realización y transformación de modelos. Los principios en los que se fundamenta MDA son la abstracción, la automatización y la estandarización. El proceso central de MDA es la transformación de modelos que parten del espacio del problema (CIM) hasta modelos específicos de la plataforma (PSM), pasando por modelos que describen una solución independientemente de la computación (PIM). Para explicar el papel de los modelos en el proceso de desarrollo de software este artículo explora los principales conceptos presentados en la propuesta de MDA.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[The role of models is critical in software development to enable the reuse of different software elements and to aid the work of several roles involved in the process. Model Driven Architecture (MDA) suggests a development process based on models realization and transformation. The principles in which MDA is based are abstraction, automation, and standardization. The central process of MDA is the transformation of models from the problem space (CIM) to platform specific models (PSM), passing across models describing a platform independent solution (PIM). In order to explain the model role in the software process development, this paper explores the main concept presented in the MDA proposal.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[reúso]]></kwd>
<kwd lng="es"><![CDATA[modelo]]></kwd>
<kwd lng="es"><![CDATA[lenguaje de modelado unificado (UML)]]></kwd>
<kwd lng="es"><![CDATA[arquitectura dirigida por modelos (MDA)]]></kwd>
<kwd lng="es"><![CDATA[lenguaje de restricciones de objetos (OCL)]]></kwd>
<kwd lng="es"><![CDATA[transformación]]></kwd>
<kwd lng="es"><![CDATA[perfil UML]]></kwd>
<kwd lng="es"><![CDATA[mapeo]]></kwd>
<kwd lng="es"><![CDATA[marcado]]></kwd>
<kwd lng="en"><![CDATA[reuse]]></kwd>
<kwd lng="en"><![CDATA[model]]></kwd>
<kwd lng="en"><![CDATA[Unified Modeling Language (UML)]]></kwd>
<kwd lng="en"><![CDATA[Model Driven Architecture (MDA)]]></kwd>
<kwd lng="en"><![CDATA[Object Constraint Language (OCL)]]></kwd>
<kwd lng="en"><![CDATA[transformation]]></kwd>
<kwd lng="en"><![CDATA[UML profile]]></kwd>
<kwd lng="en"><![CDATA[mapping]]></kwd>
<kwd lng="en"><![CDATA[marked]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="center"><font size="4" face="Verdana"><B>MDA Y EL PAPEL DE LOS MODELOS EN EL PROCESO DE DESARROLLO DE SOFTWARE</B></font></p>     <p align="center">&nbsp;</p> <font face="Verdana"size="2">     <p><B> Juan Bernardo Quintero*,   Raquel Anaya**</B></p>     <p>* Ingeniero de Sistemas Universidad de Antioquia y Mag&iacute;ster en Ingenier&iacute;a Inform&aacute;tica, Universidad EAFIT. Docente e investigador del Grupo de Investigaci&oacute;n en Ingenier&iacute;a de Software, Universidad EAFIT. <a href="mailto:jquinte1@eafit.edu.co">jquinte1@eafit.edu.co</a></p>     <p>  ** Doctora en Ingenier&iacute;a de la Programaci&oacute;n e Inteligencia Artificial, Universidad Polit&eacute;cnica de Valencia. Directora del Grupo de Investigaci&oacute;n en Ingenier&iacute;a de Software, Universidad EAFIT. <a href="mailto:ranaya@eafit.edu.co">ranaya@eafit.edu.co</a></p>     <p>  Art&iacute;culo recibido 27-IX-2007. Aprobado 19-XI-2007<BR />   Discusi&oacute;n abierta hasta junio de 2008</p> <hr size="1" /> </font>     <p><font size="3" face="Verdana"><B>  RESUMEN</B></font></p> <font face="Verdana"size="2">     <p>  El papel de los modelos es fundamental en el desarrollo de software para potenciar el re&uacute;so de los diferentes elementos del software y facilitar la labor de los diferentes roles que participan del proceso. La Arquitectura Dirigida por Modelos (MDA) propone un proceso de desarrollo basado en la realizaci&oacute;n y transformaci&oacute;n de modelos. Los principios en los que se fundamenta MDA son la abstracci&oacute;n, la automatizaci&oacute;n    y la estandarizaci&oacute;n. El proceso central de MDA es la transformaci&oacute;n de modelos que parten del espacio del problema (CIM) hasta modelos espec&iacute;ficos de la plataforma (PSM), pasando por modelos que describen una soluci&oacute;n independientemente de la computaci&oacute;n (PIM). Para explicar el papel de los modelos en el proceso de desarrollo de software este art&iacute;culo explora los principales conceptos presentados en la propuesta de MDA.</p> </font>     <p><font size="2" face="Verdana"><B> <font size="3">PALABRAS CLAVE:</font></B> re&uacute;so; modelo; lenguaje de modelado unificado (UML); arquitectura dirigida por modelos (MDA); lenguaje de restricciones de objetos (OCL); transformaci&oacute;n; perfil UML; mapeo; marcado.</font></p> <font face="Verdana"size="2"> <hr size="1" /> </font>     <p><font size="3" face="Verdana"><B>  ABSTRACT</B></font></p> <font face="Verdana"size="2">     ]]></body>
<body><![CDATA[<p>  The role of models is critical in software development to enable the reuse of different software elements and to aid the work of several roles involved in the process. Model Driven Architecture (MDA) suggests a development process based on models realization and transformation. The principles in which MDA is based are abstraction, automation, and standardization. The central process of MDA is the transformation of models from the problem space (CIM) to platform specific models (PSM), passing across models describing a platform independent solution (PIM). In order to explain the model role in the software process development, this paper explores the main concept presented in the MDA proposal.</p> </font>     <p><font size="2" face="Verdana"><B> <font size="3">KEY WORDS:</font></B> reuse; model; Unified Modeling Language (UML); Model Driven Architecture (MDA); Object Constraint Language (OCL); transformation; UML profile; mapping; marked.</font></p> <font face="Verdana"size="2"> <hr size="1" /> </font>     <p><font size="3" face="Verdana"><B>1. INTRODUCCI&Oacute;N</B></font></p> <font face="Verdana"size="2">     <p>  El re&uacute;so de software es una de las estrategias que se considera promisoria para que la industria de software pueda enfrentar el reto de desarrollar productos con niveles de calidad y productividad adecuados en un contexto de negocio altamente complejo y din&aacute;mico y con acelerados cambios tecnol&oacute;gicos. El uso de plantillas, componentes de granularidad gruesa, patrones de dise&ntilde;o, arquitecturas   de referencia, frameworks, entre otros, son mecanismos cada vez m&aacute;s utilizados por los desarrolladores de software. El objetivo de dichas pr&aacute;cticas es lograr que el re&uacute;so se integre de forma sist&eacute;mica en las diferentes etapas del desarrollo, de tal manera que su impacto en los diferentes artefactos resultantes del proceso de desarrollo sea efectivo y, en lo posible, medible (Jacobson et al., 1997).</p>     <p>  Al plantear el interrogante: &iquest;Cu&aacute;l es el gran reto de las industrias que desarrollan software? nos encontramos con una diversidad de respuestas que parecen convergir a la necesidad de mejorar el desempe&ntilde;o para maximizar las ganancias. El Human Performance Center agrupa las tendencias que sigue la comunidad inform&aacute;tica para lograr tal prop&oacute;sito, en tres enfoques b&aacute;sicos (HPC, 2002):</p>     <p>- <em>Trabajando m&aacute;s r&aacute;pidamente</em>. Mejorando las herramientas   que apoyan el desarrollo de software (IDE<sup><a href="#1" name="s1">1</a></sup>, compiladores, generadores de c&oacute;digo, etc.), se pueden mejorar magnitudes de hasta una unidad porcentual.</p>     <p>  - <em>Trabajando m&aacute;s &aacute;gilmente:</em> analizando, evaluando   y mejorando la forma de trabajar (SPI<sup><a href="#2" name="s2">2</a></sup>), se pueden mejorar magnitudes de hasta dos d&iacute;gitos porcentuales.</p>     <p>  - <em>Trabajando menos:</em> cambiando la forma de trabajar, maximizando el re&uacute;so, no desgast&aacute;ndose en dise&ntilde;o,   codificaci&oacute;n y pruebas exhaustivas, realizando programaci&oacute;n en el nivel de ingenier&iacute;a de modelos y requisitos, de esta forma se pueden mejorar magnitudes de hasta tres d&iacute;gitos porcentuales.</p>     <p>  El planteamiento anterior evidencia la importancia   de proponer estrategias de trabajo que potencien el re&uacute;so a un alto nivel de abstracci&oacute;n. Es aqu&iacute; donde las aproximaciones avanzadas en esta &aacute;rea, como la arquitectura dirigida por modelos &ndash;MDA&ndash; (OMG-MDA, 2003), las l&iacute;neas de productos de software &ndash;SPL<sup><a href="#3" name="s3">3</a></sup>&ndash; (SEI-SPL, 2006), los lenguajes espec&iacute;ficos de dominio &ndash;DSL<sup><a href="#4" name="s4">4</a></sup>&ndash; (Fowler, 2006) y el desarrollo orientado por aspectos &ndash;AOSD<sup><a href="#5" name="s5">5</a></sup>&ndash;) (AOSA, 2006) proponen pensar tempranamente en formas de re&uacute;so basadas en la manera como se hace abstracci&oacute;n   de un problema y se especifica una propuesta de soluci&oacute;n.</p>     <p>  Dada la complejidad del desarrollo de una soluci&oacute;n de software, las herramientas CASE (Computer Aided Software Engineering) son imprescindibles como apoyo al trabajo del grupo de desarrollo. Una de las caracter&iacute;sticas que motivan la adquisici&oacute;n de una herramienta CASE es agilizar el proceso de desarrollo, tratando de automatizar el proceso de generaci&oacute;n del producto final a partir de los modelos construidos. Dos de los principales inconvenientes que se presentan en el uso de las herramientas   CASE son la generaci&oacute;n limitada de c&oacute;digo (por ejemplo, scripts de base de datos y esqueleto de clases en un lenguaje determinado) y la r&aacute;pida obsolescencia de los modelos, debido a que, una vez realizada la generaci&oacute;n del c&oacute;digo, el desarrollador se concentra en completar el c&oacute;digo generado y pierde de vista los modelos construidos.</p>     ]]></body>
<body><![CDATA[<p>  El reto que en la actualidad motiva a la comunidad   de investigadores y generadores de tecnolog&iacute;a es proponer esquemas de desarrollo en los cuales los modelos, antes que el c&oacute;digo, son los actores centrales   del proceso de desarrollo y donde se proveen mecanismos y herramientas de trabajo integradas que asisten al desarrollador en la construcci&oacute;n y transformaci&oacute;n progresivas de modelos hasta llegar a la soluci&oacute;n final. Esta corriente de trabajo, liderada por el OMG (Object Management Group), se conoce como arquitectura dirigida por modelos (MDA).</p>     <p>  El objetivo de este art&iacute;culo es explorar los principales   conceptos que rigen MDA; para tal prop&oacute;sito se organiz&oacute; de la siguiente manera: se trabajar&aacute;n los conceptos generales de MDA en la secci&oacute;n 2; luego, en la secci&oacute;n 3, se presentar&aacute; el papel de los est&aacute;ndares en MDA; se tratar&aacute;n los fundamentos de la transformaci&oacute;n   en la secci&oacute;n 4; despu&eacute;s, en la secci&oacute;n 5, se bosquejar&aacute; una propuesta para el proceso de desarrollo   de software dirigido por modelos; y, finalmente, se mostrar&aacute;n las conclusiones y trabajos futuros.</p>     <p><B>  2. LA ARQUITECTURA DIRIGIDA POR MODELOS</B></p>     <p>  La propuesta que plante&oacute; el OMG cuando present&oacute; MDA centra su atenci&oacute;n en los modelos como el elemento b&aacute;sico que, por medio de su evoluci&oacute;n, permiten de manera sistem&aacute;tica obtener el producto final.</p>     <p><B>  2.1 Importancia de los modelos en MDA</B></p>     <p>  El concepto del modelado, como una de las estrategias b&aacute;sicas del desarrollador para entender un problema y proponer una soluci&oacute;n, es ampliamente   aceptado en la ingenier&iacute;a de software, mucho antes del surgimiento de MDA. Sin embargo, la aplicaci&oacute;n   del modelado en la pr&aacute;ctica diaria presenta problemas como los enunciados a continuaci&oacute;n:</p>     <p>- Los modelos se usan solo como documentaci&oacute;n. Los modelos no funcionan como un artefacto activo   que contribuya en el proceso de desarrollo.</p>     <p>- Existen vac&iacute;os entre el modelo y la implementaci&oacute;n   de los sistemas. Los cambios en el modelo no se reflejan en el c&oacute;digo y los cambios en el c&oacute;digo no se reflejan en los modelos, s&oacute;lo se genera el c&oacute;digo de los modelos la primera vez y nunca se actualiza.</p>     <p>- No hay una adecuada mezcla de modelos. Vistas   desconectadas de un sistema (desconexi&oacute;n horizontal) y grupos de modelos desconectados (desconexi&oacute;n vertical). </p>     <p>- No hay transformaci&oacute;n de modelos. Pocos lenguajes   de transformaci&oacute;n populares y pocas herramientas que soporten estas transformaciones.</p>     ]]></body>
<body><![CDATA[<p>  Lo anterior les atribuye a los modelos la fama de una costosa y pesada carga que complica la labor de los participantes en el proceso de desarrollo. La MDA rescata la importancia de los modelos como estrategia clave para entender y especificar una soluci&oacute;n de software y progresivamente obtener la soluci&oacute;n final. Las siguientes son algunas definiciones de modelo de la comunidad de MDA (OMG-MDA, 2003; Kleppe et al., 2003).</p>     <p>- Un modelo es la descripci&oacute;n de un sistema (o de una parte) en un lenguaje bien definido.</p>     <p>- Un lenguaje bien definido es un lenguaje con una forma definida (sintaxis) y significado (sem&aacute;ntica) que sea apropiado para ser interpretado autom&aacute;ticamente por un computador (Kleppe et al., 2003).</p>     <p>- Un modelo se presenta con frecuencia como una combinaci&oacute;n de dibujos y de texto (OMG-MDA, 2003).</p>     <p><B>  2.2 El proceso de desarrollo basado en modelos</B></p>     <p>El esquema planteado en la <a href="#(fig1)">figura 1</a> toma como referente la propuesta de desarrollo basada en modelos planteada por Kleppe et al. (2003), con el prop&oacute;sito de compararla con el desarrollo tradicional.</p>     <p align="center"><a name="(fig1)"><img src="img/revistas/eia/n8/n8a11fig1.gif" /></a></p>     <p>  En los dos enfoques del proceso, cada etapa del desarrollo produce artefactos que sirven como insumo   para la siguiente etapa. La principal diferencia entre el enfoque tradicional y el enfoque propuesto por MDA radica en la formalizaci&oacute;n y consistencia en que se realiza el proceso de transformaci&oacute;n del modelo de una fase a otra. Es decir, en el enfoque tradicional, la consistencia del proceso de transformaci&oacute;n   depende de la habilidad de desarrollador, mientras que en MDA, el proceso de transformaci&oacute;n se realiza de forma asistida utilizando mecanismos que garantizan la consistencia con los modelos anteriores. Para tal prop&oacute;sito MDA caracteriza los siguientes tipos de modelos:</p>     <p>- <em>CIM.</em> Representa los modelos independientes de la computaci&oacute;n (Computationally-Independent Model) que caracterizan el dominio del problema.   Este tipo de modelos surge ante todo en procesos de modelado de negocio e idealmente se conciben antes del levantamiento de requisitos para una aplicaci&oacute;n particular.</p>     <p>- <em>PIM.</em> Representa los modelos que describen una soluci&oacute;n de software que no contiene detalles de la plataforma concreta en que la soluci&oacute;n va a ser implementada, de ah&iacute; su nombre de modelos independientes de la plataforma (Platform-Independent   Models). Estos modelos surgen como resultado del an&aacute;lisis y dise&ntilde;o.</p>     ]]></body>
<body><![CDATA[<p>- <em>PSM.</em> Son los modelos derivados de la categor&iacute;a anterior, que contienen los detalles de la plataforma   o tecnolog&iacute;a con que se implementar&aacute; la soluci&oacute;n, de ah&iacute; su nombre de modelos espec&iacute;ficos   de la plataforma (Platform-Specific Models).</p>     <p>Estos modelos se construyen entre el dise&ntilde;o y la codificaci&oacute;n.</p>     <p>- <em>Y, finalmente, el c&oacute;digo mismo que se genera despu&eacute;s de la codificaci&oacute;n y las pruebas.</em>  </p>     <p>A la luz de este enfoque, surgen nuevos esquemas   de trabajo en los que se distinguen los diferentes   roles de los participantes del proceso (<a href="#(fig2)">figura 2</a>). El analista de negocio, experto en el dominio del problema, que modela una realidad por medio de CIM; el arquitecto y el dise&ntilde;ador que definen una propuesta de soluci&oacute;n (transformaci&oacute;n del CIM en PIM) y progresivamente la concretan (transformaci&oacute;n de PIM a PIM), hasta llegar a un dise&ntilde;o detallado; el desarrollador o el probador que tiene amplio conocimiento de la tecnolog&iacute;a y decide la manera m&aacute;s adecuada como el dise&ntilde;o detallado se implementar&aacute; en una plataforma particular (transformaci&oacute;n del PIM a PSM) (OMG-BP, 2004).</p>     <p align="center"><a name="(fig2)"><img src="img/revistas/eia/n8/n8a11fig2.gif" /></a></p>     <p><B>  2.3 Principios de MDA</B></p>     <p>  La MDA aparece como respuesta a dos problemas fundamentales dentro de la industria inform&aacute;tica.</p>     <p>La diversidad de plataformas y tecnolog&iacute;as: en la actualidad se oye hablar con frecuencia de los objetos   distribuidos, los componentes, los aspectos o los web services, entre otras tantas estrategias tecnol&oacute;gicas en las que no hay mucha interoperabilidad y que tienen tendencia a aumentar.</p>     <p>- <em>La acelerada evoluci&oacute;n tecnol&oacute;gica:</em> esto ocasiona que las plataformas muy pronto sean obsoletas. Surgen, entonces, interrogantes como: &iquest;Cu&aacute;l tecnolog&iacute;a   va a salir ma&ntilde;ana? &iquest;Cu&aacute;nto va a durar la &uacute;ltima versi&oacute;n de una plataforma? &iquest;C&oacute;mo protejo mi inversi&oacute;n?   Por consiguiente, nunca se tiene un verdadero est&aacute;ndar en el nivel de sistema operativo, servidores, plataformas o middleware, lo cual dificulta considerablemente   el re&uacute;so de los artefactos software, y m&aacute;s aun en etapas tempranas del proceso. Las estrategias   para alcanzar beneficios fundamentales, como productividad, interoperabilidad, &quot;portabilidad&quot; y facilidad de mantenimiento, se plantean en las ideas del manifiesto MDA (Booch et al., 2004):</p>     <p>-<em> <B>Representaci&oacute;n directa.</B></em> Esta estrategia se basa en el principio de abstracci&oacute;n, que hace &eacute;nfasis en el dominio del problema m&aacute;s que en la tecnolog&iacute;a. Los diferentes tipos de modelos mencionados buscan precisar una sem&aacute;ntica que claramente separe los aspectos relevantes del problema de las decisiones de tecnolog&iacute;a. Esta estrategia parte de la hip&oacute;tesis de que los impactos considerables en el desarrollo y mantenimiento de una soluci&oacute;n de software se dan por cambios en el negocio, m&aacute;s que por la diversidad de plataformas y la evoluci&oacute;n tecnol&oacute;gica.</p>     ]]></body>
<body><![CDATA[<p>- <em><B>Automatizaci&oacute;n.</B></em> La propuesta de MDA fortaleci&oacute;   y dinamiz&oacute; el papel que las herramientas CASE tienen en el desarrollo de soluciones. Surgen nuevas funcionalidades que deben ser soportadas por las herramientas como el intercambio    de modelos, verificaci&oacute;n de consistencia, transformaci&oacute;n de modelos y manejo de metamodelos,   entre otras. Desde la perspectiva de MDA, el papel de las herramientas es esencial para apoyar de forma consistente y sist&eacute;mica el proceso de desarrollo visto como un proceso de transformaci&oacute;n de modelos.</p>     <p>-<em> <B>Est&aacute;ndares abiertos.</B></em> El uso de est&aacute;ndares se ha constituido en el medio que ha posibilitado el reto de integrar herramientas robustas de apoyo al desarrollo. Por ejemplo, los est&aacute;ndares como UML deben expresarse en XML, de esta forma resultan de gran utilidad en mecanismos de transformaci&oacute;n de modelos que utilizan otros est&aacute;ndares como XSLT<sup><a href="#6" name="s6">6</a></sup>.</p>     <p>  <B>2.4 Re&uacute;so de modelos</B></p>     <p>  Mientras m&aacute;s temprano se piense en el re&uacute;so, m&aacute;s esfuerzo se debe realizar, por ejemplo, para conseguir herramientas que soporten transformaciones   a estos niveles, o para definir acuerdos con el grupo de desarrollo con respecto a los elementos de granularidad gruesa. Sin embargo, esto se ver&aacute; recompensado con el impacto positivo en el desempe&ntilde;o    del grupo, puesto que diminuir&aacute;n las labores repetitivas, los errores por intervenci&oacute;n humana y el tiempo para completar algunas tareas.</p>     <p>La <a href="#(fig3)">figura 3</a> muestra c&oacute;mo impacta en t&eacute;rminos generales el re&uacute;so dentro del proceso de desarrollo de software. Con el tiempo el esfuerzo inicial realizado por el grupo de desarrollo disminuir&aacute;, pues empezar&aacute; a familiarizarse con las herramientas y los acuerdos tempranos   realizados. Todo esto evidencia la importancia de que los modelos est&eacute;n correctos, pues un error en alguno de los modelos tempranos tendr&iacute;a graves consecuencias, por el efecto de propagaci&oacute;n que se presentar&iacute;a en las operaciones de transformaci&oacute;n.</p>     <p align="center"><a name="(fig3)"><img src="img/revistas/eia/n8/n8a11fig3.gif" /></a></p>      <p>  <B>2.5 Niveles de madurez de los modelos</B></p>     <p>  Dada la importancia de los modelos en el contexto   de la propuesta de MDA, Jos Warmer (2002) presenta los &quot;niveles de madurez de los modelos&quot; (MML), lo cual se asemeja a los niveles de capacidad planteados en CMMI (Capability Maturity Model Integration) (SEI-CMMI, 2002). Por medio del MML, se puede descubrir en qu&eacute; estado de madurez se encuentra un grupo de desarrollo con respecto al uso de modelos. Adem&aacute;s se puede observar que estos niveles de madurez est&aacute;n estrechamente relacionados    con el uso de UML como lenguaje est&aacute;ndar de especificaci&oacute;n de sistemas intensivos en software. Los niveles planteados en MML y su estado con respecto al uso de UML son:</p>     <p>- <B><em>MML 0 Sin especificar</em></B><em>.</em> La especificaci&oacute;n del software se conserva en la cabeza de los desarrolladores. En este nivel no se utiliza UML.</p>     <p>- <B><em>MML 1 Especificaci&oacute;n textual</em></B><em>.</em> La especificaci&oacute;n   del software est&aacute; escrita en uno o m&aacute;s documentos en lenguaje natural. Tampoco se hace uso de UML en este nivel.</p>     ]]></body>
<body><![CDATA[<p>- <em><B>MML 2 Texto con diagramas</B>.</em> La especificaci&oacute;n   del software est&aacute; en uno o m&aacute;s documentos en lenguaje natural y adicionalmente en varios diagramas de alto nivel para explicar la arquitectura   global. Aqu&iacute; se empieza a hacer uso moderado de UML.</p>     <p>- <B><em>MML 3 Modelos con texto</em></B><em>.</em> La especificaci&oacute;n del software est&aacute; escrita en uno o m&aacute;s modelos. En forma adicional el texto en lenguaje natural se usa para explicar el trasfondo y la motivaci&oacute;n de los modelos. El uso de UML se realiza de manera extensiva por todos los desarrolladores.</p>     <p>-<em> <B>MML 4 Modelos precisos</B>.</em> La especificaci&oacute;n del software est&aacute; escrita en uno o m&aacute;s modelos. Adem&aacute;s el texto en lenguaje natural se usa para explicar el trasfondo y la motivaci&oacute;n de los modelos. Los modelos son precisos y alcanzan a tener una relaci&oacute;n directa con el c&oacute;digo real. En este nivel se hace uso extensivo de UML acompa&ntilde;ado por lenguajes como OCL que permiten especificar   restricciones de manera formal.</p>     <p>- <B><em>MML 5 Solo modelos</em></B><em>.</em> Los modelos son precisos y detallados lo suficientemente para permitir una completa generaci&oacute;n de c&oacute;digo. El c&oacute;digo es invisible. El lenguaje de modelado equivale a un lenguaje de programaci&oacute;n de alto nivel. En este nivel el lenguaje de especificaci&oacute;n transciende el uso de UML para llegar al concepto de lenguajes de transformaci&oacute;n o lenguajes de dominio espec&iacute;fico   que automatizan de forma completa todas las fases del desarrollo.</p>     <p><B> 3. EL PAPEL DE LOS EST&Aacute;NDARES EN MDA</B></p>     <p>  Los diversos est&aacute;ndares en los que se apoya la propuesta de MDA tienen el prop&oacute;sito de lograr la interoperabilidad de las herramientas y plataformas, posibilitando evadir los problemas por la diversidad de plataformas y la evoluci&oacute;n tecnol&oacute;gica. A continuaci&oacute;n   se describen los principales est&aacute;ndares en los que se soporta MDA.</p>     <p><B>  3.1 Arquitectura de cuatro niveles (MOF)</B></p>     <p>  El OMG plantea una arquitectura de cuatro niveles para la definici&oacute;n de sus est&aacute;ndares, en donde cada capa se define como instancia de la anterior. Esta arquitectura de modelos denominada MOF (Meta Object Facility) representa el nivel meta m&aacute;s general (M3) y tiene el objetivo de permitir la incorporaci&oacute;n   de nuevos lenguajes de modelado (metamodelos)   para prop&oacute;sitos espec&iacute;ficos (OMG-MOF, 2003). Un metamodelo es un modelo que define el lenguaje para expresar un modelo. A continuaci&oacute;n se definen las diferentes capas especificadas en la arquitectura del OMG que sustenta MOF.</p>     <p>- <B>Capa M3 (Metametamodelo)</B>. Corresponde a MOF, es una especificaci&oacute;n que define un lenguaje   abstracto para especificar, construir y manejar elementos comunes a cualquier metamodelo.</p>     <p>- <B>Capa M2 (Metamodelos)</B>. Especifica las entidades   de un lenguaje de modelado. Los lenguajes que se han definido como instancias de MOF son: UML, CWM<sup><a href="#7" name="s7">7</a></sup> y MOF en s&iacute; mismo. Adicionalmente se definen metamodelos para otros prop&oacute;sitos como objetos de negocio, workflows y modelos de componentes (OMG-MOF, 2003).</p>     ]]></body>
<body><![CDATA[<p>- <B>Capa M1 (Modelos)</B>. Se refiere a los modelos de usuarios que suelen desarrollarse en el momento de construir un sistema de informaci&oacute;n.</p>     <p>- <B>Capa M0 (Instancias)</B>. Describe instancias de las entidades propuestas en un modelo de un sistema de informaci&oacute;n. Es en este nivel en donde pueden usarse los diagramas de objetos como instancias de las clases para verificar que se cumplen las restricciones   definidas en el nivel de los modelos (M1).</p>     <p>  La <a href="#(fig4)">figura 4</a> ejemplifica cada capa de la arquitectura   para los est&aacute;ndares de OMG e ilustra la relaci&oacute;n entre cada capa.  </p>    <p align="center"><a name="(fig4)"><img src="img/revistas/eia/n8/n8a11fig4.gif" /></a></p>     <p>Aunque esta arquitectura de cuatro niveles abre la posibilidad de definir a partir de M3 cualquier lenguaje para especificaci&oacute;n de soluciones, UML representa el lenguaje est&aacute;ndar preestablecido, definido    en la capa M2, a partir del cual se pueden especificar   los modelos definidos por MDA en cualquiera de sus categor&iacute;as (CIM, PIM, PSM). A continuaci&oacute;n se describe brevemente el rol que desempe&ntilde;an los principales est&aacute;ndares alrededor de UML como una de las capas de MOF (OMG-UML, 2003).</p>       <p>  <B>3.2 Lenguaje de restricciones de objetos (OCL)</B></p>     <p>El OCL es un lenguaje para especificar restricciones   sobre los objetos de un modelo UML (Cernuda,   2002; OMG-RfPOCL, 2003). Usualmente existen algunos detalles de la especificaci&oacute;n que no pueden expresarse v&iacute;a modelos UML; resulta, entonces, necesario   llenar los faltantes que se presentan utilizando un lenguaje como OCL (OMG-OCL, 2003). Uno de los principales objetivos que se persiguen con OCL es precisar la especificaci&oacute;n de los modelos escritos en UML, evitando ambig&uuml;edades en su interpretaci&oacute;n y garantizando su consistencia sem&aacute;ntica.</p>     <p>Los principales tipos de restricciones que se pueden construir utilizando OCL son (Kleppe y Warmer,   1999): a) Invariante, condici&oacute;n para una clase, tipo o interfaz que siempre debe ser satisfecha por todas sus instancias. b) Precondici&oacute;n, condici&oacute;n que debe ser cierta antes de ejecutar una operaci&oacute;n de una clase. c) Postcondici&oacute;n: condici&oacute;n que debe ser cierta despu&eacute;s de ejecutar una operaci&oacute;n de una clase. Es importante recalcar que usando OCL se pueden escribir restricciones en el nivel de los metamodelos; de esta forma, por ejemplo, se definen las reglas de consistencia de un lenguaje como UML.</p>     <p><B>  3.3 Perfiles</B></p>     <p>  Desde la aparici&oacute;n de UML 2.0 (Shekhar y Prabhakar, 2003), el concepto de perfil ha tomado un gran auge, sobre todo por su gran utilidad en los procesos de transformaci&oacute;n de modelos (Fuentes y Vallecillo, 2004). Un perfil est&aacute; constituido por estereotipos, valores etiquetados y restricciones, y sirve para extender la sem&aacute;ntica de los modelos construidos con UML a un dominio espec&iacute;fico o a una plataforma particular.</p>     ]]></body>
<body><![CDATA[<p>  La <a href="img/revistas/eia/n8/n8a11fig5.gif" target="_blank">figura 5</a> muestra un ejemplo de aplicaci&oacute;n de un perfil para el dise&ntilde;o de bodegas de datos seguras (Villarroel et al., 2003) que usa los tres elementos b&aacute;sicos de los perfiles, de la manera como sigue.</p>     <p>- <em><B>Estereotipos.</B></em> Representa una distinci&oacute;n de uso de un elemento en UML que se utiliza para a&ntilde;adir nuevos elementos de modelado. Se representa con una palabra encerrada entre dobles s&iacute;mbolos &quot;&lt;&quot; y &quot;&gt;&quot;, as&iacute;: &lt;&lt;estereotipo&gt;&gt;. En el ejemplo el estereotipo UserProfile se le aplica a la clase PerfilUsuario que contiene la informaci&oacute;n de todos los usuarios que tendr&aacute;n acceso a este sistema.&ccedil;</p>     <p>- <B><em>Valores etiquetados.</em></B> Si con los estereotipos se pueden a&ntilde;adir elementos a UML, con los valores etiquetados se a&ntilde;aden nuevas propiedades, agregando   nueva informaci&oacute;n en la especificaci&oacute;n de un elemento. Se representan con una etiqueta seguida del s&iacute;mbolo &quot;=&quot; y el valor, encerrados entre   llaves, acompa&ntilde;ando el nombre del elemento. En el ejemplo aparecen los valores etiquetados de SL SecurityLevel (con los posibles valores U=Unclassified, C=Confidencial, S=Secret y TS=TopSecret) y SR SecurityRoles (Salud y Admin).</p>     <p>- <em><B>Restricciones.</B></em> Como se explic&oacute; en el numeral 3.2, las restricciones se escriben usando OCL y se suelen representar en una nota asociada al objeto sobre el que se aplica la restricci&oacute;n. Para el ejemplo   se est&aacute; empleando un &quot;dialecto&quot; particular de OCL llamado OSCL (Fern&aacute;ndez et al., 2001), que se usa espec&iacute;ficamente en el dise&ntilde;o de sistemas de informaci&oacute;n seguros. Obs&eacute;rvese como en algunas de las restricciones se usan los valores etiquetados dentro de la definici&oacute;n de las reglas.</p>     <p><B>  3.4 XMI (XML Metadata Interchange)</B></p>     <p>  El XMI es un lenguaje para permitirles a los usuarios desarrolladores de software el intercambio de modelos UML. Es una especificaci&oacute;n del OMG definida con el objetivo de facilitar el intercambio de modelos entre herramientas de modelado y repositorios   de metadatos basados en la especificaci&oacute;n (OMG-XMI, 2003).</p>     <p>  El XMI provee un mecanismo de intercambio de modelos entre herramientas CASE utilizando XML. Su importancia se evidencia en que las herramientas   CASE m&aacute;s conocidas utilizan XMI como especificaci&oacute;n est&aacute;ndar para la funcionalidad de intercambio (Iyengar, 1999). La <a href="img/revistas/eia/n8/n8a11fig6.gif" target="_blank">figura 6</a> muestra cu&aacute;les son las ventajas de usar XMI, comparando un ambiente desarrollado con 6 herramientas que utilizan UML contra un ambiente que usa UML y XMI en el contexto de MDA. Como se observa en la parte derecha de la <a href="img/revistas/eia/n8/n8a11fig6.gif" target="_blank">figura 6</a>, el uso de XMI ha facilitado    enormemente la distribuci&oacute;n de las diversas responsabilidades que se exigen en un entorno de desarrollo con el enfoque MDA: las funcionalidades como edici&oacute;n de modelos, repositorio de modelos, verificaci&oacute;n de modelos y transformaci&oacute;n utilizan, producen o modifican documentos XMI que sirven para los prop&oacute;sitos de MDA.</p>     <p>  Una de las razones de la aceptaci&oacute;n de XMI como lenguaje de intercambio de modelos es la tecnolog&iacute;a ya desarrollada alrededor de XSLT, un modelo de procesamiento de documentos XML que incluye a la vez el lenguaje para describir las reglas de transformaci&oacute;n. De esta forma se pueden construir diversas plantillas, que permiten generar documentos, recorrer su estructura y realizar transformaciones.</p>     <p><B>4. TRANSFORMACI&Oacute;N DE MODELOS</B></p>     <p>  La transformaci&oacute;n de modelos se considera el proceso central de MDA. Con el prop&oacute;sito de lograr un est&aacute;ndar para la transformaci&oacute;n, OMG inicia un proceso de estandarizaci&oacute;n que favorece la presentaci&oacute;n de propuestas (RFP Request for Proposal) por parte de toda la comunidad inform&aacute;tica   alrededor del est&aacute;ndar denominado QVT (Queries/Views/ Transformations). Este est&aacute;ndar est&aacute; basado en MOF y pretende establecer un lenguaje para la transformaci&oacute;n de modelos (T), un lenguaje para consulta de modelos (Q) y un lenguaje para la definici&oacute;n y generaci&oacute;n de vistas (V) que facilite el an&aacute;lisis de modelos desde diferentes perspectivas de los desarrolladores. En esta secci&oacute;n se presentan las consideraciones m&aacute;s importantes alrededor del proceso de transformaci&oacute;n.</p>     ]]></body>
<body><![CDATA[<p>  <B>4.1 Transformaci&oacute;n</B></p>     <p>  La transformaci&oacute;n es el proceso que, basado en una serie de reglas, define los mecanismos para el paso de un modelo origen a un modelo destino. A partir de la estandarizaci&oacute;n promovida por QVT y atendiendo a las necesidades pr&aacute;cticas de la transformaci&oacute;n   de modelos, surgen diversas estrategias de transformaci&oacute;n que van m&aacute;s all&aacute; del uso de elementos   del metamodelo y definen mecanismos de transformaci&oacute;n basados en tipos de elementos, patrones,   informaci&oacute;n de la plataforma y otros modelos e informaci&oacute;n adicional (OMG-MDA, 2003).</p>     <p>  La <a href="#(fig7)">figura 7</a> ilustra la arquitectura de transformac.i&oacute;n   de modelos; en ella se muestra c&oacute;mo se definen y aplican las transformaciones que se basan en el uso de metamodelos (Jezequel, 2005).</p>       <p align="center"><a name="(fig7)"><img src="img/revistas/eia/n8/n8a11fig7.gif" /></a></p>      <p>  Una de las ventajas de esta arquitectura es lograr que de un mismo PIM se pueda generar m&aacute;s de un PSM. Para permitir la interoperabilidad entre los diferentes PSM o las diferentes porciones  de c&oacute;digo generados, surgen los llamados puentes (bridges). Estos puentes podr&iacute;an, por ejemplo, definir   las relaciones entre un PSM que representa una soluci&oacute;n en una base de datos relacional y un PSM que representa una soluci&oacute;n en una plataforma J2EE; el puente estar&iacute;a representado por la l&oacute;gica de acceso a datos de la aplicaci&oacute;n, y de esta manera se podr&iacute;an coordinar y tener en cuenta en cada uno de los modelos los cambios realizados en el otro. A continuaci&oacute;n se describen las dos principales operaciones que deben ser realizadas sobre los modelos en su proceso de transformaci&oacute;n.</p>     <p>  <B>4.2 Mapeo (mapping)</B></p>     <p>  El mapeo es la correspondencia que se establece   entre cada uno de los elementos de un tipo de modelo origen y otro destino. En el momento de establecer un mapeo se puede realizar una mezcla de las siguientes estrategias (OMG-MDA, 2003).</p>     <p>- <B>Por tipo:</B> especifica un mapeo desde un modelo construido usando tipos espec&iacute;ficos de un lenguaje   origen, para expresar un modelo con tipos espec&iacute;ficos en el lenguaje destino.</p>     <p>- <B>Por metamodelo: </B>es un mapeo de tipos, donde tanto los tipos del modelo origen como los del destino est&aacute;n especificados a MOF.</p>     <p>-<B> Por instancia:</B> se especifican elementos del modelo origen para transformarse de una forma particular, dada la selecci&oacute;n de una plataforma espec&iacute;fica, en el modelo destino.</p>     ]]></body>
<body><![CDATA[<p><B>4.3 Marcado (marking)</B></p>     <p>  Identificaci&oacute;n de cada uno de los elementos del modelo origen, para saber qu&eacute; reglas y qu&eacute; tipo de mapeo se les aplicar&aacute; en la transformaci&oacute;n. Las marcas para un modelo suelen provenir de diferentes fuentes (OMG-MDA, 2003), por ejemplo:</p>     <p>- Tipos desde un modelo, especificados por clases, asociaciones u otros elementos</p>     <p>- Roles de un modelo, por ejemplo, desde patrones</p>     <p>- Estereotipos de un perfil UML</p>     <p>- Elementos de un modelo MOF</p>     <p>- Elementos de un modelo especificados en alg&uacute;n metamodelo</p>     <p><B> 4.4 Vista integrada del proceso de transformaci&oacute;n</B></p>     <p>  Para la mejor comprensi&oacute;n de los conceptos propios de la transformaci&oacute;n, se ilustra con un caso la forma como el mapeo y el marcado participan en la transformaci&oacute;n de un PIM a un PSM y a c&oacute;digo, involucrando los conceptos propios de la plataforma, que para el ejemplo se supone J2EE<sup><a href="#8" name="s8">8</a></sup>.</p>     <p>  Los enfoques para la transformaci&oacute;n de modelos   pueden agruparse en dos categor&iacute;as (Haywood, 2004). El enfoque elaboracionista que parte de modelos   ejecutables hasta en un 70 % que no contienen toda la informaci&oacute;n (por ejemplo, el comportamiento),   la informaci&oacute;n perdida se adiciona refinando el PSM o el c&oacute;digo y posibilitan la ingenier&iacute;a de ida y vuelta. El enfoque traslacionista que parte de modelos completos ejecutables 100 %; los compiladores de modelos tienen toda la responsabilidad de generar el sistema completo; generalmente este enfoque se apoya en lenguajes formales, como los ASL<sup><a href="#9" name="s9">9</a></sup>(OMG-UAS, 2002), que recogen toda la sem&aacute;ntica necesaria para hacer una transformaci&oacute;n completa.</p>     ]]></body>
<body><![CDATA[<p>  En la <a href="img/revistas/eia/n8/n8a11fig8.gif" target="_blank">figura 8</a> se muestra una comparaci&oacute;n del proceso de transformaci&oacute;n desde los enfoques elaboracionista   y traslacionista. Se parte de un modelo conceptual (PIM) representado por un diagrama de clases de alto nivel que define los conceptos relevantes   en el espacio del problema (cliente y pago); se realiza una operaci&oacute;n de marcado sobre el modelo, en este caso ambos t&eacute;rminos se corresponden con el estereotipo &lt;&lt;entity&gt;&gt;; este modelo marcado pasa por un proceso de transformaci&oacute;n. Obs&eacute;rvese como la marca &lt;&lt;entity&gt;&gt; puesta como estereotipo   en las clases del PIM representa una sem&aacute;ntica que consigue impactar transversalmente el proceso de transformaci&oacute;n hasta llegar al c&oacute;digo. Mientras que en el enfoque elaboracionista la transformaci&oacute;n se realiza de forma progresiva por medio de un proceso asistido, el enfoque traslacionista toma la especificaci&oacute;n inicial y a partir de ella genera el c&oacute;digo final.</p>     <p><B>  5. MDA Y EL PROCESO DE DESARROLLO DE SOFTWARE</B></p>     <p>  En esta secci&oacute;n se plantean los principales interrogantes que surgen con respecto a la manera de articular MDA en la pr&aacute;ctica del desarrollo de software. Hoy se plantean interrogantes alrededor de lo que finalmente es MDA: &iquest;Una nueva aproximaci&oacute;n de desarrollo de software?, &iquest;un conjunto de est&aacute;ndares?, &iquest;una propuesta de transformaci&oacute;n de modelos? Desafortunadamente la respuesta no es categ&oacute;rica. Diversos autores tienen opiniones diferentes con respecto al alcance de la propuesta MDA (Mu&ntilde;oz y Pelechado, 2004).</p>     <p>  Atkinson y K&uuml;hne (2003) no hablan directamente    de MDA sino del concepto de desarrollo dirigido    por modelos (MDD<sup><a href="#10" name="s10">10</a></sup>); los m&eacute;todos que sigan esta aproximaci&oacute;n deben especificar (a) los metamodelos de los modelos, (b) la sintaxis de los modelos y (c) las transformaciones de los modelos a c&oacute;digo fuente. Al ser MDD una aproximaci&oacute;n, s&oacute;lo proporciona una estrategia general para seguir en el desarrollo de software sin prescribir las t&eacute;cnicas por utilizar, ni fases del proceso que se siguen. Por su parte, Mellor et al. (2003) y los editores de IEEE Software definen MDA como un conjunto de est&aacute;ndares de OMG que permiten seguir la aproximaci&oacute;n MDD. La MDA, por lo tanto, no es por s&iacute; un m&eacute;todo que define t&eacute;cnicas, etapas, artefactos, etc., solamente proporciona la infraestructura tecnol&oacute;gica y conceptual con la cual construir estos m&eacute;todos MDD. Esto significa que MDA no puede utilizarse directamente para desarrollar   software; es necesario definir m&eacute;todos precisos que proporcionen a los equipos de desarrollo pautas y t&eacute;cnicas que puedan seguir y utilizar.</p>     <p>  Desde una perspectiva pr&aacute;ctica es importante analizar qu&eacute; tan factible es integrar MDA con marcos   metodol&oacute;gicos robustos como RUP<sup><a href="#11" name="s11">11</a></sup> o livianos como las propuestas de los modelos &aacute;giles. Mientras que MDA provee los est&aacute;ndares y mecanismos para concebir una arquitectura alrededor de modelos y su proceso de transformaci&oacute;n, los marcos metodol&oacute;gicos   aportan las pautas y caracter&iacute;sticas del equipo de trabajo y la gesti&oacute;n del proyecto. Dadas las metas ambiciosas de MDA, se puede afirmar que dicho enfoque,   por lo general, se tiende a asociar a procesos de desarrollo robustos y entornos de desarrollo altamente   complejos; no obstante, existen corrientes que encuentran oportunidad de integrar los enfoques de MDA con las propuestas de modelos &aacute;giles. Agile MDA es una propuesta basada en la noci&oacute;n de que el c&oacute;digo y los modelos ejecutables son operativamente   lo mismo y, por lo tanto, los principios de la alianza &aacute;gil pueden ser igualmente aplicados a los modelos (Mellor et al., 2003). Por su parte, Ambler (2003) se apropia del t&eacute;rmino de AMDD<sup><a href="#12" name="s12">12</a></sup> para referirse   al desarrollo &aacute;gil dirigido por modelos, que promueve el uso de herramientas de apoyo simples y diagramas UML orientados a entender y analizar las necesidades de los usuarios, siguiendo un proceso iterativo e incremental.</p>     <p>  Al igual que los est&aacute;ndares y las herramientas, conceptos como el mapeo y el marcado cumplen un papel determinante en el desarrollo dirigido por modelos.   La <a href="img/revistas/eia/n8/n8a11tab1.gif" target="_blank">tabla 1</a> ilustra la propuesta para la secuencia de pasos para seguir cuando se desarrolla software y se aplican los principios de MDA, complementando cada paso con el rol que desempe&ntilde;a cada tarea y los tipos de herramientas que podr&iacute;an llegar a apoyar su automatizaci&oacute;n.</p> </font>     <p><font size="3" face="Verdana"><B>  6. CONCLUSIONES Y TRABAJOS FUTUROS</B></font></p> <font face="Verdana"size="2">     <p>  En este trabajo se ha realizado una revisi&oacute;n general de los principios, est&aacute;ndares y mecanismos en los que est&aacute; soportada la propuesta de MDA. Una de las ideas que consideramos m&aacute;s prometedoras de este enfoque es lograr una separaci&oacute;n del modelado del espacio del problema y los modelos del espacio de la soluci&oacute;n, de tal manera que los detalles tecnol&oacute;gicos    e ingenieriles que son irrelevantes para la funcionalidad  del negocio se encuentren plasmados en un modelo de descripci&oacute;n de la plataforma (PDM<sup><a href="#13" name="s13">13</a></sup>) que se puede fundir con el PIM para generar un PSM. Esta separaci&oacute;n clara de los niveles de abstracci&oacute;n les permite a los desarrolladores enfocarse en el dominio del negocio y el cumplimiento de los requisitos m&aacute;s que en el dominio de la tecnolog&iacute;a.</p>     <p>  La abstracci&oacute;n, la estandarizaci&oacute;n y la automatizaci&oacute;n   son los tres pilares en los que se apoya MDA. Los est&aacute;ndares promovidos por medio de QVT han favorecido la definici&oacute;n de diversas aproximaciones de transformaci&oacute;n y han dinamizado el papel de las herramientas CASE alrededor de funcionalidades particulares que requiere este enfoque.</p>     <p>  La transformaci&oacute;n de modelos es el mecanismo   central que promueve MDA, sin embargo, no es exclusivo de MDA. Este tema se est&aacute; estudiando desde la perspectiva de la Ingenier&iacute;a de Modelos (MDE<sup><a href="#14" name="s14">14</a></sup>) y abarca enfoques que van m&aacute;s all&aacute; de MDA como lenguajes de dominio espec&iacute;fico o lenguajes de transformaci&oacute;n (B&eacute;zivin, 2004). Las diversas corrientes   alrededor del tema de transformaci&oacute;n se mueven en los enfoques elaboracionista o traslacionista que fueron mencionados.  </p>     ]]></body>
<body><![CDATA[<p>Surgen interesantes &aacute;reas de investigaci&oacute;n y trabajos futuros que podr&iacute;an agruparse en los siguientes frentes:</p>     <p>- Profundizar en aspectos como los roles, los flujos de trabajo y las etapas, en el marco de la propuesta   para el desarrollo dirigido por modelos bosquejada en este trabajo. Para lograr esto, es necesario tomar como referentes los planteamientos   expuestos en las propuestas del MDSD<sup><a href="#15" name="s15">15</a></sup> (V&ouml;lter y Stahl, 2006). Tambi&eacute;n se podr&iacute;an plantear   las estrategias y el esquema de integraci&oacute;n de frameworks, que sirvan de punto de partida para la construcci&oacute;n de una herramienta MDA que apoye dicha propuesta.</p>     <p>- Estudiar las propuestas de modelado de negocio y plantear estrategias para que las herramientas de transformaci&oacute;n le den una amplia cobertura al soporte del CIM, y de esta forma permitir el re&uacute;so desde etapas m&aacute;s tempranas.</p>     <p>- Definir un framework que provea mecanismos para que MDA sirva de eje integrador de las diferentes aproximaciones avanzadas en el desarrollo de software, como lo son la programaci&oacute;n orientada por aspectos, las l&iacute;neas de productos de software y los lenguajes espec&iacute;ficos de dominio, entre otros.</p> </font>    <p><font size="3"><B><font face="Verdana">COMENTARIOS</font></B></font></p>     <p><font size="2" face="Verdana"><sup><a href="#s1" name="#1">1</a></sup>IDE: Integrated Development Environment.</font></p>     <p><font size="2" face="Verdana">  <sup><a href="#s2" name="#2">2</a></sup> Tendencia conocida como Software Process Improvement</font></p>     <p><font size="2" face="Verdana">  <sup><a href="#s3" name="#3">3</a></sup> SPL: Software Product Line.</font></p>     <p><font size="2" face="Verdana">  <sup><a href="#s4" name="#4">4</a></sup> DSL: Domain Specific Language.</font></p>     <p><font size="2" face="Verdana">  <sup><a href="#s5" name="#5">5</a></sup> AOSD: Aspect Oriented Software Development.</font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana"> <sup><a href="#s6" name="#6">6</a></sup> XSLT: Extensible Style Language Transformation. </font></p>     <p><font size="2" face="Verdana"> <sup><a href="#s7" name="#7">7</a></sup> CWM: Common Warehouse Metamodel.</font></p>     <p><font size="2" face="Verdana"> <sup><a href="#s8" name="#8">8</a></sup> J2EE: Java 2 Enterprise Edition.</font></p>     <p> <font size="2" face="Verdana"> <sup><a href="#s9" name="#9">9</a></sup>ASL: Action Specification Language.</font></p>     <p>  <font size="2" face="Verdana"> <sup><a href="#s10" name="#10">10</a></sup> MDD: Model Driven Development.</font></p>     <p>  <font size="2" face="Verdana"> <sup><a href="#s11" name="#11">11</a></sup>RUP: Rational Unified Process.</font></p>     <p>  <font size="2" face="Verdana"> <sup><a href="#s12" name="#12">12</a></sup> AMDD: Agile Model Driven Development.</font></p>     <p>  <font size="2" face="Verdana"> <sup><a href="#s13" name="#13">13</a></sup> PDM: Platform Description Model.</font></p>     <p>  <font size="2" face="Verdana"> <sup><a href="#s14" name="#14">14</a></sup> MDE: Model Driven Engineering.</font></p>     <p>  <font size="2" face="Verdana"> <sup><a href="#s15" name="#15">15</a></sup> MDSD: Model Driven Software Development.</font></p>     ]]></body>
<body><![CDATA[<p><font size="3" face="Verdana"><B>REFERENCIAS</B></font></p> <font face="Verdana"size="2">     <!-- ref --><p>  AMBLER, Scott W. Agile model driven development is good enough. En: IEEE Software, vol. 20, no 5: (Sep.-Oct., 2003), p. 71-73.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000144&pid=S1794-1237200700020001100001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  ASPECT-ORIENTED SOFTWARE ASSOCIATION (AOSA). Aspect-oriented software development community &amp; conference. Documento Electr&oacute;nico. AOSA, 2006. (Citada: 5 agosto 2006) <a href="http://aosd.net/" target="_blank">http://aosd.net/</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000145&pid=S1794-1237200700020001100002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  ATKINSON, Colin and K&Uuml;HNE, Thomas. Model-driven development: A metamodeling foundation. En: IEEE Software, vol. 20, no 5: (Sep.-Oct., 2003), p. 36-41.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000146&pid=S1794-1237200700020001100003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  B&Eacute;ZIVIN, Jean. In search of a basic principle for model driven engineering. En: Upgrade, vol. V, no. 2, (April 2004), p. 21-24. ISSN 1684-5285.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000147&pid=S1794-1237200700020001100004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  BOOCH, G., BROWN A. and RUMBAUGH, J. An MDA manifesto. IBM Rational Software, 2004.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000148&pid=S1794-1237200700020001100005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  CERNUDA, Agust&iacute;n. Sistema de verificaci&oacute;n de componentes   software. Departamento de Inform&aacute;tica, Universidad de Oviedo, 2002. 230 p.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000149&pid=S1794-1237200700020001100006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>FERN&Aacute;NDEZ-MEDINA, Eduardo; TOVAL, Ambrosio y PIATTINI, Mario. Lenguaje de especificaci&oacute;n de restricciones de seguridad: OSCL V 1.1. Dolmen, 2001. 9 p.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000150&pid=S1794-1237200700020001100007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  FOWLER, Martin. Domain specific language. Documento electr&oacute;nico Martin Fowler.com, 2006. (Citada: 22 agosto 2006) <a href="http://www.martinfowler.com"target="_blank">http://www.martinfowler.com/bliki/DomainSpecificLanguage.html</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000151&pid=S1794-1237200700020001100008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  FUENTES, Lidia y VALLECILLO, Antonio. Una introducci&oacute;n   a los perfiles UML. M&aacute;laga: Departamento de Lenguajes y Ciencias de la Computaci&oacute;n, Universidad de M&aacute;laga, 2004. 13 p.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000152&pid=S1794-1237200700020001100009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  HAYWOOD, Dan. MDA: Nice idea. Documento electr&oacute;nico.   The Server Side, 2004. (Citada: 4 septiembre 2006).<a href="http://www.theserverside.com"target="_blank"> http://www.theserverside.com/tt/articles/article.tss?l=MDA_Haywood</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000153&pid=S1794-1237200700020001100010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p><font size="2" face="Verdana">  HUMAN PERFORMANCE CENTER (HPC). Software architectura, Technology Area. Documento electr&oacute;nico.HPC Spider, 2002. (Citada: 4 agosto 2006) <a href="https://www.spider.hpc.navy.mil/index"target="_blank">https://www.spider.hpc.navy.mil/index.cfm?RID=TTE_OT_1000025</a></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000154&pid=S1794-1237200700020001100011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  IYENGAR, Sridhar. XML Metadata interchange (XMI) from UML object models to XML DTDs and Documents. s.l.: Unisys Corporation, 1999. 45 p.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000155&pid=S1794-1237200700020001100012&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  JACOBSON, Ivar; GRISS, Martin and JONSSON, Patrik. Software reuse: Arquitecture, process and organization for business success. Addison Wesley, 1997.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000156&pid=S1794-1237200700020001100013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  J&Eacute;Z&Eacute;QUEL, Jean-Marc. Model transformation techniques. Documento electr&oacute;nico. Universidad de Rennes, 2005. (Citada: 15 agosto 2006) <a href="http://www.irisa.fr/prive/jezequel/enseignement/ModelTransfo.pdf"target="_blank">http://www.irisa.fr/prive/jezequel/enseignement/ModelTransfo.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000157&pid=S1794-1237200700020001100014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  KLEPPE, Anneke and WARMER, Jos. The Object Constraint   Language: precise modeling with UML. s.l.: Addison Wesley, 1999. ISBN 0 201 37940 6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000158&pid=S1794-1237200700020001100015&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  KLEPPE, Anneke; WARMER, Jos and BAST, Win. MDA explained: The practice and promise of model-driven architecture. Addison-Wesley, 2003.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000159&pid=S1794-1237200700020001100016&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  MELLOR, Stephen J.; CLARK, Anthony N. and FUTAGAMI Takao. Model-driven development. En: IEEE Software, vol. 20, no 5: (Sep.-Oct., 2003), p. 14-18.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000160&pid=S1794-1237200700020001100017&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  MU&Ntilde;OZ, Javier y PELECHADO, Vicente. MDA a debate. En: Taller sobre Desarrollo Dirigido por Modelos, MDA y Aplicaciones de las IX Jornadas de Ingenier&iacute;a del Software y Bases de Datos. (M&aacute;laga, Espa&ntilde;a: noviembre   2004).&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000161&pid=S1794-1237200700020001100018&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  OMG-BP, 2004. OBJECT MANAGEMENT GROUP. Business processes and the OMG: An overview. Documento electr&oacute;nico. (Citada: 8 agosto 2006) <a href="http://www.omg.org"target="_blank">http://www.omg.org/bp corner/bp files/The_OMG_BP_Corner_INTRO_Paper_3-2-04.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000162&pid=S1794-1237200700020001100019&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  OMG-MDA, 2003. OBJECT MANAGEMENT GROUP. Model driven architecture (MDA) Guide Version 1.0.1 Documento electr&oacute;nico. (Citada: 8 junio 2006) <a href="http://www.omg.org"target="_blank">http://www.omg.org/docs/omg/03-06-01.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000163&pid=S1794-1237200700020001100020&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  OMG-MOF, 2003. OBJECT MANAGEMENT GROUP. A review of OMG MOF 2.0 Query/Views/Transformations submissions and recommendations towards the final standard. Documento electr&oacute;nico. (Citada: 8 junio 2006) <a href="http://www.omg.org"target="_blank">http://www.omg.org/docs/ad/03-08-02.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000164&pid=S1794-1237200700020001100021&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  OMG-RfPOCL, 2003. OBJECT MANAGEMENT GROUP. Response to the UML 2.0 OCL RfP (ad/2000-09-03) [Documento electr&oacute;nico]. OMG, 2003. (Citada: 8 junio 2006)<a href="http://www.omg.org"target="_blank"> http://www.omg.org/docs/ad/03-01-07.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000165&pid=S1794-1237200700020001100022&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  OMG-OCL, 2003. OBJECT MANAGEMENT GROUP. UML 2.0 OCL specification. [Documento electr&oacute;nico]. (Citada: 9 agosto 2006) <a href="http://www.omg.org"target="_blank">http://www.omg.org/docs/ptc/03-10-14.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000166&pid=S1794-1237200700020001100023&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  OMG-UML, 2003. OBJECT MANAGEMENT GROUP. UML 2.0 superstructure specification. [Documento electr&oacute;nico]. (Citada: 10 agosto 2006) <a href="http://www.omg.org"target="_blank">http://www.omg.org/docs/formal/05-07-04.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000167&pid=S1794-1237200700020001100024&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  OMG-UAS, 2002. OBJECT MANAGEMENT GROUP. Unified modeling language specification (Action Semantics).   [Documento Electr&oacute;nico]. (Citada: 22 agosto 2006)<a href="http://www.omg.org"target="_blank"> http://www.omg.org/docs/ptc/02-01-09.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000168&pid=S1794-1237200700020001100025&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  OMG-XMI, 2003. OBJECT MANAGEMENT GROUP. XML metadata interchange (XMI) specification. [Documento electr&oacute;nico]. (Citada: 10 mayo 2006) <a href="http://www.omg.org"target="_blank">http://www.omg.org/docs/formal/03-05-02.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000169&pid=S1794-1237200700020001100026&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  SEI-CMMI, 2002. SOFTWARE ENGINEERING INSTITUTE. Capability maturity model integration (CMMI), Version 1.1. Carnegie Mellon University, 2002. 725 p.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000170&pid=S1794-1237200700020001100027&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  SEI-SPL, 2006. THE SOFTWARE ENGINEERING INSTITUTE.  Software product line. [Documento electr&oacute;nico].SEI, 2006. (Citada: 5 agosto 2006) <a href="http://www.sei.cmu.edu"target="_blank">http://www.sei.cmu.edu/productlines/index.html</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000171&pid=S1794-1237200700020001100028&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  SHEKHAR, C. and PRABHAKAR, T. V. An overview of UML 2.0. En: Technical Meeting (Paris, June 2003).&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000172&pid=S1794-1237200700020001100029&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  VILLARROEL R.; FERN&Aacute;NDEZ-MEDINA, E.; TRUJILLO, J. y PIATTINI, M. Un profile de UML para dise&ntilde;ar almacenes   de datos seguros. CYTED, 2003. 9 p.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000173&pid=S1794-1237200700020001100030&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  V&Ouml;LTER, M. y STAHL, T. Model-driven software development.   Technology, Engineering, Management (Julio 2006), p. 444. ISBN: 978-0-470-02570-3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000174&pid=S1794-1237200700020001100031&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>  WARMER, Jos. The role of OCL in the model driven architecture.   Springer, Berlin and Heidelberg 2002. 202 p.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=000175&pid=S1794-1237200700020001100032&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --> ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[AMBLER]]></surname>
<given-names><![CDATA[Scott W]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Agile model driven development is good enough]]></article-title>
<collab>IEEE Software</collab>
<source><![CDATA[]]></source>
<year>Oct.</year>
<month>, </month>
<day>20</day>
<volume>20</volume>
<page-range>71-73</page-range></nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="book">
<collab>ASPECT-ORIENTED SOFTWARE ASSOCIATION (AOSA)</collab>
<source><![CDATA[]]></source>
<year></year>
<publisher-name><![CDATA[AOSA]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[ATKINSON]]></surname>
<given-names><![CDATA[Colin]]></given-names>
</name>
<name>
<surname><![CDATA[KÜHNE]]></surname>
<given-names><![CDATA[Thomas]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Model-driven development: A metamodeling foundation]]></article-title>
<collab>IEEE Software</collab>
<source><![CDATA[]]></source>
<year>Oct.</year>
<month>, </month>
<day>20</day>
<volume>20</volume>
<page-range>36-41</page-range></nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[BÉZIVIN]]></surname>
<given-names><![CDATA[Jean]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[In search of a basic principle for model driven engineering]]></article-title>
<collab>Upgrade</collab>
<source><![CDATA[]]></source>
<year></year>
<volume>V</volume>
<page-range>21-24</page-range></nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[BOOCH]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[BROWN]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[RUMBAUGH]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[An MDA manifesto]]></source>
<year>2004</year>
<publisher-name><![CDATA[IBM Rational Software]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[CERNUDA]]></surname>
<given-names><![CDATA[Agustín]]></given-names>
</name>
</person-group>
<source><![CDATA[Sistema de verificación de componentes software]]></source>
<year>2002</year>
<page-range>230</page-range><publisher-name><![CDATA[Departamento de Informática, Universidad de Oviedo]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[FERNÁNDEZ-MEDINA]]></surname>
<given-names><![CDATA[Eduardo]]></given-names>
</name>
<name>
<surname><![CDATA[TOVAL]]></surname>
<given-names><![CDATA[Ambrosio]]></given-names>
</name>
<name>
<surname><![CDATA[PIATTINI]]></surname>
<given-names><![CDATA[Mario]]></given-names>
</name>
</person-group>
<source><![CDATA[Lenguaje de especificación de restricciones de seguridad]]></source>
<year>2001</year>
<volume>1.1</volume>
<page-range>9</page-range><publisher-name><![CDATA[OSCL]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[FOWLER]]></surname>
<given-names><![CDATA[Martin]]></given-names>
</name>
</person-group>
<source><![CDATA[Domain specific language]]></source>
<year>2006</year>
</nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[FUENTES]]></surname>
<given-names><![CDATA[Lidia]]></given-names>
</name>
<name>
<surname><![CDATA[VALLECILLO]]></surname>
<given-names><![CDATA[Antonio]]></given-names>
</name>
</person-group>
<source><![CDATA[Una introducción a los perfiles UML]]></source>
<year>2004</year>
<page-range>13</page-range><publisher-loc><![CDATA[Málaga ]]></publisher-loc>
<publisher-name><![CDATA[Departamento de Lenguajes y Ciencias de la Computación, Universidad de Málaga]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[HAYWOOD]]></surname>
<given-names><![CDATA[Dan]]></given-names>
</name>
</person-group>
<source><![CDATA[MDA: Nice idea]]></source>
<year>2004</year>
</nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="">
<collab>HUMAN PERFORMANCE CENTER (HPC)</collab>
<source><![CDATA[Software architectura]]></source>
<year>2002</year>
</nlm-citation>
</ref>
<ref id="B12">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[IYENGAR]]></surname>
<given-names><![CDATA[Sridhar]]></given-names>
</name>
</person-group>
<source><![CDATA[XML Metadata interchange (XMI) from UML object models to XML DTDs and Documents. s.l.]]></source>
<year>1999</year>
<page-range>45</page-range><publisher-name><![CDATA[Unisys Corporation]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B13">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[JACOBSON]]></surname>
<given-names><![CDATA[Ivar]]></given-names>
</name>
<name>
<surname><![CDATA[GRISS]]></surname>
<given-names><![CDATA[Martin]]></given-names>
</name>
<name>
<surname><![CDATA[JONSSON]]></surname>
<given-names><![CDATA[Patrik]]></given-names>
</name>
</person-group>
<source><![CDATA[Software reuse: Arquitecture, process and organization for business success]]></source>
<year>1997</year>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B14">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[JÉZÉQUEL]]></surname>
<given-names><![CDATA[Jean-Marc]]></given-names>
</name>
</person-group>
<source><![CDATA[Model transformation techniques]]></source>
<year>2005</year>
<publisher-name><![CDATA[Universidad de Rennes]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B15">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[KLEPPE]]></surname>
<given-names><![CDATA[Anneke]]></given-names>
</name>
<name>
<surname><![CDATA[WARMER]]></surname>
<given-names><![CDATA[Jos]]></given-names>
</name>
</person-group>
<source><![CDATA[The Object Constraint Language: precise modeling with UML. s.l]]></source>
<year>1999</year>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B16">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[KLEPPE]]></surname>
<given-names><![CDATA[Anneke]]></given-names>
</name>
<name>
<surname><![CDATA[WARMER]]></surname>
<given-names><![CDATA[Jos]]></given-names>
</name>
<name>
<surname><![CDATA[BAST]]></surname>
<given-names><![CDATA[Win]]></given-names>
</name>
</person-group>
<source><![CDATA[MDA explained: The practice and promise of model-driven architecture]]></source>
<year>2003</year>
<publisher-name><![CDATA[Addison-Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B17">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[MELLOR]]></surname>
<given-names><![CDATA[Stephen J]]></given-names>
</name>
<name>
<surname><![CDATA[CLARK]]></surname>
<given-names><![CDATA[Anthony N]]></given-names>
</name>
<name>
<surname><![CDATA[FUTAGAMI]]></surname>
<given-names><![CDATA[Takao]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Model-driven development]]></article-title>
<collab>IEEE Software</collab>
<source><![CDATA[]]></source>
<year>Oct.</year>
<month>, </month>
<day>20</day>
<volume>20</volume>
<page-range>14-18</page-range></nlm-citation>
</ref>
<ref id="B18">
<nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[MUÑOZ]]></surname>
<given-names><![CDATA[Javier]]></given-names>
</name>
<name>
<surname><![CDATA[PELECHADO]]></surname>
<given-names><![CDATA[Vicente]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[MDA a debate]]></article-title>
<source><![CDATA[]]></source>
<year></year>
<conf-name><![CDATA[ Taller sobre Desarrollo Dirigido por Modelos, MDA y Aplicaciones de las IX Jornadas de Ingeniería del Software y Bases de Datos]]></conf-name>
<conf-date>noviembre 2004</conf-date>
<conf-loc>Málaga </conf-loc>
</nlm-citation>
</ref>
<ref id="B19">
<nlm-citation citation-type="">
<collab>OMG-BP</collab>
<source><![CDATA[Business processes and the OMG: An overview]]></source>
<year>2004</year>
</nlm-citation>
</ref>
<ref id="B20">
<nlm-citation citation-type="">
<collab>OMG-MDA</collab>
<source><![CDATA[Model driven architecture (MDA) Guide Version 1.0.1]]></source>
<year>2003</year>
</nlm-citation>
</ref>
<ref id="B21">
<nlm-citation citation-type="">
<collab>OMG-MOF</collab>
<source><![CDATA[A review of OMG MOF 2.0 Query/Views/Transformations submissions and recommendations towards the final standard]]></source>
<year>2003</year>
</nlm-citation>
</ref>
<ref id="B22">
<nlm-citation citation-type="book">
<collab>OMG-RfPOCL</collab>
<source><![CDATA[Response to the UML 2.0 OCL RfP (ad/2000-09-03)]]></source>
<year>2003</year>
<publisher-name><![CDATA[OMG]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B23">
<nlm-citation citation-type="">
<collab>OMG-OCL</collab>
<source><![CDATA[OCL specification]]></source>
<year>2003</year>
</nlm-citation>
</ref>
<ref id="B24">
<nlm-citation citation-type="">
<collab>OMG-UML</collab>
<source><![CDATA[UML 2.0 superstructure specification.]]></source>
<year>2003</year>
</nlm-citation>
</ref>
<ref id="B25">
<nlm-citation citation-type="">
<collab>OMG-UAS</collab>
<source><![CDATA[Unified modeling language specification (Action Semantics)]]></source>
<year>2002</year>
</nlm-citation>
</ref>
<ref id="B26">
<nlm-citation citation-type="">
<collab>OMG-XMI</collab>
<source><![CDATA[XML metadata interchange (XMI) specification]]></source>
<year>2003</year>
</nlm-citation>
</ref>
<ref id="B27">
<nlm-citation citation-type="book">
<collab>SEI-CMMI</collab>
<source><![CDATA[Capability maturity model integration (CMMI)]]></source>
<year>2002</year>
<page-range>725</page-range><publisher-name><![CDATA[Carnegie Mellon University]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B28">
<nlm-citation citation-type="book">
<collab>SEI-SPL</collab>
<source><![CDATA[Software product line]]></source>
<year>2006</year>
<publisher-name><![CDATA[SEI]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B29">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[SHEKHAR]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[PRABHAKAR, T]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[An overview of UML 2.0]]></article-title>
<source><![CDATA[Technical Meeting]]></source>
<year>June</year>
<month> 2</month>
<day>00</day>
<publisher-loc><![CDATA[Paris ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B30">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[VILLARROEL]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[FERNÁNDEZ-MEDINA]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[TRUJILLO]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[PIATTINI]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[Un profile de UML para diseñar almacenes de datos seguros]]></source>
<year>2003</year>
<page-range>9</page-range><publisher-name><![CDATA[CYTED]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B31">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[VÖLTER]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[STAHL]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
</person-group>
<source><![CDATA[Model-driven software development. Technology, Engineering, Management]]></source>
<year>Juli</year>
<month>o </month>
<day>20</day>
<page-range>444</page-range></nlm-citation>
</ref>
<ref id="B32">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[WARMER]]></surname>
<given-names><![CDATA[Jos]]></given-names>
</name>
</person-group>
<source><![CDATA[The role of OCL in the model driven architecture]]></source>
<year>2002</year>
<page-range>202</page-range><publisher-loc><![CDATA[Springer ]]></publisher-loc>
<publisher-name><![CDATA[Berlin and Heidelberg]]></publisher-name>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
