Engenharia de Linguagens

Engenharia de Linguagens (2009/2010)

Análise e Transformação de Software

Programa Resumido

  • Análise de programas:
    • Extracção de dados
    • Armazenamento da informação recolhida
    • Exploração do conhecimento.
  • Transformação de programas:
    • Programação estratégica.
    • Técnicas de Slicing.
    • Especialização de programas e cálculo parcial.
  • Paradigmas para visualização de dados e de conhecimento:
    • visualização de informação, de dados e de software.
    • modelos de visualização.
    • visualização/navegação em árvores, grafos, hiper-cubos, petri-nets.
    • visualização/navegação em ontologias.
    • animação de algoritmos.

Resultados de Aprendizagem Específicos

  • Capacidade de construir front-ends poderosos para a análise de linguagens de programação (ambíguas ou não).
  • Capacidade de desenvolver software como uma tarefa de transformar programas e/ou especificações em implementações eficientes.
  • Capacidade de utilizar métricas e técnicas de transformação de programas para optimizar programas (e.g. cálculo parcial, detecção de código morto), efectuar debugging de programas (e.g. slicing), melhorar a estrutura dos programas (e.g. refactoring).
  • Capacidade de definir testes para software e testar automaticamente programas em diferentes linguagens de programação.
  • Capacidade para criar representações visuais adequadas à compreensão clara do conhecimento complexo detido.

Metodologia de Ensino e Avaliação

  • As aulas de 2h tem sempre um cariz teórico-prático. Em cada aula:
    • no início é sempre feito um balanço da aula anterior e discutidos os trabalhos ou questões propostos;
    • depois algum tempo é dedicado a levantar questões teóricas e a apresentar as diferentes aproximações e metodologias que suportam a sua resolução; esta parte, embora de carácter teórico, desenvolve-se sempre em forma de diálogo com os alunos.
    • continua-se a aula numa parte mais prática em que os alunos são convidados a pesquisar e fazer uma sintese do que há já escrito sobre o assunto; ou então a desenvolver experimentação de ferramentas ou implementação de algorimtos.

  • A avaliação é feita com base em trabalhos entregues pelos alunos, resolvidos foras das aulas mas defendidos perante a turma. Os trabalhos para avaliação são de dois tipos:
    • monografias, com sinteses dos temas pesquisados;
    • trabalhos de implementação.

Bibliografia recomendada

  • Flemming Nielson, Hanne Riis Nielson, Chris Hankin, "Principles of Program Analysis. Springer, 452 pages, ISBN 3-540-65410-0, 2005.

  • Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986.

  • Pittman & Peters, "The Art of Compiler Design: theory and pratice", Prentice-Hall, 1992.

  • Waite & Carter, "An Introduction to Compiler Construction", HarperCollin? College Publishers, 1993

  • Terrence Par, The Definitive Antlr Reference: Building Domain-Specific Languages, The Pragmatic Bookshelf, 2007


r6 - 18 Oct 2010 - 05:51:16 - PedroRangelHenriques
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