Extracción y Análisis de Información Estática Orientada a la Comprensión de Programas para Sistemas OO

  • Enrique Alfredo Miranda Universidad Nacional de San Luis
  • Mario Marcelo Berón Universidad Nacional de San Luis
  • Daniel Edgardo Riesco Universidad Nacional de San Luis

Abstract

Sin lugar a dudas, una de las tareas más complejas y que más tiempo consume en el ciclo de vida de una aplicación es la de Mantenimiento. En este entorno, las actividades que más tiempo consumen son aquellas que debe ejecutar el programador para lograr un completo entendimiento del sistema. A partir de esta necesidad, es que surge una disciplina de la Ingeniería de Software denominada Comprensión de Programas (CP). En este contexto, muchos autores afirman que un programador efectivamente comprende un programa cuando puede relacionar el Dominio del Problema con el Dominio del Programa. El primero hace referencia a la salida del sistema bajo estudio. El segundo se relaciona con los componentes del sistema utilizados para producir dicha salida. En este artículo se presenta una estrategia que asiste al programador durante el proceso de Comprensión de Programas de sistemas Orientados a Objetos (OO). Dicha estrategia realiza las siguientes tareas: i) extrae el Grafo Estático de Llamadas a Métodos (GELM), ii) aplica filtros que eliminan métodos muy relacionados con detalles de implementación, del GELM y iii) posibilita el análisis del GELM reducido, con el propósito de inferir funcionalidades. De esta manera la estrategia planteada pretende asistir al arduo proceso cognitivo que implica comprender un sistema.

Downloads

Download data is not yet available.

Author Biographies

Enrique Alfredo Miranda, Universidad Nacional de San Luis

Facultade de Ciencias Físco-Matemáticas y Naturales -Departamento de Informática -

Lic. en Ciencias de la Computación

Docente, Auxiliar de Primera.

Mario Marcelo Berón, Universidad Nacional de San Luis

Facultad de Ciencias Físico-Matemáticas y Naturales- Departamento de Informática

Doctor en Ciencias de la Computación.

Docente, Profesor Adjunto Exclusivo

Daniel Edgardo Riesco, Universidad Nacional de San Luis

Facultad de Ciencias Físico-Matemáticas y Naturales- Departamento de Informática

Doctor en Ingeniería de Software.

Docente, Profesor Adjunto Exclusivo

References

Bacon, D. F., y Sweeney, P. F. (1996). Fast Static Analysis of C++ Virtual Function Calls. ACM Sigplan Notices, 31(10), 324–341.

Ball, T. (1999). The Concept of Dynamic Analysis. En Software Engineering -ESEC/FSE99 (pp. 216–234).

Bennett, K., y Rajlich, V. (2000). Software Maintenance and Evolution: a Roadmap. En Proceedings of the Conference on the Future of Software Engineering (pp. 73–87). New York, NY, USA: ACM.

Berón, M., Henriques, P., Varanda Pereira, M. J., y Uzal, R. (2007). PICS un Sistema de Comprensión e Inspección de Programas. Congreso Argentino de Ciencias de la Computacion (CACIC07).

Beron, M. (2010). Program Inspection to interconnect Behavioral and Operational Views for Program Comprehension. Ph.D Thesis Dissertation at University of Minho. Braga. Portugal.

Binkley, D. (2007). Source Code Analysis: a Road Map. En 2007 Future of Software Engineering (pp. 104–119).

Boehm, B. (1984). Software Engineering Economics. Software Engineering, EEE Transactions on (1), 4–21.

Booch, G., James, R., y Jacobson, I. (2004). The Unified Software Development Process. Addison-Wesley Object Technology Series.

Bracha, G., Darcy, J. D., y Von Der Ahe, P. (2010, febrero 23). Introspection Support for Local and Anonymous Classes. Google Patents. (US Patent 7,669,184)

Brandes, U. (2001). A Faster Algorithm for Betweenness Centrality*. Journal of Mathematical Sociology, 25(2), 163–177.

Brooks, R. (1978). Using a Behavioral Theory of Program Comprehension in Software Engineering. Proceedings of the 3rd International Conference on Software Engineering, 196–201.

Cornelissen, B., Zaidman, A., Holten, D., Moonen, L., van Deurse, A., y Wijk, J. (2008). Execution Trace Analysis through Massive Sequence and Circular Bundle Views. Report TUD-SERG-2008-008.

Da Cruz, D., Henriques, P., y Pinto, J. (2009). Code Analysis: Past and Present. Proceeding of the Third International Workshop on Foundations and Techniques for Open Source Software Certification, 00, 1-10.

De Lucia, A. (2001). Program Slicing: Methods and Applications. En Source Code Analysis and Manipulation, 2001. Proceedings. First IEEE International Workshop on (pp. 142–149).

Eisenbarth, T., Koschke, R., y Simon, D. (2001). Aiding Program Comprehension by Static and Dynamic Feature Analysis. En Software Maintenance, 2001. Proceedings. IEEE International Conference on (pp. 602–611).

Fielding, R. (2000). Representational State Transfer. Architectural Styles and the Design of Netowork-based Software Architecture, 76–85.

Gupta, R., Soffa, M. L., y Howard, J. (1997). Hybrid Slicing: Integrating Dynamic Information with Static Analysis. ACM Transactions on Software Engineering and Methodology (TOSEM), 6(4), 370–397.

Hamou-Lhadj, A., y Lethbridge, T. (2006). Summarizing the Content of Large Traces to Facilitate the Understanding of the Behaviour of a Software System. En Program Comprehension, 2006. ICPC 2006. 14th IEEE International Conference on (pp. 181–190).

Lieberman, H., y Fry, C. (1995). Bridging the Gulf Between Code and Behavior in Programming. En Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (pp. 480–486).

Littman, D., Pinto, J., Letovsky, S., y Soloway, E. (1987). Mental Models and Software Maintenance. Journal of Systems and Software, 7(4), 341–355.

Maletic, J., Leigh, J., Marcus, A., y Dunlap, G. (2001). Visualizing Object Oriented Software in Virtual Reality. En Proceedings of the 9th International Workshop on Program Comprehension (IWPC’01) (pp. 26–35). Society Press.

Murphy, G. C., Notkin, D., Griswold, W. G., y Lan, E. S. (1998). An Empirical Study of Static Call Graph Extractors. ACM Transactions on Software Engineering and Methodology (TOSEM), 7(2), 158–191.

Nicol, G., Wood, L., Champion, M., y Byrne, S. (2001). Document Object Model (DOM) Level 3 Core Specification.

Pigoski, T. (1996). Practical Software Maintenance: Best Practices for Managing

Your Software Investment. New York, NY, USA: John Wiley & Sons, Inc.

Rohatgi, A., Hamou-Lhadj, A., y Rilling, J. (2008). An Approach for Mapping Features to Code Based on Static and Dynamic Analysis. En Program Comprehension, 2008. ICPC 2008. The 16th IEEE International Conference on (pp. 236–241).

Rugaber, S. (1995). Program comprehension. Encyclopedia of Computer Science and Technology, 35(20), 341–368.

Spärck Jones, K. (2007). Automatic Summarising: the State of the Art. Information Processing & Management, 43(6), 1449–1481.

Storey, M.-A. (2005). Theories, Methods and Tools in Program Comprehension: Past, Present and Future. Proceedings of the 13th International Workshop on Program Comprehension, 181–191.

Sundaresan, V., Hendren, L., Razafimahefa, C., Vallée-Rai, R., Lam, P., Gagnon, E., y Godin, C. (2000). Practical Virtual Method Call Resolution for Java. ACM SIGPLAN Notices, 35(10), 264–280.

von Mayrhauser, A., y Vans, M. (1994). Comprehension Processes During Large Scale Maintenance. En Proceedings of the 16th International Conference on Software Engineering (pp. 39–48).

Published
2014-11-01
Section
Articles