Arquitetura de
Software Enterprise
Casos de sucesso na implantação de
arquitetura de software enterprise
Dr. Spock
@drspockbr
@bout me!
• Bacharel e especialista em Física
pela UFV e Unicamp;
• Desenvolvedor de aplicações
Web desde 96 e Java desde 99;
• Palestrante em eventos
nacionais e internacionais;
• Integrante da equipe de P&D da
Softplan em Florianópolis;
Visite o SBUG
http://www.springbrasil.com.br/
Agenda
Agenda
• Introdução e conceitos;
Agenda
• Introdução e conceitos;
• 3 exemplos de arquitetura
Java EE;
Agenda
• Introdução e conceitos;
• 3 exemplos de arquitetura
Java EE;
• Desafios de um arquiteto de
software;
Introdução &
Conceitos
O que é arquitetura de software?
“Descrição da organização do
software estabelecendo as principais
decisões de projeto com o
objetivo de realizar os requisitos não
funcionais”
Confuso?
Confuso?JSP ou XHTML?
Richfaces?
ICEFaces?
TopLink?Swing?
JSF?
Wicket?
Spring ou Seam?
Flex?
Struts?
GWT? EJB3?
NetBeans? Eclipse?
JavaFX?
Ajax?
Hibernate?
JBossAS?
Glassfish?
Desktop ou Web?
Primefaces?
Maven?
svn ou git? Java ou .NET?
Ruby?
Python?Scala?
Android?
JavaME?
Cloud?
MongoDB?
NoSQL?
CDI?
JTA?JMS?
iOS
C++?
Arduino?
Grails?
Grid?
WebSphere?
Jenkins?
Confuso?JSP ou XHTML?
Richfaces?
ICEFaces?
TopLink?Swing?
JSF?
Wicket?
Spring ou Seam?
Flex?
Struts?
GWT? EJB3?
NetBeans? Eclipse?
JavaFX?
Ajax?
Hibernate?
JBossAS?
Glassfish?
Desktop ou Web?
Primefaces?
Maven?
svn ou git? Java ou .NET?
Ruby?
Python?Scala?
Android?
JavaME?
Cloud?
MongoDB?
NoSQL?
CDI?
JTA?JMS?
iOS
C++?
Arduino?
Grails?
Grid?
WebSphere?
Jenkins?
Quem é o arquiteto de software?
“Papel exercido por um desenvolvedor
experiente capaz de tomar decisões
de projeto para a organização da
estrutura de um software (ou sistemas) e
sugerir as escolhas certas”
Principais
responsabilidades
• Limitar as escolhas durante o
desenvolvimento:
• Escolher um padrão para a
maneira de desenvolver
aplicações;
• Definir/criar um framework para
ser usado na aplicação;
Fonte:Wikipedia
Principais
responsabilidades
• Indicar os pontos de reutilização
dentro da aplicação ou na
organização:
• Enxergar de maneira mais
abrangente;
• Adotar um design de
componentização;
• Ter contato e conhecimento com
outras aplicações na organização;
Fonte:Wikipedia
De um ponto de vista
prático!
• Durante o Design, quebrar a
complexidade do desenvolvimento
de aplicações em pedaços menores e
melhores gerenciáveis;
• Entender as funções de cada
componente;
• Entender as interações e
dependências entre os componentes
de software;
• Comunicar esses pontos com os
desenvolvedores.
Fonte:Wikipedia
Ferramentas de um
arquiteto
• Linguagem de modelagem: UML;
• Linguagem de programação;
• Técnicas OO: herança,
polimorfismo, design patterns,
analysis patterns, frameworks,APIs,
componentização e tecnologias;
• Consolidação das decisões com
diferentes visões num documento
de arquitetura de software.
Exemplos de
Arquiteturas de
Software Enterprise
Primeiro caso
O problema
Empresa com aplicação Web de
cotações de produtos já
implementado com PHP
usando banco de dados
Oracle, equipe de 8
desenvolvedores com pouco
conhecimento em Java SE e Java
EE com interesse em migrar
para a plataforma Java.
Qual a arquitetura adequada
para esta migração?
Requisitos
importantes
• Usabilidade: UI ricas,
componentes visuais de negócios
e drag’n drop e templates na
Web;
• Integração via web services e
arquivos EDI;
• Multi-plataforma para modelo de
domínio;
• Performance e escalabilidade nos
horários críticos.
Modelo básico da arquitetura
Modelo de componentização
Modelo de componentização
Tecnologias
selecionadas
• JBossAS 4.2.3
• JSF 1.2
• Facelets
• Spring Framework 2.5
• Acegi Security 2.5
• Hibernate 3.2
• JBoss Richfaces 3.1
Tecnologias
selecionadas
• JBossAS 4.2.3
• JSF 1.2
• Facelets
• Spring Framework 2.5
• Spring Webflow 2
• Acegi Security 2.5
• Hibernate 3.2
• JBoss Richfaces 3.1
Pontos positivos e
negativos
• Quantidade excessiva de
configurações em XML;
• Modelo consistente de
componentização (favorece
possível uso de EJBs e OSGi);
• Problemas de performance
com JPA/Hibernate;
• Escalabilidade via servidor de
aplicações.
Segundo caso
O problema
Empresa com aplicação
Progress em modo caractere
com aplicação de gestão de
produtos turísticos para
agências de viagens, equipe com
desenvolvedores sem
experiência em Java e OO com
interesse em migrar para a
plataforma Java.
Qual a arquitetura adequada
para esta migração?
Requisitos
importantes
• Comunicação com diversas
fontes na internet de
produtos turísticos;
• Flexibilidade para suportar
novos produtos;
• Múltiplos contextos na sessão
web;
• Tecnologias consolidadas;
Modelo básico da arquitetura
Modelo básico da arquitetura
Modelo de componentização
Modelo de componentização
Tecnologias
selecionadas
• JBossAS 4.2.3
• JSF 1.2
• Facelets
• JBoss Seam 2.0
• Hibernate 3.2 (via JPA)
• JBoss Richfaces
• EJBs (Session e MDB)
Pontos positivos e
negativos
• Gerenciamento eficiente do
contexto de persistência;
• Arquitetura com alta
complexidade para equipe
inexperiente;
• Modelo consistente de
componentização favorecendo
extensibilidade;
• Modelo assíncrono via Ajax na
tela web.
Terceiro caso
O problema
Modelo genérico e configurável
de entidades de negócios para
integração entre ERPs para
diferentes processos de
negócios da empresa no
relacionamento com vários
clientes.
Qual a arquitetura adequada
para esta integração?
Requisitos
importantes
• Flexibilidade/extensibilidade
para definir entidades de
negócios por cliente por
unidade de negócio;
• Processamento em batch de
dados via máquina de regras;
• Interfaces Web dinâmicas;
• I18n: Inglês, espanhol e chinês.
Modelo básico da arquitetura
Tecnologias
selecionadas
• Java Swing => Builders
• POJO => Domain model
• Struts => Interfaces Web
dinâmicas
• Multi-thread standalond Java
app => Máquina de regras
• Spring Framework 1.2
Pontos positivos e
negativos
• Quantidade excessiva de
configurações em XML;
• Metamodelo genérico para
definição de entidades de
negócios;
• Performance tende piorar para
volume de dados das entidades;
• Modelo de componentização
POJO.
Perguntas
Obrigado!
• Contato:
Dr. Spock
spock@springbrasil.com.br
• Twitter:
@drspockbr
• About me:
http://about.me/drspockbr

TDC2011: Arquitetura de Software Enterprise