Program Comprehension by Visual Inspection and Animation (Research.PCVIA)
Description
Program comprehension is the ability of fully understand a piece of computer code, written in a (high-level) programming language. As stated in the call-for-papers for IWPC'2004, Program Comprehension is on of the core software engineering activities, and is needed for reuse, inspection, maintenance, reverse engineering, reengineering, migration, and extension of existing software systems.
However, the comprehension of a program can have different meanings, or perspectives: we can be interested in the way the computer will execute the instructions, in order to understand the data or control flow; or the focus can be on the effects of program execution over the state of some (logical or physical)
device that is being manipulated by that program.
Anyway, we feel that a visual inspection tool is crucial to help the analyst in that task.
Moreover, we defend the idea that such a tool should be able to animate the execution, either to show the flow of data (the values affected to the program variables along the time) and the instructions path, or to show the transformations produced over the external device controlled by the program.
That visualization and animation tool should be able to offer both views above referred, and it would be desirable that it can handle different programming languages.
... for more details
Financial Support
- Project supported by FCT during 2004-2006.
- Project No. POSI/EIA/57662/2004
Partners
Research Team
Tasks
Research.PCVIA aims at the exploitation of Alma to fulfill the above requirements for a program comprehension generic tool. For that we proposed the following tasks:
- to study the state-of-art in Program Comprehension,
- to develop the existing Alma prototype in two directions: fully implement the planned functionality and optimize its execution; redesign its interface in order to assure a successful usage,
- to investigate and assess the application of Alma for Program Comprehension.
Previous Work
Published Papers
- Visualization/Animation of Programs based on Abstract Representation and Formal Mappings - HCC01(bibtex)
- Automatic Generation of Language-based Tools- LDTA 2002 (bibtex)
- Visualization/Animation of Programs in Alma: obtaining different results- HCC03(bibtex)
- Automatic Generation of Language-based Tools using LISA system -IEE Software Journal, vol 152, pp. 54-70, Issue 2 April 2005 (special issue on Language Definitions and Tool Generation)(bibtex)
- Compreensão de Aplicações Web: O Processo e as Ferramentas - CAPSI05(bibtex)
- Henriques P., Béron M., Varanda M.J., Uzal R., Herramientas para la compresión de programas, VIII Workshop de Investigadores en Ciencias de la Computación (WICC06), Universidade de Morón, Bs. As., Argentina (bibtex).
- Henriques P., Béron M., Varanda M.J., Uzal R., Comprensión de Algoritmos de Ruteo, XXXII Conferencia Latinoamericana de Informática (CLEI06), Santiago de Chile (bibtex).
- Béron M., Henriques P., Varanda M.J., Uzal R., Montejano G., A Language Processing Tool for Program Comprehension , XII Argentine Congress on Computer Science (CACIC06), Universidad Nacional de San Luis, Argentina.(bibtex)
- Béron M., Henriques P., Varanda M.J., A System for Evaluate and Understand Routing Algorithms, Interacção'06, Universidade do Minho (bibtex).
- Oliveira E., Henriques P., Varanda M.J., Proposta de um Sistema para Compreensão de Aplicações Web, Conferência da Associação Portuguesa de Sistemas de Informação 2006 (CAPSI06), Aveiro, Portugal (bibtex)
- Cruz D., Varanda M.J., Berón M., Fonseca R. and Henriques P., Comparing Generators for Language-based Tools, CORTA'07 - Compiler, Related Technologies and Applications, Universidade da Beira Interior, Julho 2007.(bibtex)
- Béron M., Uzal R., Henriques P., Varanda M.J., Compreensión de Programas por Inspección Visual y Animación, IX Workshop de Investigadores en Ciencias de la Computación (WICC 2007), Chubut, Argentina, 2007. (bibtex)
- Béron M., Henriques P., Varanda M.J.,Uzal R., Static and Dynamic Strategies to Understand C Programs by Code Annotation , OpenCert? 2007, 1st International Workshop on Fondations and Techniques for Open Source Software Certification (integrado no ETAPS'07), Braga, 2007. (bibtex)
- Cruz D., Henriques P. Varanda M.J., Pattern-based Program Visualization, WAPL'07 - Workshop on Advanced Programming Languages, Wisla, Polónia, Outubro 2007. (bibtex)
- Cruz D., Henriques P., Slicing wxHaskell modules to derive the User Interace Abstract Model, WAPL'07 - Workshop on Advanced Programming Languages, Wisla, Polónia, Outubro 2007. (poster) (bibtex)
- Berón M., Henriques P., Varanda M., Uzal R., Program Inspection to Incerconnect Behavioral and Operational View for Program Comprehension, York Doctral Symposium, 2007, York, Inglaterra. (YDS 2007) (bibtex)
- Berón M., Henriques P., Varanda M., Uzal R., PICS una Herramienta para la Comprensión e Inspección de Programas, Congreso Argentino de Ciencas de la Computación, 2007, Corrientes, Argentina. (CACIC 2007) (bibtex)
- Berón M., Henriques P., Varanda M., Uzal R., Inspecção de Programas para Relacionar a Vista Comportamental e Operacional para a Compreensão de Programas, Simpósio Doutoral em Inteligência Artificial. 2007. Guimarães. Portugal.
- Cruz D., Henriques P., Varanda M.J., Constructing program animations using a pattern-based approach, Journal ComSIS? -- Computer Science and Information Systems Journal, Special Issue on Advances in Programming Languages, Faculty of Technical Sciences, Novi Sad, Serbia, volume 4, number 2, pp 97-114, Dec 2007. (ISSN: 1820-0214) (bibtex)
- Cruz D., Henriques P., Varanda M.J., Exploring and Visualizing the "Alma" of XML Documents, XATA 2008 - XML: Aplicações e Tecnologias Associadas, Universidade de Évora, 2008 (bibtex).
Web pages
Undergoing Work
Documentation
Program Comprehension
- Program Comprehension - Página sobre Compreensão de Programas criada em 1997 por Richard Upchurch. Resumo: no contexto da compreensão de programas o aluno centra a sua atenção na sua construção do programa e não tenta compreender como é que aquele conjunto de instruções resolva o problema. A área da compreensão de programas não só é importante no âmbito do ensino da programação mas também em actividades industriais relacionadas com inspecções e revisões de código. O uso de exemplos na compreensão depende muito da facilidade em extrair de cada um deles a informação apropriada. Uma pessoa que use esses exemplos sem qualquer estratégia pode não tirar qualquer proveito deles. É importante compreender os modelos cognitivos já identificados e estudados para planear uma actividade de aprendizagem (Brooks, Shneiderman, Letovsky, Soloway, Ehrlich and Pennington). Alguns destes autores falam na distinção entre o conhecimento técnico e conhecimento de domínio e defendem que se atinge a compreensão quando se faz o mapeamento entre os dois conhecimentos. Há várias abordagens à compreensão: desde tentar compreender as partes e depois num proceso bottom-up compreender o todo; abordagens baseadas em check-list distribuídas por vários revisores e em várias perspectivas; dividir o programa fazendo projecções que incluem apenas as instruções que afectam determinada variável (esta divisão permite encontrar o significado semântico do programa que pode não corresponder a instruções seguidas).
- A Survey of Reverse Engineering and Program Comprehension - Apresenta um conjunto de conceitos, problemas e abordagens para automatizar o processo de recolha de informação dos programas; Fala também da compreensão de programas como o resultado de um refinamento sincronizado entre a compreensão do desenho e a compreensão do código.
Visualization and Animation
- Program Comprehension in Multi-Language systems - Apresenta uma abordagem baseada no mapeamento das linguagens fonte num representação interna onde são descritos os conceitos mais abstractos comuns a várias linguagens. O resultado final é um desenho onde se podem observar todas as componentes do programa e seus relacionamentos.
Web Comprehension
Program Comprehension Tools
Classic Program Comprehension Tools
- SHrimp - Ferramenta interactiva de Compreensão de Programas Java.
- Creole - Ferramenta de análise visual de código Java (plug-in do Eclipse e baseia-se em SHrimp).
- Imagix 4D - Ferramenta para programadores melhor compreender programas em C e C++ já desenvolvidos.
- Rigi - Ferramenta desenvolvida para compreender e redocumentar software.
- CodeSurfer - Navegador de código que ajuda a compreender apontadores, chamadas indirectas a funções, todos os efeitos do programa.
- CANTO - Ambiente de compreensão e manutenção de software.
- xSuds � Ferramenta de análise e visualização de software.
- Seesoft � Ferramenta de visualização de estatísticas de software.
- MOOSE � Ferramenta de reengenharia que permite a visualização, análise e manipulação de sistemas de software complexos.
- CodeCrawler � Ferramenta de reengenharia que combina as métricas com a visualização de software.
- GUPRO � Família de ferramentas de suporte à compreensão de programas baseadas em grafos.
- Bauhaus � Ferramenta para análise de programas e reengenharia.
Tools just for maintenance
- SPOOL�CIA � Ferramenta de análise de impacto de alterações
- Dali � extracção, manipulação e interpretação de informação sobre a arquitectura do sistema.
Software Visualization tools
- ISVis � Análise de cenários de execução.
- TkSee � Ferramenta gráfica de browsing de código.
- Hy+ � Ferramenta de visualização que suporta uma linguagem visual de queries chamada graphlog.
- Outras � Lista de ferramentas de visualização de software.
Teaching Tools
- Jeliot3 - Ferramenta de visualização da interpretação de um programa Java.
- BlueJ � Ferramenta de desenvolvimento Java desenhada para o ensino.
Development Environments
- Grasp � Ambiente de desenvolvimento que usa técnicas de visualização para ajudar a compreensão dos programas.
- SNIFF+ � Ambiente de desenvolvimento para C e C++.
Graph Visualization based Tools
- GraphViz � Construção automática de representações visuais de grafos.
- daVinci � Sistema de visualização de grafos.
- TomSawyer Software � Família de ferramentas que permitem a análise e visualização de software com base na visualização de grafos.
- VCG � construção automática de visualização de grafos.
Conferences
- ICPC'08 - 15th IEEE International Conference on Program Comprehension (10-12 June 2008,Amsterdam,Deadline Jan 25th)
- ETAPS 2008 - European Joint Conferences on Theory and Practice of Software (March 29 - April 6 2008, Budapest, Hungary)
- LDTA'08 - 8th Workshop on Language Descriptions, Tools and Applications (March 29 - April 6 2008, Budapest, Hungary, Deadline November 30th)
- 2008 IEEE Symposium on Visual Languages and Human-Centric Computing (16-20 September 2008, Herrsching am Ammersee, Germany, Deadline February 21th)
- SoftVis 2008 - The 4th International ACM Symposium on Software Visualization
- ICSE'08 - 30th International Conference on Software Engineering(10 - 18 May 2008, Leipzig, Germany, Deadline Demos Nov 30th)
- Computer Science Education Journal Special Issue: Using End-user Programming Technologies to Teach Programming
- Journal of Logic, Language and Information, Topic: Visual Languages and Logic
Meetings
- 1 February 2005, Universidade do Minho, Braga. (Meeting Report)
- 23 February 2005, Universidade de Maribor, Eslovénia. (Meeting Report)
- 29 March 2005, Universidade do Minho, Braga. (Meeting Report)
- 31 August 2005, Escola Superior de Tecnologia e Gestão de Bragança. (Meeting Report)
- 8 October 2005, Universidade de Maribor, Eslovénia. (Meeting Report)
- 26 October 2005, Escola Superior de Tecnologia e Gestão de Bragança. (Meeting Report)
- 10 February 2006, Universidade do Minho. (Meeting Report)
- 10 April 2006, Universidade do Minho (Meeting Report)
- 22 June 2006, ITI'06 Conference, Croacia (Travel Report)
- 14 July 2006, Universidade do Minho (Meeting Report)
- 3 November 2006, Universidade do Minho (Meeting Report)
- 15 January 2007, Universidade do Minho (Meeting Report)
- 6 February 2007, Escola Superior de Tecnologia e Gestão de Bragança (Meeting Report)
- 9 March 2007, Universidade do Minho (Meeting Report)
- 30 March 2007, ETAPS'07 - Universidade do Minho (Meeting Report)
- 8 June 2007, Universidade do Minho (Meeting Report)
- 4 October 2007, Maison International, Paris (Travel Report)
- 17 October 2007, WAPL'07 - wisla, Polónia (Travel Report)
- 17 October 2007, WAPL'07 - wisla, Polónia (Meeting Report)
- 14 December 2007, Universidade do Minho (Meeting Report)
Consultant comments
- Prof. Juergen Ebert, University of Koblenz, Germany. (Comments)
- Prof. Árpád Beszédes, University of Szeged, Hungary. (Comments)
Openning positions
Talks