SciELO - Scientific Electronic Library Online

 
vol.13 número3Algoritmo Evolutivo para el Problema de Ruteo de Vehículos con Ventanas de Tiempo Basado en una Técnica de Satisfacción de RestriccionesAnálisis de Series LRD con Parámetro de Hurst Variante en el Tiempo índice de autoresíndice de assuntospesquisa de artigos
Home Pagelista alfabética de periódicos  

Serviços Personalizados

Journal

Artigo

Indicadores

Links relacionados

  • Não possue artigos similaresSimilares em SciELO

Compartilhar


Computación y Sistemas

versão On-line ISSN 2007-9737versão impressa ISSN 1405-5546

Comp. y Sist. vol.13 no.3 Ciudad de México Jan./Mar. 2010

 

Artículos

 

Run–Time Assertion Checking with Énfasis

 

Verificación de Aseveraciones a Tiempo de Ejecución con Énfasis

 

José Oscar Olmedo Aguirre* and Ulises Juárez Martínez**

 

Department of Electrical Engineering, CINVESTAV – IPN. México 07360, D. F. *oolmedo@cs.cinvestav.mx, **ujuarez@computacion.cs.cinvestav.mx

 

Article received on July 31, 2008
Accepted on December 04, 2008

 

Abstract

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.

Keywords: Program assertion, formal grammars, local variable crosscutting, local variable pointcut, aspect–oriented programming.

 

Resumen

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.

Palabras clave: Aserciones de programas, gramáticas formales, corte en variables locales, puntos de corte en variables locales, programación orientada a aspectos.

 

DESCARGAR ARTÍCULO EN FORMATO PDF

 

References

1. Chiba, S. (2000). Load–time structural reflection in Java. Object Oriented Programming ECOOP 2000. Lecture Notes in Computer Science, 1850, 313–336.        [ Links ]

2. Chiba, S. & Nishizawa, M. (2003). An Easy–to–Use Toolkit for Efficient Java Bytecode Translators. Generative Programming and Component Engineering GPCE'03. Lecture Notes in Computer Science, 2830, 364–376.        [ Links ]

3. Cilia, M., Haupt, M., Mezini, M. & Buchmann, A. (2003). The Convergence of AOP and Active Databases: Towards Reactive Middleware. Second International Conference on Generative Programming and Component Engineering GPCE'03. Lecture Notes in Computer Science, 2830, 169–188.        [ Links ]

4. Eaddy, M. & Aho, A. (2006). Statement Annotations for Fine–Grained Advising. Workshop on Reflection, AOP and Meta–Data for Software Evolution, RAM–SE'06 – ECOOP'06, Nantes, France, 89–99.        [ Links ]

5. Floyd, R. W. (1967). Assigning Meaning to Programs. In J. T. Schwartz (Ed.), Symposium on Applied Mathematics, New York, USA, 19, 19–32.        [ Links ]

6. Gosling, J., Joy, B., Steele, Jr. G. L. & Bracha, G. (2005). The Java(TM) Language Specification. 3rd ed. New Jersey: Prentice Hall.        [ Links ]

7. Harbulot, B. & Gurd, J. R. A. (2006). A Join Point for Loops in AspectJ. Aspect–Oriented Software Development AOSD '06, Bonn, Germany, 63–74.        [ Links ]

8. Hilsdale, E. & Hugunin, J. (2004). Advice Weaving in AspectJ. 3rd International Conference on Aspect–Oriented Software Development AOSD '04, Lancaster, UK, 26–35.        [ Links ]

9. Hoare, C. A. R. (1969). An Axiomatic Basis for Computer Programming. Communications of the ACM, 12(10), 576–585.        [ Links ]

10. Juárez–Martínez, U. & Olmedo–Aguirre, J. O. (2008). Énfasis: A Model for Local Variable Crosscutting. 23rd Annual ACM Symposium on Applied Computing SAC 2008. Ceará, Brazil, 261–265.        [ Links ]

11. Kellens, A., Gybels, K., Brichau, J. & Merrs, K. (2006). A Model–driven Pointcut Language for more Robust Pointcuts. Workshop on Software Engineering Properties of Languages and Aspect Technologies SPLAT'06, Bonn, Germany, 57–63.        [ Links ]

12. Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J. & Griswold, W. G. (2001). An Overview of AspectJ. European Conference on Object–Oriented Programming. Lecture Notes in Computer Science, 2072, 327–353.        [ Links ]

13. Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. V., Loingtier, J. M. & Irwin, J. (1997). Aspect–Oriented Programming, ECOOP '97. Lecture Notes in Computer Science, 1241, 220–242.        [ Links ]

14. Leavens, G. T., Baker, A. L. & Ruby, C. (1999). JML: A Notation for Detailed Design. In H. Kilov, B. Rumpe & W. Harvey (Eds.), Behavioral Specifications of Business and Systems (175–188). Massachusetts: Kluwer Academic Publishers.        [ Links ]

15. Meyer, B. (1991). Applying "Design by Contract". In D. Mandrioli & B. Meyer (Eds.), Advances in Object–Oriented Software Engineering (1–50). New Jersey: Prentice Hall.        [ Links ]

16. Nicoara, A. & Alonso, G. (2005). Dynamic AOP with PROSE. International Workshop on Adaptive and Self–Managing Enterprise Applications ASIMEA '05. Porto, Portugal, 125–138.        [ Links ]

17. Reynolds, J. C. (1998). Theories of Programming Languages. Cambridge University Press.        [ Links ]

18. Rho, T., Kniesel, G. & Appeltauer, M. (2006). Fine–Grained Generic Aspects. Workshop on Reflection, AOP and Meta–Data for Software Evolution, RAM–SE'06 – ECOOP'06, Nantes, France, 29–35.        [ Links ]

19. Usui, Y. & Chiba, S. (2005). Bugdel: An Aspect–Oriented Debugging System. 12th Asia–Pacific Software Engineering Conference APSEC '05, Taipei, Taiwan, 59–66.        [ Links ]

Creative Commons License Todo o conteúdo deste periódico, exceto onde está identificado, está licenciado sob uma Licença Creative Commons