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

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

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

Apresentações semelhantes


Apresentação em tema: "Contrato de Transformação Visão geral 1 de Transformação."— Transcrição da apresentação:

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

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

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

4 Subindo o nível Contrato de transformação = Design by Contract no nível de modelos 4 Modelo de entrada Modelo de saída Transformação Pré condições Pós condições Condições da transformação de Transformação

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

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

7 Comparação com um compilador 7 programa código (destino) Análise semântica / type - checking parsepretty-print geração de código Compilador Transformação de modelos c modelo de entrada linguagem de modelagem sintaxe concreta de L sintaxe abstrata de L p instância do metamodelo transformação de modelo 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 de Transformação

8 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 8 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) 9 de Transformação

10 Uso dos invariantes Maior garantia de qualidade 10 Designer da linguagem de modelagem Desenvolvedor da transformação de modelos Usuário do transformador de modelos Define sintaxe e semântica da linguagem de modelagem Define a relação entre duas ou mais linguagens de modelagem Modela a aplicação e aplica o transformador ao modelo de Transformação

11 Uso dos invariantes Maior garantia de qualidade 11 Designer da linguagem de modelagem Desenvolvedor da transformação de modelos Usuário do transformador de modelos Define sintaxe e semântica da linguagem de modelagem Define a relação entre duas ou mais linguagens de modelagem Modela a aplicação e aplica o transformador ao modelo de Transformação

12 Uso dos invariantes Maior garantia de qualidade 12 Designer da linguagem de modelagem Desenvolvedor da transformação de modelos Usuário do transformador de modelos Define sintaxe e semântica da linguagem de modelagem Define a relação entre duas ou mais linguagens de modelagem Modela a aplicação e aplica o transformador ao modelo de Transformação

13 Uso dos invariantes Maior garantia de qualidade 13 Designer da linguagem de modelagem Desenvolvedor da transformação de modelos Usuário do transformador de modelos Define sintaxe e semântica da linguagem de modelagem Define a relação entre duas ou mais linguagens de modelagem Modela a aplicação e aplica o transformador ao modelo de Transformação

14 Uso dos invariantes Maior garantia de qualidade 14 Designer da linguagem de modelagem Desenvolvedor da transformação de modelos Usuário do transformador de modelos Define sintaxe e semântica da linguagem de modelagem Define a relação entre duas ou mais linguagens de modelagem Modela a aplicação e aplica o transformador ao modelo de Transformação

15 Uso dos invariantes Maior garantia de qualidade 15 Designer da linguagem de modelagem Desenvolvedor da transformação de modelos Usuário do transformador de modelos Define sintaxe e semântica da linguagem de modelagem Define a relação entre duas ou mais linguagens de modelagem Modela a aplicação e aplica o transformador ao modelo de Transformação

16 Uso dos invariantes Maior garantia de qualidade 16 Designer da linguagem de modelagem Desenvolvedor da transformação de modelos Usuário do transformador de modelos Define sintaxe e semântica da linguagem de modelagem Define a relação entre duas ou mais linguagens de modelagem Modela a aplicação e aplica o transformador ao modelo de Transformação

17 Uso dos invariantes Maior garantia de qualidade 17 Designer da linguagem de modelagem Desenvolvedor da transformação de modelos Usuário do transformador de modelos Define sintaxe e semântica da linguagem de modelagem Define a relação entre duas ou mais linguagens de modelagem Modela a aplicação e aplica o transformador ao modelo de Transformação

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

19 Diagrama de classe 19 de Transformação

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

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

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

23 Diagrama de classe 23 de Transformação

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

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

26 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() 26 de Transformação

27 TCLib Exemplo de uso 27 de Transformação

28 Metamodelo UML 28 de Transformação

29 Metamodelo UML 29 de Transformação

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

31 Invariantes 31 de Transformação

32 Parser 32 de Transformação

33 Metamodelo conjunto 33 de Transformação

34 Invariantes 34 de Transformação

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

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

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

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

39 Metamodelo UML 39 de Transformação

40 Metamodelo SQL 40 de Transformação

41 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) 41 de Transformação

42 Metamodelo Java 42 de Transformação

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

44 Trabalho a ser feito 44 de Transformação 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

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

48 Dúvidas 48 de Transformação


Carregar ppt "Contrato de Transformação Visão geral 1 de Transformação."

Apresentações semelhantes


Anúncios Google