Php Conf08 Enterprise Patterns

2.365 visualizações

Publicada em

Apresentação sobre Padrões de Arquitetura Corporativas com PHP, apresentada no PHP Conference Brasil 2008

Publicada em: Tecnologia
0 comentários
7 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.365
No SlideShare
0
A partir de incorporações
0
Número de incorporações
550
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
7
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Php Conf08 Enterprise Patterns

  1. 1. Aplicando Padrões de Arquitetura Corporativas com PHP
  2. 2. Quem sou eu? Guilherme Lacerda guilhermeslacerda@gmail.com Mestre em Ciência da Computação, área de Engenharia de Software (UFRGS) Professor de Graduação (FACENSA) e Pós-Graduação (UniRitter) Coordenador do Curso de Sistemas de Informação (FACENSA) Diretor de Tecnologia da APOENA Software Livre Pioneiro em Processos Ágeis e XP no Brasil Fundador do XP-RS (Grupo de Usuários de Metodologias Ágeis do RS) Vice-Coordenador do GUMA (Grupo de Usuários de Metodologias Ágeis) vinculado a SUCESU-RS Editor do InfoQ Brasil
  3. 3. O que veremos aqui? Arquitetura de Software Conceitos Tipos de Arquitetura Aplicações Corporativas SOA e Web Services Padrões Conceitos Tipos de Enterprise Patterns Patterns of Enterprise Application Architecture by Martin Fowler Estudo de Caso
  4. 4. Arquitetura de Software
  5. 5. O que é Arquitetura de Software?
  6. 6. Conceito Abrange: Estrutura estática e dinâmica do software Composição e decomposição do software Componentes e suas interações Camadas e suas interações Partes físicas a serem distribuídas Restrições do software Estilos que guiam o desenvolvimento Conjunto de decisões sobre a organização do software Considerações sobre reutilização, desempenho, dimensionamento, etc.
  7. 7. Conceitos-Chave da Arquitetura Decomposição Fragmentação de um software em partes menores e lógicas Componentes Unidade coesa de software que fornece conjuntos de funções e serviços Estruturas Qualquer parte do software desenvolvido e testado, reutilizado em diversos projetos (bibliotecas e frameworks) Padrões Construção reutilizável, abstraída da experiência dos projetistas Camadas Padrão para decomposição (baseada em responsabilidades/níveis e reutilização) Layers e Tiers
  8. 8. Stand-alone Aplicação stand-alone SGBD ou Sistema Legado Lógica de apresentação, negócio e dados presentes no mesmo trecho de código Manutenção prejudicada e dificultada Atualização prejudicada impossível distribuir as camadas
  9. 9. Cliente/Servidor Cliente Cliente Cliente Servidor (Sistemas Legados e SGBDs) Manutenção favorecida Baixo acoplamento Distribuição favorecida
  10. 10. 3 Tiers Cliente Cliente Cliente Servidor de Aplicação SGBD Sistemas Legados Introdução de camadas auxiliares Customização Atingir objetivos externos da própria arquitetura
  11. 11. Multi-Tiers Cliente Internet Servidor Web Servlets/JSP PHP Applets HTML/XML/DHTML/CSS Servidor de BD Sistemas Legados MySQL PostgreSQL Outros BD
  12. 12. Multi-Tiers Cliente Internet Servidor Web Servlets/JSP/JSF PHP Applets Servidor de Aplicação HTML/XML/DHTML/CSS Bibliotecas Beans Servidor de BD Sistemas Legados MySQL PostgreSQL Outros BD
  13. 13. Camadas de Software (Layers) Apresentação Transações, Exceções Controle de Controle de Sessões Negócios Persistência
  14. 14. Aplicações Corporativas Características Envolve a persistência de dados Usa/Exige/Mantém uma grande quantidade de dados Múltiplos usuários Acesso concorrente a processos/dados Muitas GUIs Raramente “vivem isoladas” Exemplos de Aplicações
  15. 15. Aplicações Corporativas
  16. 16. Arquitetura Orientada a Serviços SOA Arquitetura conceitual de negócios Conjunto de serviços reusáveis sobre uma rede de TI Influenciam os processos de negócios Aplicações prontas para SOA Testáveis? Em Camadas? Legadas? SOA pode ser implementada com qualquer tipo de integração Filas, Arquivos, Enterprise Architecture Patterns, WEB Services
  17. 17. O que se pode fazer com SOA?
  18. 18. Evolução de SOA ESB – Enterprise Service Bus EAI Patterns e Modelagem da Arquitetura Componentes: Sistemas, Dados, Interface, Comunicação Transformação (protocolos, dados) Orquestração X Coreografia Fluxo/Processamento de Mensagens
  19. 19. Web Services Ambiente de computação distribuída que usa XML em todas as camadas Na comunicação, interface, localização e registro de serviços... Serviços são transportados via HTTP Pode ser utilizado outros protocolos São componentes fracamente acoplados que podem interagir entre si de forma dinâmica através da Internet Semelhante aos CGIs UUDI/WSDL/SOAP/XML/HTTP
  20. 20. Web Services WSDL UDDI Descrevem Localizam WEB Services SOAP Usam HTTP Definem Transportam Chamadas Mensagens XML
  21. 21. Design Patterns
  22. 22. Design Patterns - Conceito O conceito surgiu do trabalho de Cristopher Alexander, ligado a Engenharia Civil e Arquitetura Também conhecido como Design Patterns Reutilização do conhecimento de design aplicado em projetos de software Engenharia de Software => OO => Padrões Existem vários Design Patterns conhecidos Mais famoso: GoF (Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides)
  23. 23. Design Patterns - Conceito Reutilização do Conhecimento Geral Problema PADRÃO DE PROJETO Solução Particular Microarquitetura de classes que colaboram entre si
  24. 24. Por que usar? Aprender com a experiência dos outros Soluções testadas e bem documentadas Facilitam a comunicação e compreensão Aprender a OO na “essência” Padrões com as melhores práticas em OO Desenvolver softwares de melhor qualidade Usam polimorfismo, herança, composição, abstração para construir código reutilizável, de alta coesão e baixo acoplamento e eficiente Vocabulário comum
  25. 25. Por que usar? Auxílio na documentação e aprendizagem Ajuda a converter um modelo de análise em um modelo de implementação É um alvo para o refactoring Auxilia na captura das principais estruturas que resultam em refactoring Ajuda também a diminuir a necessidade de refactoring Refactoring to Patterns (Joshua Kerievsky)
  26. 26. Outras Referências Kyle Brown e outros. Enterprise Java Programming with IBM Websphere Alur, Culpi e Malks Core J2EE Patterns Mary Kirtland (Microsoft DNA) Designing Component-Based Applications Floyd Marinescu EJB Design Patterns Frank Buschmann Pattern-Oriented Software Architecture
  27. 27. Outras Referências Kyle Brown Martin Fowler Patterns Patterns Apresentação Apresentação Controlador/Mediador Application Controller (360) Domínio Domínio Mapeamento de Dados Data Mapper (170) Fonte de Dados Fonte de Dados
  28. 28. Outras Referências J2EE Patterns Martin Fowler Patterns Cliente Apresentação Apresentação Negócio Domínio Integração Fonte de Dados Recursos Sistemas Externos
  29. 29. Outras Referências Microsoft DNA Martin Fowler Patterns Apresentação Apresentação Domínio Domínio Fonte de Dados Fonte de Dados Uso de DTOs entre as camadas
  30. 30. Padrões de Arquitetura de Aplicações Corporativas
  31. 31. Estrutura do Catálogo Nome do Pattern Funcionamento Uso Leitura adicional Exemplos
  32. 32. Grupos de Padrões Lógica de Domínio Mapeamento Objeto-Relacional (ORM) Apresentação WEB Estados de Sessão Concorrência Distribuição
  33. 33. Lógicas de Domínio Complexidade dos domínios Serviços Regras de negócio, validações, cálculos Processos Papéis Interação com outras camadas GUI ORM Serviços Divisão comum: Camada de serviços e de Domínio
  34. 34. Lógicas de Domínio: Exemplos Domain Model (126) Um modelo de objetos do domínio que incorpora tanto o comportamento quanto os dados
  35. 35. Lógicas de Domínio: Exemplos Service Layer (141) Define os limites de uma aplicação com uma camada de serviços que estabelece operações disponíveis e coordena a resposta da aplicação em cada operação
  36. 36. Mapeamento Objeto-Relacional Categorias Fontes de dados, Estruturais e Comportamentais e Metadados Objetivos Comunicação entre as fontes de dados Persistência Troca de mensagens, acesso à aplicações legadas
  37. 37. Mapeamento Objeto-Relacional Table Data Gateway (151) Um objeto que atua como Gateway para um Banco de Dados (stateless) Row Data Gateway (158) Um objeto que atua como Gateway para um único registro no Banco de Dados (statefull)
  38. 38. Mapeamento Objeto-Relacional Active Record (165) Um objeto que encapsula uma linha de uma tabela, visão de um BD ou acesso ao BD e adiciona lógica de domínio a esses dados Data Mapper (170) Uma camada de mapeadores que move dados entre os objetos e um BD, mantendo a independência um do outro
  39. 39. Mapeamento Objeto-Relacional Single Table Inheritance (269) Representa uma hierarquia de herança de classes com uma única tabela que tem colunas para todos os campos das diversas classes da hierarquia Concrete Table Inheritance (283) Representa uma hierarquia de classes com uma tabela concreta por classe na hierarquia
  40. 40. Mapeamento Objeto-Relacional Association Table Mapping (244) Grava uma associação como uma tabela com chaves estrangeiras para as tabelas que são vinculadas na associação Lazy Load (200) Um objeto que não contém todos os dados que precisa, mas sabe como obtê-los
  41. 41. Mapeamento Objeto-Relacional Repository (309) Faz a mediação entre camadas de domínio e de mapeamento de dados usando uma interface de tipo coleção para acessar dados do domínio
  42. 42. Apresentação WEB Mudanças significativas nas aplicações corporativas Sem a necessidade de instalar um software cliente Acesso geograficamente distribuído Tecnologias que mudaram a percepção da WEB HTML, JS, XML, CSS, AJAX
  43. 43. Apresentação WEB Model-View-Controller - MVC (315) Divide a interação da GUI em três papéis distintos Page Controller (318) Trata a solicitação para uma página ou ação específica em um site WEB
  44. 44. Apresentação WEB Transform View (343) Uma view que processa dados de domínio (elemento por elemento) e os transforma em uma saída Two Step View (347) Transforma dados de domínio em uma view, com duas etapas: página lógica (XML) e a saída (HTML)
  45. 45. Estudo de Caso: SCP2 Sistema de Controle de Processos e Protocolos Cliente: Prefeitura Municipal de Hortolândia (SP) Dados atuais: + de 200 mil habitantes Mais de 650 usuários acessando o sistema, de 345 órgãos diferentes Processos: Mais de 209 mil registros, com mais de 600 mil tramitações Protocolos: Mais de 37 mil registros, com mais de 64 mil tramitações
  46. 46. Estudo de Caso: SCP2 Processo de Desenvolvimento baseado em Metodologias Ágeis Lean, SCRUM, XP, Práticas de Agile Modeling Cliente distribuído Empresa do RS e Cliente de SP 1 visita presencial e validação remota 1ª. Versão em 15 dias Importação de + de 500 mil registros Sistema legado (Clipper) Tecnologias Apache Web Server Web 2.0 (CSS, AJAX, JS, HTML, XML) PHP 5, PHP-GTK 2 IDE Eclipse + phpEclipse, PHPUnit, PHPDoc Nu-SOAP, JPGraph SGBD PostgreSQL
  47. 47. SCP2: Arquitetura Alguns Patterns utilizados: Abstract Factory, Singleton, Proxy, Bridge (GoF) MVC, Application Controller, Domain Model, Data Mapper, Service Layer, Concrete Table Inheritance, Association Table Mapping (MF) Composite View, DAO (J2EE Patterns)
  48. 48. SCP2: Modelo de Domínio
  49. 49. SCP2: Relatórios
  50. 50. SCP2: Modelo de Persistência
  51. 51. SCP2: Telas
  52. 52. SCP2: Telas
  53. 53. SCP2: Telas
  54. 54. SCP2: Telas
  55. 55. SCP2: Telas
  56. 56. SCP2: Telas
  57. 57. SCP2: Telas
  58. 58. SCP2: Telas
  59. 59. SCP2: Depoimento “Após a implantação do SCP2, nós conseguimos controlar processos, memorandos, ofícios entre outros documentos de uma forma eficaz, e em tempo real, as tramitações são visualizadas no momento do encaminhamento, e a consulta do documento pode ser realizada por todo usuário que tem acesso ao sistema, independente da localidade física do mesmo. Com esta estrutura e com o auxilio da APOENA Software Livre, nós da Prefeitura Municipal de Hortolândia conseguimos eliminar boa parte dos problemas relacionados a perda de documentos já nos primeiros meses de utilização. Atualmente, 100% dos documentos tramitados na Prefeitura passam pelo registro do SCP2, onde a consulta de documentos é realizada de qualquer ponto que tenha acesso a internet e um usuário para autenticação no sistema, o que facilitou muito o nosso trabalho e trouxe maior eficácia nas funções de controle de documentos em geral.” Douglas Nascimento Departamento de Informática Hortolândia - SP
  60. 60. SCP2: Próximos Passos Integração com outros Sistemas da Prefeitura Integração com base de contribuintes Centralizar os acessos aos Sistemas de Informação Web Services, Single Sign On (SSO) Relatórios estratégicos Ferramenta de apoio ao gestor público GED
  61. 61. Considerações Finais Uso de Padrões Soluções elegantes para problemas comuns Adoção de Padrões implica em riscos Doses homeopáticas Existe um grande número de Patterns Vários propósitos (ORM, Apresentação, Concorrência, Sessões, Modelos de Domínio, Arquitetura, Design, Código) Importante: conhecer seus propósitos e aplicabilidade Aplicações Corporativas = Aplicações Complexas
  62. 62. <?php echo “Perguntas?”; ?>
  63. 63. Links FACENSA www.facensa.com.br XP-RS / GUMA xp-rs.blogspot.com InfoQ Brasil www.infoq.com/br/
  64. 64. <?php echo “Obrigado!!”; ?> Guilherme Lacerda guilhermeslacerda@gmail.com

×