...collaborate on
News

Atenção à lista de conferências para 2008 -- MariaJoaoVaranda - 28 Outubro 2007

Já estão disponíveis as actas das últimas reuniões. -- MariaJoaoVaranda - 17 Junho 2007

A nossa equipa continua a aumentar. Digam olá ao Ruben. -- MariaJoaoVaranda - 20 Setembro 2006

Abertura de uma BIC para implementar o sistema webappviewer. Anúncio no fim da página.
-- MariaJoaoVaranda - 23 Agosto 2006

Atenção à nova lista de conferências -- MariaJoaoVaranda - 11 Jul 2006

Já temos uma lista de ferramentas -- EvaOliveira - 11 Jan 2006

Abstract para conferência CAPSI'05 elaborado -- EvaOliveira - 14 Mar 2005

Acabei de Criar a Página para as citações bibliográficas -- PedroRangelHenriques - 12 Mar 2005

Está abençoado... -- PedroRangelHenriques - 04 Feb 2005

Nasceu o Research.PCVIA -- MariaJoaoVaranda - 04 Feb 2005


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

Meetings

Consultant comments

  • Prof. Juergen Ebert, University of Koblenz, Germany. (Comments)
  • Prof. Árpád Beszédes, University of Szeged, Hungary. (Comments)

Bibliography (bibtex style)

Openning positions

Talks

r83 - 02 Feb 2008 - 16:35:54 - MariaJoaoVaranda
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
Syndicate this site RSSATOM