Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... ·...

33
WebMedia 2009 –Minicurso 3 Parte 4: Transformações TRANSFORMAÇÕES Parte 4 1

Transcript of Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... ·...

Page 1: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

TRANSFORMAÇÕES

Parte 4

1

Page 2: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Modelos

� Abstrações do mundo real� Sistema e seu ambiente

� Com um propósito específicoSimulação, geração de código� Simulação, geração de código

� No MDD� Quem lê e entende o modelo é o computador

� Uma vez que o computador entenda o modelo...� O que fazer?

2

Page 3: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Duas opções principais

Metamodelo MMA

Metamodelo MMB

Modelo A

Modelo B

Modelo A2

Transformação M2M3

Page 4: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Exemplos típicos

� Modelo OO� Modelo E-R

� Mapeamento Objeto-Relacional

� Modelo de classes� Modelo de classes� Modelo específico de plataforma

� Modelo EJB

4

Page 5: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Duas opções principais

Metamodelo MMA

Java, SQL, XML, HTML ...

Modelo A

Texto

Transformação M2T

5

Page 6: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Exemplos típicos

� Modelo E-R� Scripts de definição de dados (CREATE TABLE ...)

� Modelo de classesEstrutura das classes (esqueletos)� Estrutura das classes (esqueletos)

� Atributos, heranças, protótipos dos métodos

6

Page 7: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Como implementar

transformações?� Procedural

� Um programa realiza as transformações

� DeclarativaAs transformações são especificadas em uma DSL� As transformações são especificadas em uma DSL

� Um mecanismo interpreta e executa as transformações

7

Page 8: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Opções

� Programação (Java, C++, C#)� Procedural� Utilizando API de metamodelagem (EMF, MetaGME)

� XSLT� Declarativa� Para modelos baseados em XML� Para modelos baseados em XML�� LimitadoLimitado pois não há um metamodelo explícito� Opera em nível de XML

� Eclipse ATL� Declarativa, textual, prática

� QVT� Declarativa, padrão OMG, implementações ainda estão surgindo

� xTend (Eclipse Modeling)� Declarativa, concisa, prática, suporte de IDE

8

Page 9: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Transformações procedurais

Modelo A Código Modelo BModelo A Código Modelo B

Dificuldades:• Ler arquivo de origem• Escrever arquivo de destino• Manter consistência e formato do arquivo gerado• Lidar com as referências internas

9

Page 10: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Transformações procedurais

Metamodelo MMA

API Metamodelagem Metamodelo MMB

Modelo A Código Modelo B

Vantagens:• Leitura / escrita fica por conta da API / Framework• Formato de saída é consistente• Referências são garantidas• É possível realizar transformações na memória

10

Page 11: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Transformações declarativas

Metamodelo MMA

Metamodelo MMT

Metamodelo MMB

Modelo A Transformação Modelo B

Vantagens (mesmas DSL):• Alto nível de abstração• Próximo aos metamodelos / problema• Permite análises, otimizações, etc...

11

Page 12: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Transformações

� Demonstração – Exemplos 3 e 4

12

Page 13: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

GERAÇÃO DE CÓDIGO

13

Page 14: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

14

Page 15: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

15

Page 16: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Geração de códigopublic class GeradorDeCodigo {

public static void main(String args[]) {

System.out.println(“public class CodigoGerado {“);

System.out.println(“ public static void main(String args[]) {“);

for(int i=1;i<=5;i++) {

System.out.println(“ System.out.println(\”“+i+”\”);“);

}

System.out.println(“ } “);

System.out.println(“} “);

}

}}

public class CodigoGerado {

public static void main(String args[]) {

System.out.println(”1”);

System.out.println(”2”);

System.out.println(”3”);

System.out.println(”4”);

System.out.println(”5”);

}

}1

2

3

4

516

Page 17: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Geração de código

public class GeradorDeCodigo {

public static void main(String args[]) {

System.out.println(“public class CodigoGerado {“);

System.out.println(“ public static void main(String args[]) {“);

System.out.println(“ System.out.println(\”Código gerado\”);“);

System.out.println(“ } “);

System.out.println(“} “);

}}

}

public class CodigoGerado {

public static void main(String args[]) {

System.out.println(”Código gerado!”);

}

}

Código gerado!

Difícil modificar o código dentro das

aspas

17

Page 18: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Geração de código

public class GeradorDeCodigo {

public static void main(String args[]) {

System.out.println(“public class CodigoGerado {“);

System.out.println(“ public static void main(String args[]) {“);

System.out.println(“ System.out.println(\”Código gerado\”);“);

System.out.println(“ } “);

System.out.println(“} “);

}}

}

public class CodigoGerado {

public static void main(String args[]) {

System.out.println(”Código gerado!”);

}

}

Código gerado!

O código final só pode ser visto após a

geração

18

Page 19: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Geração de código

public class GeradorDeCodigo {

public static void main(String args[]) {

System.out.println(“public class CodigoGerado {“);

System.out.println(“ public static void main(String args[]) {“);

System.out.println(“ System.out.println(\”Código gerado\”);“);

System.out.println(“ } “);

System.out.println(“} “);

} Consulta ao }

}

public class CodigoGerado {

public static void main(String args[]) {

System.out.println(”Código gerado!”);

}

}

Código gerado!

Consulta ao metamodelo deve ser

feita manualmente

19

Page 20: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Abordagem mais utilizada

� Templates

� Estilo JSP, ASP, PHP, etc...

� Inversão:� Ao invés de colocar System.out.println(“ no começo

de cada linha,

� criar um arquivo separado, só com o texto a ser gerado ...

� ... e inserir System.out.println(“ automaticamente

20

Page 21: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

public class GeradorDeCodigo {

public static void main(String args[]) {

System.out.println(“public class CodigoGerado {“);

System.out.println(“ public static void main(String args[]) {“);

System.out.println(“ System.out.println(\”Código gerado\”);“);

System.out.println(“ } “);

public class CodigoGerado {

public static void main(String args[]) {

System.out.println(”Código gerado!”);

}

}

System.out.println(“ } “);

System.out.println(“} “);

}

}

Código gerado!

public class CodigoGerado {

public static void main(String args[]) {

System.out.println(”Código gerado!”);

}

}

21

Page 22: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformaçõespublic class CodigoGerado {

public static void main(String args[]) {

<% for(int i=1;i<=5;i++) { %>

System.out.println(”Código gerado <%=i%>”);

<% } %>

}

}

public class GeradorDeCodigo {

public static void main(String args[]) {

System.out.println(“public class CodigoGerado {“);

System.out.println(“ public static void main(String args[]) {“);

for(int i=1;i<=5;i++) {

System.out.println(“ System.out.println(\”Código gerado “+i+”\”);“);

public class CodigoGerado {

public static void main(String args[]) {

System.out.println(”Código gerado 1”);

System.out.println(”Código gerado 2”);

System.out.println(”Código gerado 3”);

System.out.println(”Código gerado 4”);

System.out.println(”Código gerado 5”);

}

}

System.out.println(“ System.out.println(\”Código gerado “+i+”\”);“);

}

System.out.println(“ } “);

System.out.println(“} “);

}

}

22

Page 23: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Templates

� Independente do formato de saída

� Pode-se fazer de tudo!� Desde que seja possível em uma linguagem de

programaçãoprogramação

� Flexibilidade

� Maior legibilidade do código gerado

� Facilidade de manutenção

23

Page 24: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Templates

� Diversas possibilidades

� Modularização� Um template para cada metaclasse

Um template para cada arquivo de saída� Um template para cada arquivo de saída

� Agrupar templates

� Dividir um template em vários

24

Page 25: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Templates

� Tags / macros

� Vantagens� Código mais “limpo”

Focado no problema� Focado no problema

� Desvantagem� Dependência das funções existentes

25

Page 26: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Templates

� Demonstração – Exemplos 5 e 6

26

Page 27: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Recapitulando...

Modelo A

Modelo B1

- Nível de abstração+ Detalhes sobre

?

Modelo Bn

TemplatesTemplatesTemplatesTemplates

Código A Código B Código C

+ Detalhes sobre plataforma

+ Complexidade

27

Page 28: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Manutenção

Modelo A

Modelo B1

?

Modelo Bn

TemplatesTemplatesTemplatesTemplates

Código A Código B Código C

28

Page 29: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Manutenção

Modelo A

Modelo B1

?

Modelo Bn

TemplatesTemplatesTemplatesTemplates

Código A Código B Código C

29

Page 30: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Manutenção

Modelo A

Modelo B1

?

Modelo Bn

TemplatesTemplatesTemplatesTemplates

Código A Código B Código C

30

Page 31: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Manutenção

Modelo A

Modelo B1

?

Modelo Bn

TemplatesTemplatesTemplatesTemplates

Código A Código B Código C

31

Page 32: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Recomendações

� Transformações M2M� Apenas para modularizar/facilitar a geração de

código!

� Customizações/informações adicionais� Customizações/informações adicionais� Arquivos/modelos externos

� Modificar código gerado� Evitar!

� Planejar a integração com código manual

� Padrões de projeto

32

Page 33: Parte 4 TRANSFORMAÇÕES - dc.ufscar.brdaniel/files/minicursoWebMedia2009/Parte4.Trans... · WebMedia 2009 –Minicurso 3 Parte 4: Transformações Exemplos típicos Modelo OO Modelo

WebMedia 2009 – Minicurso 3 Parte 4: Transformações

Fim da parte 4

� Perguntas?

Sugestões:

33

• Além dos templates, quais outras abordagens existem?• Quais as desvantagens dos templates?• É possível utilizar mais de um metamodelo em um template?• Alguém mais está com fome além de mim?• Quando eu vou começar a entender isso tudo?• O teste de Poincaré identifica esferas no espaço quadridimensional?• As liberdades política e econômica estão intimamente ligadas?• Por que a pobreza aumentou e a expectativa de vida diminuiu na África subsaariana?