A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Contrato de Transformação

Apresentações semelhantes


Apresentação em tema: "Contrato de Transformação"— Transcrição da apresentação:

1 Contrato de Transformação
Visão geral Contrato de Transformação Contrato de Transformação

2 Contrato de Transformação
CassioIcaois 05/10/10 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 Foda-se

3 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

4 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

5 Contrato de Transformação
Metamodelos Modelo que define um modelo Possui as informações estruturais necessárias para definir um modelo de seu tipo Sintaxe abstrata que define uma linguagem de modelagem Definido na forma de um diagrama de classes UML Modelos de entrada e saída utilizados são definidos por metamodelos Contrato de Transformação

6 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

7 Comparação com um compilador
CassioIcaois 05/10/10 Comparação com um compilador Compilador Análise semântica / type - checking geração de código parse pretty-print código (destino) programa Transformação de modelos Análise semântica / validação dos invariantes type - checking do metamodelo p’ modelo gerado como instância do metamodelo de destino c’ modelo gerado na sintaxe concreta da linguagem destino c modelo de entrada linguagem de modelagem sintaxe concreta de L sintaxe abstrata de L p instância do metamodelo transformação de modelo Contrato de Transformação Foda-se

8 Passos para a transformação
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

9 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

10 Contrato de Transformação
CassioIcaois 05/10/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 O uso de invariantes aplicado no contrato de transformação garante que eles sejam atendidos para que a transformação ocorra. Nesse caso, temos uma garantia de que a qualidade da transformação é maior pois validamos o seu resultado com base em restrições referentes aos domínios dos quais a transformação pertence. Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação Foda-se

11 Contrato de Transformação
CassioIcaois 05/10/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 No primeiro caso, vemos que o uso dos invariantes, durante o desenvolvimento, permite que o desenvolvedor encontre falhas em seu trabalho (durante a especificação das regras de transformação) ... Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação Foda-se

12 Contrato de Transformação
CassioIcaois 05/10/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 ... ou no do designer da linguagem de modelagem (uma vez que pode existir um erro na especificação realizada). Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação Foda-se

13 Contrato de Transformação
CassioIcaois 05/10/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 Assim o designer pode verificar suas especificações e definir novos invariantes (que, através de exemplos, podem ser validados). Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação Foda-se

14 Contrato de Transformação
CassioIcaois 05/10/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 Em outro caso, o usuário, ao utilizar o transformador em um modelo feito pelo mesmo .... Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação Foda-se

15 Contrato de Transformação
CassioIcaois 05/10/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 ... pode encontrar falhas em sua modelagem, especificadas pelos invariantes, e/ou ... Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação Foda-se

16 Contrato de Transformação
CassioIcaois 05/10/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 ... encontrar falhar no transformador (que devem ser reportadas ao desenvolvedor para correção). Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação Foda-se

17 Contrato de Transformação
CassioIcaois 05/10/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 Assim, com uso de invariantes, permitimos aumentar a qualidade da transformação uma vez que permite identificar falhas no nível atual e nos anteriores em qualquer momento de seu uso, seja durante ou após o desenvolvimento. Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação Foda-se

18 Contrato de Transformação
Padrão de projeto Contrato de Transformação Contrato de Transformação

19 Contrato de Transformação
Diagrama de classe Contrato de Transformação

20 Contrato de Transformação
Diagrama de seqüência Contrato de Transformação

21 Contrato de Transformação
Diagrama de seqüência Contrato de Transformação

22 Contrato de Transformação
Implementação do padrão de projeto TCLib Contrato de Transformação

23 Contrato de Transformação
Diagrama de classe Contrato de Transformação

24 Implementando um transformador
Dicas de como fazer um transformador Implementando um transformador Contrato de Transformação

25 Contrato de Transformação
Passos Entenda os domínios de entrada e saída Modelo os domínios (diagrama de classes) Defina os invariantes de cada domínio (OCL) Modele o domínio da transformação (relação entre os metamodelos) Defina os invariantes do domínio da transformação Contrato de Transformação

26 Contrato de Transformação
Passos Implemente os domínios de entrada e saída Caso não queira implementar o ‘parse()’, faça um modelo por código e use nos testes Não implemente o ‘prettyPrint()’ do domínio de saída Implemente os validadores para os invariantes OCL (domínio de entrada e saída) Implemente o domínio da transformação Implemente o validador para os invariantes OCL(domínio da transformação) Implemente o ‘prettyPrint()’ Contrato de Transformação

27 Contrato de Transformação
Exemplo de uso TCLib Contrato de Transformação

28 Contrato de Transformação
Metamodelo UML Contrato de Transformação

29 Contrato de Transformação
Metamodelo UML Contrato de Transformação

30 Código-fonte (metamodelo)
Contrato de Transformação

31 Contrato de Transformação
Invariantes Contrato de Transformação

32 Contrato de Transformação
Parser Contrato de Transformação

33 Contrato de Transformação
Metamodelo conjunto Contrato de Transformação

34 Contrato de Transformação
Invariantes Contrato de Transformação

35 Código Java para a transformação
Contrato de Transformação

36 Código Java para a transformação
Contrato de Transformação

37 Contrato de Transformação
Visão geral Projetos Contrato de Transformação

38 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

39 Contrato de Transformação
Metamodelo UML Contrato de Transformação

40 Contrato de Transformação
Metamodelo SQL Contrato de Transformação

41 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

42 Contrato de Transformação
Metamodelo Java Contrato de Transformação

43 Contrato de Transformação
Trabalho a ser entregue Projetos Contrato de Transformação

44 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

45 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 Contrato de Transformação

46 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

47 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

48 Contrato de Transformação
Dúvidas ? Contrato de Transformação


Carregar ppt "Contrato de Transformação"

Apresentações semelhantes


Anúncios Google