Propostas de Projectos do gEPL para OPÇÃO III Ano Lectivo de 2007/08 Preâmbulo Todos os projectos abaixo apresentados destinam-se a 1 grupo de trabalho (constítuido por 2/3 elementos), cuja duração se prevê que seja de um único semestre. _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl01) Visualização de Propriedades Estáticas e Dinâmicas de um Programa usando Grafos 2. Contexto: PCVIA - Program Comprehension by Visual Inspection 3. Descrição do Projecto A compreensão de programas é uma área da Engenharía de software destinada a facilitar o entendimento das aplicações (sistemas de software). Uma das formas mais eficazes de alcançar este objetivo é construir representações de alto nivel que permitan analizar só os aspectos de interesse da aplicação. Os grafos são usados vulgarmente para este fim. Para definir uma visualização do programa usando este modelo matemático, é necessário conhecer quanta informação é possível representar e como a representar. Neste trabalho pretende-se construir um ambiente baseado em grafos que utilize as propriedades subjacentes às componentes deste modelo (nodos, arcos, layout) para visualizar propriedades estáticas e dinâmicas de sistemas de software. Concretamente, neste projecto que se insere no PCVIA e se destina a enriquecer a panóplia de ferramentas que nesse contexto têm sido criadas, deve ser desenvolvido um sistema que permita dizer: - como mapear o software a analisar no grafo, isto é, que facetas da aplicação devem ser representadas como nodos, ou como arcos; - como controlar as várias propriedades dos nodos e ramos para formar uma imagem que ilustre conveniente a faceta em análise. Uma possível aproximação à resolução deste problema, baseia-se no recurso ao ProGraph, ou uma ferramenta análoga. 4. Proponente / Orientador Pedro Rangel Henriques + Mario Béron 5. Áreas de trabalho Visualização de SW + Grafos _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl12) Upgrade do Animador de Programas Alma 2. Contexto: PCVIA - Program Comprehension by Visual Inspection 3. Descrição do Projecto O sistema Alma, concebido no âmbito da tese de doutoramento de Maria João Varanda e implementado em Java por Daniela da Cruz, recebe um programa fonte, mostra uma representação gráfica da sua semântica e através de reescrita e nova visualização, faz uma animação da execução do programa, relacionado o texto fonte com a sua representação abstracta interna e ainda com o efeito que cada instrução vai produzindo no estado do programa (o conjunto de variáveis declaradas e manipuladas, quer sejam de tipos simples, ou estruturadas). O sistema de visualização e animação é independente da linguagem fonte, bastando criar um reconhecedor por cada nova linguagem que se queira suportar. De momento, a versão que está a funcionar, que já foi demonstrada e discutida internacionalmente, processa as linguagens LISS e C. Pretende-se agora melhorar o sistema permitindo: * incluir pontos de paragem (vulgo "breakpoints") que permitam controlar o ritmo de visualização separando as zonas de execução passo-a-passo, das zonas de execução rápida; * mudar o aspecto de apresentação da árvore abstracta que representa o programa, passando a usar o esquema hierárquico actualmente em voga para mostrar directorias (sistemas de ficheiros), permitindo fazer "drill-down" e "drill-up"; * fazer o tracking apenas de uma variável, vendo as partes do programa onde ela é alterada ou usada e animando apenas essa cadeia de instruções. 4. Proponente / Orientador Pedro Rangel Henriques + Maria João Varanda + Daniela da Cruz 5. Áreas de trabalho Visualização de SW + Grafos _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl13) Visualização de Propriedades Estáticas e Dinâmicas de um Programa usando Grafos 2. Contexto: PCVIA - Program Comprehension by Visual Inspection 3. Descrição do Projecto O sistema Alma, concebido no âmbito da tese de doutoramento de Maria João Varanda e implementado em Java por Daniela da Cruz, recebe um programa fonte, mostra uma representação gráfica da sua semântica e através de reescrita e nova visualização, faz uma animação da execução do programa, relacionado o texto fonte com a sua representação abstracta interna e ainda com o efeito que cada instrução vai produzindo no estado do programa (o conjunto de variáveis declaradas e manipuladas, quer sejam de tipos simples, ou estruturadas). O sistema de visualização e animação é independente da linguagem fonte, bastando criar um reconhecedor por cada nova linguagem que se queira suportar. De momento, a versão que está a funcionar, que já foi demonstrada e discutida internacionalmente, processa as linguagens LISS e C. Pretende-se agora fazer evoluir o sistema: * desenvolvendo um Front-End para suportar Java; * mostrar o Diagrama de Classes (DC) do Programa; * animar o programa recorrendo ao dito DC e usando os Diagramas de Estado de cada objecto e de Colaboração. 4. Proponente / Orientador Pedro Rangel Henriques + Maria João Varanda + Daniela da Cruz 5. Áreas de trabalho Visualização de SW + Grafos _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl02) Apoio à conversão de documentos diversos para XML no contexto do Museu da Emigração 2. Contexto: SIME -Sistema de Informação de suporte ao Museu da Emigração (C.M. de Fafe) 3. Descrição do Projecto As fontes de informação do ME são várias e muito diversas, indo desde documentos electrónicos dos mais variados formatos (MS office (tipicamente Word ou Excel), texto simples, paginas HTML, imagens, etc), a documentos físicos em bibliotecas (livros ou excertos destes, álbuns de fotografias, etc.). Para além do formato diversificado das fontes elas subdividem-se em vários tipos de documentos e cobrem temas diferentes, tais como registos de passaportes ou monografias. Para manipular as fontes e delas extrair conhecimento, é necessário guardar a informação num formato neutro electrónico, facilmente processável por uma aplicação informática, utilizando-se para esse efeito XML (sendo usados Schemas, XSD, para especificar os vários tipos). Para tal é necessário criar uma ferramenta informática de apoio à conversão desses vários documentos nos diversos formatos para o referido formato neutro XML. Essa aplicação permitirá inserir texto livre, ou importar documentos já digitalizados num dos formatos acima e efectuar a sua marcação. Essa marcação, para ser assistida, requer a escolha prévia do tipo de documento a processar para se poder ajudar contextual e dinamicamente a respectiva anotação (de acordo com as definições especificadas no XSD correspondente). Deve ainda ser criado um bloco de meta-informação global sobre o documento, tal como autor, fonte do documento, etc. A ferramenta pretendida deve, ainda prestar apoios vários ao utilizador, como: importação inteligente marcar previamente alguns campos conhecidos na importação; atalhos de teclado; etc. Para além destes requisitos, a aplicação final deverá ter em conta que os seus utilizadores são historiadores, possivelmente sem formação avançada em informática, tendo de ser mantida, simples e funcional. 4. Proponente / Orientador Pedro Rangel Henriques + Flávio Ferreira 5. Áreas de trabalho Anotação de Documentos + XML&Cª. _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl03) Recuperação do Modelo de Interacção em aplicações gráficas Java (Swing/SWT) 2. Contexto: Language.Processing@di.um.pt 3. Descrição do Projecto Reusing and modifying legacy systems are complex and expensive tasks, because the required program comprehension is a difficult and time-consuming process. Thus, the need for methods and tools that facilitate program comprehension is urgent and strong. Reverse engineering aims at analyzing the software in order to represent it in an abstract format that makes easier to understand what it does and how it works. Reverse engineering tools provide means to support this task. Nowadays those software systems offer a rich interaction with the user, and their architectures are oriented towards a layered organization, separating at least the interface layer from the business core and data persistence modules. In this context --- system maintenance and comprehension of software with graphical user interfaces --- this project involves the application of strategic and generic programming and the research of new slicing techniques to the reverse engineering of Java applications. This task requires the study of the graphic toolkit used to build Graphical User Interfaces (GUI) for Java --- Swing (or alernatively, SWT). The tool should be capable of deriving the user interface abstract model for interactive programming by generating the event-flow graph of the application. This graph should be linked with the graphical user interface and over it should be possible to make some questions. As final goal, this tool should de integrated as a plugin in the Eclipse platform. 4. Proponente / Orientador Pedro Rangel Henriques + Daniela da Cruz 5. Áreas de trabalho Program Slicing, Reverse Engineering, Interfaces Gráficas, Java, Swing, SWT, Eclipse. _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl04) Recuperação do Modelo de Interacção em aplicações gráficas Haskell (wxHaskell) 2. Contexto: Language.Processing@di.um.pt 3. Descrição do Projecto Reusing and modifying legacy systems are complex and expensive tasks, because the required program comprehension is a difficult and time-consuming process. Thus, the need for methods and tools that facilitate program comprehension is urgent and strong. Reverse engineering aims at analyzing the software in order to represent it in an abstract format that makes easier to understand what it does and how it works. Reverse engineering tools provide means to support this task. Nowadays those software systems offer a rich interaction with the user, and their architectures are oriented towards a layered organization, separating at least the interface layer from the business core and data persistence modules. In this context --- system maintenance and comprehension of software with graphical user interfaces --- this project involves the application of strategic and generic programming and the research of new slicing techniques to the reverse engineering of Haskell applications. This task requires the study of the graphic toolkit used to build Graphical User Interfaces (GUI) for Haskell --- wxHaskwll. The tool should be capable of deriving the user interface abstract model for interactive functional programming by generating the event-flow graph of the application. This graph should be linked with the graphical user interface and over it should be possible to make some questions. 4. Proponente / Orientador Pedro Rangel Henriques + Daniela da Cruz 5. Áreas de trabalho Program Slicing, Reverse Engineering, Interfaces Gráficas, Haskell, wxHaskell. _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl05) Recuperação da Semântica Estática de uma Linguagem por slicing da respectiva GA 2. Contexto: Language.Processing@di.um.pt 3. Descrição do Projecto Slicing is a technic for parsing a source text (in a given formal language) that just analysis, or extracts, a part (a slice) of that text structure, to isolate some component or facet. Typical applications of slicing are focus on program (source code analysis) aiming at refactoring, or reverse engineering (aiding in the recovery of the componet abstract model) --- see SCAM'2007 and previous editions. In this project we want to explore a new idea: to apply such technic to the analysis on a given language (measuring language characteristics to assess language quality is nowadays an hot topic) by slicing the language specification, i.e. its Attribute Grammar. As a case study we will isolate the language static semantics by slicing the contextual conditions, and error detection/reporting. 4. Proponente / Orientador Pedro Rangel Henriques + Daniela da Cruz 5. Áreas de trabalho Program Slicing. Attribute Grammars _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl06) Web Virtual Machines 2. Contexto: Language.Processing@di.um.pt 3. Descrição do Projecto Pretende-se com este projecto implementar uma plataforma web e serviços web associados que permitam a utilização online de máquinas virtuais. Visa-se em particular a implementação de máquinas virtuais classicamente utilizadas no ensino dos processos de compilação, como é o caso da VM. Assim a plataforma resultante do projecto poderá ser utilizada como plataforma de execução online e universal por todos os estudantes destas disciplinas ou ainda de sistema de suporte a avaliação de trabalhos pelos docentes associados. Este sistema é constituído por duas partes: 1. Desenho e implementação (orientada a web) de uma máquina virtual e do respectivo ambiente gráfico de execução; 2. Desenho e implementação de uma infraestrutura de suporte para a web. Este projecto envolverá assim a utilização de tecnologias modernas de programação web, de interfaces homem-máquina e de publicação digital. 4. Proponente / Orientador Pedro Rangel Henriques + Simão Melo de Sousa (Universidade da Beira Interior) 5. Áreas de trabalho BD, POO, Engenharia de Software, Compiladores. _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl07) Play Virtual Machines 2. Contexto: Language.Processing@di.um.pt 3. Descrição do Projecto A implementação de jogos de cartas implica a utilização de tipos de dados estruturados tais como stacks e filas. O que varia de jogo para jogo, é o número de stacks e filas e as regras como são usadas. Pretende-se neste projecto desenvolver uma máquina virtual gráfica reconfigurável/reprogramável para cada jogo de cartas que nela se pretenda simular, que antes de mais permita programar a sua arquitectura específica. Para isso deverão ser estabelecidas as instruções da máquina virtual, que permitam configurá-la e programar facilmente uma novo jogo que se pretenda simular. O grupo de trabalho que opte por este projecto deverá escolher a linguagem de programação pretendida, tendo em atenção a eficiência e portabilidade. 4. Proponente / Orientador Pedro Rangel Henriques + Daniela da Cruz 5. Áreas de trabalho Máquinas Virtuais, Engenharia de Software. _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl08) Interface de Voz para transcrição e anotação de fontes históricas 2. Contexto: SEED -- Sistema de informação para Estudo da Evolução Demográfica em demografia histórica 3. Descrição do Projecto Na sequência dos vários módulos que ao longo dos últimos 10 anos temos desenvolvido para suporte à aquisição de dados demográficos (registos paroquiais de nascimento, casamento e morte), armazenamento, fusão e análise (para exploração do conhecimento neles contido), desenvolveu-se no ano passado uma interface para PDA's para recolha, armazenamento e consulta de registos junto das fontes (arquivos). Pretende-se agora enriquecer essa interface, ou uma análoga, com um reconhecedor de fala que permita anotar os documentos introduzidos através de comandos de voz. 4. Proponente / Orientador Pedro Rangel Henriques + Fernanda Faria 5. Áreas de trabalho Reconhecimento de Voz + PDA's + Anotação de documentos + XML + Bases de Dados _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl09) Reverse Engineering e Reengineering de aplicações legadas no âmbito da Demografia histórica 2. Contexto: SEED -- Sistema de informação para Estudo da Evolução Demográfica em demografia histórica 3. Descrição do Projecto No contexto do projecto SEED, desenvolveu-se há anos o SRP para aquisição de registos paroquiais, validação e armazenamento de base de dados Access segundo um modelo de dados afinado durante vários anos. A exploração dos dados recolhidos criou novas necessidades de análise de novas fontes e cruzamento de informação de modo a suportar o estudo de outros fenómendos, ou mesmo permitir a explortação desse módulo para outros países de lingua latina mas com outra organização geográfica. Neste projecto pretende-se actualizar, adaptar e expandir o SRP fazendo a re-engenharia do sistema actual, o que vai requerer alguma tarefa de engenharia reversa. . Proponente / Orientador Pedro Rangel Henriques + Fernanda Faria 5. Áreas de trabalho Engenharia de SW + Bases de Dados + Análise de Dados _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl10) Selector Interactivo de resultados para um Recuperador de Documentos em Arquivos 2. Contexto: OntXQuery -- Sistema interactivo/incremental para Recuperação de Informação em Documentos XML com recurso a Ontologias 3. Descrição do Projecto O XPath permite especificar perguntas para aceder a determinados elementos de documentos XML. Por exemplo "/artigo/título" é uma pergunta XPath que acede à lista de títulos de artigos de uma colecção XML. No entanto, o utilizador pode estar interessado em processar posteriormente apenas parte do resultado, tendo de usar um editor de texto para eliminar os elementos não desejados. Suponha-se que o resultado de cada pergunta é visualizado usando um navegador XML ou HTML comum, como o Mozilla. Pretende-se com este projecto desenvolver uma interface que permita que o utilizador possa fazer a selecção dos components desejados directamente na janela de visualização do resultado. Para isso, a cada elemento deve ser associado uma indicação de selecção (p. ex. um botão) que, sendo activada, implica a eliminação desse elemento do resultado 4. Proponente / Orientador Pedro Rangel Henriques + Alda Lopes 5. Áreas de trabalho Information Retrieval + XML / XPath + Web-Engineering _______________________________________________________________________________________ 1. Identificação do Projecto (Pepl11) Query-by-Example para Recuperação de Documentos em Arquivos XML 2. Contexto: OntXQuery -- Sistema interactivo/incremental para Recuperação de Informação em Documentos XML com recurso a Ontologias 3. Descrição do Projecto O XPath permite especificar perguntas para aceder a determinados elementos de documentos XML. Por exemplo "/artigo[título="Aplicações XML"]" é uma pergunta XPath que acede à lista de artigos de uma colecção XML cujo título é "Aplicações XML". No entanto, a formulação das perguntas implica o conhecimento da sintaxe do XPath e a certeza, a priori, dos elementos desejados. Para facilitar a formulação das perguntas, muitos sistemas de processamento de XPath permitem a "interrogação através de exemplos" ("query by example") que consiste em (1) mostrar ao utilizador um documento exemplo e (2) permitir ao utilizador fazer a escolha dos elementos "clicando" sobre um elemento do tipo desejado. Pretende-se com este projecto desenvolver um sistema de Recuperação de Documentos de arquivos XML (Information Retrieval system) que permita visualizar, num navegador XML ou HTML comum, um documento XML exemplo retirado de uma colecção de modo a que cada elemento desse documento possa ser associado à possibilidade de ser (1) seleccionado como um tipo de elementos desejado e (2) usado numa condição (construída com os operadores =, <>), como p. ex. título="Aplicações XML", de modo a formular a pergunta, ou seja, a escrever a query XPath que específica os documentos pretendidos. 4. Proponente / Orientador Pedro Rangel Henriques + Alda Lopes 5. Áreas de trabalho Information Retrieval + XML / Xpath _______________________________________________________________________________________