SlideShare una empresa de Scribd logo
1 de 47
ARQUITETURA DE
  SOFTWARE
  Uma visão prática do mundo real
QUEM SOMOS
Saulo Arruda (http://sauloarruda.eti.br)
  Quase especialista em MPS pela UFLA
  Gerente de Produção da Agence
  Coordenador do JUG-MS
  Instrutor do SENAC-MS
  Desenvolvedor há 10 anos
QUEM SOMOS
Jefferson Moreira (http://jeffmor.com)
 Quase especialista em Engenharia de Software pela
 UNIDERP/Anhanguera
 Desenvolvedor da Agence
 Coordenador do JUG-MS
 Instrutor do SENAC-MS
 Desenvolvedor há 6 anos
POR ONDE COMEÇAR?
Qual problema será resolvido?
Quais são as restrições?
Como vamos resolver o problema?
PROCESSO DE
DESENVOLVIMENTO
O PROBLEMA
Cliente: Consultoria de Marketing
Projeto: Programa de Melhoria do Índice de
Satisfação do Cliente (ISC) para Montadoras de
Veículos
Envolvidos: Consultoria, Montadora, Clientes da
Montadora, Agence, Instituto de Pesquisa
Escopo: Desenvolvimento do Sistema para
processamento dos indicadores e exibição dos
relatórios.
AS RESTRIÇÕES
O sistema deve atender clientes de várias áreas, não
somente montadoras;
Hoje, existem 2 soluções implementadas que
possuem as seguintes limitações:
  Problemas de performance e confiabilidade;
  Flexibilidade para atender mudanças solicitadas
  pelo cliente;
O PROCESSO
Etapas do Programa de Melhoria do Índice de
Satisfação do Cliente (ISC):
  Realização de Pesquisa com os Clientes
  Processamento e Geração dos Indicadores
  Disponibilização dos Relatórios
Esse processo é realizado semanalmente;
Periodicamente, a consultoria compila um relatório
analítico apresentando recomendações para melhoria
do ISC
O PROCESSO
O SISTEMA
O Sistema a ser desenvolvido abrange apenas a
geração de indicadores e apresentação dos
relatórios;
As pesquisas serão realizadas pelo Instituto de
Pesquisa, que enviará semanalmente uma planilha
eletrônica (.xls) com os resultados;
O relatório analítico será elaborado pela consultoria
usando ferramentas de terceiros;
VISÃO GERAL DA
ARQUITETURA
Linguagem de Programação: Java 5
Banco de Dados: PostgreSQL 8+
Frameworks e componentes:
 Objetos de Negócio: EJB 3.0
 Persistência: JPA 1.1
 Web: JSF 1.2 + Facelets + RichFaces
Servidor de Aplicação: JBoss 5
MOTIVOS DAS
DECISÕES
Por que Java?
Spring, JBoss Seam ou EJB 3?
Struts, Spring MVC ou JSF?
JBoss, Glassfish ou Websphere?
POR QUE JAVA?
Open Source
“Independente” de plataforma
“Excelente” API
Ecossistema amplo de Frameworks
Sistemas distribuídos “sem complicação”
E acima de tudo por conta da Plataforma Java
PLATAFORMA JAVA
SPRING, JBOSS SEAM
OU EJB 3?
Spring
 IoC, DI, Transaction API, vários frameworks
 integrados, excelente API para Web e Desktop.
JBoss SEAM
 DI, Bijeção, Novos Escopos e apenas para web.
EJB3 (nossa escolha)
 Spring+, container de EJB, especificação JEE,
 sistema distribuídos.
STRUTS, SPRING MVC
OU JSF?
Struts
  Validadores, Anotações e Legado.
Spring MVC
  Simples, Direto e Binding.
JSF (nossa escolha)
  Especificação, Validadores, Conversores,
  Componentes, Templates, Facelets, JSF 2.0 saindo.
JBOSS, GLASSFISH OU
WEBSPHERE?
GlassFish
  Implementação de referência JEE, integrado com NetBeans e
  dizem ser o mais rápido.

Websphere
  Pago, fácil configuração e a maioria das empresas tentando
  migrar para a versão 6.x

JBoss (nossa escolha)
  Suporte SOA, Leve, Robusto, JMX, Equipe com Know How,
  extensivo suporte AOP, representatividade no Brasil.
JAVA PERSISTENCE API
Substitui os Entity Beans
EJB/JPA QL
Provedores (Hibernate, Oracle Toplink, Apache JPA)
Extensões específicas de provedores (Cache,
estatísticas, JMX, Criteria)
Lazy Loading usando EJB.
Falta Criteria API (previsto para JPA 2.0)
POSTGRESQL
Open Source
Performance satisfatória
Ambiente Linux ou BSD (preferencialmente)
Dificuldade em Tuning (otimização)
Escalabilidade prejudicada em servidores
compartilhados
Dificuldade na Manutenção (VACUUM, ANALYZE)
CASOS DE USO
Importar Pesquisas
Gerar Indicadores
Conferir Indicadores
Publicar Indicadores
Manter Questionários
Consultar Acompanhamento Mensal
Consultar Dashboard
IMPORTAR PESQUISAS
Escopo: Sistema ISC - Processamento
Nível: Objetivo do Usuário
Ator Primário: Consultor
Pré-condições: Usuário autenticado
Garantias de Sucesso: Pesquisas importadas com
sucesso
Garantias Mínimas: Lista de erros da importação
IMPORTAR PESQUISAS
Cenário de Sucesso Principal:
1. O consultor seleciona a empresa, o questionário e a
   planilha com as pesquisas (arquivo xls)
2. O sistema processa a planilha e importa as
   pesquisas
3. O consultor confere o resultado da importação
IMPORTAR PESQUISAS
Extensões:
  2a. O arquivo não pôde ser lido:
    1. O sistema apresenta descrição do erro
    2. O consultor corrige e repete o passo 1 ou
    finaliza o caso de uso
  2-3a. Algumas linhas do arquivo estão inválidas:
    1. O continua e apresenta os erros no final
    2. O consultor corrige e repete o passo 1 ou
    finaliza o caso de uso
IMPORTAR PESQUISAS
Requisitos Especiais:
  RF01. Ao importar a pesquisa é necessário
  identificar a empresa para a qual foi feita;
  RF02. Ao importar a pesquisa é necessário
  identificar o responsável pelo atendimento;
  RP01. A importação de 1.000 pesquisas não pode
  demorar mais que 2 minutos;
Frequência de ocorrência: Semanalmente
IMPORTAR PESQUISAS
Mockup de Telas:
IMPORTAR PESQUISAS
MODELO DE DOMÍNIO
DIAGRAMA DE CLASSE
(NEGÓCIO)
DIAGRAMA DE CLASSE
(WEB)
DIAGRAMA DE
SEQUÊNCIA
DIAGRAMA DE
COMPONENTES
PROBLEMAS DA
IMPLEMENTAÇÃO
Performance: O tempo de importacão de 1 pesquisa
(60 questões) é de 0,5 s. Para 1.000 pesquisas
precisamos de mais de 8 min. Os maiores
questionários tem 200 questões.
Funcionalidade: A API POI consegue ler um
arquivo de até 5 Mb (OutOfMemoryError). Um
arquivo de 1.000 pesquisas com 200 chega a 8 Mb.
TESTES UNITÁRIOS
Classe base (AbstractModelTestCase)
Fixtures para dados de testes usando arquivos de
Bean do Spring
Injeção de objetos usados no teste
Criação do banco de dados
Controle transacional
Simulação dos objetos do container
TESTES DE
INTEGRAÇÃO
Testes usando objetos remotos do container EJB
Integração de todas as funcionalidades, usando
arquivos reais enviados pelo cliente
Uso de profiler para mensurar performance
Assertions baseado em planilhas enviadas pelo cliente
TESTES FUNCIONAIS
Plano de testes em planilha excel
Realização dos testes no final de cada iteração
Criação de evidências de testes
Execução de testes de regressão
Automatização de testes funcionais?
  Selenium/Webdriver (quem sabe no futuro)
TESTE DE CARGA
Teste de carga das telas de relatório
Uso de JMeter para implementação e execução
Execução remota de testes para simulação de vários
usuários (Ex.: 3 máquinas com 500 usuários cada)
Profiler para mensurar uso de processador e memória
Teste em ambiente de pré-produção com a
configuração do servidor de produção e simulação
real do número de usuários
OTIMIZAÇÕES
Refactoring de métodos críticos
Otimização/refactoring de consultas SQL
Otimização de índices no banco de dados
Implementação de Cache (ehcache)
Tuning do Servidor de Banco de Dados
Tuning de Servidor de Aplicação
Tuning de configurações do Sistema Operacional
CONCLUSÃO
CONCLUSÃO
Lições aprendidas
CONCLUSÃO
Lições aprendidas
 Processo de desenvolvimento:
CONCLUSÃO
Lições aprendidas
 Processo de desenvolvimento:
   Focado na Arquitetura;
CONCLUSÃO
Lições aprendidas
 Processo de desenvolvimento:
   Focado na Arquitetura;
   Dirigido por Casos de Uso;
CONCLUSÃO
Lições aprendidas
 Processo de desenvolvimento:
   Focado na Arquitetura;
   Dirigido por Casos de Uso;
   Iterativo e Incremental;
CONCLUSÃO
Lições aprendidas
 Processo de desenvolvimento:
   Focado na Arquitetura;
   Dirigido por Casos de Uso;
   Iterativo e Incremental;
 Testes antes da implantação (integração, funcional
 e carga/stress)
PERGUNTAS?
OBRIGADO!
Contatos para Treinamento, Shows, Funerais e etc.
Saulo Arruda
 E-mail: sauloarruda@gmail.com
 Blog: http://sauloarruda.eti.br
Jefferson Moreira
 E-mail: jeffmor@gmail.com
 Blog: http://jeffmor.com

Más contenido relacionado

La actualidad más candente

Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0Paulo Neto
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com PrimefacesFabio Noth
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeRafael Ponte
 
O framework spring
O framework springO framework spring
O framework springBruno Catão
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Anderson Araújo
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Spring: uma introdução prática
Spring: uma introdução práticaSpring: uma introdução prática
Spring: uma introdução práticaJosé Barros
 
Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"ISCTE
 
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
 
ASP .NET MVC - Você esta pronto para a pílula vermelha?
ASP .NET MVC - Você esta pronto para a pílula vermelha?ASP .NET MVC - Você esta pronto para a pílula vermelha?
ASP .NET MVC - Você esta pronto para a pílula vermelha?Douglas Aguiar
 

La actualidad más candente (20)

JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
 
Apresentação JSF
Apresentação JSFApresentação JSF
Apresentação JSF
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
 
Arquitetura do Framework Spring
Arquitetura do Framework SpringArquitetura do Framework Spring
Arquitetura do Framework Spring
 
O framework spring
O framework springO framework spring
O framework spring
 
CakePHP
CakePHPCakePHP
CakePHP
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Spring: uma introdução prática
Spring: uma introdução práticaSpring: uma introdução prática
Spring: uma introdução prática
 
Minicurso Aplicação Web Utilizando o Framework Laravel
Minicurso Aplicação Web Utilizando o Framework LaravelMinicurso Aplicação Web Utilizando o Framework Laravel
Minicurso Aplicação Web Utilizando o Framework Laravel
 
Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"Apresentação "O CMS Seguro"
Apresentação "O CMS Seguro"
 
Apresentação jsf 1_2
Apresentação jsf 1_2Apresentação jsf 1_2
Apresentação jsf 1_2
 
Curriculo christiane abril13
Curriculo christiane abril13Curriculo christiane abril13
Curriculo christiane abril13
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
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
 
ASP .NET MVC - Você esta pronto para a pílula vermelha?
ASP .NET MVC - Você esta pronto para a pílula vermelha?ASP .NET MVC - Você esta pronto para a pílula vermelha?
ASP .NET MVC - Você esta pronto para a pílula vermelha?
 
Jsf
JsfJsf
Jsf
 

Similar a Arquitetura de Software

Plano do projeto de software
Plano do projeto de softwarePlano do projeto de software
Plano do projeto de softwareDanilo Gois
 
Teste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATSTeste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATSFabrício Campos
 
BluDotNet - Conhecendo o Team Foundation Server 2010
BluDotNet - Conhecendo o Team Foundation Server 2010BluDotNet - Conhecendo o Team Foundation Server 2010
BluDotNet - Conhecendo o Team Foundation Server 2010Rafael Leonhardt
 
SITE BOLETIM ESCOLAR UMA PROPOSTA ONLINE NA ETEC LUIZ PIRES BARBOSA
SITE BOLETIM ESCOLAR UMA PROPOSTA ONLINE NA ETEC LUIZ PIRES BARBOSASITE BOLETIM ESCOLAR UMA PROPOSTA ONLINE NA ETEC LUIZ PIRES BARBOSA
SITE BOLETIM ESCOLAR UMA PROPOSTA ONLINE NA ETEC LUIZ PIRES BARBOSAJefferson Simão Gonçalves
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Monitoração de Aplicações Distribuídas
Monitoração de Aplicações DistribuídasMonitoração de Aplicações Distribuídas
Monitoração de Aplicações DistribuídasMarkus Christen
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = ProdutividadeAdriano Bertucci
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de RequisitosTiago Barros
 
Qualidade - Porque testar seu software?
Qualidade - Porque testar seu software?Qualidade - Porque testar seu software?
Qualidade - Porque testar seu software?Adriano Bertucci
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Facesbielgott
 
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Edlaine Zamora
 

Similar a Arquitetura de Software (20)

Plano do projeto de software
Plano do projeto de softwarePlano do projeto de software
Plano do projeto de software
 
Teste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATSTeste de Performance - 3º Encontro da ALATS
Teste de Performance - 3º Encontro da ALATS
 
BluDotNet - Conhecendo o Team Foundation Server 2010
BluDotNet - Conhecendo o Team Foundation Server 2010BluDotNet - Conhecendo o Team Foundation Server 2010
BluDotNet - Conhecendo o Team Foundation Server 2010
 
SITE BOLETIM ESCOLAR UMA PROPOSTA ONLINE NA ETEC LUIZ PIRES BARBOSA
SITE BOLETIM ESCOLAR UMA PROPOSTA ONLINE NA ETEC LUIZ PIRES BARBOSASITE BOLETIM ESCOLAR UMA PROPOSTA ONLINE NA ETEC LUIZ PIRES BARBOSA
SITE BOLETIM ESCOLAR UMA PROPOSTA ONLINE NA ETEC LUIZ PIRES BARBOSA
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Monitoração de Aplicações Distribuídas
Monitoração de Aplicações DistribuídasMonitoração de Aplicações Distribuídas
Monitoração de Aplicações Distribuídas
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Jheat
JheatJheat
Jheat
 
Visual Studio ALM
Visual Studio ALMVisual Studio ALM
Visual Studio ALM
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = Produtividade
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
TechEd_OFC305
TechEd_OFC305TechEd_OFC305
TechEd_OFC305
 
Qualidade - Porque testar seu software?
Qualidade - Porque testar seu software?Qualidade - Porque testar seu software?
Qualidade - Porque testar seu software?
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Asp net mvc
Asp net mvcAsp net mvc
Asp net mvc
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Faces
 
1409243945064
14092439450641409243945064
1409243945064
 
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
 
Mod06 licao01-apostila
Mod06 licao01-apostilaMod06 licao01-apostila
Mod06 licao01-apostila
 
Dba Ciclo Palestra P5 V1a
Dba Ciclo Palestra P5 V1aDba Ciclo Palestra P5 V1a
Dba Ciclo Palestra P5 V1a
 

Más de Saulo Arruda

MVP: conheça os 2 significados ao criar o seu #cpbr8
MVP: conheça os 2 significados ao criar o seu #cpbr8MVP: conheça os 2 significados ao criar o seu #cpbr8
MVP: conheça os 2 significados ao criar o seu #cpbr8Saulo Arruda
 
Oportunidade para desenvolvedores na era das startups
Oportunidade para desenvolvedores na era das startupsOportunidade para desenvolvedores na era das startups
Oportunidade para desenvolvedores na era das startupsSaulo Arruda
 
Growth Hacking Mobile - BRAPPS 2014
Growth Hacking Mobile - BRAPPS 2014Growth Hacking Mobile - BRAPPS 2014
Growth Hacking Mobile - BRAPPS 2014Saulo Arruda
 
Growth hacking - Jera Retrospectiva
Growth hacking  - Jera RetrospectivaGrowth hacking  - Jera Retrospectiva
Growth hacking - Jera RetrospectivaSaulo Arruda
 
#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startups#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startupsSaulo Arruda
 
StartupFarm métricas
StartupFarm métricasStartupFarm métricas
StartupFarm métricasSaulo Arruda
 
Mande seu chefe pentear macaco
Mande seu chefe pentear macacoMande seu chefe pentear macaco
Mande seu chefe pentear macacoSaulo Arruda
 
Sthart - Desenvolvimento Web e Mobile
Sthart - Desenvolvimento Web e MobileSthart - Desenvolvimento Web e Mobile
Sthart - Desenvolvimento Web e MobileSaulo Arruda
 
Como ganhar dinheiro com aplicativos mobile?
Como ganhar dinheiro com aplicativos mobile?Como ganhar dinheiro com aplicativos mobile?
Como ganhar dinheiro com aplicativos mobile?Saulo Arruda
 
Startups - É programando que se empreende
Startups - É programando que se empreendeStartups - É programando que se empreende
Startups - É programando que se empreendeSaulo Arruda
 
Desenvolvimento iOS - Aula 6
Desenvolvimento iOS - Aula 6Desenvolvimento iOS - Aula 6
Desenvolvimento iOS - Aula 6Saulo Arruda
 
Desenvolvimento iOS - Aula 5
Desenvolvimento iOS - Aula 5Desenvolvimento iOS - Aula 5
Desenvolvimento iOS - Aula 5Saulo Arruda
 
Desenvolvimento iOS - Aula 4
Desenvolvimento iOS - Aula 4Desenvolvimento iOS - Aula 4
Desenvolvimento iOS - Aula 4Saulo Arruda
 
TDC 2012 - Querem me comprar, e agora?
TDC 2012 - Querem me comprar, e agora?TDC 2012 - Querem me comprar, e agora?
TDC 2012 - Querem me comprar, e agora?Saulo Arruda
 
Desenvolvimento iOS - Aula 3
Desenvolvimento iOS - Aula 3Desenvolvimento iOS - Aula 3
Desenvolvimento iOS - Aula 3Saulo Arruda
 
Desenvolvimento iOS - Aula 2
Desenvolvimento iOS - Aula 2Desenvolvimento iOS - Aula 2
Desenvolvimento iOS - Aula 2Saulo Arruda
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Saulo Arruda
 
Empreendedorismo Agil
Empreendedorismo AgilEmpreendedorismo Agil
Empreendedorismo AgilSaulo Arruda
 

Más de Saulo Arruda (20)

MVP: conheça os 2 significados ao criar o seu #cpbr8
MVP: conheça os 2 significados ao criar o seu #cpbr8MVP: conheça os 2 significados ao criar o seu #cpbr8
MVP: conheça os 2 significados ao criar o seu #cpbr8
 
Oportunidade para desenvolvedores na era das startups
Oportunidade para desenvolvedores na era das startupsOportunidade para desenvolvedores na era das startups
Oportunidade para desenvolvedores na era das startups
 
Growth Hacking Mobile - BRAPPS 2014
Growth Hacking Mobile - BRAPPS 2014Growth Hacking Mobile - BRAPPS 2014
Growth Hacking Mobile - BRAPPS 2014
 
Growth hacking - Jera Retrospectiva
Growth hacking  - Jera RetrospectivaGrowth hacking  - Jera Retrospectiva
Growth hacking - Jera Retrospectiva
 
#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startups#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startups
 
StartupFarm métricas
StartupFarm métricasStartupFarm métricas
StartupFarm métricas
 
Mande seu chefe pentear macaco
Mande seu chefe pentear macacoMande seu chefe pentear macaco
Mande seu chefe pentear macaco
 
Sthart - Desenvolvimento Web e Mobile
Sthart - Desenvolvimento Web e MobileSthart - Desenvolvimento Web e Mobile
Sthart - Desenvolvimento Web e Mobile
 
Como ganhar dinheiro com aplicativos mobile?
Como ganhar dinheiro com aplicativos mobile?Como ganhar dinheiro com aplicativos mobile?
Como ganhar dinheiro com aplicativos mobile?
 
Startups - É programando que se empreende
Startups - É programando que se empreendeStartups - É programando que se empreende
Startups - É programando que se empreende
 
SCRUM - Aula 2
SCRUM - Aula 2SCRUM - Aula 2
SCRUM - Aula 2
 
SCRUM - Aula1
SCRUM - Aula1SCRUM - Aula1
SCRUM - Aula1
 
Desenvolvimento iOS - Aula 6
Desenvolvimento iOS - Aula 6Desenvolvimento iOS - Aula 6
Desenvolvimento iOS - Aula 6
 
Desenvolvimento iOS - Aula 5
Desenvolvimento iOS - Aula 5Desenvolvimento iOS - Aula 5
Desenvolvimento iOS - Aula 5
 
Desenvolvimento iOS - Aula 4
Desenvolvimento iOS - Aula 4Desenvolvimento iOS - Aula 4
Desenvolvimento iOS - Aula 4
 
TDC 2012 - Querem me comprar, e agora?
TDC 2012 - Querem me comprar, e agora?TDC 2012 - Querem me comprar, e agora?
TDC 2012 - Querem me comprar, e agora?
 
Desenvolvimento iOS - Aula 3
Desenvolvimento iOS - Aula 3Desenvolvimento iOS - Aula 3
Desenvolvimento iOS - Aula 3
 
Desenvolvimento iOS - Aula 2
Desenvolvimento iOS - Aula 2Desenvolvimento iOS - Aula 2
Desenvolvimento iOS - Aula 2
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Empreendedorismo Agil
Empreendedorismo AgilEmpreendedorismo Agil
Empreendedorismo Agil
 

Arquitetura de Software

  • 1. ARQUITETURA DE SOFTWARE Uma visão prática do mundo real
  • 2. QUEM SOMOS Saulo Arruda (http://sauloarruda.eti.br) Quase especialista em MPS pela UFLA Gerente de Produção da Agence Coordenador do JUG-MS Instrutor do SENAC-MS Desenvolvedor há 10 anos
  • 3. QUEM SOMOS Jefferson Moreira (http://jeffmor.com) Quase especialista em Engenharia de Software pela UNIDERP/Anhanguera Desenvolvedor da Agence Coordenador do JUG-MS Instrutor do SENAC-MS Desenvolvedor há 6 anos
  • 4. POR ONDE COMEÇAR? Qual problema será resolvido? Quais são as restrições? Como vamos resolver o problema?
  • 6. O PROBLEMA Cliente: Consultoria de Marketing Projeto: Programa de Melhoria do Índice de Satisfação do Cliente (ISC) para Montadoras de Veículos Envolvidos: Consultoria, Montadora, Clientes da Montadora, Agence, Instituto de Pesquisa Escopo: Desenvolvimento do Sistema para processamento dos indicadores e exibição dos relatórios.
  • 7. AS RESTRIÇÕES O sistema deve atender clientes de várias áreas, não somente montadoras; Hoje, existem 2 soluções implementadas que possuem as seguintes limitações: Problemas de performance e confiabilidade; Flexibilidade para atender mudanças solicitadas pelo cliente;
  • 8. O PROCESSO Etapas do Programa de Melhoria do Índice de Satisfação do Cliente (ISC): Realização de Pesquisa com os Clientes Processamento e Geração dos Indicadores Disponibilização dos Relatórios Esse processo é realizado semanalmente; Periodicamente, a consultoria compila um relatório analítico apresentando recomendações para melhoria do ISC
  • 10. O SISTEMA O Sistema a ser desenvolvido abrange apenas a geração de indicadores e apresentação dos relatórios; As pesquisas serão realizadas pelo Instituto de Pesquisa, que enviará semanalmente uma planilha eletrônica (.xls) com os resultados; O relatório analítico será elaborado pela consultoria usando ferramentas de terceiros;
  • 11. VISÃO GERAL DA ARQUITETURA Linguagem de Programação: Java 5 Banco de Dados: PostgreSQL 8+ Frameworks e componentes: Objetos de Negócio: EJB 3.0 Persistência: JPA 1.1 Web: JSF 1.2 + Facelets + RichFaces Servidor de Aplicação: JBoss 5
  • 12. MOTIVOS DAS DECISÕES Por que Java? Spring, JBoss Seam ou EJB 3? Struts, Spring MVC ou JSF? JBoss, Glassfish ou Websphere?
  • 13. POR QUE JAVA? Open Source “Independente” de plataforma “Excelente” API Ecossistema amplo de Frameworks Sistemas distribuídos “sem complicação” E acima de tudo por conta da Plataforma Java
  • 15.
  • 16. SPRING, JBOSS SEAM OU EJB 3? Spring IoC, DI, Transaction API, vários frameworks integrados, excelente API para Web e Desktop. JBoss SEAM DI, Bijeção, Novos Escopos e apenas para web. EJB3 (nossa escolha) Spring+, container de EJB, especificação JEE, sistema distribuídos.
  • 17. STRUTS, SPRING MVC OU JSF? Struts Validadores, Anotações e Legado. Spring MVC Simples, Direto e Binding. JSF (nossa escolha) Especificação, Validadores, Conversores, Componentes, Templates, Facelets, JSF 2.0 saindo.
  • 18. JBOSS, GLASSFISH OU WEBSPHERE? GlassFish Implementação de referência JEE, integrado com NetBeans e dizem ser o mais rápido. Websphere Pago, fácil configuração e a maioria das empresas tentando migrar para a versão 6.x JBoss (nossa escolha) Suporte SOA, Leve, Robusto, JMX, Equipe com Know How, extensivo suporte AOP, representatividade no Brasil.
  • 19. JAVA PERSISTENCE API Substitui os Entity Beans EJB/JPA QL Provedores (Hibernate, Oracle Toplink, Apache JPA) Extensões específicas de provedores (Cache, estatísticas, JMX, Criteria) Lazy Loading usando EJB. Falta Criteria API (previsto para JPA 2.0)
  • 20. POSTGRESQL Open Source Performance satisfatória Ambiente Linux ou BSD (preferencialmente) Dificuldade em Tuning (otimização) Escalabilidade prejudicada em servidores compartilhados Dificuldade na Manutenção (VACUUM, ANALYZE)
  • 21. CASOS DE USO Importar Pesquisas Gerar Indicadores Conferir Indicadores Publicar Indicadores Manter Questionários Consultar Acompanhamento Mensal Consultar Dashboard
  • 22. IMPORTAR PESQUISAS Escopo: Sistema ISC - Processamento Nível: Objetivo do Usuário Ator Primário: Consultor Pré-condições: Usuário autenticado Garantias de Sucesso: Pesquisas importadas com sucesso Garantias Mínimas: Lista de erros da importação
  • 23. IMPORTAR PESQUISAS Cenário de Sucesso Principal: 1. O consultor seleciona a empresa, o questionário e a planilha com as pesquisas (arquivo xls) 2. O sistema processa a planilha e importa as pesquisas 3. O consultor confere o resultado da importação
  • 24. IMPORTAR PESQUISAS Extensões: 2a. O arquivo não pôde ser lido: 1. O sistema apresenta descrição do erro 2. O consultor corrige e repete o passo 1 ou finaliza o caso de uso 2-3a. Algumas linhas do arquivo estão inválidas: 1. O continua e apresenta os erros no final 2. O consultor corrige e repete o passo 1 ou finaliza o caso de uso
  • 25. IMPORTAR PESQUISAS Requisitos Especiais: RF01. Ao importar a pesquisa é necessário identificar a empresa para a qual foi feita; RF02. Ao importar a pesquisa é necessário identificar o responsável pelo atendimento; RP01. A importação de 1.000 pesquisas não pode demorar mais que 2 minutos; Frequência de ocorrência: Semanalmente
  • 33. PROBLEMAS DA IMPLEMENTAÇÃO Performance: O tempo de importacão de 1 pesquisa (60 questões) é de 0,5 s. Para 1.000 pesquisas precisamos de mais de 8 min. Os maiores questionários tem 200 questões. Funcionalidade: A API POI consegue ler um arquivo de até 5 Mb (OutOfMemoryError). Um arquivo de 1.000 pesquisas com 200 chega a 8 Mb.
  • 34. TESTES UNITÁRIOS Classe base (AbstractModelTestCase) Fixtures para dados de testes usando arquivos de Bean do Spring Injeção de objetos usados no teste Criação do banco de dados Controle transacional Simulação dos objetos do container
  • 35. TESTES DE INTEGRAÇÃO Testes usando objetos remotos do container EJB Integração de todas as funcionalidades, usando arquivos reais enviados pelo cliente Uso de profiler para mensurar performance Assertions baseado em planilhas enviadas pelo cliente
  • 36. TESTES FUNCIONAIS Plano de testes em planilha excel Realização dos testes no final de cada iteração Criação de evidências de testes Execução de testes de regressão Automatização de testes funcionais? Selenium/Webdriver (quem sabe no futuro)
  • 37. TESTE DE CARGA Teste de carga das telas de relatório Uso de JMeter para implementação e execução Execução remota de testes para simulação de vários usuários (Ex.: 3 máquinas com 500 usuários cada) Profiler para mensurar uso de processador e memória Teste em ambiente de pré-produção com a configuração do servidor de produção e simulação real do número de usuários
  • 38. OTIMIZAÇÕES Refactoring de métodos críticos Otimização/refactoring de consultas SQL Otimização de índices no banco de dados Implementação de Cache (ehcache) Tuning do Servidor de Banco de Dados Tuning de Servidor de Aplicação Tuning de configurações do Sistema Operacional
  • 42. CONCLUSÃO Lições aprendidas Processo de desenvolvimento: Focado na Arquitetura;
  • 43. CONCLUSÃO Lições aprendidas Processo de desenvolvimento: Focado na Arquitetura; Dirigido por Casos de Uso;
  • 44. CONCLUSÃO Lições aprendidas Processo de desenvolvimento: Focado na Arquitetura; Dirigido por Casos de Uso; Iterativo e Incremental;
  • 45. CONCLUSÃO Lições aprendidas Processo de desenvolvimento: Focado na Arquitetura; Dirigido por Casos de Uso; Iterativo e Incremental; Testes antes da implantação (integração, funcional e carga/stress)
  • 47. OBRIGADO! Contatos para Treinamento, Shows, Funerais e etc. Saulo Arruda E-mail: sauloarruda@gmail.com Blog: http://sauloarruda.eti.br Jefferson Moreira E-mail: jeffmor@gmail.com Blog: http://jeffmor.com