Gerador de código para camada de acesso a dados “VIRIATO”

19
Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores 1 Gerador de código para camada de acesso a dados “VIRIATO” APRESENTAÇÃO INTERCALAR 11 de Março de 2005 Projecto de final de curso – 2004/2005

description

Projecto de final de curso – 2004/2005. Gerador de código para camada de acesso a dados “VIRIATO”. APRESENTAÇÃO INTERCALAR 11 de Março de 2005. Agenda. Problema Solução Problemas associados à solução Soluções de implementação Desenho da aplicação Estado actual. 1. 2. 3. 4. 5. 6. - PowerPoint PPT Presentation

Transcript of Gerador de código para camada de acesso a dados “VIRIATO”

Page 1: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 1

Gerador de código para camada de acesso a dados

“VIRIATO”

APRESENTAÇÃO INTERCALAR

11 de Março de 2005

Projecto de final de curso – 2004/2005

Page 2: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 2

Agenda

1

2

3

4

Problema

Solução

Problemas associados à solução

Soluções de implementação

Desenho da aplicação

Estado actual

5

6

Page 3: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 3

Agenda

1

2

3

4

Problema

Solução

Problemas associados à solução

Soluções de implementação

Desenho da aplicação

Estado actual

5

6

Page 4: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 4

O Problema

• O tempo de desenvolvimento de uma Data Access Layer

• Código repetitivo (muda apenas o modelo de dados)– O que é automatizável?

• Passagem do modelo de objectos para o modelo relacional

UsarReverse

Engineering?

UsarReverse

Engineering?

•Método bastante utilizado mas com perda de metadata: nível de hierarquias entre os objectos e relação N-N

•Método bastante utilizado mas com perda de metadata: nível de hierarquias entre os objectos e relação N-N

Page 5: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 5

Agenda

1

2

3

4

Problema

Solução

Problemas associados à solução

Soluções de implementação

Desenho da aplicação

Estado actual

5

6

Page 6: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 6

A Solução

• Automatização das tarefas repetidas

• Criar uma Data Access Layer específica e strong typed

• Gerar o código da Data Access Layer com base em informação passada ao sistema

• Disponibilizar o código gerado ao programador

Page 7: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 7

A Solução - Entradas do sistema

• Model engineering

– Construído a partir de um modelo de tipos descritos na linguagem UML

– Uma das metodologias aconselhadas para modelação de problemas

Page 8: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 8

A Solução

ViriatoViriato

Mo

del

o U

ML

Código compilado ou em ficheiros

fonte

Framework

Page 9: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 9

Agenda

1

2

3

4

Problema

Solução

Problemas associados à solução

Soluções de implementação

Desenho da aplicação

Estado actual

5

6

Page 10: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 10

Problemas associados à solução

• Identificar um standard que represente o modelo de tipos, descrito na linguagem UML

• Como gerar o código?

• Como aumentar eficiência da Data Access Layer?

Page 11: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 11

Agenda

1

2

3

4

Problema

Solução

Problemas associados à solução

Soluções de implementação

Desenho da aplicação

Estado actual

5

6

Page 12: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 12

Soluções de implementação

• Utilização do standard XMI (XML Metadata Interchange) definido pela OMG – versão 1.2)

• Uso de padrões de código parametrizáveis para a geração de código

• Desenvolvimento de um mecanismo de cache

• Código gerado para a plataforma .Net

Page 13: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 13

Soluções de implementação

• Criação de tradutores (XSLT) do standard XMI para diferentes fabricantes

<UML:Attribute xmi.id = 'S.16' name = ‘UmAtributo' visibility = ‘private' isSpecification = 'false' changeability = 'changeable' ownerScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity> <UML:Multiplicity.range> <UML:MultiplicityRange lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <Foundation.Core.Classifier xmi.idref = 'G.4'/> </UML:StructuralFeature.type></UML:Attribute>.<UML:DataType xmi.id = 'G.4' name = 'String' visibility = 'public' isSpecification = 'false'/>

<UML:Attribute xmi.id = 'S.16' name = ‘UmAtributo' visibility = ‘private' isSpecification = 'false' changeability = 'changeable' ownerScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity> <UML:Multiplicity.range> <UML:MultiplicityRange lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <Foundation.Core.Classifier xmi.idref = 'G.4'/> </UML:StructuralFeature.type></UML:Attribute>.<UML:DataType xmi.id = 'G.4' name = 'String' visibility = 'public' isSpecification = 'false'/>

TogetherTogether

<UML:Attribute xmi.id = 'S.291.2025.57.2' xmi.uuid = '41741876008C' name = ‘UmAtributo' visibility = 'private' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance' type = 'G.1' > <UML:StructuralFeature.multiplicity> <UML:Multiplicity > <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = 'id.2921925.1' lower = '1' upper = '1' /> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity></UML:Attribute>.<UML:DataType xmi.id = 'G.1' name = 'String' visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' />

<UML:Attribute xmi.id = 'S.291.2025.57.2' xmi.uuid = '41741876008C' name = ‘UmAtributo' visibility = 'private' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance' type = 'G.1' > <UML:StructuralFeature.multiplicity> <UML:Multiplicity > <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = 'id.2921925.1' lower = '1' upper = '1' /> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity></UML:Attribute>.<UML:DataType xmi.id = 'G.1' name = 'String' visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' />

Rational RoseRational Rose

Page 14: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 14

Soluções de implementação

• Modelo descrito em linguagem intermédia

<ViriatoClass Name="Class3" Visibility="public" Abstract="false" Namespace="xmiTest"> <ViriatoAttribute Name="FieldClass1" Visibility="private" Type="xmiTest.testePackage.Class1" Changeability="changeable"/> <ViriatoAttribute Name=“UmAtributo" Visibility="private" Type=“String" Changeability="changeable"/></ViriatoClass>

<ViriatoClass Name="Class3" Visibility="public" Abstract="false" Namespace="xmiTest"> <ViriatoAttribute Name="FieldClass1" Visibility="private" Type="xmiTest.testePackage.Class1" Changeability="changeable"/> <ViriatoAttribute Name=“UmAtributo" Visibility="private" Type=“String" Changeability="changeable"/></ViriatoClass>

Page 15: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 15

Agenda

1

2

3

4

Problema

Solução

Problemas associados à solução

Soluções de implementação

Desenho da aplicação

Estado actual

5

6

Page 16: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 16

Desenho da aplicação

ViriatoViriato

Modelo descrito em linguagem intermédia

XSLT

Fab

rica

nte

XM

I

Código compilado ou em ficheiros

fonte

Gerador de código

Templates Framework

Page 17: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 17

Agenda

1

2

3

4

Problema

Solução

Problemas associados à solução

Soluções de implementação

Desenho da aplicação

Estado actual

5

6

Page 18: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 18

Estado actual

• Tradutores (XSLT) do standard XMI

• Gerador de Código com base em templates

• Camada de acesso a dados sem mecanismo de cache– Acessos sistemáticos à fonte de dados

Page 19: Gerador de código para camada de acesso a dados “VIRIATO”

Instituto Superior de Engenharia de LisboaDepartamento de Engenharia de Electrónica e TelecomunicaçõesLicenciatura em Engenharia Informática e de Computadores 19

Alunos Orientadores

• João Manso (24480)

• Pedro Rainho (24533)

• Rodrigo Guerreiro (24628)

• Luís Falcão

• Paulo Pereira