Arquitetura Web     Ralph J. R. Filho
Cenário – Desenvolvimento Web               Qual a melhor forma               de desenvolver               para a Web?
Cenário – SimplicidadeEscrever lógica de negócio em uma página de script  JSP  ASP  PHP
Exemploinclude_once ("check.php");if ($check[level] > 4){print "<font face=Arial size=5 color=#FF0000>";print "<b>Illegal ...
Importante esclarecer queSe a abordagem escolhida para a arquitetura for precária, a escolha da tecnologia influencia pouco.
Importante esclarecer queExistem “n” opções no mercado para desenvolvimento de software
Importante esclarecer queO que faz diferença e agrega valor é uma arquitetura bem definida
Importante esclarecer queA partir da arquitetura, seleciona-se as tecnologias  adequadas à natureza dos projetosExemplo: c...
Exemplo: software  Para que público é o software? (b2b, b2c, ...)  Qual o tipo do software (negócio, ferramenta,   embarca...
Ou sejaUma arquitetura e conjunto de tecnologias montados para um projeto “A” pode não ser a mais adequada para um projeto...
AnalogiaUsa-se o mesmo tipo de material para estas duas construções?
Software
CenárioCom a falta de padrões arquiteturais pode ocorrer  Dificuldade de manutenção  Baixa escalabilidade  Baixo nível de ...
Dê manutenção nisso
Cenário – Spaghetti code10 i = 020 i = i + 130 PRINT i; " squared = "; i * i40 IF i >= 10 THEN GOTO 6050 GOTO 2060 PRINT "...
Technical Debt (Débito técnico)“The obligation that a softwareorganization incurs when itchooses a design orconstruction a...
O investimento em arquitetura é necessário, porém, seus benefícios são difíceis de mensurarDe forma simples, pode-se compa...
Evolução (1)
Evolução (1)Separar a lógica da apresentação  ASP.Net  PHP + Smarty  JSF
Melhora a situação, mas...Geralmente sobrecarrega o código aonde está a lógicaCausando os mesmos problemas
Anti-patterns
Evolução (2)
Evolução (2)Separar a lógica da apresentação, usando um meio-de-campo
Filosofia MVC       Modelo       Controle        Visão
MVCA visão não precisa saber que o modelo existe e vice-versa
MVCVisão  Cadastra-Clientes.htmlControle  ClientesControl.javaModelo  ClientesModel.java
MVCJá é alguma coisa, mas pode melhorarO código no modelo tende à ficar extensoMVC é uma filosofia de arquitetura, pode se...
Evolução (3)
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 progr...
Domain-Driven DesignConjunto de princípiosBaseado no MVCFoco no reuso de códigoFacilidade de implementaçãoEquipes distribu...
DDD
A camada de DomínioContém toda a lógica do negócioAssinatura de métodosBaixo nível de acoplamentoAumenta o número de arqui...
Montando uma arquiteturaTecnologia utilizada  Java EE
Java EEConjunto de especificaçõesDita como deve ser implementadoTransfere complexidade repetitiva das  aplicações de negóc...
?         INFRA            EJB             JPADOMAIN           Repos.         Service         Entity   CONTROL            ...
Oracle Glassfish CommunityImplementa o Java EEGerencia transações e conexões com o BDDisponibiliza ambiente para servletsC...
Enterprise Java Beans (EJB)Especificação versão 3.1 (10/12/2009)Integra-se com a camada de persistênciaControla estado de ...
Java Persistence API (JPA)Especificação 2.0 (10/12/2009)Oferece estrutura para mapear entidades do banco de dadosControla ...
Java Server Faces (JSF)Especificação 2.1 (22/10/2010) (Mojarra)Disponibiliza uma separação clara entre a camada de visão e...
PrimeFacesBiblioteca de componentes visuais que utiliza o  JSF e o Jquery (centenas de componentes)Atualmente na versão 3....
ExemploLista de Notas Fiscais  lista-nota-fiscal.xhtml  NotaFiscalMB.java  NotaFiscalRepository.java  NotaFiscalRepository...
Exemplo<p:dataTable var="nf" value="#{notaFiscalMB.notasFiscais}" sortBy="#{nf.numero}" id="nf_table" >         <f:facet n...
Exemplo
Resultado
Exemplo
Exemplo
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 (PO...
Posso substituir a camada de Infra, Controle, Visão, Servidor de Aplicação, Banco de Dados e a saída para o usuárioNo enta...
O domínio representa o entendimento do programador sobre a lógica do negócio
É 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...
Tenho condições de fazer
Caminho de implementaçãoArquitetar   Assinar métodos do domínio   Mapear entidadesImplementar   Implementar repositórios e...
Adição de boas práticasInspeção de códigoProjeto de solução (UML)Foco no negócioProgramação coletiva (o código pertence à ...
NotaNão há nirvana para uma organização. O apse é a melhoria contínua de processos bem definidos, estáveis e adequadamente...
Vantagens e DesvantagensEstabilidade           Back-end não é trivial!Comunidades ativas     Curva de aprendizadoMaterial ...
Tempo investidoAumenta o investimento em pensar como fazer para diminuir o investimento em fazer  Mais planejamento, menos...
Tempo InvestidoE quanto à liberações urgentes?  RefactoringPlanejamento de releases é crucialOrganização da equipe e da de...
LembrandoCada caso é um caso (natureza dos projetos)Todas as abordagens tem vantagens e desvantagensA melhor solução é aqu...
Ambiente decente
Ambiente Decente                     Para desenvolvimento, em                     geral, os S.O.s pinguim-like            ...
JAVA em 2012#1 Linguagem de programação9 milhões de desenvolvedores1 bilhão de downloads por ano3 bilhões de devices rodan...
Java - JCP
Para encerrar – Martin Fowler“Any fool can write code that a computer can understand. A good  programmer write code that h...
Arquitetura web para sistemas de negócio
Upcoming SlideShare
Loading in …5
×

Arquitetura web para sistemas de negócio

1,184 views
1,102 views

Published on

Arquitetura para desenvolvimento de sistemas de negócio na Web

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,184
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
27
Comments
0
Likes
2
Embeds 0
No embeds

No notes for 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”

×