contrato de transformação
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
![Page 2: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/2.jpg)
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
![Page 3: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/3.jpg)
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
![Page 4: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/4.jpg)
Subindo o nível
Contrato de transformação =
Design by Contract no nível de modelos
4
Modelo de entrada
Modelo de saídaTransformação
Pré condições
Pós condições
Condições da transformação
[email protected] Contrato de Transformação
![Page 5: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/5.jpg)
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
![Page 6: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/6.jpg)
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
![Page 7: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/7.jpg)
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
![Page 8: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/8.jpg)
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
€
τ
€
τ(......)
[email protected] Contrato de Transformação
![Page 9: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/9.jpg)
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
€
τ
€
τ(......)
[email protected] Contrato de Transformação
![Page 10: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/10.jpg)
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
€
τ
€
τ(......)
[email protected] Contrato de Transformação
![Page 11: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/11.jpg)
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
€
τ
€
τ(......)
[email protected] Contrato de Transformação
![Page 12: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/12.jpg)
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
€
τ
€
τ(......)
[email protected] Contrato de Transformação
![Page 13: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/13.jpg)
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
€
τ
€
τ(......)
[email protected] Contrato de Transformação
![Page 14: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/14.jpg)
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
€
τ
€
τ(......)
[email protected] Contrato de Transformação
![Page 15: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/15.jpg)
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
€
τ
€
τ(......)
[email protected] Contrato de Transformação
![Page 33: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/33.jpg)
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
![Page 36: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/36.jpg)
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
![Page 39: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/39.jpg)
Trabalho a ser feito
[email protected] Contrato 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
![Page 40: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/40.jpg)
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
![Page 41: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/41.jpg)
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
![Page 42: Contrato de Transformação](https://reader035.vdocuments.pub/reader035/viewer/2022062816/568135de550346895d9d52ae/html5/thumbnails/42.jpg)
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