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
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
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
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
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
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
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
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