1 / 43

Contrato de Transformação

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

Download Presentation

Contrato de Transformação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Visão geral Contrato de Transformação Contrato 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 Contrato 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 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. 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

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

  7. 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

  8. 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

  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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo 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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo 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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo 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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo 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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo 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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo 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 Usuário do transformador de modelos Modela a aplicação e aplica o transformador ao modelo Contrato de Transformação

  16. Padrão de projeto Contrato de Transformação Contrato de Transformação

  17. Diagrama de classe Contrato de Transformação

  18. Diagrama de seqüência Contrato de Transformação

  19. Diagrama de seqüência Contrato de Transformação

  20. Implementação do padrão de projeto TCLib Contrato de Transformação

  21. Diagrama de classe Contrato de Transformação

  22. Exemplo de uso TCLib Contrato de Transformação

  23. Metamodelo UML Contrato de Transformação

  24. Metamodelo UML Contrato de Transformação

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

  26. Invariantes Contrato de Transformação

  27. Parser Contrato de Transformação

  28. Metamodelo conjunto Contrato de Transformação

  29. Invariantes Contrato de Transformação

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

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

  32. Visão geral Projetos Contrato de Transformação

  33. 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

  34. Metamodelo UML Contrato de Transformação

  35. Metamodelo SQL Contrato de Transformação

  36. 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

  37. Metamodelo Java Contrato de Transformação

  38. Trabalho a ser entregue Projetos Contrato de Transformação

  39. 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

  40. 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

  41. 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

  42. 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

  43. Dúvidas ? Contrato de Transformação

More Related