Proposta
Introdução
Esta proposta contém
os objetivos, atividades já realizadas, cronograma para o segundo
semestre e estrutura geral do trabalho de formatura, trabalho este baseado
em um estágio no Instituto de Pesquisas
Tecnológicas (IPT) iniciado no dia 10/05. O IPT é
uma empresa pública sem fins lucrativos vinculada à Secretaria
da Ciência, Tecnologia e Desenvolvimento Econômico do Estado
de São Paulo.
Projeto
Reprogramação
e Aperfeiçoamento da Ferramenta ProSpec para Desenvolvimento de
Aplicações Cliente/Servidor
Interessados
IPT e ITAUTEC
Descrição
do Projeto
Este projeto tem por objetivo
a reprogramação e o aperfeiçoamento de uma ferramenta
CASE para desenvolvimento de aplicações cliente/servidor,
capaz de gerar código em C++. Atualmente
existe uma ferramenta desenvolvida pela Itautec, o VRC, que não
foi desenvolvido usando técnicas de compilação. Ele
tem sido empregado com sucesso pela Itautec desde 1987 e em parceria entre
Itautec e IPT desde 1996, na geração de aplicações
de grande porte.
As aplicações
são descritas atualmente por meio das chamadas "planilhas", onde
os algoritmos são colocados usando um paradigma particular de estruturação
[citar bibliogr]. A planilhas descrevem processos e subprocessos, cada
um dividido em três fases consecutivas:
1)
Descrição da seleção dos dados
2)
Descrição das condições a serem testadas sobre
os dados selecionados, o que é feito por meio de Tabelas de Decisão
[1
Satoshi]
3)
Descrição das transformações a serem feitas
sobre os dados selecionados
Estão previstas as seguintes etapas para o projeto total:
-
Reprogramação do gerador de código a partir das planilhas
atuais.
-
Desenvolvimento de um interpretador de descrições de processo,
possibilitando o teste de descrições sem a necessidade dos
passos de geração de código em C++, sua compilação
e execução.
-
Geração de código para depuração em
tempo de execução, referenciando as descrições
dos processos.
-
Expansão dos comandos de acesso aos banco de dados, com referência
às ligações entre tabelas em lugar das equações
de junção ("join"), eliminando a necessidade de uso de SQL.
-
Expansão de comandos com sintaxe limitada.
-
Criação de interface gráfica para descrição
de processos a partir de padrões gráficos para cada comando
da linguagem e uso das variáveis e estruturas dos bancos de dados
graficamente a partir do dicionário de dados.
-
Elevação dos processos a nível de classes e orientação
a objetos, com herança e polimorfismos, possibilitando a criação
de bibliotecas reutilizáveis de descrições de processos.
-
Expansão dos comandos de acesso ao banco de dados a fim de permitir
que comandos de acesso referenciem tabelas explicitamente, sem necessidade
de criação e compilação prévias de visões
de usuários.
-
Introdução de especificações de paralelismo
decorrentes do novo paradigma de especificação de processos.
-
Substituição da interface atual de manipulação
dos itens do dicionário de dados de tipo texto para interface padrão
Windows.
-
Desenvolvimento de interface gráfica para projeto do banco de dados
a nível do Modelo de Entidades e Relacionamentos, possibilitando
a visão do banco de dados nesse nível.
-
Alteração do gerador de código para otimizar o código
gerado pelas Tabelas de Decisão; adicionar otimizações
locais e globais. Estas alterações têm por finalidade
tornar a utilização do VRC mais simples, aumentando ao mesmo
tempo seu poder de expressão, além de otimizar o código
gerado, resultando menor tempo para desenvolvimento de sistemas e programas
mais eficientes.
Meu Trabalho
O projeto desenvolvido pelo Prof. Setzer consiste em um analisador
Sintático chamado de ANASIN, parte de um projeto de modificação
e expansão de um gerador de aplicações denominado
VRC (
veja acima), cujo original foi desenvolvido
pela ITAUTEC. O ANASIN permitirá a descrição formal
das melhorias a serem introduzidas no VRC, e a construção
rápida de gerador de código para essas melhorias. Ele interpreta
um grafo sintático que representa uma gramática, cujo tipo
foi definido pelo Prof. Setzer em um de seus livros e é expresso
em forma de vetor, com um elemento para cada nó do grafo.
Meu trabalho é
desenvolver um programa gráfico em C++ para Windows intitulado de
Sintax Graph Desiner (SGD) que gera um arquivo contendo um grafo sintático,
onde cada nó deve armazenar seu nome, o tipo de nó, seu sucessor
e sua alternativa, cada linha do arquivo contendo um nó. O arquivo
será utilizado para gerar o vetor que é interpretado pelo
ANASIN. O usuário deve poder criar nós na tela, nomeá-los
e ligá-los entre si, criando um ou mais sub-grafos de um grafo sintático.
Cada nó pode ser do tipo Cabeça, Terminal, Não-Terminal
e nó Vazio. Os nós do tipo Cabeça são os que
começam os sub-grafos que compõem cada grafo. Os nós
Não-Terminais são os nós Cabeça quando se encontram
dentro de outro sub-grafo, eles representam os sub-grafos que já
foram ou serão definidos. Os nós Terminais representam nós
contendo um símbolo terminal da gramática, com as devidas
informações sobre seu conteúdo. E por último,
os nós "Vazios" que são nós terminais especiais. Todas
essas informações devem ser disponibilizadas graficamente,
e podem ser alteradas também.
Atividades Realizadas
1. Desenvolvimento do projeto em UML (Unified Modeling
Language).
2.
Estudo do ambiente Windows, funcionalidades e mensagens.
3.
Criação de uma janela, com funcionalidades básicas,
como um menubar.
4.
Criação da classe de nós, e respectiva saída.
5.
Introdução de novas funcionalidades (toolbar e scroolbar).
6.
Revisão e aprimoramento do código.
7.
Inserção de outras funcionalidades para o usuário
(alteração de posição, nome e tamanho dos nós)
Cronograma para o Segundo semestre
1. Contínua inserção de funcionalidades
para o usuário.
2.
Criação da classe de apontadores, e respectiva saída.
3.
Geração código de saída.
4.
Fase de testes e correção de erros.
5.
Criação de documentação.
Após a conclusão do SGD (Sintax Graph Desiner) serei
realocado para ajudar no desenvolvimento do ProSpec.
Equipe participante
Supervisão: Geraldo
Cecílio(IPT) e Prof. V. W. Setzer(Supervisor)
Analisador sintático:
Prof. V.W.Setzer e Joaquim Campo Salles
Analisador léxico
e gerador de código: Rosana Mayumi Morigaki
Interface gráfica
para o analisador sintático: Giuliano Luz Pigatti Caliari

Voltar
para a página inicial