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