Arquitetura web para sistemas de negócio

download Arquitetura web para sistemas de negócio

If you can't read please download the document

description

Arquitetura para desenvolvimento de sistemas de negócio na Web

Transcript of Arquitetura web para sistemas de negócio

  • 1. Arquitetura Web Ralph J. R. Filho

2. Cenrio Desenvolvimento Web Qual a melhor forma de desenvolver para a Web? 3. Cenrio SimplicidadeEscrever lgica de negcio em uma pgina de scriptJSPASPPHP 4. Exemploinclude_once ("check.php");if ($check[level] > 4){print "";print "Illegal Access";print "
";print "";print "You do not have permission to view this page.";exit; // Stop script execution} 5. Importante esclarecer queSe a abordagem escolhida para a arquitetura for precria, a escolha da tecnologia influencia pouco. 6. Importante esclarecer queExistem n opes no mercado para desenvolvimento de software 7. Importante esclarecer queO que faz diferena e agrega valor uma arquitetura bem definida 8. Importante esclarecer queA partir da arquitetura, seleciona-se as tecnologiasadequadas natureza dos projetosExemplo: casa Para que pblico a casa? Qual o clima do local? Quais as caractersticas do terreno? Qual o custo/benefcio das madeiras na regio? 9. Exemplo: softwarePara que pblico o software? (b2b, b2c, ...)Qual o tipo do software (negcio, ferramenta, embarcado)Quais os requisitos funcionais?Quais os requisitos no-funcionais?Vai rodar em que ambiente? cliente-servidor ou cliente?... 10. Ou sejaUma arquitetura e conjunto de tecnologias montados para um projeto A pode no ser a mais adequada para um projeto BCada caso um caso 11. AnalogiaUsa-se o mesmo tipo de material para estas duas construes? 12. Software 13. CenrioCom a falta de padres arquiteturais pode ocorrerDificuldade de manutenoBaixa escalabilidadeBaixo nvel de reusoCdigo espaguete 14. D manuteno nisso 15. Cenrio 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 (Dbito tcnico)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 necessrio, porm, seus benefcios so difceis de mensurarDe forma simples, pode-se comparar obtendo resultados de projetos (sucesso/insucesso), anlises de produtividade (hora/homem) e ndices de qualidade (bugs por funcionalidade, medida de desempenho, etc.) 18. Evoluo (1) 19. Evoluo (1)Separar a lgica da apresentaoASP.NetPHP + SmartyJSF 20. Melhora a situao, mas...Geralmente sobrecarrega o cdigo aonde est a lgicaCausando os mesmos problemas 21. Anti-patterns 22. Evoluo (2) 23. Evoluo (2)Separar a lgica da apresentao, usando um meio-de-campo 24. Filosofia MVC Modelo ControleViso 25. MVCA viso no precisa saber que o modelo existe e vice-versa 26. MVCVisoCadastra-Clientes.htmlControleClientesControl.javaModeloClientesModel.java 27. MVCJ alguma coisa, mas pode melhorarO cdigo no modelo tende ficar extensoMVC uma filosofia de arquitetura, pode ser adaptadaAbre aspasAlguns modelos e mtodos servem como guias.No so doutrinas.No pecado personalizar 28. Evoluo (3) 29. Evoluo (3)O esforo de programao deve estar na modelagem do domnio de negcio, afinal... disso que se trata a programao de sistemas de negcioIsto se aplica a softwares de negcioOutros tipos de software: ferramentas, embarcado 30. Domain-Driven DesignConjunto de princpiosBaseado no MVCFoco no reuso de cdigoFacilidade de implementaoEquipes distribudasArquitetura orientada a servioCloud-computing / Web-Services 31. DDD 32. A camada de DomnioContm toda a lgica do negcioAssinatura de mtodosBaixo nvel de acoplamentoAumenta o nmero de arquivos, reduz o nmero de linhas de cdigoModelo de arquitetura que evoluiu com a tecnologia 33. Montando uma arquiteturaTecnologia utilizadaJava EE 34. Java EEConjunto de especificaesDita como deve ser implementadoTransfere complexidade repetitiva dasaplicaes de negcio para a arquiteturaJava EE 6 35. ? INFRAEJB JPADOMAIN Repos. Service Entity CONTROL JSF ? 36. Oracle Glassfish CommunityImplementa o Java EEGerencia transaes e conexes com o BDDisponibiliza ambiente para servletsControla aspectos de segurana e acessoConcorrentesJBoss ASApache Geronimo 37. Enterprise Java Beans (EJB)Especificao verso 3.1 (10/12/2009)Integra-se com a camada de persistnciaControla estado de beansControla aspectos de seguranaRecursos de agendamentoSuporte web services 38. Java Persistence API (JPA)Especificao 2.0 (10/12/2009)Oferece estrutura para mapear entidades do banco de dadosControla aspectos de CRUDOferece os benefcios de O.O. para BD relacionaisImplementadores: Hibernate, TopLink, etc. 39. Java Server Faces (JSF)Especificao 2.1 (22/10/2010) (Mojarra)Disponibiliza uma separao clara entre a camada de viso e a camada de controleDisponibliza templatesDisponibiliza componentes visuaisDisponibiliza AJAX e controle de eventos 40. PrimeFacesBiblioteca de componentes visuais que utiliza oJSF e o Jquery (centenas de componentes)Atualmente na verso 3.2Simplifica a construo de pginas webAjuda o programador a manter o foco na lgicado negcioConcorrentesRichFacesIceFaces 41. ExemploLista de Notas Fiscaislista-nota-fiscal.xhtmlNotaFiscalMB.javaNotaFiscalRepository.javaNotaFiscalRepositoryJPA.javaNotaFiscalService.javaNotaFiscalServiceImpl.javaNotaFiscal.java 42. ExemploLista de Notas Fiscais#{nf.serie} #{nf.razaoSocialDestinatario} #{nf.dataEmissao} #{nf.valor} 43. Exemplo 44. Resultado 45. Exemplo 46. Exemplo 47. Notem Os nomes no singular Os nomes em ingls O tamanho dos nomes dos arquivos A limpeza e a clareza dos cdigos-fonte (POJOs) 48. Posso substituir a camada de Infra, Controle, Viso, Servidor de Aplicao, Banco de Dados e a sada para o usurioNo entanto, a modelagem de domnio pode continuar intacta 49. O domnio representa o entendimento do programador sobre a lgica do negcio 50. no domnio que ficar a inteligncia do negcioRegras de NegcioEu digo o qu deve ser feito e no comoPadres ISO so assimModelos de desenvolvimento so assimO como feito vai nas camadas perifricas da arquitetura que implementam o domnio 51. Tenho condies de fazer 52. Caminho de implementaoArquitetar Assinar mtodos do domnio Mapear entidadesImplementar Implementar repositrios e regras de negcio Implementar interfaces e controladores Implementar validaes e tratamento de erros Implementar testes unitrios 53. Adio de boas prticasInspeo de cdigoProjeto de soluo (UML)Foco no negcioProgramao coletiva (o cdigo pertence organizao e no ao programador)Padres devem ser evoludos constantemente 54. NotaNo h nirvana para uma organizao. O apse a melhoria contnua de processos bem definidos, estveis e adequadamente quantificados 55. Vantagens e DesvantagensEstabilidade Back-end no trivial!Comunidades ativas Curva de aprendizadoMaterial didticoDebug em alto nvelManutenibilidadeProdutividadeDesempenhoRpido de Prototipar 56. Tempo investidoAumenta o investimento em pensar como fazer para diminuir o investimento em fazerMais planejamento, menos esforo 57. Tempo InvestidoE quanto liberaes urgentes?RefactoringPlanejamento de releases crucialOrganizao da equipe e da demanda crucialPoltica de gerenciamento de configuraoPoltica de manuteno 58. LembrandoCada caso um caso (natureza dos projetos)Todas as abordagens tem vantagens e desvantagensA melhor soluo aquela que atende tua necessidade bom manter os olhos abertos s novidadesA inovao pode ser um diferencial competitivo 59. Ambiente decente 60. Ambiente Decente Para desenvolvimento, em geral, os S.O.s pinguim-like so superioresEscolher uma IDE comoescolher um time de futebol.Mas o eclipse tem umalegio de fs. 61. JAVA em 2012#1 Linguagem de programao9 milhes de desenvolvedores1 bilho de downloads por ano3 bilhes de devices rodando java97% de computadores empresariais17 anos de mercado 62. Java - JCP 63. Para encerrar Martin FowlerAny fool can write code that a computer can understand. A goodprogrammer write code that humans can understand