MetaCG - Uma Abordagem Baseada em Metamodelos para a Escrita de Geradores de Código.
Por Márcio de Carvalho Saraiva
(marcio@dsc.ufcg.edu.br)
Um gerador de geradores de código? Um trabalho de mestrado no Laboratório de Práticas de Software (SPLab) está inserido na linha de pesquisa de desenvolvimento dirigido por modelos. Nessa linha, podemos ver o código sendo gerado automaticamente ou parcialmente a partir de transformações de modelo e transformações textuais. Confira na matéria deste mês o que o SPLab anda pesquisando para facilitar o desenvolvimento de código.

O trabalho de mestrado do aluno Anderson Ledo (egresso do Grupo PET Computação), sob a orientação do Prof. Franklin Ramalho, está inserido na linha de pesquisa de desenvolvimento dirigido por modelos. Basicamente, essa linha de pesquisa investiga métodos de produção de software cujo foco do desenvolvimento encontra-se nas fases de modelagem ao invés das fases de codificação. Nessa abordagem, o código é gerado automaticamente ou parcialmente a partir de transformações de modelo e transformações textuais.

O projeto conta também com um ano de colaboração de um aluno de graduação, Natã Melo (integrante do Grupo PET Computação), que ajudou na escrita de artigos e na produção de alguns módulos do suporte ferramental.

A pesquisa é realizada no Laboratório de Práticas de Software (LPS), antigo GMF, da Unidade Acadêmica de Sistemas e Computação da UFCG, no qual são estudadas várias linhas de pesquisa em engenharia de software. Dentre elas estão os métodos formais, testes de software, evolução de software e desenvolvimento de software dirigido por modelos.

A identificação do problema surgiu a partir de outro trabalho de mestrado orientado pelo Prof. Franklin. O mestrando em questão era Waldemar Pires Neto (atualmente, doutorando da Universidade de Namur – Bélgica, e também egresso do Grupo PET Computação). Nesse, o objetivo foi o de gerar automaticamente testes de unidade para verificação de conformidade estrutural entre especificações de software em UML e sua implementação correspondente na linguagem Java.

Para esse projeto, foi necessário escrever um gerador de código para a linguagem Java. Devido ao número de detalhes que a linguagem possui, foram criadas algumas estratégias para gerenciar a complexidade do gerador de código de forma que tivesse um código fácil de manter. De outro modo, tornar-se-ia facilmente um “código macarrão”. 

Depois de uma grande revisão bibliográfica, foi percebido que não havia métodos para facilitar a escrita de transformações de modelo para texto (as que foram usadas para escrever o gerador). Além disso, as transformações que são encontradas na comunidade de Desenvolvimento Dirigida a Modelos (DDM) apresentavam, em sua maioria, um código difícil de entender e modificar, muitas vezes por causa de decisões de projeto inadequadas e codificação, principalmente no âmbito da complexidade inerente à atividade.

Como esse é um problema comum à escrita de geradores de código para várias linguagens, o grupo resolveu “atacar” esse problema como um trabalho de mestrado, no qual poder-se-ia elaborar uma solução independente da linguagem para a qual estivesse sendo escrito o gerador de código, além de avaliar a sua aplicação em cenários variados.

Gerador de Código

A solução é uma abordagem em que grande parte das transformações de modelo para texto são geradas (semi)automaticamente. Dada a descrição de uma linguagem em forma de metamodelo, o método criado utiliza as informações estruturais desse metamodelo para gerar as transformações de modelo para texto. Resumindo: um gerador de geradores de código.

Com o trabalho concluído, espera-se que a criação de geradores de código seja facilitada e que, em breve, seja possível dispor de um conjunto desses para uso de maneira modular, dando suporte ao processo de DDM. Da mesma forma como é feito pelos repositórios de metamodelos que já existem.

A ideia foi bem recebida no I Workshop Brasileiro de Desenvolvimento de Software Dirigido por Modelos (WB-DSDM), no qual foi apresentado o trabalho "Guidelines for Improving Model To Text Transformations", que demonstra parte das estratégias criadas pelo grupo para resolver o problema. O projeto MetaCG também espera a avaliação de outro artigo submetido ao Journal of Practices and Experiences, para o qual o trabalho foi descrito de forma mais abrangente.

Atualmente, o MetaCG está em fase de conclusão do aparato ferramental e início da sua avaliação. A previsão de conclusão é agosto de 2011.

Interessado pela pesquisa? Quer saber mais? Vá ao SPlab (perto da lanchonete de Marcos), entre em contato por meio dos telefones (83) 3310-1430 e (83) 3310-1429 ou procure Anderson (anderson.ledo@gmail.com) ou o professor Franklin (franklin@dsc.ufcg.edu.br) do laboratório.