Presentation Transcript
Persistência em Software Orientado a Objetos: :Marcelo Santos Daibert 1 Persistência em Software Orientado a Objetos: Soluções de Mapeamento
Objeto-Relacional Marcelo Santos Daibert Orientador: Marco Antônio Pereira Araújo Co-Orientadora: Alessandreia Marta de Oliveira Julio
Agenda :Marcelo Santos Daibert 2 Agenda Motivação
Metodologia
Contextualização
Frameworks de Persistência
DePO
Instant Objects
TiOPF
Estudo de Caso: Acadêmico OO
Resultados
Considerações Finais Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Motivação :Marcelo Santos Daibert 3 Motivação Crescente utilização do paradigma orientado a objetos no desenvolvimento de software
As estratégias de armazenamento orientadas a objetos não são maduras o suficiente
Reduzir o gap entre o paradigma de desenvolvimento orientado a objetos e o modelo relacional de armazenamento de dados
A busca por soluções opensource eficazes e eficientes para persistência de objetos em base de dados relacional Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Motivação :Marcelo Santos Daibert 4 Motivação Projeto de Iniciação Científica
Estratégias de Persistência em Software Orientado a Objetos
Estudar as diversas estratégias de persistência
Mapeamento Objeto-Relacional
Banco de Dados OO
Banco de Dados OR
Criar uma camada de persistência própria para o ambiente Delphi Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Metodologia :Marcelo Santos Daibert 5 Metodologia Estudo exploratório de persistência de objetos e camadas de persistência
Estudo comparativo entre as estratégias opensource disponíveis para o ambiente Delphi
Definição e implementação de uma aplicação utilizando um framework de persistência
Utilização de padrões de projeto (Design Patterns)
Utilização de ferramenta de versionamento (SVN)
Utilização de ferramenta de BugTracking (NSN Projetc)
Divulgação dos resultados Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Metodologia :Marcelo Santos Daibert 6 Metodologia
Metodologia :Marcelo Santos Daibert 7 Metodologia Estudo exploratório de persistência de objetos e camadas de persistência
Estudo comparativo entre as estratégias opensource disponíveis para o ambiente Delphi
Definição e implementação de uma aplicação utilizando um framework de persistência
Utilização de padrões de projeto (Design Patterns)
Utilização de ferramenta de versionamento (SVN)
Utilização de ferramenta de BugTracking (NSN Projetc)
Divulgação dos resultados Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Slide 8:Marcelo Santos Daibert 8
Metodologia :Marcelo Santos Daibert 9 Metodologia Estudo exploratório de persistência de objetos e camadas de persistência
Estudo comparativo entre as estratégias opensource disponíveis para o ambiente Delphi
Definição e implementação de uma aplicação utilizando um framework de persistência
Utilização de padrões de projeto (Design Patterns)
Utilização de ferramenta de versionamento (SVN)
Utilização de ferramenta de BugTracking (NSN Projetc)
Divulgação dos resultados Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Contextualização :Marcelo Santos Daibert 10 Contextualização POO – Programação Orientada a Objetos
Paradigma OO difere substancialmente do Paradigma Relacional Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Contextualização :Marcelo Santos Daibert 11 Contextualização Mapeamento Objeto Relacional
Escolha de um OID (Object Identification)
Mapear atributos para colunas
Mapear classes para tabelas Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Contextualização :Marcelo Santos Daibert 12 Contextualização Mapear Herança Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Contextualização :Marcelo Santos Daibert 13 Contextualização Mapear Associação 1:1
Mapear Associação 1:n Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Contextualização :Marcelo Santos Daibert 14 Contextualização Mapear Associação n:n Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Contextualização :Marcelo Santos Daibert 15 Contextualização Camadas de Persistência
Camada de Persistência Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Contextualização :Marcelo Santos Daibert 16 Contextualização Camadas de Persistência
Camada de Persistência Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão Camada de Persistência
Frameworks de Persistência :Marcelo Santos Daibert 17 Frameworks de Persistência Estrutura complexa e genérica responsável pela persistência e manipulação dos objetos.
DePO (Delphi Persistent Objects)
IO (Instant Objects)
TiOPF (TechInside Object Persistent Framework) Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF
Frameworks de Persistência :Marcelo Santos Daibert 18 Frameworks de Persistência DePO Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF
Frameworks de Persistência :Marcelo Santos Daibert 19 Frameworks de Persistência Manipulação de Objetos
Persistir / Criar Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF var
Aluno: TAluno;
begin
Aluno:= TAluno.Create(dpoDBXMechanism);
Aluno.Codigo:= '1';
Aluno.Nome:= 'José da Silva';
Aluno.Matricula:= '2002102013';
Aluno.Save;
end;
Frameworks de Persistência :Marcelo Santos Daibert 20 Frameworks de Persistência Manipulação de Objetos
Recuperar Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF var
Aluno: TAluno;
begin
Aluno:= TAluno.Create(dpoDBXMechanism);
Aluno.Codigo:= '1';
if not Aluno.Retrieve then
begin
MessageDlg('Aluno não existe', mtWarning,
[mbOK], 0);
end;
end;
Frameworks de Persistência :Marcelo Santos Daibert 21 Frameworks de Persistência Manipulação de Objetos
Atualizar Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF var
Aluno: TAluno;
begin
Aluno:= TAluno.Create(dpoDBXMechanism);
Aluno.Codigo:= '1';
if Aluno.Retrieve then
begin
Aluno.Nome:= 'Joaquim Souza';
Aluno.Save;
end;
end;
Frameworks de Persistência :Marcelo Santos Daibert 22 Frameworks de Persistência Manipulação de Objetos
Excluir Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF var
Aluno: TAluno;
begin
Aluno:= TAluno.Create(dpoDBXMechanism);
Aluno.Codigo:= '1';
if Aluno.Retrieve then
begin
Aluno.Delete;
Aluno.Save;
end;
end;
Frameworks de Persistência :Marcelo Santos Daibert 23 Frameworks de Persistência Instant Objects Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF
Frameworks de Persistência :Marcelo Santos Daibert 24 Frameworks de Persistência Model Explorer Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF
Slide 25:Marcelo Santos Daibert 25
Frameworks de Persistência :Marcelo Santos Daibert 26 Frameworks de Persistência Manipulação de Objetos
Persistir / Criar Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF var
objAluno : TAluno;
begin
objAluno:=TAluno.Create(InstantDBXConnector);
objAluno.Nome := 'José da Silva';
objAluno.Matricula := 2002102013;
objAluno.Store();
end;
Frameworks de Persistência :Marcelo Santos Daibert 27 Frameworks de Persistência Manipulação de Objetos
Recuperar Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF var
objAluno : TAluno;
begin
try
objAluno:=TAluno.Retrieve('ID',false,false,
InstantDBXConnector);
except
MessageDlg('Aluno não Existe', mtWarning,
[mbOK], 0);
end;
end;
Frameworks de Persistência :Marcelo Santos Daibert 28 Frameworks de Persistência Manipulação de Objetos
Atualizar Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF var
objAluno : TAluno;
begin
try
objAluno:=TAluno.Retrieve('ID',false,false,
InstantDBXConnector);
objAluno.Nome := 'Joaquim Souza';
objAluno.Matricula := 2003201245;
objAluno.Store();
except
MessageDlg('Aluno não Existe', mtWarning,
[mbOK], 0);
end;
end;
Frameworks de Persistência :Marcelo Santos Daibert 29 Frameworks de Persistência Manipulação de Objetos
Excluir Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF var
objAluno : TAluno;
begin
try
objAluno:=TAluno.Retrieve('ID',false,false,
InstantDBXConnector);
objAluno.Dispose();
except
MessageDlg('Aluno não Existe', mtWarning,
[mbOK], 0);
end;
end;
Frameworks de Persistência :Marcelo Santos Daibert 30 Frameworks de Persistência TiOPF
Componentes Data-aware Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão DePO IO TiOPF
Estudo de Caso: Acadêmico :Marcelo Santos Daibert 31 Estudo de Caso: Acadêmico Sistema de Controle Acadêmico
Reengenharia (Estruturado -> Orientado a Objetos)
Utilização de Padrões de Projeto
Persistência de Objetos
Utilização do framework de persistência objeto-relacional DePO (Delphi Persistent Objetcs) Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Estudo de Caso: Acadêmico :Marcelo Santos Daibert 32 Estudo de Caso: Acadêmico Demo Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Resultados :Marcelo Santos Daibert 33 Resultados Artigo “Persistência de Objetos no Delphi: Introdução ao DePO(Delphi Persistent Objects)” aceito na revista ClubeDelphi.
Artigo “Persistência em Software Orientado a Objetos: Abordagens Utilizando Frameworks OpenSource” aceito para apresentação oral no III Encontro de Software Livre do Amazonas (ESLAM) em Manaus
Apresentação do minicurso “Persistência de Objetos em Delphi – Introdução ao Framework DePO(Delphi Persistent Objects)” Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Resultados :Marcelo Santos Daibert 34 Resultados Apresentação oral do workshop “Persistência em Software Orientado a Objetos: Abordagens Utilizando Frameworks OpenSource” no II Festival de Software Livre de Juiz de Fora (FESTSOL) Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Considerações Finais :Marcelo Santos Daibert 35 Considerações Finais Este trabalho buscou apresentar soluções opensource eficazes e eficientes para suprir as necessidades de desenvolvimento orientado a objetos, unindo:
Maturidade,
Confiança,
Desempenho dos bancos de dados relacionais
Trabalhos futuros:
Estudo dos frameworks proprietários, como o ECO, ECO II, Bold. Motivação Metodologia Contextualização Frameworks de Persistência Estudo de Caso Resultados Conclusão
Persistência em Software Orientado a Objetos: :Marcelo Santos Daibert 36 Persistência em Software Orientado a Objetos: Soluções de Mapeamento
Objeto-Relacional Marcelo Santos Daibert Orientador: Marco Antônio Pereira Araújo Co-Orientadora: Alessandreia Marta de Oliveira Julio