SlideShare una empresa de Scribd logo
1 de 64
Aplicando Padrões de
Arquitetura Corporativas com
            PHP
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
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
Arquitetura
de Software
O que é Arquitetura
   de Software?
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.
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
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
Cliente/Servidor
     Cliente              Cliente       Cliente




         Servidor (Sistemas Legados e SGBDs)


Manutenção favorecida
   Baixo acoplamento
Distribuição favorecida
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
Multi-Tiers
Cliente           Internet                 Servidor Web


                                   Servlets/JSP   PHP     Applets


                                     HTML/XML/DHTML/CSS




          Servidor de BD               Sistemas Legados

MySQL     PostgreSQL   Outros BD
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
Camadas de Software (Layers)

                                Apresentação
Transações, Exceções
    Controle de




                             Controle de Sessões


                                  Negócios


                                Persistência
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
Aplicações Corporativas
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
O que se pode fazer com SOA?
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
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
Web Services
WSDL                                          UDDI
         Descrevem          Localizam




               WEB Services




SOAP                 Usam                     HTTP

   Definem                              Transportam
   Chamadas                              Mensagens

                     XML
Design Patterns
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)
Design Patterns - Conceito

       Reutilização do Conhecimento

                     Geral



Problema       PADRÃO DE PROJETO         Solução



                   Particular


 Microarquitetura de classes que colaboram entre si
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
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)
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
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
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
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
Padrões de Arquitetura de
 Aplicações Corporativas
Estrutura do Catálogo

Nome do Pattern

Funcionamento

Uso

Leitura adicional

Exemplos
Grupos de Padrões
Lógica de Domínio

Mapeamento Objeto-Relacional (ORM)

Apresentação WEB

Estados de Sessão

Concorrência

Distribuição
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
Lógicas de Domínio: Exemplos
Domain Model (126)
   Um modelo de objetos do domínio que incorpora tanto o
   comportamento quanto os dados
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
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
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)
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
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
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
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
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
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
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)
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
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
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)
SCP2: Modelo de Domínio
SCP2: Relatórios
SCP2: Modelo de Persistência
SCP2: Telas
SCP2: Telas
SCP2: Telas
SCP2: Telas
SCP2: Telas
SCP2: Telas
SCP2: Telas
SCP2: Telas
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
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
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
<?php echo “Perguntas?”; ?>
Links

   FACENSA
www.facensa.com.br

 XP-RS / GUMA
xp-rs.blogspot.com

  InfoQ Brasil
www.infoq.com/br/
<?php echo “Obrigado!!”; ?>



        Guilherme Lacerda
       guilhermeslacerda@gmail.com

Más contenido relacionado

La actualidad más candente

Infoschema - Company Overview
Infoschema - Company OverviewInfoschema - Company Overview
Infoschema - Company OverviewRenilton Oliveira
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven DesignAndré Borgonovo
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasVagner Santana
 
AAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcambAAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcambguest34ed8ec
 
Middleware Reflexivo
Middleware ReflexivoMiddleware Reflexivo
Middleware Reflexivoelliando dias
 
AAB305 - Service Oriented Architecture - wcamb
AAB305 - Service Oriented Architecture - wcambAAB305 - Service Oriented Architecture - wcamb
AAB305 - Service Oriented Architecture - wcambMicrosoft Brasil
 
AAB306 - Wcf Services Best Practices - wcamb
AAB306 - Wcf Services Best Practices - wcambAAB306 - Wcf Services Best Practices - wcamb
AAB306 - Wcf Services Best Practices - wcambMicrosoft Brasil
 
Sistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOASistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOAAdriano Teixeira de Souza
 
SOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoSOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoAndré Borgonovo
 
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANEAPSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANEFco Edilson Nascimento
 
Apresentação da disciplina Topicos Especiais em Sistemas de Informação
Apresentação da disciplina Topicos Especiais em Sistemas de InformaçãoApresentação da disciplina Topicos Especiais em Sistemas de Informação
Apresentação da disciplina Topicos Especiais em Sistemas de InformaçãoRogerio P C do Nascimento
 

La actualidad más candente (13)

Infoschema - Company Overview
Infoschema - Company OverviewInfoschema - Company Overview
Infoschema - Company Overview
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de Sistemas
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
AAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcambAAB309 - SQL Azure Database - wcamb
AAB309 - SQL Azure Database - wcamb
 
Middleware Reflexivo
Middleware ReflexivoMiddleware Reflexivo
Middleware Reflexivo
 
AAB305 - Service Oriented Architecture - wcamb
AAB305 - Service Oriented Architecture - wcambAAB305 - Service Oriented Architecture - wcamb
AAB305 - Service Oriented Architecture - wcamb
 
AAB306 - Wcf Services Best Practices - wcamb
AAB306 - Wcf Services Best Practices - wcambAAB306 - Wcf Services Best Practices - wcamb
AAB306 - Wcf Services Best Practices - wcamb
 
Sistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOASistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOA
 
SOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoSOA - Uma Breve Introdução
SOA - Uma Breve Introdução
 
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANEAPSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
 
Apresentação da disciplina Topicos Especiais em Sistemas de Informação
Apresentação da disciplina Topicos Especiais em Sistemas de InformaçãoApresentação da disciplina Topicos Especiais em Sistemas de Informação
Apresentação da disciplina Topicos Especiais em Sistemas de Informação
 

Destacado

Wsl2011 Módulo SCRUM para Expresso Livre
Wsl2011 Módulo SCRUM para Expresso LivreWsl2011 Módulo SCRUM para Expresso Livre
Wsl2011 Módulo SCRUM para Expresso LivreWildtech
 
Php Conf08 Refactoring
Php Conf08 RefactoringPhp Conf08 Refactoring
Php Conf08 RefactoringWildtech
 
Agile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By ExampleAgile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By ExampleWildtech
 
Trunk Based Development Explored
Trunk Based Development ExploredTrunk Based Development Explored
Trunk Based Development ExploredWildtech
 
5S em Código (CBSoft 2011)
5S em Código (CBSoft 2011)5S em Código (CBSoft 2011)
5S em Código (CBSoft 2011)Wildtech
 
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Wildtech
 
Trunk Based Development (CBSoft 2011)
Trunk Based Development (CBSoft 2011)Trunk Based Development (CBSoft 2011)
Trunk Based Development (CBSoft 2011)Wildtech
 
Feature Toggle Examples
Feature Toggle ExamplesFeature Toggle Examples
Feature Toggle ExamplesWildtech
 

Destacado (9)

Wsl2011 Módulo SCRUM para Expresso Livre
Wsl2011 Módulo SCRUM para Expresso LivreWsl2011 Módulo SCRUM para Expresso Livre
Wsl2011 Módulo SCRUM para Expresso Livre
 
Php Conf08 Refactoring
Php Conf08 RefactoringPhp Conf08 Refactoring
Php Conf08 Refactoring
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Agile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By ExampleAgile Brazil 2012 - Tutorial Coding By Example
Agile Brazil 2012 - Tutorial Coding By Example
 
Trunk Based Development Explored
Trunk Based Development ExploredTrunk Based Development Explored
Trunk Based Development Explored
 
5S em Código (CBSoft 2011)
5S em Código (CBSoft 2011)5S em Código (CBSoft 2011)
5S em Código (CBSoft 2011)
 
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
Retrospectiva: O motor da melhoria contínua (4a. do Conhecimento - PROCERGS)
 
Trunk Based Development (CBSoft 2011)
Trunk Based Development (CBSoft 2011)Trunk Based Development (CBSoft 2011)
Trunk Based Development (CBSoft 2011)
 
Feature Toggle Examples
Feature Toggle ExamplesFeature Toggle Examples
Feature Toggle Examples
 

Similar a Php Conf08 Enterprise Patterns

Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linuxaviram
 
Infra-estrutura de TI
Infra-estrutura de TIInfra-estrutura de TI
Infra-estrutura de TIemmonks
 
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
 
Tesi Dados Final
Tesi Dados FinalTesi Dados Final
Tesi Dados Finaljcaroso
 
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetPanorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetElvis Fusco
 
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
 
Atlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer TecnologiaAtlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer TecnologiaMarcelo Mrack
 
Cloud Computing com Windows Azure
Cloud Computing com Windows AzureCloud Computing com Windows Azure
Cloud Computing com Windows AzureMarcelo Paiva
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaPaula Santana
 
F R A M E W O R K D J A N G O
F R A M E W O R K  D J A N G OF R A M E W O R K  D J A N G O
F R A M E W O R K D J A N G Ofabio.thomaz
 
Documentação da infraestrutura de rede
Documentação da infraestrutura de redeDocumentação da infraestrutura de rede
Documentação da infraestrutura de redeMarcos Monteiro
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projetoejdn1
 
Instalação e Atualização Automática de Aplicações em Plataforma Livre para Am...
Instalação e Atualização Automática de Aplicações em Plataforma Livre para Am...Instalação e Atualização Automática de Aplicações em Plataforma Livre para Am...
Instalação e Atualização Automática de Aplicações em Plataforma Livre para Am...Mauro Tapajós
 
Documentação da infraestrutura de rede
Documentação da infraestrutura de redeDocumentação da infraestrutura de rede
Documentação da infraestrutura de redeMarcos Monteiro
 
Documentação da infraestrutura de rede
Documentação da infraestrutura de redeDocumentação da infraestrutura de rede
Documentação da infraestrutura de redeMarcos Monteiro
 
Reuso de software
Reuso de softwareReuso de software
Reuso de softwarerebekinha
 

Similar a Php Conf08 Enterprise Patterns (20)

Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linux
 
Infra-estrutura de TI
Infra-estrutura de TIInfra-estrutura de TI
Infra-estrutura de TI
 
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
 
Tesi Dados Final
Tesi Dados FinalTesi Dados Final
Tesi Dados Final
 
Computação em nuvem e Windows Azure
Computação em nuvem e Windows AzureComputação em nuvem e Windows Azure
Computação em nuvem e Windows Azure
 
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para InternetPanorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
Panorama Atual e Tendências do Desenvolvimento de Sistemas para Internet
 
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
 
Atlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer TecnologiaAtlassian Confluence pela 3layer Tecnologia
Atlassian Confluence pela 3layer Tecnologia
 
Cloud Computing com Windows Azure
Cloud Computing com Windows AzureCloud Computing com Windows Azure
Cloud Computing com Windows Azure
 
Desenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageriaDesenvolvimento de sistemas com mensageria
Desenvolvimento de sistemas com mensageria
 
DotNet vs. Java
DotNet vs. JavaDotNet vs. Java
DotNet vs. Java
 
F R A M E W O R K D J A N G O
F R A M E W O R K  D J A N G OF R A M E W O R K  D J A N G O
F R A M E W O R K D J A N G O
 
Documentação da infraestrutura de rede
Documentação da infraestrutura de redeDocumentação da infraestrutura de rede
Documentação da infraestrutura de rede
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Instalação e Atualização Automática de Aplicações em Plataforma Livre para Am...
Instalação e Atualização Automática de Aplicações em Plataforma Livre para Am...Instalação e Atualização Automática de Aplicações em Plataforma Livre para Am...
Instalação e Atualização Automática de Aplicações em Plataforma Livre para Am...
 
Documentação da infraestrutura de rede
Documentação da infraestrutura de redeDocumentação da infraestrutura de rede
Documentação da infraestrutura de rede
 
Introducao.2s
Introducao.2sIntroducao.2s
Introducao.2s
 
Documentação da infraestrutura de rede
Documentação da infraestrutura de redeDocumentação da infraestrutura de rede
Documentação da infraestrutura de rede
 
Reuso de software
Reuso de softwareReuso de software
Reuso de software
 

Más de Wildtech

Voltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilVoltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilWildtech
 
O que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareO que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareWildtech
 
XP e a Academia
XP e a AcademiaXP e a Academia
XP e a AcademiaWildtech
 
Abordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingAbordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingWildtech
 
TDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TITDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TIWildtech
 
TDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureTDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureWildtech
 
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaTDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaWildtech
 
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...Wildtech
 
Agile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsAgile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsWildtech
 
TDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorTDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorWildtech
 
Swarm Debugging
Swarm DebuggingSwarm Debugging
Swarm DebuggingWildtech
 
[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme ProgrammingWildtech
 
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...Wildtech
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de DadosWildtech
 
(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários ComplexosWildtech
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...Wildtech
 
5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"Wildtech
 
Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Wildtech
 
CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)Wildtech
 
CBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleCBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleWildtech
 

Más de Wildtech (20)

Voltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágilVoltando para as raízes do desenvolvimento ágil
Voltando para as raízes do desenvolvimento ágil
 
O que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de softwareO que a agilidade me ensinou no desenvolvimento de software
O que a agilidade me ensinou no desenvolvimento de software
 
XP e a Academia
XP e a AcademiaXP e a Academia
XP e a Academia
 
Abordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coachingAbordagens para adoção/transformação ágil através de mentoring e coaching
Abordagens para adoção/transformação ágil através de mentoring e coaching
 
TDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TITDC 2016 - Agilidade além da TI
TDC 2016 - Agilidade além da TI
 
TDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion ArchitectureTDC 2016 - Desvendando o Onion Architecture
TDC 2016 - Desvendando o Onion Architecture
 
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria ContínuaTDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
TDC 2016 - Retrospectivas como Catalisadores de Melhoria Contínua
 
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
QCon 2016 - Estratégias e Desafios na Implantação de Lean no Setor Público e ...
 
Agile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching PatternsAgile Clinic - Agile Coaching Patterns
Agile Clinic - Agile Coaching Patterns
 
TDC 2016 - O Novo Professor
TDC 2016 - O Novo ProfessorTDC 2016 - O Novo Professor
TDC 2016 - O Novo Professor
 
Swarm Debugging
Swarm DebuggingSwarm Debugging
Swarm Debugging
 
[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming[XPConfBR2014] Desvendando o eXtreme Programming
[XPConfBR2014] Desvendando o eXtreme Programming
 
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
(AgileBrazil2014) Agilidade no Judiciário: um relato de experiência de Agile ...
 
[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados[Agile brazil2014] Bad Smells em Bancos de Dados
[Agile brazil2014] Bad Smells em Bancos de Dados
 
(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos(TDC2014) Oba! Cenários Complexos
(TDC2014) Oba! Cenários Complexos
 
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
[VEM2014] PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de ...
 
5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"5S em Código: Seminário de PHP "Show me the code!"
5S em Código: Seminário de PHP "Show me the code!"
 
Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)
 
CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)CBSoft 2013 - Descrição dos Problemas (CbE)
CBSoft 2013 - Descrição dos Problemas (CbE)
 
CBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By ExampleCBSoft2013 - Tutorial Coding By Example
CBSoft2013 - Tutorial Coding By Example
 

Php Conf08 Enterprise Patterns

  • 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
  • 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
  • 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
  • 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
  • 50. SCP2: Modelo de Persistência
  • 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
  • 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