• Save
Php Conf08 Enterprise Patterns
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Php Conf08 Enterprise Patterns

on

  • 3,610 views

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

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

Statistics

Views

Total Views
3,610
Views on SlideShare
3,095
Embed Views
515

Actions

Likes
7
Downloads
0
Comments
0

12 Embeds 515

http://codingbyexample.wordpress.com 226
http://guilhermelacerda.wordpress.com 147
http://codingbyexample.wordpress.com. 105
http://guilhermelacerda.wordpress.com. 16
http://www.slideshare.net 10
http://www.linkedin.com 3
https://codingbyexample.wordpress.com 3
https://guilhermelacerda.wordpress.com 1
http://74.125.47.132 1
http://localhost 1
http://webcache.googleusercontent.com 1
https://www.linkedin.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Php Conf08 Enterprise Patterns Presentation Transcript

  • 1. Aplicando Padrões de Arquitetura Corporativas com PHP
  • 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. 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. Arquitetura de Software
  • 5. O que é Arquitetura de Software?
  • 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. 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. 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. Cliente/Servidor Cliente Cliente Cliente Servidor (Sistemas Legados e SGBDs) Manutenção favorecida Baixo acoplamento Distribuição favorecida
  • 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. Multi-Tiers Cliente Internet Servidor Web Servlets/JSP PHP Applets HTML/XML/DHTML/CSS Servidor de BD Sistemas Legados MySQL PostgreSQL Outros BD
  • 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. Camadas de Software (Layers) Apresentação Transações, Exceções Controle de Controle de Sessões Negócios Persistência
  • 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. Aplicações Corporativas
  • 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. O que se pode fazer com SOA?
  • 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. 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. Web Services WSDL UDDI Descrevem Localizam WEB Services SOAP Usam HTTP Definem Transportam Chamadas Mensagens XML
  • 21. Design Patterns
  • 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. Design Patterns - Conceito Reutilização do Conhecimento Geral Problema PADRÃO DE PROJETO Solução Particular Microarquitetura de classes que colaboram entre si
  • 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. 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. 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. 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. 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. 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. Padrões de Arquitetura de Aplicações Corporativas
  • 31. Estrutura do Catálogo Nome do Pattern Funcionamento Uso Leitura adicional Exemplos
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. SCP2: Modelo de Domínio
  • 49. SCP2: Relatórios
  • 50. SCP2: Modelo de Persistência
  • 51. SCP2: Telas
  • 52. SCP2: Telas
  • 53. SCP2: Telas
  • 54. SCP2: Telas
  • 55. SCP2: Telas
  • 56. SCP2: Telas
  • 57. SCP2: Telas
  • 58. SCP2: Telas
  • 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. 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. 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. <?php echo “Perguntas?”; ?>
  • 63. Links FACENSA www.facensa.com.br XP-RS / GUMA xp-rs.blogspot.com InfoQ Brasil www.infoq.com/br/
  • 64. <?php echo “Obrigado!!”; ?> Guilherme Lacerda guilhermeslacerda@gmail.com