<?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>1692-3324</journal-id>
<journal-title><![CDATA[Revista Ingenierías Universidad de Medellín]]></journal-title>
<abbrev-journal-title><![CDATA[Rev. ing. univ. Medellin]]></abbrev-journal-title>
<issn>1692-3324</issn>
<publisher>
<publisher-name><![CDATA[Universidad de Medellín]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1692-33242008000100010</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Especificación formal en OCL de reglas de consistencia entre los diagramas de clases y casos de uso de UML y el modelo de interfaces]]></article-title>
<article-title xml:lang="en"><![CDATA[Formal OCL specification of consistency rules between the UML class and the use case models and the interfaces model]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Zapata]]></surname>
<given-names><![CDATA[Carlos Mario]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[González]]></surname>
<given-names><![CDATA[Guillermo]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad Nacional de Colombia Escuela de Sistemas ]]></institution>
<addr-line><![CDATA[Medellín ]]></addr-line>
<country>Colombia</country>
</aff>
<aff id="A02">
<institution><![CDATA[,Universidad Nacional de Colombia Escuela de Sistemas ]]></institution>
<addr-line><![CDATA[Medellín ]]></addr-line>
<country>Colombia</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>01</month>
<year>2008</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>01</month>
<year>2008</year>
</pub-date>
<volume>7</volume>
<numero>12</numero>
<fpage>169</fpage>
<lpage>191</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_arttext&amp;pid=S1692-33242008000100010&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_abstract&amp;pid=S1692-33242008000100010&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.co/scielo.php?script=sci_pdf&amp;pid=S1692-33242008000100010&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[En el ciclo de vida del software, durante las fases de definición y análisis, se realiza una especificación de los requisitos. Para ello, es necesario realizar un proceso de captura de las necesidades y expectativas de los interesados, que se traduce posteriormente en un conjunto de modelos que representan tanto el problema como su solución. Por lo general, la mayoría de esos modelos se expresan en el lenguaje de modelado unificado -UML-, que define un conjunto de artefactos que permiten especificar los requisitos del software, los cuales deberían guardar consistencia, cuando se trate del mismo modelo. Sin embargo, la consistencia entre diferentes artefactos no se encuentra definida en la especificación de UML y poco se ha trabajado con este tipo de consistencia. En este artículo se propone un método para verificar la consistencia entre el diagrama de clases y el diagrama de casos de uso de UML de una manera formal. Dicho proceso se lleva a cabo evaluando una serie de reglas definidas en el lenguaje de restricciones de objetos -OCL- que se deben cumplir para garantizar que la información brindada por dichos modelos sea consistente. Como se reconoce la participación de los dos diagramas en la elaboración de las interfaces gráficas de usuario -GUI-, se define adicionalmente la consistencia con este artefacto.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[In a software lifetime, during definition and analysis stages, a specification of requirements is carried out. For such a purpose, it is necessary to get through a process to capture interested persons’ needs and expectations, which will later be translated into a set of models representing both the problem and the solution. Most models are frequently expressed by the UML (Unified Modeling Language) which defines a set of devices for specifying software requirements which should be consistent with the same model. However, consistency among several devices is not defined in the UML specification and not too much work has been made with this type of consistence. This article proposes a method to verify consistence among UML class diagram and use case diagram in a formal way. Such a process is carried out through an evaluation of several rules defined in the OCL (Object Constraint Language), which should be fulfilled to assure that information provided by such models is consistent. As both diagrams participation is recognized when preparing GUI (Graphic User Interfaces) consistence with this device is additionally defined]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[UML]]></kwd>
<kwd lng="es"><![CDATA[reglas de consistencia]]></kwd>
<kwd lng="es"><![CDATA[OCL]]></kwd>
<kwd lng="es"><![CDATA[casos de uso]]></kwd>
<kwd lng="es"><![CDATA[diagrama de clases]]></kwd>
<kwd lng="es"><![CDATA[interfaces gráficas de usuario]]></kwd>
<kwd lng="es"><![CDATA[XML]]></kwd>
<kwd lng="es"><![CDATA[XMI]]></kwd>
<kwd lng="es"><![CDATA[Xquery]]></kwd>
<kwd lng="en"><![CDATA[UML]]></kwd>
<kwd lng="en"><![CDATA[consistence rules]]></kwd>
<kwd lng="en"><![CDATA[OCL]]></kwd>
<kwd lng="en"><![CDATA[use cases]]></kwd>
<kwd lng="en"><![CDATA[class diagram]]></kwd>
<kwd lng="en"><![CDATA[graphic user interfaces]]></kwd>
<kwd lng="en"><![CDATA[XML]]></kwd>
<kwd lng="en"><![CDATA[XMI]]></kwd>
<kwd lng="en"><![CDATA[Xquery]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[  <FONT SIZE="2" FACE="Verdana"></FONT>     <P ALIGN="CENTER"><FONT SIZE="4" FACE="Verdana"><B>Especificaci&oacute;n formal       en OCL de reglas de consistencia entre los diagramas de clases y casos de uso de UML y el modelo de interfaces</B></FONT></P>     <P ALIGN="CENTER">&nbsp;</P>     <P ALIGN="CENTER"><FONT SIZE="3" FACE="Verdana"><B>Formal OCL specification of consistency rules between the UML class and the use case models and the interfaces model</B></FONT></P> <FONT SIZE="2" FACE="Verdana">     <P>&nbsp;</P>     <P>&nbsp;</P>     <P> Carlos Mario Zapata<sup>1</sup>; Guillermo Gonz&aacute;lez<sup>2</sup></P>     <P><sup>1</sup> Escuela de Sistemas, Universidad Nacional de Colombia. Carrera 80 N<sup>o</sup> 65-223, Bloque M8. Medell&iacute;n-Colombia. Tel: 4255350. E-mail: <A HREF="mailto:cmzapata@unalmed.edu.co">cmzapata@unalmed.edu.co</A></P>     <P> <sup>2</sup> Escuela de Sistemas, Universidad Nacional de Colombia. Carrera   80 N<sup>o</sup> 65-223, Bloque M8. Medell&iacute;n-Colombia. Tel: 4255350 E-mail: <A HREF="mailto:ggonzal@unalmed.edu.co">ggonzal@unalmed.edu.co</A> </P>     <P>&nbsp;</P>     ]]></body>
<body><![CDATA[<P>&nbsp;</P> <hr size="1" noshade>     <P><B><font size="2" face="Verdana"></font>RESUMEN</B></P>     <P> En el ciclo de vida del software, durante las fases de definici&oacute;n y an&aacute;lisis,   se realiza una   especificaci&oacute;n de los requisitos. Para ello, es necesario realizar un   proceso de captura   de las necesidades y expectativas de los interesados, que se traduce posteriormente   en un conjunto de modelos que representan tanto el problema como su soluci&oacute;n.   Por lo general, la mayor&iacute;a de esos modelos se expresan en el lenguaje   de modelado   unificado &#8211;UML-, que define un conjunto de artefactos que permiten especificar   los requisitos del software, los cuales deber&iacute;an guardar consistencia,   cuando se trate   del mismo modelo. Sin embargo, la consistencia entre diferentes artefactos   no se   encuentra definida en la especificaci&oacute;n de UML y poco se ha trabajado   con este   tipo de consistencia.</P>     <P> En este art&iacute;culo se propone un m&eacute;todo para verificar la consistencia   entre el diagrama   de clases y el diagrama de casos de uso de UML de una manera formal. Dicho   proceso   se lleva a cabo evaluando una serie de reglas definidas en el lenguaje de restricciones   de objetos &#8211;OCL- que se deben cumplir para garantizar que la informaci&oacute;n   brindada   por dichos modelos sea consistente. Como se reconoce la participaci&oacute;n   de los dos   diagramas en la elaboraci&oacute;n de las interfaces gr&aacute;ficas de usuario &#8211;GUI&#8211;,   se define   adicionalmente la consistencia con este artefacto.</P>     <P> <B>Palabras clave:</B> UML, reglas de consistencia, OCL, casos de uso, diagrama   de   clases, interfaces gr&aacute;ficas de usuario, XML, XMI, Xquery.</P> <hr size="1" noshade>     <P><B><font size="2" face="Verdana"></font>ABSTRACT</B></P>     <P> In a software lifetime, during definition and analysis stages, a specification   of requirements   is carried out. For such a purpose, it is necessary to get through a process   to capture interested persons&#8217; needs and expectations, which will later   be translated   into a set of models representing both the problem and the solution. Most models   are frequently expressed by the UML (Unified Modeling Language) which defines   a set of devices for specifying software requirements which should be consistent   with the same model. However, consistency among several devices is not defined   in the UML specification and not too much work has been made with this type   of consistence.</P>     <P> This article proposes a method to verify consistence among UML class diagram     and     use case diagram in a formal way. Such a process is carried out through an     evaluation     of several rules defined in the OCL (Object Constraint Language), which should     be     fulfilled to assure that information provided by such models is consistent.     As both     diagrams participation is recognized when preparing GUI (Graphic User Interfaces)   consistence with this device is additionally defined</P>     <P>  <B>Keywords: </B>UML, consistence rules, OCL, use cases, class diagram, graphic   user interfaces, XML, XMI, Xquery. </P> <hr size="1" noshade>     <P>&nbsp;</P>     ]]></body>
<body><![CDATA[<P><B><FONT SIZE="3">INTRODUCCI&Oacute;N</FONT></B></P>     <P> Un proceso de desarrollo de software tiene     como prop&oacute;sito la producci&oacute;n eficaz y eficiente     de un producto software que cumpla con las necesidades     y expectativas de los interesados o participantes     (stakeholders es el t&eacute;rmino en ingl&eacute;s). Este     proceso empieza t&iacute;picamente cuando se identifica     un problema que puede requerir una soluci&oacute;n     computarizada, cuyo desarrollo requiere una especificaci&oacute;n     de requisitos que se logra durante las     fases de definici&oacute;n y an&aacute;lisis. Esta especificaci&oacute;n es     a menudo informal y posiblemente vaga, lo que se     suele denominar un 'bosquejo &aacute;spero' (Jackson,     1995). Los ingenieros de requisitos necesitan examinar     esta representaci&oacute;n escrita, que es frecuentemente     incompleta e inconsistente, basados en la     informaci&oacute;n disponible y en su experiencia previa,     para transformar este 'bosquejo &aacute;spero' en una     especificaci&oacute;n correcta de requisitos. Luego, se presentan     dichos requisitos a los interesados para su     validaci&oacute;n. Como resultado, se identifican nuevos     requisitos para ser agregados a la especificaci&oacute;n, o     algunos de los previamente identificados podr&iacute;an     eliminarse para mejorarla; por tanto, en cada paso     del desarrollo de una pieza de software, la especificaci&oacute;n     puede perder o ganar requisitos. Una de     las tareas cr&iacute;ticas de los ingenieros de requisitos     en este proceso es asegurar que la especificaci&oacute;n     de requisitos permanezca correcta en cada paso, o     que por lo menos los errores se encuentren lo m&aacute;s     r&aacute;pido posible y que sean identificadas sus fuentes   para su revisi&oacute;n (Zowghi y Gervasi, 2002).</P>     <P> En general, los m&eacute;todos de desarrollo     de software    (por ejemplo el Unified Process (Jacobson, et   al., 1999)), son iterativos e incrementales, repitiendo   una serie de iteraciones sobre el ciclo de vida   de un sistema. Cada iteraci&oacute;n consiste de un paso   a trav&eacute;s de las etapas de requerimientos, an&aacute;lisis,   dise&ntilde;o, implementaci&oacute;n y prueba. El resultado   de cada iteraci&oacute;n representa un incremento sobre   cada uno de los modelos construidos en las etapas   anteriores. Durante estos ciclos de desarrollo, los   modelos se construyen sucesivamente en un nivel   m&aacute;s y m&aacute;s bajo de abstracci&oacute;n hasta que el nivel   requerido para la codificaci&oacute;n es alcanzado. El   costo de los errores encontrados al principio en el   ciclo de desarrollo es muy inferior al costo de los   errores encontrados en los &uacute;ltimos pasos tales como   codificaci&oacute;n o pruebas, por lo que se debe tratar de   hacer un buen an&aacute;lisis desde el principio del proceso,   especialmente en la especificaci&oacute;n de requisitos,   para evitar problemas futuros, que requerir&iacute;an,   incluso, un nuevo dise&ntilde;o, perdiendo as&iacute; gran parte   del trabajo realizado hasta ese momento.</P>     <P>Es frecuente el caso en que, en una tentativa   por mantener la consistencia dentro de los requisitos,   se eliminen uno o m&aacute;s de la especificaci&oacute;n,   y no se pueda preservar su integridad. Inversamente,   cuando se agregan nuevos requisitos a   la especificaci&oacute;n para hacerla m&aacute;s completa, es   posible introducir inconsistencia en ella (Zowghi y   Gervasi, 2002). Dado que la especificaci&oacute;n de los   requisitos se logra con un conjunto de diagramas,   que representan vistas interconectadas del modelo   del problema, las inconsistencias pueden surgir   entre cualquier par de diagramas, y se pueden   acentuar en tanto esos artefactos se usan con mayor   frecuencia, como es el casos de los diagramas de   casos de uso y de clases.</P>     <P>A medida que se utilizan m&aacute;s artefactos,     el problema de la consistencia entre ellos aumenta.   Muy pocas t&eacute;cnicas de modelamiento de requisitos   tienen una aproximaci&oacute;n sistem&aacute;tica para   tratar el problema de la consistencia intermodelos   (Egyed, 2001). El problema de la consistencia es   simplemente ignorado (y dejado a los ingenieros   de requisitos y a los interesados, que tienen que   validar la especificaci&oacute;n de estos con procesos   muchas veces manuales).</P>     <P> Despu&eacute;s de haber reunido los requisitos,   se debe hacer un modelamiento del problema para obtener una visi&oacute;n m&aacute;s   detallada del sistema y as&iacute;  poder resolver por medio del computador las diferentes   situaciones que se presentan en el problema   a tratar. En este proceso, es preferible trabajar con   un est&aacute;ndar de modelamiento, que sea compartido   y comprendido por los analistas de diferentes   sitios. Utilizando las reglas proporcionadas por el   est&aacute;ndar, los ingenieros de software pueden crear   modelos concretos y sin ambig&uuml;edades. Booch et   al (1997) han definido un est&aacute;ndar de modelado   denominado UML (Unified Modeling Language)   (OMG, 2007). UML est&aacute; conformado por un   conjunto de artefactos que permiten especificar los   requisitos del software. La forma de representar a   UML es conocida como metamodelo de UML, y   est&aacute; disponible al p&uacute;blico junto con la definici&oacute;n   del est&aacute;ndar en ingl&eacute;s (OMG, 2007). El metamodelo   de UML sirve para que los ingenieros de   Software puedan verificar la correcci&oacute;n de sus   modelos, ya que tiene la estructura y las reglas   que definen las interacciones entre los diferentes   diagramas.</P>     <P> UML propone, entre otras cosas, un conjunto   de diagramas que representan un software desde   distintos puntos de vista. Los diagramas UML son   independientes pero se conectan; su metamodelo   los describe bajo el mismo techo (OMG, 2007).   Por ejemplo, un diagrama de casos de uso (Jacobson,   1992) muestra la funcionalidad que ofrece el   sistema futuro desde la perspectiva de los usuarios   externos al mismo, en tanto que un diagrama de   clases (Jacobson, 1992) representa la estructura   est&aacute;tica que las clases poseen y un diagrama de   interacci&oacute;n (Jacobson, 1992) representa c&oacute;mo los   objetos intercambian mensajes.</P>     <P>Si bien no pertenece al est&aacute;ndar de UML,   el modelo de interfaces describe la presentaci&oacute;n   de informaci&oacute;n entre los actores y el sistema   (Weitzenfeld, 2005) y es complementario con la   informaci&oacute;n que se presenta en los diagramas de   clases y casos de uso. En este modelo, se especifica   en detalle c&oacute;mo se ver&aacute;n las interfaces gr&aacute;ficas   de usuario al ejecutar cada uno de los casos de   uso. Normalmente, un prototipo funcional de   requisitos que muestre la manera en que funcionan   las interfaces gr&aacute;ficas de usuario posibilita   la comprensi&oacute;n del software futuro por parte de   los interesados, quienes pueden, incluso, validar   si la informaci&oacute;n que all&iacute; se presenta es correcta   y adecuada. Esto ayuda al interesado a visualizar   los casos de uso, seg&uacute;n se mostrar&aacute; en el software   por construir, y permite eliminar muchos posibles   malos entendidos. Cuando se dise&ntilde;an las interfaces   gr&aacute;ficas de usuario, es esencial involucrar   a los interesados, y reflejar la visi&oacute;n l&oacute;gica del   sistema a trav&eacute;s de las interfaces; por ello, debe   haber consistencia entre los modelos conceptuales   elaborados por los analistas y el comportamiento   real del software por construir.</P>     <P>Sin embargo, un aspecto que no ha sido tratado   muy frecuentemente es c&oacute;mo estos diagramas   se integran (Bustos, 2002), es decir, cu&aacute;les son las   relaciones expl&iacute;citas posibles entre estos diagramas   cuando est&aacute;n describiendo un mismo modelo.</P>     <P>En algunas de las herramientas comerciales   para el apoyo a las actividades y procesos de la   ingenier&iacute;a de software (denominadas Computer-   Aided Software Engineering) se realizan actualmente   chequeos de la consistencia interna de los   diagramas, pero se realizan pocas revisiones sobre   la consistencia entre los diferentes diagramas o   artefactos (Chiorean, et al., 2003), la cual debe ser   analizada manualmente y de manera exhaustiva   por los analistas y dise&ntilde;adores del proyecto.</P>     ]]></body>
<body><![CDATA[<P> Los artefactos definidos por UML deber&iacute;an   guardar consistencia cuando se traten del mismo   modelo. La consistencia interna de cada artefacto   est&aacute; definida en la especificaci&oacute;n de UML, pero la   consistencia entre diferentes artefactos poco se ha   trabajado; adem&aacute;s, a&uacute;n subsisten problemas:</P>     <P>  <FONT SIZE="2" FACE="Verdana"><i>&#8226;</i></FONT> La consistencia intermodelos     no se especifica     formalmente (Glinz, 2000). Una especificaci&oacute;n formal de este tipo     de consistencia facilita     la comprensi&oacute;n de la informaci&oacute;n com&uacute;n     que deben poseer los diferentes artefactos y     posibilita su posterior implementaci&oacute;n en     herramientas computacionales.</P>     <P> <FONT SIZE="2" FACE="Verdana"><i>&#8226;</i></FONT>   S&oacute;lo se realizan   algunos chequeos de consistencia     de manera autom&aacute;tica entre alguno de     los artefactos y el c&oacute;digo resultante (Gryce, et     al., 2002). El c&oacute;digo del software se elabora en     una etapa posterior al an&aacute;lisis y el dise&ntilde;o; si el     chequeo de la consistencia se realiza sobre el     c&oacute;digo del software, es probable que algunas     de las inconsistencias previas hayan sobrevivido     hasta la fase de implementaci&oacute;n y, como     se dijo previamente, es preferible encontrar     este tipo de defectos en las fases iniciales del     desarrollo.</P>     <P> <FONT SIZE="2" FACE="Verdana"><i>&#8226;</i></FONT>  En algunos trabajos   se definen reglas de consistencia     con reglas de manera formal pero s&oacute;lo     en el nivel de intramodelo (Chiorean, et al.,     2003), (OMG, 2007). Los modelos no se suelen     construir con &uacute;nicamente un diagrama; se     requiere la participaci&oacute;n de diferentes puntos     de vista que suelen ser expresados en diferentes     diagramas. Si esos diagramas se deben referir a     la misma informaci&oacute;n, las reglas de consistencia     intramodelo tienen un restringido campo de     acci&oacute;n y pueden permitir que subsistan errores     de consistencia entre los diferentes diagramas.   En este art&iacute;culo se propone un m&eacute;todo para   verificar la consistencia entre el diagrama de clases y     el diagrama de casos de uso de UML de una manera     formal, evaluando una serie de reglas definidas en     OCL (OMG, 2007), las cuales se deben cumplir     para garantizar que la informaci&oacute;n brindada por     dichos modelos sea consistente. Se define, adicionalmente,     la consistencia con las interfaces gr&aacute;ficas     de usuario, ya que &eacute;stas son construidas con gran     participaci&oacute;n de ambos diagramas.</P>     <P> Este art&iacute;culo est&aacute; organizado de la siguiente   manera: en la secci&oacute;n 2 se muestra la problem&aacute;tica   general que motiva este trabajo de investigaci&oacute;n;   en la secci&oacute;n 3 se presenta la revisi&oacute;n de la literatura   especializada que se pudo recopilar alrededor   del tema en estudio; en la secci&oacute;n 4 se expone el   m&eacute;todo relacionado con la construcci&oacute;n de las   reglas de consistencia y se describe el m&eacute;todo para   la validaci&oacute;n de &eacute;stas. Finalmente, en la secci&oacute;n 5   se exponen las conclusiones y el trabajo futuro que   se puede derivar de este art&iacute;culo.</P>     <P>&nbsp;</P>     <P> <B><FONT SIZE="3">1. PROBLEM&Aacute;TICA GENERAL DE   INVESTIGACI&Oacute;N</FONT></B></P>     <P>  Existe gran cantidad de trabajos que abordan el   problema de la consistencia en el nivel de intramodelo,   tanto de manera formal como informal; sin   embargo, son pocos los autores que han trabajado   la consistencia entre modelos, la cual tampoco se   ha expresado en lenguajes formales. Otros trabajos   realizan consistencia entre diagramas y c&oacute;digo   resultante, lo que implica no poder comprobar   reglas de consistencia antes de la implementaci&oacute;n   y las pruebas del software.</P>     <P> Para el caso espec&iacute;fico, la mayor&iacute;a de los trabajos   que tratan el tema de la consistencia entre   el modelo de clases y el modelo de casos de uso   de UML lo hacen de una manera informal, en la   que recurren al procesamiento de lenguaje natural   para garantizar la correspondencia y completitud   de los elementos de ambos diagramas, utilizando   principalmente los escenarios y la descripci&oacute;n de   los casos de uso para esto.</P>     <P> Por otro lado, ninguno de los trabajos recopilados   tiene en cuenta las interfaces gr&aacute;ficas de   usuario para el manejo de la consistencia entre   estos modelos, a&uacute;n a sabiendas de la alta relaci&oacute;n   que existe entre &eacute;stas y ambos diagramas. Por lo   tanto, se propone como una soluci&oacute;n a algunas   de las limitaciones anotadas el planteamiento   de un conjunto de reglas de consistencia entre el   diagrama de casos de uso y el diagrama de clases de   UML que tengan en cuenta las interfaces gr&aacute;ficas de usuario, as&iacute; como   la definici&oacute;n de una especificaci&oacute;n   formal de estas reglas de consistencia; de   esta manera, adem&aacute;s de permitir un chequeo de   la consistencia entre los dos diagramas, se puede   involucrar la validaci&oacute;n que de ellos puedan realizar   los interesados por medio de las interfaces   gr&aacute;ficas de usuario.</P>     ]]></body>
<body><![CDATA[<P> El tema de la consistencia se ha trabajado   m&aacute;s en el nivel intramodelo, donde se verifica   que todos los elementos de un mismo diagrama o   artefacto sean consistentes entre s&iacute;, pero sin tener   en cuenta las relaciones con elementos de otros artefactos   que pertenecen al modelo. En la parte de   intermodelos, el trabajo desarrollado en consistencia   ha sido relativamente poco, donde se muestran   propuestas de m&eacute;todos aislados para llevar a asegurar   consistencia entre diferentes modelos, pero   en general no se muestra un mecanismo formal   que pueda ser aplicado por medio de un lenguaje   de especificaci&oacute;n como el OCL. En general, la   falta de formalismo en la definici&oacute;n de las reglas   puede conducir a problemas de ambig&uuml;edad en la   interpretaci&oacute;n de tales reglas, y finalmente a una   implementaci&oacute;n err&oacute;nea de las mismas.</P>     <P>Se necesita, por tanto, una especificaci&oacute;n   formal de reglas de consistencia entre el modelo   de casos de uso y el modelo de clases, empleando   un lenguaje de especificaci&oacute;n (que en este caso   ser&aacute; OCL); estas reglas se podr&iacute;an aplicar desde las   fases de definici&oacute;n y an&aacute;lisis del ciclo de vida del   software, donde se tienen versiones preliminares   de ambos diagramas, o incluso en fases posteriores   de dise&ntilde;o previas a la implementaci&oacute;n, donde   los diagramas son m&aacute;s refinados por la cantidad   de detalles que se deben precisar en ese proceso.   Con ello, se busca que los analistas no inviertan   demasiado tiempo y dinero en la revisi&oacute;n exhaustiva   de los diagramas en busca de su consistencia,   y que se detecten los errores potenciales en fases   relativamente tempranas del desarrollo.</P>     <P>Las reglas que se planteen deber&aacute;n tomar en   consideraci&oacute;n no s&oacute;lo los errores que se pueden   cometer al trabajar con puntos de vista independientes,   sino tambi&eacute;n advertencias de posibles   errores que pueden llegar a ser nocivos para el   modelamiento que se est&aacute; realizando del producto   software. De esta manera, podr&iacute;a ser posible   advertir a los analistas de los errores reales y potenciales   que est&aacute;n cometiendo en la generaci&oacute;n   de los diagramas, como una especie de extensi&oacute;n   de las reglas de buena formaci&oacute;n de los mismos,   pero tomando en consideraci&oacute;n la interrelaci&oacute;n   con otros diagramas.</P>     <P>&nbsp;</P>     <P> <B><FONT SIZE="3">2. REVISI&Oacute;N DE LA LITERATURA</FONT></B></P>     <P> La principal fuente de reglas de consistencia   para los diagramas de UML es la especificaci&oacute;n   misma emanada por el OMG (OMG, 2007). En   dicha especificaci&oacute;n, se incluyen algunas reglas de   consistencia intramodelos, ya sea de los diagramas   de casos de uso o de los diagramas de clases, pero   no se definen reglas de consistencia intermodelos.   Esas reglas intramodelos se encuentran plenamente   definidas tanto en lenguaje natural como en   OCL y algunas de ellas se encuentran incorporadas   en algunas herramientas CASE convencionales,   como es el caso de ArgoUML&reg;.</P>     <P> Para el manejo de estas reglas de consistencia   entre modelos UML se han trabajado b&aacute;sicamente   algunos m&eacute;todos:</P>     <P> <FONT SIZE="2" FACE="Verdana"><i>&#8226;</i></FONT><FONT SIZE="2"></FONT> Xlinkit (Gryce, et al.,   2002) es un entorno   para chequear la consistencia de documentos   heterog&eacute;neos distribuidos. En esta propuesta   se hace uso de XML (W3C, 2007), Xpath   (W3C, 2007), Xlink (W3C, 2007) y DOM   (W3C, 2007), y est&aacute; conformada por un lenguaje   basado en l&oacute;gica de primer orden, que   permite expresar restricciones entre documentos,   un sistema de manejo de documentos y   un motor que chequea las restricciones contra   los documentos. Para explicar la operaci&oacute;n   de Xlinkit, se muestra en un ejemplo el caso   de dos desarrolladores trabajando independientemente en el mismo sistema, con   su   informaci&oacute;n guardada en diferentes m&aacute;quinas.   Uno est&aacute; especificando un modelo UML y el   otro trabajando en una implementaci&oacute;n en   Java. El objetivo es chequear una restricci&oacute;n   simple, que cada clase en el modelo UML   tenga que ser implementada como una clase   en Java. Esta restricci&oacute;n se debe satisfacer en   el modelo y en la implementaci&oacute;n para que   sean consistentes. Xlinkit provee 'conjuntos   de documentos' para incluir los documentos   y 'conjuntos de reglas' para seleccionar las   restricciones. La <A HREF="#fig1">figura 1</A> muestra el conjunto   de documentos para el ejemplo, que consta de   un documento de UML (UMLmodel.xml), un   documento Java (Main.java) y un documento   para la definici&oacute;n de las reglas (ClassSet.xml).   En la <A HREF="#fig2">figura 2</A> se muestra una restricci&oacute;n descrita   en la codificaci&oacute;n XML de Xlinkit, que   establece que por cada clase que se encuentre   en el documento UML debe existir una clase en el documento Java.</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig01.JPG" WIDTH="477" HEIGHT="173"><A NAME="fig1"></A></P>     <P>  <B>Figura 1</B>. Ejemplo de conjunto de documentos</P>     ]]></body>
<body><![CDATA[<P>&nbsp;</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig02.JPG" WIDTH="443" HEIGHT="149"> <A NAME="fig2"></A></P>     <P>  <B>Figura 2.</B> Restricci&oacute;n de ejemplo</P>     <P> En tiempo de ejecuci&oacute;n, Xlinkit aplica las   expresiones XPath en la restricci&oacute;n a todos los documentos   del conjunto, y as&iacute; construye un conjunto   de nodos para ser chequeados. La <A HREF="#fig3">figura 3</A> muestra   2 hiperv&iacute;nculos en una base de v&iacute;nculos Xlinkit   que ha sido generada de la regla de consistencia.   Se han generado 'v&iacute;nculos consistentes' entre   elementos consistentes, y 'v&iacute;nculos inconsistentes'  entre elementos no consistentes.</P>     <P> Se puede observar que la clase UML ha sido   vinculada a la clase Java que conforma, y que la   clase UML inconsistente se ha identificado, pero   no ha sido vinculada a algo, porque no tiene clase   Java correspondiente.</P>     <P> Xlinkit soporta el chequeo de documentos   UML contra las reglas de buena formaci&oacute;n para   los elementos est&aacute;ticos de UML, sin embargo, no   incluye las reglas para los elementos din&aacute;micos del metamodelo, lo que   es necesario para una buena   revisi&oacute;n de la consistencia entre diferentes tipos   de modelos. Adem&aacute;s, las reglas usadas para probar   los modelos UML fueron traducidas de las reglas   de buena formaci&oacute;n del OMG. Ya que esas reglas   tienen varias desventajas, los resultados obtenidos   en el chequeo de las Reglas de Buena Formaci&oacute;n   de los modelos UML no son siempre correctos. Los   resultados se dan como un reporte, que menciona   s&oacute;lo si una regla fue evaluada a falso o a verdadero.   Por lo tanto, esta informaci&oacute;n no es &uacute;til en la identificaci&oacute;n   de causas de la falla de alguna regla.</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig03.JPG" WIDTH="546" HEIGHT="173"><A NAME="fig3"></A></P>     <P><B>Figura 3.</B> Hiperv&iacute;nculos resultantes.</P>     <P> En el trabajo de Dan Chiorean (Chiorean,   et al., 2003) se trabaja con OCL (Booch, et al.,   1997) para chequear la consistencia de modelos   UML. Se trabaja con una herramienta CASE   UML, Object Constraint Language Environment   (OCLE), la cual es totalmente compatible con   OCL y soporta nivel de modelo y metamodelo.   Esta herramienta es compatible con XMI (OMG,   2007). Puede trabajar con modelos UML generados   por las principales herramientas CASE   que est&aacute;n disponibles actualmente (Together,   Rational Rose, MagicDraw, Poseidon, ArgoUML)   (Chiorean, et al., 2003). La herramienta exporta   tambi&eacute;n diagramas UML en formato XMI para   que despu&eacute;s puedan ser importados y modificados   en cualquier herramienta que soporte XMI. OCLE   tiene la habilidad de desarrollar diferentes tipos   de chequeo de los modelos UML y corregir los   errores identificados.</P>     <P> Como ejemplo para chequear la consistencia   UML del modelo contra las WFR se trabaja con   el 'ordersys'. Es una aplicaci&oacute;n de sistema de   pedidos desarrollada para una compa&ntilde;&iacute;a distribuidora   de comida de mar. Este modelo incluye   diferentes librer&iacute;as de Visual Basic. El ejemplo   contiene el modelo de aplicaci&oacute;n y el proyecto de   Visual Basic asociado. El modelo fue exportado   en formato XMI desde Rational Rose e importado   en OCLE. El proyecto OCLE contiene el modelo   UML y el conjunto de reglas OCL guardado en   varios archivos:</P>     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig04.JPG" WIDTH="511" HEIGHT="412"><A NAME="fig4"></A></P>     <P><B>Figura 4. </B>Explorador de proyectos, panel de salida y un diagrama de clases</P>     <P> Las reglas usadas en el ejemplo son las WFR que   definen la sem&aacute;ntica est&aacute;tica de UML. Considerando   que el proyecto de Visual Basic asociado es ejecutable,   se busca ver si la informaci&oacute;n del dise&ntilde;o del modelo   es consistente con la informaci&oacute;n de la implantaci&oacute;n   del modelo. El resultado de la primera evaluaci&oacute;n se   muestra en el panel de salida (<A HREF="#fig4">figura 4</A>): se encontraron   24 problemas de 22671 evaluaciones realizadas.</P>     <P> La primera regla que se consider&oacute; es definida   en el contexto de la metaclase Namespace:</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig14.JPG" WIDTH="566" HEIGHT="178"></P>     <P>Una traducci&oacute;n de la especificaci&oacute;n informal es m&aacute;s simple:</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig15.JPG" WIDTH="539" HEIGHT="57"> </P>     <P>Los elementos del modelo sin nombre fueron   rechazados porque, aparte de las asociaciones y   generalizaciones, hay otros elementos del modelo   (como dependencias, instancias, etc.) cuyos   nombres no se pueden definir en la mayor&iacute;a de   las herramientas CASE actuales (Chiorean, et al.,   2003).</P>     <P> Los elementos que causaron la falla fueron   cuatro roles clasificadores, dos de ellos llamados   NewRow y los otros llamados dlg_Order (<A HREF="#fig5">Figura 5</A>). Cambiar los nombres de esos elementos   resolver&aacute; el problema.</P>     <P> Los resultados obtenidos en este y otros ejemplos   (Chiorean, et al., 2003) demuestran que usar   OCL en el chequeo de reglas de consistencia del   modelo UML es un muy buen acercamiento, ya   que define todo lo concerniente a las reglas de   consistencia de modelos UML en el nivel del metamodelo,   por lo que esas reglas son independientes   del modelador, soportando su reutilizaci&oacute;n en   cualquier modelo UML. Esta aproximaci&oacute;n s&oacute;lo   soporta la validaci&oacute;n de la sem&aacute;ntica de diagramas   individuales de UML, manejando as&iacute; la consistencia   en el nivel de intramodelos.</P>     ]]></body>
<body><![CDATA[<P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig05.JPG" WIDTH="556" HEIGHT="362"><A NAME="fig5"></A></P>     <P><B>Figura 5.</B> Dos conflictos de nombre en el Namespace.</P>     <P>En los acercamientos que tratan la consistencia   espec&iacute;ficamente entre el diagrama de casos de uso   y el diagrama de clases se encuentran los siguientes trabajos:</P>     <P> En el trabajo de K&ouml;sters, et al. (1997) se asocian   el diagrama de casos de uso y el diagrama de clases   al derivar el modelo de clases de los casos de uso,   y anotando una especificaci&oacute;n gr&aacute;fica de casos de   uso con los nombres de las clases que implementan   ese caso de uso. Esta es una vista orientada al   dise&ntilde;o donde el usuario procede del modelo de   casos de uso al modelo de clases, y del modelo de   clases a la implementaci&oacute;n; sin embargo, no es una   aproximaci&oacute;n formal.</P>     <P> Un trabajo similar se encuentra en el trabajo de   Liu et al (2003), quienes automatizan el proceso de   generaci&oacute;n del diagrama de clases tomando como   punto de partida las especificaciones textuales de   los casos de uso, definiendo para ello unas plantillas   especiales que capturan la informaci&oacute;n. En   este caso, no se define la consistencia entre los dos   tipos de diagrama, sino que se usa una descripci&oacute;n   en un lenguaje controlado y de all&iacute; se obtiene el   diagrama de clases.</P>     <P> De manera an&aacute;loga, Shiskov et al (2002) procuran   el mismo fin, pero, partiendo de lenguaje   natural, generan el diagrama de clases utilizando   como punto intermedio el diagrama de casos de   uso. Para lograr ese fin, emplean los denominados   an&aacute;lisis de normas, un conjunto de reglas heur&iacute;sticas   que examinan plantillas de informaci&oacute;n para   transferirlas a los dos diagramas. Por el hecho de   generar ambos diagramas desde la misma especificaci&oacute;n   textual, la consistencia queda garantizada,   pero no se definen las reglas de consistencia que   deber&iacute;an existir entre los dos diagramas una vez se   modifiquen.</P>     <P> El trabajo de Glinz (2000) tambi&eacute;n es similar,   pues trabaja el diagrama de casos de uso y el diagrama   de clases como complementos de una misma   especificaci&oacute;n de requisitos, lo cual ninguno de los   acercamientos mencionados lo hace; sin embargo,   el punto de partida es, nuevamente, una especificaci&oacute;n   textual de los casos de uso en un formato   especial. Adem&aacute;s, el an&aacute;lisis que se realiza requiere   una alta participaci&oacute;n del analista en el proceso de   integraci&oacute;n de ambos artefactos, lo cual hace que   su automatizaci&oacute;n se dificulte.</P>     <P>  Buhr (1998) mira los casos de uso como caminos   causales que van hacia un modelo de objetos   jer&aacute;rquico. Los puntos de responsabilidad unen   segmentos de un camino a elementos del modelo   objetual. El modelo objetual y los caminos del   diagrama de casos de uso se visualizan juntos en los   llamados mapeos de casos de uso. La aproximaci&oacute;n   de Buhr es orientada al dise&ntilde;o tambi&eacute;n. Adem&aacute;s el   camino a trav&eacute;s del modelo objetual es todo lo que   se conoce del caso de uso; no hay especificaci&oacute;n   independiente de los casos de uso. As&iacute;, la importancia   de la separaci&oacute;n de lo orientado al usuario   se pierde, lo que es una de las fortalezas de la especificaci&oacute;n   basada en casos de uso. A diferencia   de K&ouml;sters, et al (1997), quienes se enfocan en la   transici&oacute;n de los casos de uso al diagrama de clases,   Buhr (1998) usa los casos de uso para visualizar la   din&aacute;mica del modelo objetual.</P>     <P> El trabajo de Grundy, et al (1998) tambi&eacute;n maneja   la consistencia intermodelos, pero difiere del   de Glinz (2000) en que se enfocan en herramientas   de entorno de desarrollo de software, manejando   inconsistencias en m&uacute;ltiples vistas que son derivadas   de un repositorio com&uacute;n. Los artefactos en el   repositorio se representan formalmente por una   clase especial de gr&aacute;fico, permitiendo as&iacute; detecci&oacute;n   autom&aacute;tica de inconsistencia.</P>     <P> Sunetnanta y Finkelstein (2003) presentan   un enfoque para el chequeo de consistencia intermodelos   basado en la conversi&oacute;n de los diferentes   diagramas en grafos conceptuales y la definici&oacute;n de   las reglas de consistencia en estos mismos grafos.   Los grafos conceptuales no pueden ser considerados   como un enfoque formal para la elaboraci&oacute;n   de este tipo de especificaciones, sino m&aacute;s bien un   enfoque semiformal. Adem&aacute;s, definen reglas entre los diagramas de casos   de uso y colaboraci&oacute;n (el   de la versi&oacute;n 1.4 de UML, que actualmente se denominaama de comunicaci&oacute;n   en la versi&oacute;n   2.0), y no definen las reglas de consistencia entre   diagramas estructurales y din&aacute;micos.</P>     ]]></body>
<body><![CDATA[<P> Un aspecto a considerar es que todos estos   trabajos no incluyen las interfaces de usuario como   medio complementario y necesario para validar la   consistencia entre dichos modelos, sabiendo que   hay una alta correlaci&oacute;n entre el modelo de casos   de uso e Interfaces, ya que el modelo de casos de   uso est&aacute; motivado y enfocado principalmente hacia   los sistemas de informaci&oacute;n, donde los usuarios   juegan un papel primordial, por lo que es importante   relacionarse con las interfaces a ser dise&ntilde;adas   en el sistema (Weitzenfeld, 2005).</P>     <P> El trabajo de Glinz (2000) se diferencia espec&iacute;ficamente   del planteado en este art&iacute;culo en que   no hace uso de un lenguaje formal para generar   reglas de consistencia, sino que lo hace de modo   informal al completar la documentaci&oacute;n de los   casos de uso con el mayor detalle posible y, como   se mencion&oacute; antes, tampoco hace uso de las interfaces   para tratar el problema de la consistencia,   aspecto que debe ser tenido en cuenta, dado que   estas interfaces sirven para apoyar de mejor manera   la descripci&oacute;n de los casos de uso adem&aacute;s de   servir de base para prototipos iniciales.</P>     <P>&nbsp;</P>     <P> <B><FONT SIZE="3">3. M&Eacute;TODO PROPUESTO</FONT></B></P>     <P> Para definir las reglas de consistencia entre el   diagrama de casos de uso y el diagrama de clases   UML, se debe definir tambi&eacute;n el alcance del problema   particular, que es tratado bajo las siguientes   premisas:</P>     <P> &#8226;    Cada clase se distingue por su nombre, un   conjunto de atributos o propiedades y un conjunto  de operaciones ofrecidas por la clase.</P>     <P>&#8226;    El modelo de casos de uso consta de actores que   representan los roles que los diferentes usuarios   pueden desempe&ntilde;ar, y los casos de uso que representan   lo que deben estar en capacidad de   hacer los usuarios con el software por construir.   Otro t&eacute;rmino importante son los escenarios,   que corresponden a secuencias espec&iacute;ficas de   acciones e interacciones entre los actores y el   sistema; los escenarios, sin embargo, no ser&aacute;n   tenidos en cuenta para esta propuesta, debido   a que son una especificaci&oacute;n no formal de los   pasos llevados a cabo en cada caso de uso y   tendr&iacute;an que ser tratados por procesamiento   de lenguaje natural, por lo que est&aacute;n fuera del   alcance de este art&iacute;culo, en el cual se busca   proponer una especificaci&oacute;n formal.</P>     <P> &#8226;    El modelo de interfaces especifica c&oacute;mo interact&uacute;a   el software por construir con actores   externos al ejecutar los casos de uso; en particular,   en los sistemas de informaci&oacute;n ricos en   interacci&oacute;n con el usuario, especifica c&oacute;mo se   visualizar&aacute;n las interfaces gr&aacute;ficas de usuario y   qu&eacute; funcionalidad ofrecer&aacute; cada una de ellas   (Weitzenfeld, 2005). Para el trabajo propuesto,   una interfaz com&uacute;n consta de un t&iacute;tulo, etiquetas,   campos de texto, campos de selecci&oacute;n,   uno o varios botones de enviar (submit) y un   bot&oacute;n de cancelar o salir. Se suponen interfaces   sencillas que s&oacute;lo involucran elementos   de una clase.</P>     <P> Para la elaboraci&oacute;n de este trabajo, se toma en   consideraci&oacute;n la relaci&oacute;n existente entre el diagrama   de clases (OMG, 2007), el diagrama de casos   de uso (Jacobson, 1992) y las interfaces gr&aacute;ficas   de usuario (Weitzenfeld, 2005). Adem&aacute;s, se considera   el an&aacute;lisis heur&iacute;stico que se puede obtener   a partir de la experiencia por parte de analistas   de software y, tomando como base la estructura   de los metamodelos de esos diagramas (OMG,   2007) se proponen 8 reglas de consistencia, que   se presentan seguidamente.</P>     <P><B>Regla 1 </B>  </P>     ]]></body>
<body><![CDATA[<P>El nombre de un caso de uso debe incluir un   verbo y un sustantivo. El sustantivo debe corresponder   al nombre de una clase del diagrama de   clases. En otras palabras, para todo caso de uso   U del diagrama de casos de uso, debe existir una   clase C perteneciente al diagrama de clases, tal que   U.name contenga a C.name. La expresi&oacute;n gr&aacute;fica de esta regla se puede apreciar en la <A HREF="#fig6">figura 6</A>.</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig06.JPG" WIDTH="557" HEIGHT="262"><A NAME="fig6"></A></P>     <P><B>Figura 6.</B> Descripci&oacute;n gr&aacute;fica de la regla 1.</P>     <P> La expresi&oacute;n en OCL que representa esta regla es la siguiente:</P>     <P ALIGN="LEFT"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig16.JPG" WIDTH="454" HEIGHT="70"></P>     <P><B>Regla 2</B></P>     <P> El nombre de un caso de uso debe incluir un   verbo y un sustantivo. El verbo debe corresponder   a una operaci&oacute;n de una clase del diagrama de clases   que se identific&oacute; en la regla 1. En otras palabras,   para todo caso de uso U debe existir una clase C   que contenga una operaci&oacute;n Operationx tal que   U.name contenga a C.Operationx. La expresi&oacute;n gr&aacute;fica de esta regla se puede apreciar en la <A HREF="#fig7">figura 7</A>.</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig07.JPG" WIDTH="558" HEIGHT="265"><A NAME="fig7"></A></P>     <P><B>Figura 7.</B> Descripci&oacute;n gr&aacute;fica de la regla 2.</P>     <P> La expresi&oacute;n en OCL que representa esta regla es la siguiente:</P>     ]]></body>
<body><![CDATA[<P ALIGN="LEFT"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig17.JPG" WIDTH="455" HEIGHT="71"></P>     <P><B>Regla 3</B></P>     <P> En el t&iacute;tulo de cada interfaz gr&aacute;fica de usuario   debe ir un verbo y un sustantivo. El sustantivo   debe corresponder al nombre de una clase que se   encuentre en el diagrama de clases. Dicho de otra   forma, para toda interfaz de usuario I debe existir   una clase C tal que I.key = 1 (t&iacute;tulo) y que I.value   contenga a C.name. La expresi&oacute;n gr&aacute;fica de esta   regla se puede apreciar en la <A HREF="#fig8">figura 8</A>.</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig08.JPG" WIDTH="532" HEIGHT="351"><A NAME="fig8"></A></P>     <P><B>Figura 8. </B>Descripci&oacute;n gr&aacute;fica de la regla 3.</P>     <P> La expresi&oacute;n en OCL que representa esta regla es la siguiente:</P>     <P ALIGN="LEFT"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig18.JPG" WIDTH="484" HEIGHT="75"></P>     <P ALIGN="LEFT"><B>Regla 4</B></P>     <P ALIGN="LEFT"> Una interfaz gr&aacute;fica de usuario tiene en su   t&iacute;tulo un verbo y un sustantivo. Dicho verbo   debe corresponder a una operaci&oacute;n de la clase   identificada en la regla 4; dicho de otra forma,   para toda interfaz de usuario I debe existir una   clase C que contenga una operaci&oacute;n Operationx   en la que I.key=1 (t&iacute;tulo) y que I.value contenga a   C.Operationx .La expresi&oacute;n gr&aacute;fica de esta regla   se puede apreciar en la <A HREF="#fig9">Figura 9</A>.</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig09.JPG" WIDTH="532" HEIGHT="346"><A NAME="fig9"></A></P>     ]]></body>
<body><![CDATA[<P ALIGN="LEFT"><B>Figura 9.</B> Descripci&oacute;n gr&aacute;fica de la regla 4.</P>     <P ALIGN="LEFT"> La expresi&oacute;n en OCL que representa esta regla es la siguiente:</P>     <P ALIGN="LEFT"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig19.JPG" WIDTH="484" HEIGHT="74"></P>     <P ALIGN="LEFT"><B>Regla 5</B></P>     <P ALIGN="LEFT"> En una interfaz gr&aacute;fica de usuario debe existir   un formulario con un bot&oacute;n para aplicar cambios o   enviar informaci&oacute;n a otro formulario. Dicho bot&oacute;n   tiene en su etiqueta un verbo. Dicho verbo debe   corresponder a una operaci&oacute;n de una clase. Dicho   de otra manera, para toda interfaz de usuario I en   la que exista un bot&oacute;n de enviar (submit) B debe   existir una clase C que contenga una operaci&oacute;n   Operationx tal que I.key=3 (button) y I.value (label)   contenga a C.Operationx. La expresi&oacute;n gr&aacute;fica de   esta regla se puede apreciar en la <A HREF="#fig10">figura 10</A>.</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig10.JPG" WIDTH="532" HEIGHT="343"><A NAME="fig10"></A></P>     <P ALIGN="LEFT"><B>Figura 10.</B> Descripci&oacute;n gr&aacute;fica de la regla 5.</P>     <P ALIGN="LEFT"> La expresi&oacute;n en OCL que representa esta regla es la siguiente:</P>     <P ALIGN="LEFT"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig20.JPG" WIDTH="481" HEIGHT="74"></P>     <P ALIGN="LEFT"><B>Regla 6</B></P>     ]]></body>
<body><![CDATA[<P ALIGN="LEFT"> Si una interfaz gr&aacute;fica de usuario posee campos   de texto para que el usuario ingrese informaci&oacute;n,   estos campos deben ir precedidos por sus   respectivas etiquetas, las cuales informan acerca   de lo que se debe digitar en los campos. Dichas   etiquetas deben tener sus atributos correspondientes   en una clase. Dicho de otra forma, para toda   interfaz de usuario I en la que existan etiquetas   (labels) E1, E2, E3,&#8230;,Eq con sus respectivos   campos de texto T1,T2,T3,&#8230;,To y/o campos de   selecci&oacute;n S1,S2,S3,&#8230;,Sp debe existir una clase C   con atributos A1, A2, A3,&#8230;,An, que contengan a   las etiquetas Ex. La expresi&oacute;n gr&aacute;fica de esta regla   se puede apreciar en la <A HREF="#fig11">figura 11</A>.</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig11.JPG" WIDTH="532" HEIGHT="343"><A NAME="fig11"></A></P>     <P ALIGN="LEFT"><B>Figura 11</B>. Descripci&oacute;n gr&aacute;fica de la regla 6.</P>     <P ALIGN="LEFT"> La expresi&oacute;n en OCL que representa esta regla es la siguiente:</P>     <P ALIGN="LEFT"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig21.JPG" WIDTH="559" HEIGHT="62"></P>     <P ALIGN="LEFT"><B>Regla 7</B>  </P>     <P ALIGN="LEFT">En el t&iacute;tulo de cada interfaz gr&aacute;fica de usuario   debe ir un verbo y un sustantivo. Dicho verbo y sustantivo   deben corresponder con el nombre de un   caso de uso, los cuales tambi&eacute;n est&aacute;n compuestos   de un nombre y un sustantivo. En otras palabras,   para toda interfaz de usuario I debe existir un caso   de uso U en el que I.key=1(t&iacute;tulo) y que I.value =  U.name. La expresi&oacute;n gr&aacute;fica   de esta regla se puede apreciar en la <A HREF="#fig12">Figura 12</A>.</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig12.JPG" WIDTH="514" HEIGHT="408"><A NAME="fig12"></A></P>     <P ALIGN="LEFT"><B>Figura 12.</B> Descripci&oacute;n gr&aacute;fica de la regla 7.</P>     <P ALIGN="LEFT"> La expresi&oacute;n en OCL que representa esta regla es la siguiente:</P>     ]]></body>
<body><![CDATA[<P ALIGN="LEFT"> <IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig22.JPG" WIDTH="486" HEIGHT="78"></P>     <P ALIGN="LEFT"><B>Regla 8</B></P>     <P ALIGN="LEFT"> En una interfaz gr&aacute;fica de usuario debe existir   un formulario con un bot&oacute;n para aplicar cambios   o enviar informaci&oacute;n a otro formulario. Dicho   bot&oacute;n tiene en su etiqueta un verbo. Dicho verbo   debe corresponder a un verbo de un nombre de   un caso de uso. Dicho de otra forma, para toda   interfaz de usuario I en la que exista un bot&oacute;n de   enviar (submit) B (I.key=3) debe existir un caso   de uso U tal que U.name contenga a I.value. La   expresi&oacute;n gr&aacute;fica de esta regla se puede apreciar   en la <A HREF="#fig13">Figura 13</A>.</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig13.JPG" WIDTH="517" HEIGHT="426"><A NAME="fig13"></A></P>     <P ALIGN="LEFT"><B>Figura 13.</B> Descripci&oacute;n gr&aacute;fica de la regla 8.</P>     <P ALIGN="LEFT"> La expresi&oacute;n en OCL que representa esta regla es la siguiente:</P>     <P ALIGN="CENTER"><IMG SRC="/img/revistas/rium/v7n12/v7n12a10fig23.JPG" WIDTH="559" HEIGHT="59"> </P>     <P ALIGN="LEFT">Para la validaci&oacute;n de las reglas mencionadas  anteriormente, se hizo uso de dos herramientas   que poseen la utilidad de exportar los contenidos   de sus modelos en formato XMI (OMG, 2007):   ArgoUML&reg; y Visio&reg;. Por estar ArgoUML&reg; enfocado   al manejo de diagramas UML, se trabajaron   en esta herramienta los diagramas de casos de uso   y de clases; en Visio&reg; se trabajaron las Interfaces Gr&aacute;ficas de Usuario (GUI).</P>     <P ALIGN="LEFT"> Despu&eacute;s de hacer los respectivos modelos   e interfaces, estos se exportan en formato XMI   y luego se analizan con una herramienta que se   desarroll&oacute; para efectos de este trabajo en el lenguaje   de programaci&oacute;n Java&reg;. Esta herramienta   hace uso del lenguaje Xquery por medio de una   aplicaci&oacute;n especializada denominada Saxonb para   la validaci&oacute;n de las reglas. En este programa se   eval&uacute;an las diferentes reglas con los tres modelos   y para cada regla sale un informe que indica si la   regla se cumple (estado correcto), si no se cumple   (estado de error) o si posiblemente hay un error de   sin&oacute;nimos por lo que se presenta una advertencia   (warning).</P>     <P ALIGN="LEFT"> Con el fin de tener la posibilidad de mostrarle   al usuario que posiblemente algunas de las inconsistencias   encontradas se debieron al uso de sin&oacute;nimos   por parte del analista y que no son errores   como el caso de que faltara una clase o un caso de   uso, se da la posibilidad de mostrar advertencias   donde se indique que el posible error puede ser   debido a uso de palabras similares. Se implement&oacute;  una lista de los sustantivos y verbos m&aacute;s utilizados   en el &aacute;mbito del &aacute;rea de software, teniendo como   base los entregables de varios semestres presentados   por los estudiantes en la asignatura Ingenier&iacute;a de   Software de la Universidad Nacional.</P>     ]]></body>
<body><![CDATA[<P ALIGN="LEFT">&nbsp;</P>     <P ALIGN="LEFT"> <B><FONT SIZE="3">4. CONCLUSIONES</FONT></B></P>     <P ALIGN="LEFT"> Los resultados obtenidos en las diferentes &aacute;reas   de trabajo de la investigaci&oacute;n muestran un n&uacute;mero   considerable de inconsistencias que pueden ser encontradas   con el m&eacute;todo propuesto, debido que al   incluir las interfaces gr&aacute;ficas de usuario se tiene un   apoyo extra en la verificaci&oacute;n de correspondencia   de sus elementos con los atributos de las clases,   garantizando as&iacute; una mayor consistencia entre los   modelos de casos de uso y de diagramas de clases   de UML.</P>     <P ALIGN="LEFT"> Por otro lado, al presentar una especificaci&oacute;n   formal de reglas de consistencia entre el diagrama   de casos de uso y diagrama de clases en OCL, se   formaliza la validaci&oacute;n de los aspectos necesarios   para garantizar que no exista ambig&uuml;edad entre   estos modelos y que no se tenga diagramas con   objetos aislados. Al integrar las interfaces de usuario   con estos dos modelos utilizando archivos en   formato XMI, se hace al m&eacute;todo independiente   de la plataforma y que sea regido por el est&aacute;ndar,   asegurando as&iacute; interoperabilidad y modularizaci&oacute;n   para facilitar el intercambio de informaci&oacute;n.</P>     <P ALIGN="LEFT"> A diferencia de otros trabajos, en este paper   se plante&oacute; un conjunto de reglas de consistencia   intermodelos, espec&iacute;ficamente entre el diagrama   de casos de uso y el diagrama de clases. Adem&aacute;s   de definir dicho conjunto de reglas, se implement&oacute;  un m&eacute;todo que permite validar dichas reglas y   que puede ser utilizado para revisar otras reglas,   brindando la posibilidad de extender el m&eacute;todo   a otros modelos.</P>     <P ALIGN="LEFT"> La integraci&oacute;n del lenguaje de especificaci&oacute;n   de objetos, OCL, en el m&eacute;todo propuesto es un   aspecto a tener en cuenta debido a que no se   encontraron evidencias de que alg&uacute;n autor hayapresentado reglas de consistencia   entre el modelo de clases y el modelo de casos de uso de UML   de manera formal, aportando as&iacute; un m&eacute;todo de   validaci&oacute;n de reglas de consistencia sin ambig&uuml;edades   y bien formulado. Esto implica una posible   integraci&oacute;n con las reglas de buena formaci&oacute;n en   la especificaci&oacute;n de UML, definiendo as&iacute; una posibilidad   de integrarse en el est&aacute;ndar.</P>     <P ALIGN="LEFT"> Al formalizar las reglas se elimina la posibilidad   de darle varias interpretaciones y se descarta el manejo de lenguaje natural,   estableciendo as&iacute; un   mecanismo consistente y concreto para la verificaci&oacute;n   de consistencia entre dichos modelos.  </P>     <P ALIGN="LEFT">Ninguna investigaci&oacute;n que trabaja la consistencia   entre el diagrama de clases y el modelo de   casos de uso de UML ha integrado las interfaces   de usuario en sus reglas de consistencia, dejando   as&iacute; un gran vac&iacute;o en los prototipos de usuario   para los casos de uso. Al integrar las interfaces de   usuario en el m&eacute;todo propuesto, se logr&oacute; validar   la correspondencia de los atributos de las clases   con los casos de uso, haci&eacute;ndolo formalmente y   pudiendo as&iacute; integrar de una manera completa las   reglas para la validaci&oacute;n de la consistencia entre los   modelos mencionados previamente. Tambi&eacute;n se   compararon los elementos de las interfaces gr&aacute;ficas   de usuario con los casos de uso para garantizar   una correspondencia en el funcionamiento del   sistema tanto en los prototipos como en los casos   de uso iniciales, dejando la posibilidad de encontrar   situaciones espec&iacute;ficas sin modelar o sin su   correspondiente prototipo.</P>     <P ALIGN="LEFT"> Como trabajo futuro se busca extender el   m&eacute;todo a otras parejas de modelos, con el fin de   que exista m&aacute;s consistencia en los diagramas UML   que genere el analista, garantizando as&iacute; un buen   producto de software. Se piensa inicialmente integrar   el m&eacute;todo con el diagrama de actividades y el   diagrama de secuencias, debido a su gran relaci&oacute;n   y afinidad con los diagramas presentados.</P>     <P ALIGN="LEFT">&nbsp;</P>     ]]></body>
<body><![CDATA[<P ALIGN="LEFT"><B><FONT SIZE="3">REFERENCIAS</FONT></B></P>     <!-- ref --><P ALIGN="LEFT"> 1. BOOCH G., JACOBSON I., and RUMBAUGH J., 1997. 'Object   Constraint Language Specification', UML Documentation Set Version 1.1, Rational Software Cooperation, September.&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=S1692-3324200800010001000001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">2. BUHR, R.J.A., 1998 Use Case Maps as Architectural Entities   for Complex Systems. IEEE Transactions on Software Engineering 24, 12 (Dec. 1998). 1131-1155.&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=S1692-3324200800010001000002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">3.  BUSTOS, G., 2002. Integraci&oacute;n Informal De Modelos   En Uml. Publicado en la Revista Ingenerare N<sup>o</sup> 14, Facultad de   Ingenier&iacute;a, Pontificia Universidad Cat&oacute;lica de Valpara&iacute;so, Valpara&iacute;so (Chile), Diciembre 2002.&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=S1692-3324200800010001000003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">4.  CHIOREAN, D., PASCA, M., CARCU, A., BOTIZA, C., and MOLDOVAN,   S., 2003. Ensuring UML models consistency   using the OCL Environment. Sixth International Conference on the Unified Modelling   Language - the Language and its applications, San Francisco.&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=S1692-3324200800010001000004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">5.- EGYED, A., 2001. Scalable Consistency Checking between Diagrams &#8211; The   ViewIntegra Approach. En: 16th IEEE International Conference on Automated Software Engineering.&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=S1692-3324200800010001000005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">6.  GLINZ, M., 2000. A lightweight approach to consistency of   Scenarios and Class Models. En: Fourth International Conference on Requirements Engineering, Illinois (USA), June 10-23.&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=S1692-3324200800010001000006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">7.   GRUNDY, J., HOSKING, J., MUGRIDGE, W.B., 1998 Inconsistency   Management for Multiple-View Software Development   Environments. IEEE Transactions on Software Engineering 24, 11 (Nov. 1998). 960-981.&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=S1692-3324200800010001000007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">8.  GRYCE, C., FINKELSTEIN, A. and NENTWICH, C., 2002. Lightweight   Checking for UML Based Software Development.   En: Workshop on Consistency Problems in UML-based Software Development., Dresden, Germany.&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=S1692-3324200800010001000008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">9.  JACKSON M., 1995. 'Software Requirements &amp; Specifications:   a lexicon of practice, principles and prejudices', Addison Wesley, Great Britain.&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=S1692-3324200800010001000009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">10. JACOBSON, I., 1992 Object-Oriented Software Engineering:   A Use Case Driven Approach. Addison-Wesley,&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=S1692-3324200800010001000010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">11.  JACOBSON, I., BOOCH, I. and RUMBAUGH J. G., 1999. The Unified   Software Development Process, Addison Wesley.&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=S1692-3324200800010001000011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">12. K&Ouml;STERS, G., PAGEL, B.-U., WINTER, M., 1997 Coupling   Use Cases and Class Models. En: BCS FACS/EROS Workshop on Making Object-oriented Methods more Rigorous. London.&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=S1692-3324200800010001000012&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">13.  LIU, D., SUBRAMANIAM, K., FAR, B.H., EBERLEIN, A., 2003.   Automating transition from use-cases to class model.   Canadian Conference on Electrical and Computer Engineering. IEEE CCECE 2003.   Pp. 831-834 vol.2   Meta Object Facility (MOF) Specification. OMG Document: formal/2002-04-03,   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=000166&pid=S1692-3324200800010001000013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT"> 14. OCL. Object Constraint Language Specification. Disponible   en Web en: <A HREF="http://www.omg.org/technology/documents/formal/ocl.htm" TARGET="_blank">http://www.omg.org/technology/documents/formal/   ocl.htm</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=S1692-3324200800010001000014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">15.  OMG &#8211; Object Management Group, 2007. Disponible v&iacute;a   Web en <A HREF="http://www.omg.org/" TARGET="_blank">http://www.omg.org</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=S1692-3324200800010001000015&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">16.  SUNETNANTA, T. y FINKELSTEIN, A., 2003. Automated Consistency   Checking for Multiperspective Software Specifications.   Proceedings of the 26th Australasian computer science conference, Volume 16,   Pp. 291-300.   Unified Modeling Language: Superestructure versi&oacute;n 2.0. OMG Final Adopted   Specification, 2002.&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=S1692-3324200800010001000016&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">17.  W3C - World Wide Web Consortium., 2007. Disponible via web   en: <A HREF="http://www.w3.org/" TARGET="_blank">http://www.w3.org/</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=000170&pid=S1692-3324200800010001000017&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">18.  WEITZENFELD, A., 2005. Ingenier&iacute;a de Software orientada   a objetos con Uml, Java e Internet. Thomson editores.&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=S1692-3324200800010001000018&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT"> 19. XMI &#8211; XML Metadata Interchanger. Disponible v&iacute;a   Web en <A HREF="http://www.omg.org/technology/xml/" TARGET="_blank">http://www.omg.org/technology/xml/</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=000172&pid=S1692-3324200800010001000019&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">20.  XML - Extensible Markup Language. Disponible v&iacute;a   web en <A HREF="http://www.w3.org/XML/" TARGET="_blank">http://www.w3.org/XML/</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=000173&pid=S1692-3324200800010001000020&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><P ALIGN="LEFT">21.  ZOWGHI, D. and GERVASI, V, 2002. The Three Cs of requirements:   consistency, completeness, and correctness. En:   International Workshop on Requirements Engineering: Foundations for Software     Quality, Essen, Germany: Essener   Informatik Beitiage, 2002, pp. 155-164.&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=S1692-3324200800010001000021&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><P ALIGN="LEFT">&nbsp;</P>     <P> <B>Recibido:</B> 23/03/2007    <BR>     <B>Aceptado:</B> 17/03/2008</P> </FONT>      ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[BOOCH]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[JACOBSON]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
<name>
<surname><![CDATA[RUMBAUGH]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Object Constraint Language Specification]]></article-title>
<collab>Rational Software Cooperation</collab>
<source><![CDATA[UML Documentation Set Version 1.1]]></source>
<year>1997</year>
<month>Se</month>
<day>pt</day>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[BUHR]]></surname>
<given-names><![CDATA[R.J.A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Use Case Maps as Architectural Entities for Complex Systems]]></article-title>
<source><![CDATA[IEEE Transactions on Software Engineering]]></source>
<year>1998</year>
<month>De</month>
<day>c.</day>
<volume>24</volume>
<numero>12</numero>
<issue>12</issue>
<page-range>1131-1155</page-range></nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[BUSTOS]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Integración Informal De Modelos En Uml]]></article-title>
<source><![CDATA[Revista Ingenerare]]></source>
<year>2002</year>
<month>Di</month>
<day>ci</day>
<numero>14</numero>
<issue>14</issue>
<publisher-loc><![CDATA[Valparaíso ]]></publisher-loc>
<publisher-name><![CDATA[Facultad de Ingeniería, Pontificia Universidad Católica de Valparaíso]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[CHIOREAN]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[PASCA]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[CARCU]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[BOTIZA]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[MOLDOVAN]]></surname>
<given-names><![CDATA[S]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Ensuring UML models consistency using the OCL Environment]]></article-title>
<source><![CDATA[]]></source>
<year>2003</year>
<conf-name><![CDATA[Sixth International Conference on the Unified Modelling Language - the Language and its applications]]></conf-name>
<conf-loc>San Francisco </conf-loc>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[EGYED]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Scalable Consistency Checking between Diagrams: The ViewIntegra Approach]]></article-title>
<source><![CDATA[]]></source>
<year>2001</year>
<conf-name><![CDATA[16 IEEE International Conference on Automated Software Engineering]]></conf-name>
<conf-loc> </conf-loc>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[GLINZ]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A lightweight approach to consistency of Scenarios and Class Models]]></article-title>
<source><![CDATA[]]></source>
<year>2000</year>
<conf-name><![CDATA[Fourth International Conference on Requirements Engineering]]></conf-name>
<conf-date>June 10-23</conf-date>
<conf-loc>Illinois Illinois</conf-loc>
</nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[GRUNDY]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[HOSKING]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[MUGRIDGE]]></surname>
<given-names><![CDATA[W.B]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Inconsistency Management for Multiple: View Software Development Environments]]></article-title>
<source><![CDATA[IEEE Transactions on Software Engineering]]></source>
<year>1998</year>
<month>No</month>
<day>v.</day>
<volume>24</volume>
<numero>11</numero>
<issue>11</issue>
<page-range>960-981</page-range></nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[GRYCE]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
<name>
<surname><![CDATA[FINKELSTEIN]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[NENTWICH]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Lightweight Checking for UML Based Software Development]]></article-title>
<source><![CDATA[Workshop on Consistency Problems in UML-based Software Development]]></source>
<year>2002</year>
<publisher-loc><![CDATA[Dresden ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[JACKSON]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[Software Requirements & Specifications: a lexicon of practice, principles and prejudices]]></source>
<year>1995</year>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[JACOBSON]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
</person-group>
<source><![CDATA[Object-Oriented Software Engineering: A Use Case Driven Approach]]></source>
<year>1992</year>
<publisher-name><![CDATA[Addison-Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[JACOBSON]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
<name>
<surname><![CDATA[BOOCH]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
<name>
<surname><![CDATA[RUMBAUGH]]></surname>
<given-names><![CDATA[J. G]]></given-names>
</name>
</person-group>
<source><![CDATA[The Unified Software Development Process]]></source>
<year>1999</year>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[KÖSTERS]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[PAGEL]]></surname>
<given-names><![CDATA[B.-U]]></given-names>
</name>
<name>
<surname><![CDATA[WINTER]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Coupling Use Cases and Class Models]]></article-title>
<source><![CDATA[BCS FACS/EROS Workshop on Making Object-oriented Methods more Rigorous]]></source>
<year>1997</year>
<publisher-loc><![CDATA[London ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[LIU]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[SUBRAMANIAM]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[FAR]]></surname>
<given-names><![CDATA[B.H]]></given-names>
</name>
<name>
<surname><![CDATA[EBERLEIN]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Automating transition from use-cases to class model]]></article-title>
<collab>OMG</collab>
<source><![CDATA[Meta Object Facility (MOF) Specification]]></source>
<year>2003</year>
<volume>2</volume>
<page-range>831-834</page-range></nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="">
<collab>OCL</collab>
<source><![CDATA[Object Constraint Language Specification]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="">
<collab>OMG</collab>
<source><![CDATA[Object Management Group]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[SUNETNANTA]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[FINKELSTEIN]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Automated Consistency Checking for Multiperspective Software Specifications]]></article-title>
<source><![CDATA[Unified Modeling Language: Superestructure versión 2.0. OMG Final Adopted Specification]]></source>
<year>2003</year>
<month>20</month>
<day>02</day>
<volume>16</volume>
<conf-name><![CDATA[26 Australasian computer science conference]]></conf-name>
<conf-loc> </conf-loc>
<page-range>291-300</page-range></nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="">
<collab>W3C</collab>
<source><![CDATA[World Wide Web Consortium]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[WEITZENFELD]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Ingeniería de Software orientada a objetos con Uml, Java e Internet]]></source>
<year>2005</year>
<publisher-name><![CDATA[Thomson editores]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="">
<source><![CDATA[XMI - XML Metadata Interchanger]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B20">
<label>20</label><nlm-citation citation-type="">
<source><![CDATA[XML - Extensible Markup Language]]></source>
<year></year>
</nlm-citation>
</ref>
<ref id="B21">
<label>21</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[ZOWGHI]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[GERVASI]]></surname>
<given-names><![CDATA[V]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[The Three Cs of requirements: consistency, completeness, and correctness]]></article-title>
<source><![CDATA[International Workshop on Requirements Engineering: Foundations for Software Quality]]></source>
<year>2002</year>
<month>20</month>
<day>02</day>
<page-range>155-164</page-range><publisher-loc><![CDATA[Essen ]]></publisher-loc>
<publisher-name><![CDATA[Essener Informatik Beitiage]]></publisher-name>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
