SlideShare uma empresa Scribd logo
1 de 34
Arquitetura para Aplicações Delphi
Spring4D - OOP e RAD
Cesar Romero
Arquiteto de Software - Trier Sistemas
Tubarão - SC
Patrocínio
Apoio
Agenda
o Introdução
oProblemas Comuns
oRAD ou OOP
o Arquitetura de Sistemas
o Demo
o Padrão
o Modelo
o Persistência
o Regra de Negócios
o Controle
o Apresentação
o Interceptação
o Serviço
o Teste
o Gerar Código
Delphi é bom demais!
RAD + VCL* + Banco de Dados + Cross Plataforma
Qualquer pessoa com pouco ou nenhum conhecimento em
programação cria um negócio em cima do Delphi
Problemas comuns
o Problemas usuais quando
o projeto cresce
o Modelo Desestruturado
o Arquitetura Falha
o Falta de Padrões ou Síndrome do “Super Programador”
o Algoritmos Ineficientes - Orientado a StackOverflow
oParadigmas diferentes
o Mesmo resultado
oAmbos tem vantagens
o RAD - maior produtividade
o Componentes, Form Designer, DataSet...
o OOP - Organização
o MVC, MVP, MVVM, ORM, VTF, OPF...
RAD ou OOP
RAD ou OOP - ambos
RAD OOP
Padrão - Workflow, Organização, Idioma
Antes de iniciar o projeto, deve se definir o contrato
entre todos os membros da equipe:
oWorkflow - Fluxo de trabalho: qual são as
responsabilidades de cada um.
oOrganização: Repositório, estrutura do projeto e
artefatos
oIdioma: Ferramentas, Formato e Formatação
Modelo - Design
Deve ser a única fonte da verdade em todo o
sistema.
oModelagem do Banco de Dados
oModelagem de Classes
Se alguma regra for alterada, o modelo deve ser o primeiro a
ser atualizado e testado.
Persistência - Entidades
oCamada de Persistência
oEntidade
o Objeto, registro do banco de dados ou suas coleções
o Somente pode conter ou interagir com outras entidades
Persistência - Conteúdo
oConteúdo
o Data Module
o Conexão com Banco de Dados (Provider)
o Query, DataSet
o Instruções SQL
o Classes
o Metadados
Regra de Negócio - Model
oA regra de negócio é a camada de conhecimento
do sistema
o Contém as rotinas de regra de negócio
o Deve ter como objetivo a Camada de Persistência
o Pode conter e interagir com outros Models
o Envia notificação das alterações
Regra de Negócio - Conteúdo
oData Module
oQuery
oDataSet
oClasses
oObjectDataSet
Controle
oCamada de Controle - Controllers
o É a ligação entre as camadas de apresentação e de
conhecimento
o Organizado em Classes com Comandos
o Cria e utiliza outros Controllers, Models e Entidades
(DI)
o Disponibiliza os dados para a camada de apresentação
Controle - Conteúdo
oData Module
oAction List e Actions
oClasses
Apresentação
oCamada de Apresentação - Views
o Representação visual da camada de conhecimento
o Apresenta e recebe dados
o Recebe notificação das alterações (Observer)
o Executa comandos a partir das ações dos usuários
o Validação dos dados recebidos (Interceptação)
o ...
Apresentação - Continuação
o Pode utilizar Registros e Fábricas para criar os
formulários e componentes
o Não é reutilizada entre plataformas diferentes: vcl, fmx,
web
Apresentação - Conteúdo
oClasses
o Registros e Fábricas
oFormulários e Frames
oComponentes Visuais
oData Source - Binding
Apresentação - Form Designer
oO que é bom
o RAD - Prototipação rápida
o WYSIWYG
oO que não é bom
o Suporte limitado para refatoração
o Bom visual exige um bom design que conheça Delphi
o Telas mais complicadas exigem muito detalhamento
Interceptação
Camada Intermediária - Middleware (DI)
oGeralmente dinâmica - plugável
oIntercepta os comandos e ações
oPode ser encadeado
Interceptação - Exemplos
oTratamento de Exceções
oAutenticação
oAutorização
oFiltro e validação da entrada de dados
oLog das operações
Interceptação - Conteúdo
oData Module
oRegistros
oInterfaces
oClasses
Serviço
oCamada de Integração - Providers
o Ligação entre a aplicação e recursos externos
o Integração com equipamentos: Impressoras fiscais e
balanças
o Dados: Arquivos, Zip, Banco de Dados, REST
o Enviar E-mail, SMS
o Configuração: Registro do Windows, Arquivos
Serviço - Conteúdo
oData Module
oInterfaces
oClasses
Teste
“Código que não é testado, é código legado”
Michael C. Feathers, Working Effectively with Legacy Code
oTestes unitários
oAlgoritmos
oExecutado continuamente
oNão contém recursos externos: Banco de Dados
Teste - Continuação
oTestes de Integração
o Quando os testes dependem de recursos externos
o Executado com menor frequência
Teste - Conteúdo
oData Module
oClasses
oMock
oStub
oGeração de dados
oSpring4D
o Dependency Injection
o Collections
o Persistence
https://bitbucket.org/sglienke/spring4d
oInfraFramework4Delphi
o Validator
https://github.com/ezequieljuliano/InfraFramework4Delphi
Referências
Gerar Código
o Evitar código boilerplate
“Código boilerplate ou boilerplate se refere a seções de código que devem ser
incluídas em muitos lugares com pouca ou nenhuma alteração.” wikipedia
o A geração de código pode chegar até a 80% da aplicação
o Estática
o Dinâmica
o Utilizar templates
o O Código gerado não deve ser alterado
o Não deve limitar a personalização
Gerar Código - Estático
oBanco de dados
o Instruções SQL
oPersistência
o Dicionário de Dados - Metadados
o Mapeamento ORM
oApresentação
o View
o Validação de Input
oTestes
Gerar Código - Dinâmico
o Configurável
o Utiliza Framework
o Em tempo de execução
o View
o Interceptação
o Ativar ou desativar Serviços
Demo
Perguntas?
http://blog.cesarromero.com.br
cesarliws@gmail.com
OBRIGADO

Mais conteúdo relacionado

Semelhante a Arquitetura Delphi Aplicações

Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Rodrigo Marinho
 
ALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um IncidenteALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um IncidenteAlan Carlos
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoÉberli Cabistani Riella
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) Grupo Treinar
 
Webcast WebSphere Portal Performance
Webcast WebSphere Portal PerformanceWebcast WebSphere Portal Performance
Webcast WebSphere Portal PerformanceAlex Barbosa Coqueiro
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEMarco Antonio Maciel
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebDaniel Brandão
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoAlvaro Viebrantz
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
Php Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsPhp Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsWildtech
 
Maratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
Maratona JBoss 2010 - Drools Expert : Programação Orientada a RegrasMaratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
Maratona JBoss 2010 - Drools Expert : Programação Orientada a RegrasDextra
 
Curso C sharp plus Framework NET (DIURNO)
Curso C sharp plus Framework NET (DIURNO) Curso C sharp plus Framework NET (DIURNO)
Curso C sharp plus Framework NET (DIURNO) Grupo Treinar
 

Semelhante a Arquitetura Delphi Aplicações (20)

Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015
 
ALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um IncidenteALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um Incidente
 
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo CustoJava No Setor Público: Produtividade, Flexibilidade e Baixo Custo
Java No Setor Público: Produtividade, Flexibilidade e Baixo Custo
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
 
Webcast WebSphere Portal Performance
Webcast WebSphere Portal PerformanceWebcast WebSphere Portal Performance
Webcast WebSphere Portal Performance
 
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EEUso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
Uso de Critérios de Seleção para Frameworks Livres em Plataforma Java EE
 
Data accesss conect
Data accesss conectData accesss conect
Data accesss conect
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para Web
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Palestra
PalestraPalestra
Palestra
 
DevOps
DevOpsDevOps
DevOps
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Planejamento rede
Planejamento rede Planejamento rede
Planejamento rede
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Projeto de Software
Projeto de SoftwareProjeto de Software
Projeto de Software
 
Php Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsPhp Conf08 Enterprise Patterns
Php Conf08 Enterprise Patterns
 
Maratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
Maratona JBoss 2010 - Drools Expert : Programação Orientada a RegrasMaratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
Maratona JBoss 2010 - Drools Expert : Programação Orientada a Regras
 
Curso C sharp plus Framework NET (DIURNO)
Curso C sharp plus Framework NET (DIURNO) Curso C sharp plus Framework NET (DIURNO)
Curso C sharp plus Framework NET (DIURNO)
 

Arquitetura Delphi Aplicações

  • 1. Arquitetura para Aplicações Delphi Spring4D - OOP e RAD Cesar Romero Arquiteto de Software - Trier Sistemas Tubarão - SC
  • 3. Agenda o Introdução oProblemas Comuns oRAD ou OOP o Arquitetura de Sistemas o Demo o Padrão o Modelo o Persistência o Regra de Negócios o Controle o Apresentação o Interceptação o Serviço o Teste o Gerar Código
  • 4. Delphi é bom demais! RAD + VCL* + Banco de Dados + Cross Plataforma Qualquer pessoa com pouco ou nenhum conhecimento em programação cria um negócio em cima do Delphi
  • 5. Problemas comuns o Problemas usuais quando o projeto cresce o Modelo Desestruturado o Arquitetura Falha o Falta de Padrões ou Síndrome do “Super Programador” o Algoritmos Ineficientes - Orientado a StackOverflow
  • 6. oParadigmas diferentes o Mesmo resultado oAmbos tem vantagens o RAD - maior produtividade o Componentes, Form Designer, DataSet... o OOP - Organização o MVC, MVP, MVVM, ORM, VTF, OPF... RAD ou OOP
  • 7. RAD ou OOP - ambos RAD OOP
  • 8. Padrão - Workflow, Organização, Idioma Antes de iniciar o projeto, deve se definir o contrato entre todos os membros da equipe: oWorkflow - Fluxo de trabalho: qual são as responsabilidades de cada um. oOrganização: Repositório, estrutura do projeto e artefatos oIdioma: Ferramentas, Formato e Formatação
  • 9. Modelo - Design Deve ser a única fonte da verdade em todo o sistema. oModelagem do Banco de Dados oModelagem de Classes Se alguma regra for alterada, o modelo deve ser o primeiro a ser atualizado e testado.
  • 10. Persistência - Entidades oCamada de Persistência oEntidade o Objeto, registro do banco de dados ou suas coleções o Somente pode conter ou interagir com outras entidades
  • 11. Persistência - Conteúdo oConteúdo o Data Module o Conexão com Banco de Dados (Provider) o Query, DataSet o Instruções SQL o Classes o Metadados
  • 12. Regra de Negócio - Model oA regra de negócio é a camada de conhecimento do sistema o Contém as rotinas de regra de negócio o Deve ter como objetivo a Camada de Persistência o Pode conter e interagir com outros Models o Envia notificação das alterações
  • 13. Regra de Negócio - Conteúdo oData Module oQuery oDataSet oClasses oObjectDataSet
  • 14. Controle oCamada de Controle - Controllers o É a ligação entre as camadas de apresentação e de conhecimento o Organizado em Classes com Comandos o Cria e utiliza outros Controllers, Models e Entidades (DI) o Disponibiliza os dados para a camada de apresentação
  • 15. Controle - Conteúdo oData Module oAction List e Actions oClasses
  • 16. Apresentação oCamada de Apresentação - Views o Representação visual da camada de conhecimento o Apresenta e recebe dados o Recebe notificação das alterações (Observer) o Executa comandos a partir das ações dos usuários o Validação dos dados recebidos (Interceptação) o ...
  • 17. Apresentação - Continuação o Pode utilizar Registros e Fábricas para criar os formulários e componentes o Não é reutilizada entre plataformas diferentes: vcl, fmx, web
  • 18. Apresentação - Conteúdo oClasses o Registros e Fábricas oFormulários e Frames oComponentes Visuais oData Source - Binding
  • 19. Apresentação - Form Designer oO que é bom o RAD - Prototipação rápida o WYSIWYG oO que não é bom o Suporte limitado para refatoração o Bom visual exige um bom design que conheça Delphi o Telas mais complicadas exigem muito detalhamento
  • 20. Interceptação Camada Intermediária - Middleware (DI) oGeralmente dinâmica - plugável oIntercepta os comandos e ações oPode ser encadeado
  • 21. Interceptação - Exemplos oTratamento de Exceções oAutenticação oAutorização oFiltro e validação da entrada de dados oLog das operações
  • 22. Interceptação - Conteúdo oData Module oRegistros oInterfaces oClasses
  • 23. Serviço oCamada de Integração - Providers o Ligação entre a aplicação e recursos externos o Integração com equipamentos: Impressoras fiscais e balanças o Dados: Arquivos, Zip, Banco de Dados, REST o Enviar E-mail, SMS o Configuração: Registro do Windows, Arquivos
  • 24. Serviço - Conteúdo oData Module oInterfaces oClasses
  • 25. Teste “Código que não é testado, é código legado” Michael C. Feathers, Working Effectively with Legacy Code oTestes unitários oAlgoritmos oExecutado continuamente oNão contém recursos externos: Banco de Dados
  • 26. Teste - Continuação oTestes de Integração o Quando os testes dependem de recursos externos o Executado com menor frequência
  • 27. Teste - Conteúdo oData Module oClasses oMock oStub oGeração de dados
  • 28. oSpring4D o Dependency Injection o Collections o Persistence https://bitbucket.org/sglienke/spring4d oInfraFramework4Delphi o Validator https://github.com/ezequieljuliano/InfraFramework4Delphi Referências
  • 29. Gerar Código o Evitar código boilerplate “Código boilerplate ou boilerplate se refere a seções de código que devem ser incluídas em muitos lugares com pouca ou nenhuma alteração.” wikipedia o A geração de código pode chegar até a 80% da aplicação o Estática o Dinâmica o Utilizar templates o O Código gerado não deve ser alterado o Não deve limitar a personalização
  • 30. Gerar Código - Estático oBanco de dados o Instruções SQL oPersistência o Dicionário de Dados - Metadados o Mapeamento ORM oApresentação o View o Validação de Input oTestes
  • 31. Gerar Código - Dinâmico o Configurável o Utiliza Framework o Em tempo de execução o View o Interceptação o Ativar ou desativar Serviços
  • 32. Demo