• Nenhum resultado encontrado

Os autores de [Chen et al., 2005] formalizam Linguagens de Modelagem de Domínio Específico e transformações no contexto de Computação Integrada a Modelo. Eles usam também a téc- nica chamada de ancoragem semântica, que se baseia em uma especificação transformacional de semântica, aplicada a uma plataforma de metamodelagem. Este trabalho emprega somente a abordagem operacional. Isto difere do nosso trabalho pelo fato de estarmos interessados também na especificação de mapeamentos entre sintaxe abstrata e domínios semânticos representando a abordagem denotacional. Além do mais, este trabalho provê semântica dinâmica como regras de transformações de grafos, diferenciando-se do nosso caso que é baseado em regras de reescrita. Outra grande diferença está em que nossa solução permite trabalhar, os nossos sistemas também permitem ser axiomáticos, pois estamos trabalhando com equações de reescrita tendo o uso de re- gras como opcional. Não necessariamente o conceito de estado deverá estar presente. Finalmente, essa abordagem ainda necessita de verificação de se dois programas resultantes de algum processo de transformação estão de acordo com suas semânticas.

O trabalho [Madl et al., 2006] aplica técnicas de verificação de modelos a sistemas embarca- dos de tempo real distribuídos usando transformações entre modelos para verificar propriedades chave de qualidade de serviço a sistemas baseados em componentes utilizado CORBA de tempo real. Neste caso, além das técnicas de verificação e de transformações, esse trabalho se assemelha ao nosso também pela introdução de um domínio semântico formal. Diversos conceitos com-

plexos são apresentados e utilizados, mas pode-se resumir que seu domínio semântico consiste de autômatos temporais. A principal diferença para o nosso trabalho é a falta de integração das plataformas e ferramentas, pois várias são utilizadas tais como DREAM (Distributed Real-Time Embedded Analysis Method), UPPAAL, KRONOs e outros mais. Em nosso caso, estamos orien- tados a resolver um problema específico de MDA. O domínio específico de sistemas embarcados foi uma instanciação do problema.

Existem dois trabalhos recentes que empregam Maude para formalizar modelos específicos de plataforma. [Boronat and Meseguer, 2009] adota Maude como uma metalinguagem, imple- mentando alguns operadores genéricos para lidar com modelos EMF, como um suporte para o padrão relacional QVT para transformações. Isto foi o pilar para a concepção da solução MO- MENT. Com as transformações declarativas direcionadas e a especificação algébrica, ferramentas formais podem ser usadas para raciocinar sobre algumas propriedades, tais como terminação e confluência [Boronat and Meseguer, 2008]. Estes aspectos também estão presentes em nosso tra- balho, encorajando-nos a adotar as capacidades da lógica de reescrita. Em [Romero et al., 2007], os autores mostram como Maude provê uma forma acurada de especificar modelos específicos de plataforma e metamodelos com o suporte para raciocinar e executar as especificações. Maude permite a implementação de algumas operações nos modelos, tais como inferência de tipos e sub- tipagem. Esses trabalhos são relevantes para mostrar que o conjunto de ferramentas do Maude são adequados na comunicação com artefatos dos modelos quando tendo essa responsabilidade.

[Gheyi et al., 2007] aborda o problema da falta de critérios na proposta de refatoramentos. Isto dificulta prova de corretude com relação à semântica e permite a introdução de novos erros. Assim, os autores formalizam uma semântica estática para Alloy e a codificam no Prototype Verifi- cation System (PVS). Com isso, prova-se que os refatoramentos não introduzem erros de tipo. Em [Gheyi et al., 2005], os mesmos autores vão além da semântica estática e propõem uma semântica formal com uma linguagem base, removendo-se todos os auxílios sintáticos (syntactic sugars), e uma noção de equivalência. Eles afirmam que uma transformação preserva semântica se a semân- tica estática e a semântica dinâmica forem preservadas. Além de usar leis propostas em PVS, também fazem uso da ferramenta Alloy Analyzer para transformar modelos que contenham sub- tipos em uma versão otimizada para o escopo do trabalho. Assim, temos guias de como provar que refatoramentos estão corretos. Consideramos os modelos abordados como possuindo algumas ca- racterísticas dessas plataformas, porém também podem enquadrar-se em uma visão independente

de plataforma.

Em [Li et al., 2005], os autores trazem as vantagens das transformações para o contexto dos programas funcionais, com um suporte específico para programadores Haskell. Eles construiram uma ferramenta chamada HaRe (Haskell Refactorer). A ferramenta se baseia na definição de um catálogo de refatoramentos definidos por eles mesmos. Eles vão além de experimentos com o lambda-calculus simples, como chegamos a realizar na concepção desse trabalho, porém as aplicações são apenas sintáticas, não havendo mecanismo algum de verificação de equivalência entre os códigos. Na verdade, devido ao alto grau de base formal que a programação funcional tem, consideramos que investigações sobre preservação de semântica ainda são muito pobres nesse domínio. Isto se deve ao fato de essas linguagens ainda não serem utilizadas de fato na indústria, gerando pouco interesse nesse tipo de investigação.

8

Considerações Finais

Este trabalho retomou um questionamento existente na comunidade MDA desde a concepção da sua idéia: a preservação de semântica entre os modelos envolvido nas transformações. Recorre- mos a modelos e estudos de caso tradicionais, além de uma parceria com um projeto (FORDE- SIGN) com contribuições científicas consolidadas e com forte interesse em aplicações industriais. Imediatamente após a caracterização dos resultados, pudemos aplicar o material existente no con- texto industrial no ramo de automação inteligente de condomínios residenciais (domótica).

Propusemos uma extensão da arquitetura MDA instanciada para o domínio transformações envolvendo modelos de sistemas concorrentes descritos em redes de Petri, mas que, pode ser apli- cada a outros contextos de transformações envolvendo modelos descritos em outras linguagens e paradigmas. Para que isto seja possível, convém ao leitor observar que, cada uma das atividades instanciação de módulos da MDA-Veritas são de livre escolha por parte do Provedor da Solução, requisitando apenas experiência e eficiência no uso de outras técnicas, padrões, linguagens e fer- ramentas que auxiliem na verificação como um todo. Sumarizando, para cada uma das atividades, temos as seguintes considerações:

1. Prover regras de boa formação em um ambiente estático. Esta atividade é inerente à constru- ção de qualquer compilador. Então, o custo de se instanciar esta atividade não está atrelado à nossa técnica especificamente, pois assumimos que modelos que possuam propriedades interessantes de serem verificadas já deveriam possuir estas regras explicitamente como re- quisito mínimo de sua formalização. Como há uma grande possibilidade de estas regras ainda não estarem definidas em diversos cenários da MDA, aconselhamos a quem instanciar a MDA-Veritas fazer uma complementação desse procedimento delegando ao ator Provedor da Solução.

2. Estender o metamodelo semântico. Esta atividade envolve conhecimentos de metamode- lagem e de semântica formal. Além do mais, o Provedor da Solução deve estar atento para metamodelos existentes que instanciem modelos formais nas plataformas onde os modelos semânticos poderão ser concretizados. É uma das atividades mais complexas da MDA- Veritas, porém se for delegada à um framework existente com uma linguagem formalizada de entrada através de um metamodelo, poderá ser bastante simplificada como aconteceu em nossa instanciação através do metamodelo disponível para a ferramenta Maude.