190 likes | 302 Views
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.
E N D
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 • Método bastante utilizado mas com perda de metadata: nível de hierarquias entre os objectos e relação N-N Usar Reverse Engineering? Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
A Solução Framework Viriato Modelo UML Código compilado ou em ficheiros fonte Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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? Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
Soluções de implementação • Criação de tradutores (XSLT) do standard XMI para diferentes fabricantes Together <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'/> Rational Rose <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' /> Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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> Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
Desenho da aplicação Viriato Templates XSLT Framework Fabricante Modelo descrito em linguagem intermédia Gerador de código Código compilado ou em ficheiros fonte XMI Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
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 Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores
Alunos Orientadores • João Manso (24480) • Pedro Rainho (24533) • Rodrigo Guerreiro (24628) • Luís Falcão • Paulo Pereira Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores