Arquitetura web para sistemas de negócio

1.267 visualizações

Publicada em

Arquitetura para desenvolvimento de sistemas de negócio na Web

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.267
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
30
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Arquitetura web para sistemas de negócio

  1. 1. Arquitetura Web Ralph J. R. Filho
  2. 2. Cenário – Desenvolvimento Web Qual a melhor forma de desenvolver para a Web?
  3. 3. Cenário – SimplicidadeEscrever lógica de negócio em uma página de script JSP ASP PHP
  4. 4. Exemploinclude_once ("check.php");if ($check[level] > 4){print "<font face=Arial size=5 color=#FF0000>";print "<b>Illegal Access</b>";print "</font><br>";print "<font face=Verdana size=2 color=#000000>";print "<b>You do not have permission to view this page.</b></font>";exit; // Stop script execution}
  5. 5. Importante esclarecer queSe a abordagem escolhida para a arquitetura for precária, a escolha da tecnologia influencia pouco.
  6. 6. Importante esclarecer queExistem “n” opções no mercado para desenvolvimento de software
  7. 7. Importante esclarecer queO que faz diferença e agrega valor é uma arquitetura bem definida
  8. 8. Importante esclarecer queA partir da arquitetura, seleciona-se as tecnologias adequadas à natureza dos projetosExemplo: casa Para que público é a casa? Qual o clima do local? Quais as características do terreno? Qual o custo/benefício das madeiras na região?
  9. 9. Exemplo: software Para que público é o software? (b2b, b2c, ...) Qual o tipo do software (negócio, ferramenta, embarcado) Quais os requisitos funcionais? Quais os requisitos não-funcionais? Vai rodar em que ambiente? É cliente-servidor ou cliente? ...
  10. 10. Ou sejaUma arquitetura e conjunto de tecnologias montados para um projeto “A” pode não ser a mais adequada para um projeto “B”Cada caso é um caso
  11. 11. AnalogiaUsa-se o mesmo tipo de material para estas duas construções?
  12. 12. Software
  13. 13. CenárioCom a falta de padrões arquiteturais pode ocorrer Dificuldade de manutenção Baixa escalabilidade Baixo nível de reuso Código “espaguete”
  14. 14. Dê manutenção nisso
  15. 15. Cenário – Spaghetti code10 i = 020 i = i + 130 PRINT i; " squared = "; i * i40 IF i >= 10 THEN GOTO 6050 GOTO 2060 PRINT "Program Completed."70 END
  16. 16. Technical Debt (Débito técnico)“The obligation that a softwareorganization incurs when itchooses a design orconstruction approach thatsexpedient in the short termbut that increasescomplexity and is morecostly in the long term”
  17. 17. O investimento em arquitetura é necessário, porém, seus benefícios são difíceis de mensurarDe forma simples, pode-se comparar obtendo resultados de projetos (sucesso/insucesso), análises de produtividade (hora/homem) e índices de qualidade (bugs por funcionalidade, medida de desempenho, etc.)
  18. 18. Evolução (1)
  19. 19. Evolução (1)Separar a lógica da apresentação ASP.Net PHP + Smarty JSF
  20. 20. Melhora a situação, mas...Geralmente sobrecarrega o código aonde está a lógicaCausando os mesmos problemas
  21. 21. Anti-patterns
  22. 22. Evolução (2)
  23. 23. Evolução (2)Separar a lógica da apresentação, usando um meio-de-campo
  24. 24. Filosofia MVC Modelo Controle Visão
  25. 25. MVCA visão não precisa saber que o modelo existe e vice-versa
  26. 26. MVCVisão Cadastra-Clientes.htmlControle ClientesControl.javaModelo ClientesModel.java
  27. 27. MVCJá é alguma coisa, mas pode melhorarO código no modelo tende à ficar extensoMVC é uma filosofia de arquitetura, pode ser adaptadaAbre aspas Alguns modelos e métodos servem como guias. Não são “doutrinas”. Não é pecado personalizar
  28. 28. Evolução (3)
  29. 29. Evolução (3)O esforço de programação deve estar na modelagem do domínio de negócio, afinal... é disso que se trata a programação de sistemas de negócioIsto se aplica a softwares de negócioOutros tipos de software: ferramentas, embarcado
  30. 30. Domain-Driven DesignConjunto de princípiosBaseado no MVCFoco no reuso de códigoFacilidade de implementaçãoEquipes distribuídasArquitetura orientada a serviçoCloud-computing / Web-Services
  31. 31. DDD
  32. 32. A camada de DomínioContém toda a lógica do negócioAssinatura de métodosBaixo nível de acoplamentoAumenta o número de arquivos, reduz o número de linhas de códigoModelo de arquitetura que evoluiu com a tecnologia
  33. 33. Montando uma arquiteturaTecnologia utilizada Java EE
  34. 34. Java EEConjunto de especificaçõesDita como deve ser implementadoTransfere complexidade repetitiva das aplicações de negócio para a arquiteturaJava EE 6
  35. 35. ? INFRA EJB JPADOMAIN Repos. Service Entity CONTROL JSF ?
  36. 36. Oracle Glassfish CommunityImplementa o Java EEGerencia transações e conexões com o BDDisponibiliza ambiente para servletsControla aspectos de segurança e acessoConcorrentes JBoss AS Apache Geronimo
  37. 37. Enterprise Java Beans (EJB)Especificação versão 3.1 (10/12/2009)Integra-se com a camada de persistênciaControla estado de beansControla aspectos de segurançaRecursos de agendamentoSuporte à web services
  38. 38. Java Persistence API (JPA)Especificação 2.0 (10/12/2009)Oferece estrutura para mapear entidades do banco de dadosControla aspectos de CRUDOferece os benefícios de O.O. para BD relacionaisImplementadores: Hibernate, TopLink, etc.
  39. 39. Java Server Faces (JSF)Especificação 2.1 (22/10/2010) (Mojarra)Disponibiliza uma separação clara entre a camada de visão e a camada de controleDisponibliza templatesDisponibiliza componentes visuaisDisponibiliza AJAX e controle de eventos
  40. 40. PrimeFacesBiblioteca de componentes visuais que utiliza o JSF e o Jquery (centenas de componentes)Atualmente na versão 3.2Simplifica a construção de páginas webAjuda o programador a manter o foco na lógica do negócioConcorrentes RichFaces IceFaces
  41. 41. ExemploLista de Notas Fiscais lista-nota-fiscal.xhtml NotaFiscalMB.java NotaFiscalRepository.java NotaFiscalRepositoryJPA.java NotaFiscalService.java NotaFiscalServiceImpl.java NotaFiscal.java
  42. 42. Exemplo<p:dataTable var="nf" value="#{notaFiscalMB.notasFiscais}" sortBy="#{nf.numero}" id="nf_table" > <f:facet name="header">Lista de Notas Fiscais</f:facet> <p:column id="modelColumn" filterBy="#{nf.numero}" headerText="Número" sortBy="#{nf.numero}"> <h:outputText value="#{nf.numero}" /></p:column> <p:column id="yearHeader" headerText="Série" sortBy="#{nf.serie}">#{nf.serie}</p:column> <p:column id="manufacturerHeader" headerText="Emitente" sortBy="#{nf.razaoSocialDestinatario}"> #{nf.razaoSocialDestinatario}</p:column> <p:column id="colorHeader" headerText="Data Emissão" sortBy="#{nf.dataEmissao}"> #{nf.dataEmissao}</p:column> <p:column id="vlNota" headerText="Valor Nota Fiscal" sortBy="#{nf.valor}"> #{nf.valor}</p:column> </p:dataTable>
  43. 43. Exemplo
  44. 44. Resultado
  45. 45. Exemplo
  46. 46. Exemplo
  47. 47. Notem Os nomes no singular Os nomes em inglês O tamanho dos nomes dos arquivos A limpeza e a clareza dos códigos-fonte (POJOs)
  48. 48. Posso substituir a camada de Infra, Controle, Visão, Servidor de Aplicação, Banco de Dados e a saída para o usuárioNo entanto, a modelagem de domínio pode continuar intacta
  49. 49. O domínio representa o entendimento do programador sobre a lógica do negócio
  50. 50. É no domínio que ficará a inteligência do negócio Regras de NegócioEu digo o quê deve ser feito e não como Padrões ISO são assim Modelos de desenvolvimento são assimO como é feito vai nas camadas periféricas da arquitetura que implementam o domínio
  51. 51. Tenho condições de fazer
  52. 52. Caminho de implementaçãoArquitetar Assinar métodos do domínio Mapear entidadesImplementar Implementar repositórios e regras de negócio Implementar interfaces e controladores Implementar validações e tratamento de erros Implementar testes unitários
  53. 53. Adição de boas práticasInspeção de códigoProjeto de solução (UML)Foco no negócioProgramação coletiva (o código pertence à organização e não ao programador)Padrões devem ser evoluídos constantemente
  54. 54. NotaNão há nirvana para uma organização. O apse é a melhoria contínua de processos bem definidos, estáveis e adequadamente quantificados
  55. 55. Vantagens e DesvantagensEstabilidade Back-end não é trivial!Comunidades ativas Curva de aprendizadoMaterial didático Debug em alto nívelManutenibilidadeProdutividadeDesempenhoRápido de Prototipar
  56. 56. Tempo investidoAumenta o investimento em pensar como fazer para diminuir o investimento em fazer Mais planejamento, menos esforço
  57. 57. Tempo InvestidoE quanto à liberações urgentes? RefactoringPlanejamento de releases é crucialOrganização da equipe e da demanda é crucialPolítica de gerenciamento de configuraçãoPolítica de manutenção
  58. 58. LembrandoCada caso é um caso (natureza dos projetos)Todas as abordagens tem vantagens e desvantagensA melhor solução é aquela que atende à tua necessidadeÉ bom manter os olhos abertos às novidadesA inovação pode ser um diferencial competitivo
  59. 59. Ambiente decente
  60. 60. Ambiente Decente Para desenvolvimento, em geral, os S.O.s pinguim-like são superioresEscolher uma IDE é comoescolher um time de futebol.Mas o eclipse tem umalegião de fãs.
  61. 61. JAVA em 2012#1 Linguagem de programação9 milhões de desenvolvedores1 bilhão de downloads por ano3 bilhões de devices rodando java97% de computadores empresariais17 anos de mercado
  62. 62. Java - JCP
  63. 63. Para encerrar – Martin Fowler“Any fool can write code that a computer can understand. A good programmer write code that humans can understand”

×