Visão geral Contrato de Transformação [email protected] Contrato de Transformação 1 Origens • Design by Contract • Definição e especificação formal, precisa e verificável dos componentes do sistema • Baseado na idéia de obrigações e benefícios • Obrigações • Pré-condições antes de executar uma rotina • Garantir pós-condições após uma rotina • Manter uma propriedade durante toda a rotina (invariante) • Benefício • Não é necessário efetuar verificações internas a rotina [email protected] Contrato de Transformação 2 Origens • Design by Contract • Formalização das obrigações e benefícios • Obrigações devem ser definidas na fase de Design • Algumas linguagens dão suporte a assertivas para garantir o contrato [email protected] Contrato de Transformação 3 Subindo o nível Contrato de transformação = Design by Contract no nível de modelos Modelo de entrada Transformação Modelo de saída Pré condições Condições da transformação Pós condições [email protected] Contrato de Transformação 4 O que é? • Uma especificação sobre o que uma transformação de modelo deve fazer • Deve existir uma relação entre o metamodelo de entrada e de saída, que é definido como o metamodelo de transformação • União disjunta entre os metamodelo de entrada, metamodelo de saída e relações entre eles • Para validar a transformação, um conjunto de invariantes são aplicados sobre o modelo de transformação, que devem ser respeitados [email protected] Contrato de Transformação 6 Passos para a transformação • Passos • Carregar o modelo de entrada • Validar o modelo de entrada carregado • Transformar do modelo de entrada para o modelo de saída • Validar o modelo de transformação e de saída • Gerar a sintaxe concreta do modelo de saída [email protected] Contrato de Transformação 8 Passos para a transformação • Benefícios • Padronização de como deve ocorrer a transformação • Garantia que os invariantes são respeitados (passos de validação) [email protected] Contrato de Transformação 9 Uso dos invariantes • Maior garantia de qualidade Designer da linguagem de modelagem Define sintaxe e semântica da linguagem de modelagem Desenvolvedor da transformação de modelos Define a relação entre duas ou mais linguagens de modelagem (......) Modela a aplicação e aplica o transformador ao modelo Usuário do transformador de modelos [email protected] Contrato de Transformação 10 Uso dos invariantes • Maior garantia de qualidade Designer da linguagem de modelagem Define sintaxe e semântica da linguagem de modelagem Desenvolvedor da transformação de modelos Define a relação entre duas ou mais linguagens de modelagem (......) Modela a aplicação e aplica o transformador ao modelo Usuário do transformador de modelos [email protected] Contrato de Transformação 11 Uso dos invariantes • Maior garantia de qualidade Designer da linguagem de modelagem Define sintaxe e semântica da linguagem de modelagem Desenvolvedor da transformação de modelos Define a relação entre duas ou mais linguagens de modelagem (......) Modela a aplicação e aplica o transformador ao modelo Usuário do transformador de modelos [email protected] Contrato de Transformação 12 Uso dos invariantes • Maior garantia de qualidade Designer da linguagem de modelagem Define sintaxe e semântica da linguagem de modelagem Desenvolvedor da transformação de modelos Define a relação entre duas ou mais linguagens de modelagem (......) Modela a aplicação e aplica o transformador ao modelo Usuário do transformador de modelos [email protected] Contrato de Transformação 13 Uso dos invariantes • Maior garantia de qualidade Designer da linguagem de modelagem Define sintaxe e semântica da linguagem de modelagem Desenvolvedor da transformação de modelos Define a relação entre duas ou mais linguagens de modelagem (......) Modela a aplicação e aplica o transformador ao modelo Usuário do transformador de modelos [email protected] Contrato de Transformação 14 Uso dos invariantes • Maior garantia de qualidade Designer da linguagem de modelagem Define sintaxe e semântica da linguagem de modelagem Desenvolvedor da transformação de modelos Define a relação entre duas ou mais linguagens de modelagem (......) Modela a aplicação e aplica o transformador ao modelo Usuário do transformador de modelos [email protected] Contrato de Transformação 15 Uso dos invariantes • Maior garantia de qualidade Designer da linguagem de modelagem Define sintaxe e semântica da linguagem de modelagem Desenvolvedor da transformação de modelos Define a relação entre duas ou mais linguagens de modelagem (......) Modela a aplicação e aplica o transformador ao modelo Usuário do transformador de modelos [email protected] Contrato de Transformação 16 Uso dos invariantes • Maior garantia de qualidade Designer da linguagem de modelagem Define sintaxe e semântica da linguagem de modelagem Desenvolvedor da transformação de modelos Define a relação entre duas ou mais linguagens de modelagem (......) Modela a aplicação e aplica o transformador ao modelo Usuário do transformador de modelos [email protected] Contrato de Transformação 17 Padrão de projeto Contrato de Transformação [email protected] Contrato de Transformação 18 Diagrama de classe [email protected] Contrato de Transformação 19 Diagrama de seqüência [email protected] Contrato de Transformação 20 Diagrama de seqüência [email protected] Contrato de Transformação 21 Implementação do padrão de projeto TCLib [email protected] Contrato de Transformação 22 Diagrama de classe [email protected] Contrato de Transformação 23 Exemplo de uso TCLib [email protected] Contrato de Transformação 27 Metamodelo UML [email protected] Contrato de Transformação 28 Metamodelo UML [email protected] Contrato de Transformação 29 Código-fonte (metamodelo) [email protected] Contrato de Transformação 30 Invariantes [email protected] Contrato de Transformação 31 Parser [email protected] Contrato de Transformação 32 Metamodelo conjunto [email protected] Contrato de Transformação 33 Invariantes [email protected] Contrato de Transformação 34 Código Java para a transformação [email protected] Contrato de Transformação 35 Código Java para a transformação [email protected] Contrato de Transformação 36 Visão geral Projetos [email protected] Contrato de Transformação 37 UMLtoSQL • Transformador de diagramas de classe UML para SQL • Transformação baseada no livro “MDA Explained” • Validação por invariantes nos três domínios • Geração de comandos em SQL para criação de tabelas [email protected] Contrato de Transformação 38 Metamodelo UML [email protected] Contrato de Transformação 39 Metamodelo SQL [email protected] Contrato de Transformação 40 UMLtoJava • Transformador de diagramas de classe UML para código-fonte em Java • Validação por invariantes nos três domínios • Geração de código-fonte em Java (classes com atributos e seus getters/setters) [email protected] Contrato de Transformação 41 Metamodelo Java [email protected] Contrato de Transformação 42 Trabalho a ser entregue Projetos [email protected] Contrato de Transformação 43 Trabalho a ser feito • Consertar alguns problemas no transformador • Melhorar alguns aspectos do transformador • Implementar um elemento de modelagem não suportado • O trabalho deve compilar em três diagramas de classe • Blog.xmi • Meeting.xmi • Breakfast.xmi [email protected] Contrato de Transformação 44 Erro/Melhoria no UMLtoSQL • Permitir que o código resultante funcione um um banco de dados relacional • Adicionar as “constraints” de foreign key no pretty-print • MySQL: ... FOREIGN KEY (fk_id) REFERENCES OtherTable(column_id) ... • Consertar os invariantes inválidos [email protected] Contrato de Transformação 45 Erro/Melhoria no UMLtoJava • Permitir que o código resultante seja compilável • Falta adicionar o código referente aos setters gerados • Adicionar código nos getters gerados • Consertar os invariantes inválidos [email protected] Contrato de Transformação 46 Implementação de um novo elemento • Adicionar suporte a classes associativas • Requer mudanças em todo o processo de transformação • • • • Criação de invariantes nos três domínios Carregar esses elementos durante “parse” Criar a regra de transformação e implementá-la Atualizar o “pretty-print” [email protected] Contrato de Transformação 47 Dúvidas [email protected] Contrato de Transformação 48