430 likes | 496 Views
Visão geral. Contrato de Transformação. 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
E N D
Visão geral Contrato de Transformação Contrato de Transformação
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 Contrato de Transformação
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 Contrato de Transformação
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 Contrato de Transformação
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 Contrato de Transformação
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 Contrato de Transformação
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) Contrato de Transformação
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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação
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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação
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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação
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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação
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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação
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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação
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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação
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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação
Padrão de projeto Contrato de Transformação Contrato de Transformação
Diagrama de classe Contrato de Transformação
Diagrama de seqüência Contrato de Transformação
Diagrama de seqüência Contrato de Transformação
Implementação do padrão de projeto TCLib Contrato de Transformação
Diagrama de classe Contrato de Transformação
Exemplo de uso TCLib Contrato de Transformação
Metamodelo UML Contrato de Transformação
Metamodelo UML Contrato de Transformação
Código-fonte (metamodelo) Contrato de Transformação
Invariantes Contrato de Transformação
Parser Contrato de Transformação
Metamodelo conjunto Contrato de Transformação
Invariantes Contrato de Transformação
Código Java para a transformação Contrato de Transformação
Código Java para a transformação Contrato de Transformação
Visão geral Projetos Contrato de Transformação
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 Contrato de Transformação
Metamodelo UML Contrato de Transformação
Metamodelo SQL Contrato de Transformação
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) Contrato de Transformação
Metamodelo Java Contrato de Transformação
Trabalho a ser entregue Projetos Contrato de Transformação
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 Contrato de Transformação
Erro/Melhoria no UMLtoSQL • Permitir que o código resultante funcione um um banco de dados relacional • Adicionar as “constraints” de foreignkey no pretty-print • MySQL: ... FOREIGN KEY (fk_id) REFERENCES OtherTable(column_id) ... • Consertar os invariantes inválidos Contrato de Transformação
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 Contrato de Transformação
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” Contrato de Transformação
Dúvidas ? Contrato de Transformação