Servicios Personalizados
Revista
Articulo
Indicadores
- Citado por SciELO
- Accesos
Links relacionados
- Similares en SciELO
Compartir
Computación y Sistemas
versión On-line ISSN 2007-9737versión impresa ISSN 1405-5546
Comp. y Sist. vol.13 no.3 Ciudad de México ene./mar. 2010
Artículos
RunTime 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 runtime assertion checking problem involving local variables in Java programs using Énfasis. Énfasis is a novel AspectOriented 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 runtime 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 noninvasiveness 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, aspectoriented 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). Loadtime structural reflection in Java. Object Oriented Programming ECOOP 2000. Lecture Notes in Computer Science, 1850, 313336. [ Links ]
2. Chiba, S. & Nishizawa, M. (2003). An EasytoUse Toolkit for Efficient Java Bytecode Translators. Generative Programming and Component Engineering GPCE'03. Lecture Notes in Computer Science, 2830, 364376. [ 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, 169188. [ Links ]
4. Eaddy, M. & Aho, A. (2006). Statement Annotations for FineGrained Advising. Workshop on Reflection, AOP and MetaData for Software Evolution, RAMSE'06 ECOOP'06, Nantes, France, 8999. [ Links ]
5. Floyd, R. W. (1967). Assigning Meaning to Programs. In J. T. Schwartz (Ed.), Symposium on Applied Mathematics, New York, USA, 19, 1932. [ 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. AspectOriented Software Development AOSD '06, Bonn, Germany, 6374. [ Links ]
8. Hilsdale, E. & Hugunin, J. (2004). Advice Weaving in AspectJ. 3rd International Conference on AspectOriented Software Development AOSD '04, Lancaster, UK, 2635. [ Links ]
9. Hoare, C. A. R. (1969). An Axiomatic Basis for Computer Programming. Communications of the ACM, 12(10), 576585. [ Links ]
10. JuárezMartínez, U. & OlmedoAguirre, J. O. (2008). Énfasis: A Model for Local Variable Crosscutting. 23rd Annual ACM Symposium on Applied Computing SAC 2008. Ceará, Brazil, 261265. [ Links ]
11. Kellens, A., Gybels, K., Brichau, J. & Merrs, K. (2006). A Modeldriven Pointcut Language for more Robust Pointcuts. Workshop on Software Engineering Properties of Languages and Aspect Technologies SPLAT'06, Bonn, Germany, 5763. [ Links ]
12. Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J. & Griswold, W. G. (2001). An Overview of AspectJ. European Conference on ObjectOriented Programming. Lecture Notes in Computer Science, 2072, 327353. [ Links ]
13. Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. V., Loingtier, J. M. & Irwin, J. (1997). AspectOriented Programming, ECOOP '97. Lecture Notes in Computer Science, 1241, 220242. [ 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 (175188). Massachusetts: Kluwer Academic Publishers. [ Links ]
15. Meyer, B. (1991). Applying "Design by Contract". In D. Mandrioli & B. Meyer (Eds.), Advances in ObjectOriented Software Engineering (150). New Jersey: Prentice Hall. [ Links ]
16. Nicoara, A. & Alonso, G. (2005). Dynamic AOP with PROSE. International Workshop on Adaptive and SelfManaging Enterprise Applications ASIMEA '05. Porto, Portugal, 125138. [ Links ]
17. Reynolds, J. C. (1998). Theories of Programming Languages. Cambridge University Press. [ Links ]
18. Rho, T., Kniesel, G. & Appeltauer, M. (2006). FineGrained Generic Aspects. Workshop on Reflection, AOP and MetaData for Software Evolution, RAMSE'06 ECOOP'06, Nantes, France, 2935. [ Links ]
19. Usui, Y. & Chiba, S. (2005). Bugdel: An AspectOriented Debugging System. 12th AsiaPacific Software Engineering Conference APSEC '05, Taipei, Taiwan, 5966. [ Links ]