Your SlideShare is downloading. ×
0
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Arquitetura web para sistemas de negócio

1,002

Published on

Arquitetura para desenvolvimento de sistemas de negócio na Web

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,002
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
23
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Arquitetura Web Ralph J. R. Filho
  • 2. Cenário – Desenvolvimento Web Qual a melhor forma de desenvolver para a Web?
  • 3. Cenário – SimplicidadeEscrever lógica de negócio em uma página de script JSP ASP PHP
  • 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. Importante esclarecer queSe a abordagem escolhida para a arquitetura for precária, a escolha da tecnologia influencia pouco.
  • 6. Importante esclarecer queExistem “n” opções no mercado para desenvolvimento de software
  • 7. Importante esclarecer queO que faz diferença e agrega valor é uma arquitetura bem definida
  • 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. 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. 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. AnalogiaUsa-se o mesmo tipo de material para estas duas construções?
  • 12. Software
  • 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. Dê manutenção nisso
  • 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. 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. 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. Evolução (1)
  • 19. Evolução (1)Separar a lógica da apresentação ASP.Net PHP + Smarty JSF
  • 20. Melhora a situação, mas...Geralmente sobrecarrega o código aonde está a lógicaCausando os mesmos problemas
  • 21. Anti-patterns
  • 22. Evolução (2)
  • 23. Evolução (2)Separar a lógica da apresentação, usando um meio-de-campo
  • 24. Filosofia MVC Modelo Controle Visão
  • 25. MVCA visão não precisa saber que o modelo existe e vice-versa
  • 26. MVCVisão Cadastra-Clientes.htmlControle ClientesControl.javaModelo ClientesModel.java
  • 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. Evolução (3)
  • 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. 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. DDD
  • 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. Montando uma arquiteturaTecnologia utilizada Java EE
  • 34. Java EEConjunto de especificaçõesDita como deve ser implementadoTransfere complexidade repetitiva das aplicações de negócio para a arquiteturaJava EE 6
  • 35. ? INFRA EJB JPADOMAIN Repos. Service Entity CONTROL JSF ?
  • 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. 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. 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. 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. 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. ExemploLista de Notas Fiscais lista-nota-fiscal.xhtml NotaFiscalMB.java NotaFiscalRepository.java NotaFiscalRepositoryJPA.java NotaFiscalService.java NotaFiscalServiceImpl.java NotaFiscal.java
  • 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. Exemplo
  • 44. Resultado
  • 45. Exemplo
  • 46. Exemplo
  • 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. 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. O domínio representa o entendimento do programador sobre a lógica do negócio
  • 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. Tenho condições de fazer
  • 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. 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. NotaNão há nirvana para uma organização. O apse é a melhoria contínua de processos bem definidos, estáveis e adequadamente quantificados
  • 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. Tempo investidoAumenta o investimento em pensar como fazer para diminuir o investimento em fazer Mais planejamento, menos esforço
  • 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. 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. Ambiente decente
  • 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. 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. Java - JCP
  • 63. Para encerrar – Martin Fowler“Any fool can write code that a computer can understand. A good programmer write code that humans can understand”

×