Apresentando o Editor para o Ambiente de Programação
Visual para a Máquina Geométrica
Diego G. Prestes∗, Renata H. S. Reiser
1
Núcleo de Apoio a Projetos de Informática - NAPI
Escola de Informática UCPEL
Rua Félix da Cunha, 412 - 96010-000 - Pelotas - RS
{dprestes,reiser}@ucpel.tche.br
Abstract. This paper describes the partial results of the development of the editor for the Visual Programming Environment of the Geometric Machine Model,
including the algebraic process constructors. This environment is constructed
based on the specification of the visual programming language for the Geometric Machine Model. The traditional techniques of textual programming language are combined with the construction of grafic/visual environments in order
to improve the programming in the Geometric Machine and make easy the use of
parallel techniques. It is presented elementary processes, parallel and sequential products, deterministic and non-deterministic sums.
Resumo. Este artigo descreve os resultados parciais no desenvolvimento do
editor para o Ambiente de Programação Visual do Modelo de Máquina
Geométrica, incluindo os construtores algébricos de processos. Este ambiente
é construı́do com base na especificação da linguagem visual para o modelo de
Máquina Geométrica. As técnicas tradicionais da programação textual foram
combinadas com as construções visuais para incentivar a programação na
Máquina Geométrica e tornar mais fácil o uso de técnicas de programação paralela. São apresentados os processos elementares e os contrutores de processos: produtos sequencial e paralelo, somas determinı́stica e não-determinı́stica.
1. Introdução
Este artigo introduz a etapa de implementação do editor para o Ambiente de Programação
para o Modelo de Máquina Geométrica (APV-MG).
O modelo de Máquina Geométrica (MG) é uma máquina abstrata, com estados
e processos possivelmente infinitos e rotulados por posições de um espaço geométrico,
com tempo de acesso constante. Este modelo foi desenvolvido com o objetivo de prover
representação para algoritmos da Computação Cientı́fica, com ênfase na concorrência
sı́ncrona e no conflito de acesso à memória. O modelo consiste numa generalização do
modelo de automatos celulares, no sentido em que permite que as transições de estados possam ser executadas pela aplicação de um conjunto enumerável de funções locais,
identificadas pela posição de memória alterada e denominadas processos elementares.
Resumidamente, dentre as caracterı́sticas relevantes do modelo MG, destacam-se:
1. distribuição espacial da memória e dos processos;
2. modelagem de computações envolvendo sequencialização e paralelismo sı́ncrono;
3. interpretação da soma determinı́stica, incluindo testes computacionais;
∗
Bolsa PIBIC/CNPq
Figure 1: Tela do Editor
4. não-determinismo caracterizado pelo conflito no acesso a memória;
5. interpretação de construtores recursivos, baseada na modelagem indutiva dos processos e dos construtores de processos.
Baseada na abordagem proposta no projeto GENGED [Bardohl and Ermel, 2001],
a especificação da Linguagem Visual para a Máquina Geométrica
(LVMG) [Reiser et al., 2003e] inclui a especificação do alfabeto visual e da gramática
visual para a linguagem LVMG com ênfase nas construções recursivas. Para tal, são
consideradas dois tipos de sintaxe [Erwig, 1998]: a sintaxe abstrata (SA), responsável
pela estruturação lógica das expressões gráfica (diagramas) da linguagem visual e a
sintaxe concreta (SC), orientando a definição do seu layout para manipulação do usuário.
Os resultados alcançados [Reiser et al., 2003a] fundamentam a construção do editor de processos e dos construtores de processos para o ambiente APV-MG. O uso
das técnicas tradicionais da programação textual foram combinadas com as construções
visuais [Chang et al., 1986], visando incentivar a programação na Máquina Geométrica e
tornar mais fácil o uso de técnicas de programação paralela. O ambiente, além de permitir
a programação com expressões visuais, também provê a especificação semântica de um
processo de forma bi-dimensional.
2. Editor para o Ambiente APV-MG
Para o desenvolvimento do editor está sendo utilizado a linguagem Python, junto com
sua biblioteca gráfica wxPython, em especial o módulo OGL para a criação dos processos. Através da Figura 1 é possı́vel visualizar a construção da tela do editor. Podemos
identificar 5 áreas que formam a interface do editor que são:
• Barra de Menus: através das funções wxMenu() e wxMenuBar() é possı́vel construir as barras de menus visualizadas;
• Barra de Ferramentas: construı́da através da função wxPanel() e possibilita a
chamada de algumas funções do programa como salvar e abrir algum processo
criado e também tem acesso aos dados especı́ficos de cada processo, podendo
serem alterados caso necessário;
• Barra dos Botões: também construı́da através da função wxPanel() e que disponibiliza os botões para a construção dos processos do Modelo MG;
• Barra de Status: utilizando a função CreateStatusBar() para dar dicas ao usuário;
• Área de Trabalho: funciona em conjunto com duas funções, primeiramente foi criado uma área para utilização de barras de rolagem wxScrolledWindow() e dentro
desta área foi então inserido a área onde serão construı́dos os objetos do módulo
OGL, através da função wxShapeCanvas().
Figure 2: Processo Sequencial
Nas próximas seções mostra-se como são construidos os processos e os construtores de processos no editor do ambiente APV-MG.
3. Processo Elementar
Primeiramente foi estudado e desenvolvido o processo elementar através da função wxDrawnShape(). Com a utilização desta função tem-se a possibilidade de criar objetos
de qualquer formato, apenas indicando as coordenadas para criação de linhas. Pode-se
também, inserir objetos já definidos na biblioteca como quadrados e cı́rculos, incluindo a
formatação de objetos mais complexos.
Para a criação do processo elementar também foram utilizados textos, com a
função DrawText(), indicando as informações pertinentes ao processo, como seu valor
e a posição afetada. Há também dados do processo que não são visı́veis aos usuário, mas
que servem para fazer determinados controles dentro do editor.
A partir da Figura 1, verifica-se o resultado da construção de um processo elementar. Também é possı́vel identificar os dois dados visı́veis do processo, representando
a operação indicada pela letra ”d” rotulada pela posição de memória ”0”.
4. Processo Sequencial
Para a construção do produto sequencial e dos demais construtores compostos por mais
de um objeto, foi preciso criar um novo tipo de objeto, que integrasse todos os atributos e
propriedades de todos os objetos do novo processo em um só objeto.
O objeto envelope é um objeto em formato de retângulo transparente, utilizado
para o agrupamento dos objetos. A partir da definição deste objeto foi possı́vel identificar
o tamanho e a posição que os objetos agrupados ocupam, para posteriormente determinar
o tamanho do objeto envelope resultante. Logo após, uma lista, criada a partir de uma
função desenvolvida, é capaz de armazenar a informação de quais são os objetos que
pertencem a esse novo objeto envelope, incluindo também o tipo de dado associado. Além
disso, é possı́vel armazenar a informação sobre quais as posições de memória afetados
pelos objetos desse envelope e, em seguida, esses dados sao disponibilizados junto com
objeto envelope, para uso futuro.
No final da construção do novo processo, o objeto envelope estará acessı́vel no
editor, fazendo com que os outros objetos que o compõem possam ser acessados através
dele. Também se faz necessário o uso de uma função de movimentação do objeto en-
Figure 3: Produto Paralelo[a]
Soma Não-Determinı́stica[b]
velope, possibilitando o movimento do agrupamento e, por consequência, de todos os
objetos que o compõe.
A definiçao de um processo sequencial obedece uma ordem de execução prédefinida, visualmente disponı́vel para o usuário no sentido da esquerda para a direita.
Na Figura 2, pode-se visualizar um exemplo de produto sequencial aplicado a processos
elementares. Nesse caso, primeiro ele executa a operação ”d” sobre a posição de memória
”0” e logo após, executa a mesma operação sobre a posição ”1”.
5. Produto Paralelo e Soma Não-Determinı́stica
O Produto Paralelo e a Soma Não-Determinı́stica por serem bastante semelhantes na sua
representação, foram desenvolvidos simultaneamente, respeitando algumas modificações
referentes a definição de cada um deles. Eles trabalham com a mesma idéia do produto
sequencial, utilizando o objeto Envelope para agrupá-los, porém possuem mais atributos
para serem, adequadamente, representados.
Esses processos se diferenciam primeiramente pelo forma como são computados
os dados: o produto paralelo modelando a concorrência sı́ncrona e, a soma não determinı́stica, utilizando o conflito de acesso aos dados. Para tal, o modelo MG define uma
função posição, capaz de controlar as posições de memória afetadas após sua execução.
Na implementação do ambiente esta informação também está disponı́vel, regulando a permissao para execução destas operações. Para isso é feito uma verificação de
conflito dos valores de memória afetados pelos objetos que irão compor cada um desses
processos. Caso haja um conflito de memória só poderá ser executada uma escolha nãodeterminı́stica. Caso contrário, quando não ocorre um conflito, o produto paralelo pode
ser aplicado.
Baseadas nestas restrições, quando não for permitida a execução de uma destas
operações, o programa retornará uma mensagem de erro ao usuário, indicando que não é
possı́vel construir o processo a partir do construtor escolhido.
Não havendo nenhum problema, a criação do novo processo é obtida de forma
satisfatória. Foram agregados novos objetos geométricos para cada tipo de processo, relacionados com a notação introduzida no modelo MG, que são as barras laterais. Elas se
diferem e dependem do tipo do processo, viabilizando a distinção visual na representação
destes processos, conforme mostra a Figura 3.
Figure 4: Soma Determinı́stica
6. Soma Determinı́stica
Utiliza-se também um objeto envelope para modelagem, no editor do ambiente
APV-MG, do construtor soma determinı́stica, incluindo a modelagem dos testes
computacionais[Reiser, 2002]: o existencial, o universal e a versão determinı́stica, onde
ambos coincidem.
O objeto gráfico representando um teste computacional é definido da mesma
forma que o processo elementar, utilizando as mesmas funções do módulo gráfico.
Dentro da função de criação do processo soma determinı́stica primeiramente é
necessário verificar se estão selecionados objetos escolhidos pelo usuário, validando-se
desta forma sua construção. Caso haja alguma construção mal definida, a função de
criação é abortada e uma mensagem de alerta é exibida para o usuário. Caso constrário,
faz-se o agrupamento dos objetos selecionados, para então ser efetivada a criação do
objeto envelope, agregando informação sobre posição e tamanho.
Na Figura 4, é possı́vel visualizar o resultado da criação da soma determinı́stica
aplicada a processos elementares, utilizando os dois objetos criados, o objeto do teste
computacional e o objeto de término do processo.
7. Conclusão
Este trabalho mostra que o ambiente APV-MG em desenvolvimento pode incentivar a prática da programação, utilizando técnicas de sincronização, modelagem da
memória (compartilhada) e do conflito de acesso. Alguns dos importantes benefı́cios
do uso das representações visuais/espaciais em modelo computacionais que envolvam
programação paralela e distribuı́da são: o número de argumentos (aridade) envolvidos na
definição dos processos algébricos, as (possı́veis) definições recursivas dos construtores, a
composição funcional, as computações paralelas e não-determinı́sticas relacionadas com
a sincronização de processos, e finalmente, a distribuição espacial dos processos e estados
computacionais.
Entende-se que estas caracterı́sticas da programação visual que estão sendo aplicadas na construção do ambiente APV-MG, sejam relevantes para tornar a programação
no modelo MG mais acessı́vel aos usuários em geral, possibilitando sua aplicação na
Computação Cientı́fica, em especial no desenvolvimento de algoritmos da Matemática
Intervalar, da Álgebra Linear e de Processos Estocásticos.
Na fase de modelagem do ambiente visual, tem-se como primeira meta a definição
da linguagem visual, incluindo as especificações do alfabeto e da gramática e contem-
plando análise da sintaxe abstrata e concreta. Este trabalho apresenta os resultados parciais obtidos com a introdução e a implementação do editor do alfabeto e da gramática, incluindo a criação da interface do ambiente APV-MG. Foi estudada e aplicada a biblioteca
gráfica wxPython, possibilitando manipulação de diagramas, definição e construção de
funções de acesso ao ambiente, criação e redimensionamento de objetos, interação e uso
de agentes, podem ser facilmente desenvolvidas nesta linguagem (livre e multiplataforma)
e disponibilizados no ambiente.
Na implementação do editor gráfico para o alfabeto e para a gramática foram
utilizadas estratégias da programação visual e as bibliotecas disponı́veis para a linguagem
Python. Na construção do ambiente aplicam-se diferentes classes: (1) MyApp (aplica a
função wxApp para a inicialização do programa) (2) MyFrame (usa as funções wxFrame,
wxPanel)(3) MyShape (geração e inserção de objetos gráficos)(4) MyEvent (manipulação
de eventos)(5) Classes dos Desenhos (contém as definições para desenho dos processos).
A modelagem do alfabeto viabilizou a definição e a construção do editor de processos e a implementação das regras para o editor da gramática, envolvendo todos os construtores, como produto paralelo e sequencial, soma determinı́stica e não-determinı́stica.
Por fim, salienta-se que este ambiente de programação em desenvolvimento deverá suportar aplicações voltadas ao desenvolvimento de algoritmos da Computação
Cientı́fica, considerando-se a diversidade de modelagens que resultam em novas
versões do modelo MG, incluindo principalmente as aplicações na Matemática Intervalar [Reiser et al., 2003d, Reiser et al., 2003b, Reiser et al., 2003c].
References
Bardohl, R. and Ermel, C. (2001). Visual specification and parsing of a statechart variant
using genged. In Proc. Symposium on Visual Languages and Formal Methods, pages
5–7.
Chang, S.-K., Ichikawa, T., and Ligomenides, P. A. (1986). Visual Languages. Plenum
Press, New York.
Erwig, M. (1998). Abstrac sintax and semantics of visual languages. 9. to appear.
Reiser, R. (2002). A máquina geométrica - um modelo computacional para concorrência
e não-determinismo usando como estrutura os Espaços Coerentes. PhD thesis,
CPGCC/UFRGS - Porto Alegre.
Reiser, R., Cardoso, M., Costa, A., and Dimuro, G. (2003a). Utilizando a programação visual no modelo de máquina geométrica. In CLEI2003-XXIX Conferência Latinoamericana de Informática, pages 1–10. Universidad Major San Andrés.
Reiser, R., Costa, A., and Dimuro, G. (2003b). The interval geometric machine. In
Numerical Algorithms, volume 34, pages 1–10. Kluwer, Dordrecht.
Reiser, R., Costa, A., and Dimuro, G. (2003c). O modelo de máquina geométrica intervalar. In TEMA, pages 109–118.
Reiser, R., Costa, A., and Dimuro, G. (2003d). A programming language for the interval geometric machine model. In Eletronic Notes in Theoretical Computer Science,
volume 84, pages 1–12.
Reiser, R., Costa, A., Dimuro, G., and Cardoso, M. (2003e). Specifying the geometric machine visual language. In IEEE Symposium on Visual Languages and Formal
Methods, pages 1–3.
Download

Apresentando o Editor para o Ambiente de Programação Visual