Casos de sucesso na implantação de arquitetura de software enterprise.
Slides da palestra apresentada no TDC2011 em Florianópolis para a trilha de Arquitetura.
Quais os desafios e principais decisões de projeto que norteiam a concepção e evolução de uma arquitetura de software enterprise? Através de 3 exemplos de casos de sucesso serão discutidas as dificuldades, facilidades e as principais decisões de projeto que nortearam a implantação destas arquiteturas. Assim, exemplos baseados em Frameworks e tecnologias da plataforma Java EE para prover uma solução consistente e escalável de acordo os requisitos não funcionais estabelecidos serão considerados para ilustrar o que compõe a definição de uma arquitetura de software simples e enterpise.
2. @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;
16. “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”
17. 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
18. 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
19. 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
20. 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.
23. 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?
24. 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.
30. 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.
32. 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?
33. 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;
39. 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.
42. 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?
45. 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
46. 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.