<?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>1405-5546</journal-id>
<journal-title><![CDATA[Computación y Sistemas]]></journal-title>
<abbrev-journal-title><![CDATA[Comp. y Sist.]]></abbrev-journal-title>
<issn>1405-5546</issn>
<publisher>
<publisher-name><![CDATA[Instituto Politécnico Nacional, Centro de Investigación en Computación]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1405-55462010000100004</article-id>
<title-group>
<article-title xml:lang="en"><![CDATA[Run-Time Assertion Checking with Énfasis]]></article-title>
<article-title xml:lang="es"><![CDATA[Verificación de Aseveraciones a Tiempo de Ejecución con Énfasis]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Olmedo Aguirre]]></surname>
<given-names><![CDATA[José Oscar]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Juárez Martínez]]></surname>
<given-names><![CDATA[Ulises]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Instituto Politécnico Nacional Centro de Investigación y de Estudios Avanzados Departamento de Ingeniería Eléctrica]]></institution>
<addr-line><![CDATA[D. F. ]]></addr-line>
<country>México</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>03</month>
<year>2010</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>03</month>
<year>2010</year>
</pub-date>
<volume>13</volume>
<numero>3</numero>
<fpage>273</fpage>
<lpage>294</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.mx/scielo.php?script=sci_arttext&amp;pid=S1405-55462010000100004&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.mx/scielo.php?script=sci_abstract&amp;pid=S1405-55462010000100004&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.mx/scielo.php?script=sci_pdf&amp;pid=S1405-55462010000100004&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="en"><p><![CDATA[Local variables are fundamental to describe and implement computer algorithms and to specify some of their properties such as correctness, termination and performance. In this paper, we address the run-time assertion checking problem involving local variables in Java programs using Énfasis. Énfasis is a novel Aspect-Oriented Programming (AOP) language that introduces a join point model for crosscutting on local variables and path expressions to select sets of join points. The contribution of this work consists on showing that run-time assertion checking is more effective in Énfasis by its greater expressive power than in other approaches such as AspectJ and the interface specification language JML. The greater expressiveness of Énfasis assertions arises from the finer granularity of crosscutting, defined at the expression and statement level in contrast to the coarser granularity defined at the method invocation level of AspectJ. Énfasis approach characterizes not only by its non-invasiveness at the source code level, modularity, uniformity and generality are also improved in handling orthogonal crosscutting concerns.]]></p></abstract>
<abstract abstract-type="short" xml:lang="es"><p><![CDATA[Las variables locales son fundamentales para describir e implementar algoritmos y para especificar algunas de sus propiedades tales como correctitud, terminación y desempeño. En este artículo se discute la verificación de aseveraciones a tiempo de ejecución en programas Java utilizando Énfasis. Énfasis es un lenguaje orientado a aspectos que incorpora un modelo de puntos de unión para aplicar corte sobre variables locales y expresiones de rutas para seleccionar conjuntos de puntos de unión. La contribución de este trabajo es mostrar que la verificación de aseveraciones a tiempo de ejecución es más efectiva en Énfasis por su gran poder expresivo respecto a otros enfoques como AspectJ y JML. La expresividad de las aseveraciones en Énfasis se debe a la granularidad fina de los cortes que se definen a nivel de expresiones y sentencias, a diferencia de otras granularidades más gruesas definidas a nivel de invocaciones de métodos como en AspectJ. El enfoque de Énfasis no solo destaca por su no invasividad del código fuente, modularidad, uniformidad y generalidad, sino también por el manejo ortogonal de incumbencias de corte.]]></p></abstract>
<kwd-group>
<kwd lng="en"><![CDATA[Program assertion]]></kwd>
<kwd lng="en"><![CDATA[formal grammars]]></kwd>
<kwd lng="en"><![CDATA[local variable crosscutting]]></kwd>
<kwd lng="en"><![CDATA[local variable pointcut]]></kwd>
<kwd lng="en"><![CDATA[aspect-oriented programming]]></kwd>
<kwd lng="es"><![CDATA[Aserciones de programas]]></kwd>
<kwd lng="es"><![CDATA[gramáticas formales]]></kwd>
<kwd lng="es"><![CDATA[corte en variables locales]]></kwd>
<kwd lng="es"><![CDATA[puntos de corte en variables locales]]></kwd>
<kwd lng="es"><![CDATA[programación orientada a aspectos]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="justify"><font face="verdana" size="4">Art&iacute;culos</font></p>     <p align="center"><font face="verdana" size="2">&nbsp;</font></p>     <p align="center"><font face="verdana" size="4"><b>Run&#150;Time Assertion Checking with &Eacute;nfasis</b></font></p>     <p align="center"><font face="verdana" size="2">&nbsp;</font></p>     <p align="center"><font face="verdana" size="3"><b><i>Verificaci&oacute;n de Aseveraciones a Tiempo de Ejecuci&oacute;n con &Eacute;nfasis</i></b></font></p>     <p align="center"><font face="verdana" size="2">&nbsp;</font></p>     <p align="center"><font face="verdana" size="2"><b>Jos&eacute; Oscar Olmedo Aguirre<sup>*</sup> and Ulises Ju&aacute;rez Mart&iacute;nez<sup>**</sup></b></font></p>     <p align="justify"><font face="verdana" size="2">&nbsp;</font></p>     <p align="justify"><font face="verdana" size="2"><i>Department of Electrical Engineering, CINVESTAV &#150; IPN. M&eacute;xico 07360, D. F.</i><b><b><sup> *</sup></b></b><a href="mailto:oolmedo@cs.cinvestav.mx">oolmedo@cs.cinvestav.mx</a>,<b><b><sup> **</sup></b></b><a href="mailto:ujuarez@computacion.cs.cinvestav.mx">ujuarez@computacion.cs.cinvestav.mx</a></font></p>     <p align="justify"><font face="verdana" size="2">&nbsp;</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="verdana" size="2">Article received on July 31, 2008    <br>   Accepted on December 04, 2008</font></p>     <p align="justify"><font face="verdana" size="2">&nbsp;</font></p>     <p align="justify"><font face="verdana" size="2"><b>Abstract</b></font></p>     <p align="justify"><font face="verdana" size="2">Local variables are fundamental to describe and implement computer algorithms and to specify some of their properties such as correctness, termination and performance. In this paper, we address the run&#150;time assertion checking problem involving local variables in Java programs using &Eacute;nfasis. &Eacute;nfasis is a novel Aspect&#150;Oriented Programming (AOP) language that introduces a join point model for crosscutting on local variables and path expressions to select sets of join points. The contribution of this work consists on showing that run&#150;time assertion checking is more effective in &Eacute;nfasis by its greater expressive power than in other approaches such as AspectJ and the interface specification language JML. The greater expressiveness of &Eacute;nfasis assertions arises from the finer granularity of crosscutting, defined at the expression and statement level in contrast to the coarser granularity defined at the method invocation level of AspectJ. &Eacute;nfasis approach characterizes not only by its non&#150;invasiveness at the source code level, modularity, uniformity and generality are also improved in handling orthogonal crosscutting concerns.</font></p>     <p align="justify"><font face="verdana" size="2"><b>Keywords:</b> Program assertion, formal grammars, local variable crosscutting, local variable pointcut, aspect&#150;oriented programming.</font></p>     <p align="justify"><font face="verdana" size="2">&nbsp;</font></p>     <p align="justify"><font face="verdana" size="2"><b>Resumen</b></font></p>     <p align="justify"><font face="verdana" size="2">Las variables locales son fundamentales para describir e implementar algoritmos y para especificar algunas de sus propiedades tales como correctitud, terminaci&oacute;n y desempe&ntilde;o. En este art&iacute;culo se discute la verificaci&oacute;n de aseveraciones a tiempo de ejecuci&oacute;n en programas Java utilizando &Eacute;nfasis. &Eacute;nfasis es un lenguaje orientado a aspectos que incorpora un modelo de puntos de uni&oacute;n para aplicar corte sobre variables locales y expresiones de rutas para seleccionar conjuntos de puntos de uni&oacute;n. La contribuci&oacute;n de este trabajo es mostrar que la verificaci&oacute;n de aseveraciones a tiempo de ejecuci&oacute;n es m&aacute;s efectiva en &Eacute;nfasis por su gran poder expresivo respecto a otros enfoques como AspectJ y JML. La expresividad de las aseveraciones en &Eacute;nfasis se debe a la granularidad fina de los cortes que se definen a nivel de expresiones y sentencias, a diferencia de otras granularidades m&aacute;s gruesas definidas a nivel de invocaciones de m&eacute;todos como en AspectJ. El enfoque de &Eacute;nfasis no solo destaca por su no invasividad del c&oacute;digo fuente, modularidad, uniformidad y generalidad, sino tambi&eacute;n por el manejo ortogonal de incumbencias de corte.</font></p>     <p align="justify"><font face="verdana" size="2"><b>Palabras clave: </b>Aserciones de programas, gram&aacute;ticas formales, corte en variables locales, puntos de corte en variables locales, programaci&oacute;n orientada a aspectos.</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="verdana" size="2">&nbsp;</font></p>     <p align="justify"><font face="verdana" size="2"><a href="/pdf/cys/v13n3/v13n3a4.pdf" target="_blank">DESCARGAR ART&Iacute;CULO EN FORMATO PDF</a></font></p>     <p align="justify"><font face="verdana" size="2">&nbsp;</font></p>     <p align="justify"><font face="verdana" size="2"><b>References</b></font></p>     <!-- ref --><p align="justify"><font face="verdana" size="2">1. <b>Chiba, S. (2000). </b>Load&#150;time structural reflection in Java. <i>Object Oriented Programming ECOOP 2000. Lecture Notes in Computer Science, </i>1850, 313&#150;336.</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=2048914&pid=S1405-5546201000010000400001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">2. <b>Chiba, S. &amp; Nishizawa, M.  (2003). </b>An Easy&#150;to&#150;Use Toolkit for Efficient Java Bytecode Translators. <i>Generative Programming and Component Engineering GPCE'03. Lecture Notes in Computer Science, </i>2830, 364&#150;376.</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=2048915&pid=S1405-5546201000010000400002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">3. <b>Cilia, M., Haupt, M., Mezini, M. &amp; Buchmann, A. (2003). </b>The Convergence of AOP and Active Databases: Towards Reactive Middleware. <i>Second International Conference on Generative Programming and Component Engineering GPCE'03. Lecture Notes in Computer Science, </i>2830, 169&#150;188.</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=2048916&pid=S1405-5546201000010000400003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">4. <b>Eaddy, M. &amp; Aho, A. (2006). </b>Statement Annotations for Fine&#150;Grained Advising. <i>Workshop on Reflection, AOP and Meta&#150;Data for Software Evolution, </i>RAM&#150;SE'06 &#150; ECOOP'06, Nantes, France, 89&#150;99.</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=2048917&pid=S1405-5546201000010000400004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">5. <b>Floyd, R. W. (1967). </b>Assigning Meaning to Programs. In J. T. Schwartz (Ed.), <i>Symposium on Applied Mathematics, </i>New York, USA, 19, 19&#150;32.</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=2048918&pid=S1405-5546201000010000400005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">6. <b>Gosling, J., Joy, B., Steele, Jr. G. L. &amp; Bracha, G. (2005). </b><i>The Java(TM) Language Specification. 3<sup>rd</sup> ed. </i>New Jersey: Prentice Hall.</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=2048919&pid=S1405-5546201000010000400006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">7. <b>Harbulot, B. &amp; Gurd, J. R. A. (2006). </b>A Join Point for Loops in AspectJ. <i>Aspect&#150;Oriented Software Development AOSD '06, </i>Bonn, Germany, 63&#150;74.</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=2048920&pid=S1405-5546201000010000400007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">8. <b>Hilsdale, E. &amp; Hugunin, J. (2004). </b>Advice Weaving in AspectJ. <i>3rd International Conference on Aspect&#150;Oriented Software Development AOSD '04</i>, Lancaster, UK, 26&#150;35.</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=2048921&pid=S1405-5546201000010000400008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">9. <b>Hoare, C. A. R. (1969). </b>An Axiomatic Basis for Computer Programming. <i>Communications of the ACM</i>, 12(10), 576&#150;585.</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=2048922&pid=S1405-5546201000010000400009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">10. <b>Ju&aacute;rez&#150;Mart&iacute;nez, U. &amp; Olmedo&#150;Aguirre, J. O. (2008). </b>&Eacute;nfasis: A Model for Local Variable Crosscutting. <i>23rd Annual ACM Symposium on Applied Computing SAC 2008. </i>Cear&aacute;, Brazil, 261&#150;265.</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=2048923&pid=S1405-5546201000010000400010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">11. <b>Kellens, A., Gybels, K., Brichau, J. &amp; Merrs, K. (2006). </b>A Model&#150;driven Pointcut Language for more Robust Pointcuts. <i>Workshop on Software Engineering Properties of Languages and Aspect Technologies SPLAT'06, </i>Bonn, Germany, 57&#150;63.</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=2048924&pid=S1405-5546201000010000400011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">12. <b>Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J. &amp; Griswold, W. G. (2001). </b>An Overview of AspectJ. <i>European Conference on Object&#150;Oriented Programming. Lecture Notes in Computer Science</i>, 2072, 327&#150;353.</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=2048925&pid=S1405-5546201000010000400012&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">13. <b>Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. V., Loingtier, J. M. &amp; Irwin, J. (1997). </b>Aspect&#150;Oriented Programming, <i>ECOOP '97. Lecture Notes in Computer Science</i>, 1241, 220&#150;242.</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=2048926&pid=S1405-5546201000010000400013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">14. <b>Leavens, G. T., Baker, A. L. &amp; Ruby, C. (1999). </b>JML: A Notation for Detailed Design. In H. Kilov, B. Rumpe &amp; W. Harvey (Eds.), <i>Behavioral Specifications of Business and Systems </i>(175&#150;188). Massachusetts: Kluwer Academic Publishers.</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=2048927&pid=S1405-5546201000010000400014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">15. <b>Meyer, B. (1991). </b>Applying "Design by Contract". In D. Mandrioli &amp; B. Meyer (Eds.), <i>Advances in Object&#150;Oriented Software Engineering </i>(1&#150;50). New Jersey: Prentice Hall.</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=2048928&pid=S1405-5546201000010000400015&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">16. <b>Nicoara, A. &amp; Alonso, G. (2005). </b>Dynamic AOP with PROSE. <i>International Workshop on Adaptive and Self&#150;Managing Enterprise Applications ASIMEA '05</i>. Porto, Portugal, 125&#150;138.</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=2048929&pid=S1405-5546201000010000400016&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">17. <b>Reynolds, J. C. (1998). </b><i>Theories of Programming Languages. </i>Cambridge University Press.</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=2048930&pid=S1405-5546201000010000400017&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">18. <b>Rho, T., Kniesel, G. &amp; Appeltauer, M. (2006). </b>Fine&#150;Grained Generic Aspects. <i>Workshop on Reflection, AOP and Meta&#150;Data for Software Evolution, </i>RAM&#150;SE'06 &#150; ECOOP'06, Nantes, France, 29&#150;35.</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=2048931&pid=S1405-5546201000010000400018&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="verdana" size="2">19. <b>Usui, Y. &amp; Chiba, S. (2005). </b>Bugdel: An Aspect&#150;Oriented Debugging System. <i>12th Asia&#150;Pacific Software Engineering Conference APSEC '05</i>, Taipei, Taiwan, 59&#150;66.</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=2048932&pid=S1405-5546201000010000400019&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --> ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chiba]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<source><![CDATA[Load-time structural reflection in Java]]></source>
<year>2000</year>
<volume>1850</volume>
<conf-name><![CDATA[ Object Oriented Programming]]></conf-name>
<conf-date>2000</conf-date>
<conf-loc> </conf-loc>
<page-range>313-336</page-range></nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chiba]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Nishizawa]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<source><![CDATA[An Easy-to-Use Toolkit for Efficient Java Bytecode Translators]]></source>
<year>2003</year>
<volume>2830</volume>
<conf-name><![CDATA[ Generative Programming and Component Engineering]]></conf-name>
<conf-loc> </conf-loc>
<page-range>364-376</page-range></nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Cilia]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Haupt]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Mezini]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Buchmann]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<source><![CDATA[The Convergence of AOP and Active Databases: Towards Reactive Middleware]]></source>
<year>2003</year>
<volume>2830</volume>
<conf-name><![CDATA[Second International Conference on Generative Programming and Component Engineering]]></conf-name>
<conf-loc> </conf-loc>
<page-range>169-188</page-range></nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Eaddy]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Aho]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<source><![CDATA[Statement Annotations for Fine-Grained Advising]]></source>
<year>2006</year>
<conf-name><![CDATA[ Workshop on Reflection, AOP and Meta-Data for Software Evolution]]></conf-name>
<conf-loc>Nantes </conf-loc>
<page-range>89-99</page-range></nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Floyd]]></surname>
<given-names><![CDATA[R. W.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Assigning Meaning to Programs]]></article-title>
<person-group person-group-type="editor">
<name>
<surname><![CDATA[Schwartz]]></surname>
<given-names><![CDATA[J. T.]]></given-names>
</name>
</person-group>
<source><![CDATA[]]></source>
<year>1967</year>
<conf-name><![CDATA[ Symposium on Applied Mathematics]]></conf-name>
<conf-loc>New York </conf-loc>
<page-range>19-32</page-range></nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Gosling]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Joy]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[Steele]]></surname>
<given-names><![CDATA[G. L.]]></given-names>
</name>
<name>
<surname><![CDATA[Bracha]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[The Java(TM) Language Specification]]></source>
<year>2005</year>
<edition>3rd</edition>
<publisher-loc><![CDATA[New Jersey ]]></publisher-loc>
<publisher-name><![CDATA[Prentice Hall]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Harbulot]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[Gurd]]></surname>
<given-names><![CDATA[J. R. A.]]></given-names>
</name>
</person-group>
<source><![CDATA[A Join Point for Loops in AspectJ]]></source>
<year>2006</year>
<conf-name><![CDATA[ Aspect-Oriented Software Development]]></conf-name>
<conf-loc>Bonn </conf-loc>
<page-range>63-74</page-range></nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Hilsdale]]></surname>
<given-names><![CDATA[E.]]></given-names>
</name>
<name>
<surname><![CDATA[Hugunin]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Advice Weaving in AspectJ]]></source>
<year>2004</year>
<conf-name><![CDATA[3rd International Conference on Aspect-Oriented Software Development]]></conf-name>
<conf-loc>Lancaster </conf-loc>
<page-range>26-35</page-range></nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Hoare]]></surname>
<given-names><![CDATA[C. A. R.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[An Axiomatic Basis for Computer Programming]]></article-title>
<source><![CDATA[Communications of the ACM]]></source>
<year>1969</year>
<volume>12</volume>
<numero>10</numero>
<issue>10</issue>
<page-range>576-585</page-range></nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Juárez-Martínez]]></surname>
<given-names><![CDATA[U.]]></given-names>
</name>
<name>
<surname><![CDATA[Olmedo-Aguirre]]></surname>
<given-names><![CDATA[J. O.]]></given-names>
</name>
</person-group>
<source><![CDATA[Énfasis: A Model for Local Variable Crosscutting]]></source>
<year>2008</year>
<conf-name><![CDATA[23rd Annual ACM Symposium on Applied Computing]]></conf-name>
<conf-date>2008</conf-date>
<conf-loc>Ceará </conf-loc>
<page-range>261-265</page-range></nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kellens]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Gybels]]></surname>
<given-names><![CDATA[K.]]></given-names>
</name>
<name>
<surname><![CDATA[Brichau]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Merrs]]></surname>
<given-names><![CDATA[K.]]></given-names>
</name>
</person-group>
<source><![CDATA[A Model-driven Pointcut Language for more Robust Pointcuts]]></source>
<year>2006</year>
<conf-name><![CDATA[ Workshop on Software Engineering Properties of Languages and Aspect Technologies]]></conf-name>
<conf-loc>Bonn </conf-loc>
<page-range>57-63</page-range></nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kiczales]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Hilsdale]]></surname>
<given-names><![CDATA[E.]]></given-names>
</name>
<name>
<surname><![CDATA[Hugunin]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Kersten]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Palm]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Griswold]]></surname>
<given-names><![CDATA[W. G.]]></given-names>
</name>
</person-group>
<source><![CDATA[An Overview of AspectJ]]></source>
<year>2001</year>
<volume>2072</volume>
<conf-name><![CDATA[ European Conference on Object-Oriented Programming]]></conf-name>
<conf-loc> </conf-loc>
<page-range>327-353</page-range></nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kiczales]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Lamping]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Mendhekar]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Maeda]]></surname>
<given-names><![CDATA[C.]]></given-names>
</name>
<name>
<surname><![CDATA[Lopes]]></surname>
<given-names><![CDATA[C. V.]]></given-names>
</name>
<name>
<surname><![CDATA[Loingtier]]></surname>
<given-names><![CDATA[J. M.]]></given-names>
</name>
<name>
<surname><![CDATA[Irwin]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Aspect-Oriented Programming]]></source>
<year>1997</year>
<volume>1241</volume>
<conf-name><![CDATA[ ECOOP '97]]></conf-name>
<conf-loc> </conf-loc>
<page-range>220-242</page-range></nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Leavens]]></surname>
<given-names><![CDATA[G. T.]]></given-names>
</name>
<name>
<surname><![CDATA[Baker]]></surname>
<given-names><![CDATA[A. L.]]></given-names>
</name>
<name>
<surname><![CDATA[Ruby]]></surname>
<given-names><![CDATA[C.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[JML: A Notation for Detailed Design]]></article-title>
<person-group person-group-type="editor">
<name>
<surname><![CDATA[Kilov]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
<name>
<surname><![CDATA[Rumpe]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
<name>
<surname><![CDATA[Harvey]]></surname>
<given-names><![CDATA[W.]]></given-names>
</name>
</person-group>
<source><![CDATA[Behavioral Specifications of Business and Systems (175-188)]]></source>
<year>1999</year>
<publisher-loc><![CDATA[^eMassachusetts Massachusetts]]></publisher-loc>
<publisher-name><![CDATA[Kluwer Academic Publishers]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Meyer]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Applying "Design by Contract"]]></article-title>
<person-group person-group-type="editor">
<name>
<surname><![CDATA[Mandrioli]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
<name>
<surname><![CDATA[Meyer]]></surname>
<given-names><![CDATA[B.]]></given-names>
</name>
</person-group>
<source><![CDATA[Advances in Object-Oriented Software Engineering]]></source>
<year>1991</year>
<page-range>1-50</page-range><publisher-loc><![CDATA[New Jersey ]]></publisher-loc>
<publisher-name><![CDATA[Prentice Hall]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Nicoara]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Alonso]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Dynamic AOP with PROSE]]></source>
<year>2005</year>
<conf-name><![CDATA[ International Workshop on Adaptive and Self-Managing Enterprise Applications]]></conf-name>
<conf-loc>Porto </conf-loc>
<page-range>125-138</page-range></nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Reynolds]]></surname>
<given-names><![CDATA[J. C.]]></given-names>
</name>
</person-group>
<source><![CDATA[Theories of Programming Languages]]></source>
<year>1998</year>
<publisher-name><![CDATA[Cambridge University Press]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Rho]]></surname>
<given-names><![CDATA[T.]]></given-names>
</name>
<name>
<surname><![CDATA[Kniesel]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
<name>
<surname><![CDATA[Appeltauer]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
</person-group>
<source><![CDATA[Fine-Grained Generic Aspects]]></source>
<year>2006</year>
<conf-name><![CDATA[ Workshop on Reflection, AOP and Meta-Data for Software Evolution]]></conf-name>
<conf-loc>Nantes </conf-loc>
<page-range>29-35</page-range></nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Usui]]></surname>
<given-names><![CDATA[Y.]]></given-names>
</name>
<name>
<surname><![CDATA[Chiba]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<source><![CDATA[Bugdel: An Aspect-Oriented Debugging System]]></source>
<year>2005</year>
<conf-name><![CDATA[12th Asia-Pacific Software Engineering Conference]]></conf-name>
<conf-loc>Taipei </conf-loc>
<page-range>59-66</page-range></nlm-citation>
</ref>
</ref-list>
</back>
</article>
