SlideShare uma empresa Scribd logo
Arquitetura Web




     Ralph J. R. Filho
Cenário – Desenvolvimento Web
               Qual a melhor forma
               de desenvolver
               para a Web?
Cenário – Simplicidade
Escrever lógica de negócio em uma página de
 script
  JSP
  ASP
  PHP
Exemplo
include_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
}
Importante esclarecer que
Se a abordagem escolhida para a arquitetura for
 precária, a escolha da tecnologia influencia pouco.
Importante esclarecer que
Existem “n” opções no mercado para desenvolvimento
 de software
Importante esclarecer que
O que faz diferença e agrega valor é uma arquitetura
 bem definida
Importante esclarecer que
A partir da arquitetura, seleciona-se as tecnologias
  adequadas à natureza dos projetos
Exemplo: 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?
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?
  ...
Ou seja
Uma 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
Analogia
Usa-se o mesmo tipo de material para estas
 duas construções?
Software
Cenário
Com a falta de padrões arquiteturais pode
 ocorrer
  Dificuldade de manutenção
  Baixa escalabilidade
  Baixo nível de reuso
  Código “espaguete”
Dê manutenção nisso
Cenário – Spaghetti code
10 i = 0
20 i = i + 1
30 PRINT i; " squared = "; i * i
40 IF i >= 10 THEN GOTO 60
50 GOTO 20
60 PRINT "Program Completed."
70 END
Technical Debt (Débito técnico)
“The obligation that a software
organization incurs when it
chooses a design or
construction approach that's
expedient in the short term
but that increases
complexity and is more
costly in the long term”
O investimento em arquitetura é necessário,
 porém, seus benefícios são difíceis de
 mensurar
De 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.)
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ógica
Causando os mesmos problemas
Anti-patterns
Arquitetura web para sistemas de negócio
Evolução (2)
Evolução (2)
Separar a lógica da apresentação, usando um
 meio-de-campo
Filosofia MVC

       Modelo




       Controle




        Visão
MVC
A visão não precisa saber que o modelo existe
 e vice-versa
MVC
Visão
  Cadastra-Clientes.html
Controle
  ClientesControl.java
Modelo
  ClientesModel.java
MVC
Já é alguma coisa, mas pode melhorar
O código no modelo tende à ficar extenso
MVC é uma filosofia de arquitetura, pode ser
 adaptada
Abre aspas
  Alguns modelos e métodos servem como guias.
    Não são “doutrinas”.
  Não é pecado personalizar
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 programação de sistemas
 de negócio
Isto se aplica a softwares de negócio
Outros tipos de software: ferramentas,
 embarcado
Domain-Driven Design
Conjunto de princípios
Baseado no MVC
Foco no reuso de código
Facilidade de implementação
Equipes distribuídas
Arquitetura orientada a serviço
Cloud-computing / Web-Services
DDD
A camada de Domínio
Contém toda a lógica do negócio
Assinatura de métodos
Baixo nível de acoplamento
Aumenta o número de arquivos, reduz o
 número de linhas de código
Modelo de arquitetura que evoluiu com a
 tecnologia
Montando uma arquitetura
Tecnologia utilizada
  Java EE
Java EE
Conjunto de especificações
Dita como deve ser implementado
Transfere complexidade repetitiva das
  aplicações de negócio para a arquitetura
Java EE 6
?


         INFRA            EJB             JPA




DOMAIN           Repos.         Service         Entity




   CONTROL                       JSF




                                                         ?
Oracle Glassfish Community
Implementa o Java EE
Gerencia transações e conexões com o BD
Disponibiliza ambiente para servlets
Controla aspectos de segurança e acesso
Concorrentes
  JBoss AS
  Apache Geronimo
Enterprise Java Beans (EJB)
Especificação versão 3.1 (10/12/2009)
Integra-se com a camada de persistência
Controla estado de beans
Controla aspectos de segurança
Recursos de agendamento
Suporte à web services
Java Persistence API (JPA)
Especificação 2.0 (10/12/2009)
Oferece estrutura para mapear entidades do
 banco de dados
Controla aspectos de CRUD
Oferece os benefícios de O.O. para BD
 relacionais
Implementadores: Hibernate, TopLink, etc.
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 controle
Disponibliza templates
Disponibiliza componentes visuais
Disponibiliza AJAX e controle de eventos
PrimeFaces
Biblioteca de componentes visuais que utiliza o
  JSF e o Jquery (centenas de componentes)
Atualmente na versão 3.2
Simplifica a construção de páginas web
Ajuda o programador a manter o foco na lógica
  do negócio
Concorrentes
  RichFaces
  IceFaces
Exemplo
Lista de Notas Fiscais
  lista-nota-fiscal.xhtml
  NotaFiscalMB.java
  NotaFiscalRepository.java
  NotaFiscalRepositoryJPA.java
  NotaFiscalService.java
  NotaFiscalServiceImpl.java
  NotaFiscal.java
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>
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 (POJO's)
Posso substituir a camada de Infra, Controle,
 Visão, Servidor de Aplicação, Banco de
 Dados e a saída para o usuário
No entanto, a modelagem de domínio pode
 continuar intacta
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ócio
Eu digo o quê deve ser feito e não como
  Padrões ISO são assim
  Modelos de desenvolvimento são assim
O como é feito vai nas camadas periféricas da
 arquitetura que implementam o domínio
Tenho condições de fazer
Caminho de implementação
Arquitetar
   Assinar métodos do domínio
   Mapear entidades
Implementar
   Implementar repositórios e regras de negócio
   Implementar interfaces e controladores
   Implementar validações e tratamento de erros
   Implementar testes unitários
Adição de boas práticas
Inspeção de código
Projeto de solução (UML)
Foco no negócio
Programação coletiva (o código pertence à
 organização e não ao programador)
Padrões devem ser evoluídos constantemente
Nota
Não há nirvana para uma organização. O apse
 é a melhoria contínua de processos bem
 definidos, estáveis e adequadamente
 quantificados
Vantagens e Desvantagens
Estabilidade           Back-end não é trivial!
Comunidades ativas     Curva de aprendizado
Material didático      Debug em alto nível
Manutenibilidade
Produtividade
Desempenho
Rápido de Prototipar
Tempo investido
Aumenta o investimento em pensar como fazer
 para diminuir o investimento em fazer
  Mais planejamento, menos esforço
Tempo Investido
E quanto à liberações urgentes?
  Refactoring
Planejamento de releases é crucial
Organização da equipe e da demanda é crucial
Política de gerenciamento de configuração
Política de manutenção
Lembrando
Cada caso é um caso (natureza dos projetos)
Todas as abordagens tem vantagens e
 desvantagens
A melhor solução é aquela que atende à tua
 necessidade
É bom manter os olhos abertos às novidades
A inovação pode ser um diferencial competitivo
Ambiente decente
Ambiente Decente


                     Para desenvolvimento, em
                     geral, os S.O.'s pinguim-like
                     são superiores




Escolher uma IDE é como
escolher um time de futebol.
Mas o eclipse tem uma
legião de fãs.
JAVA em 2012
#1 Linguagem de programação
9 milhões de desenvolvedores
1 bilhão de downloads por ano
3 bilhões de devices rodando java
97% de computadores empresariais
17 anos de mercado
Java - JCP
Para encerrar – Martin Fowler

“Any fool can write code that a computer can understand. A good
  programmer write code that humans can understand”

Mais conteúdo relacionado

Mais procurados

Extreme programming
Extreme programmingExtreme programming
Extreme programming
J. C.
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
elliando dias
 
Integração contínua - Rumo à automação e ao DEVOPS
Integração contínua - Rumo à automação e ao DEVOPSIntegração contínua - Rumo à automação e ao DEVOPS
Integração contínua - Rumo à automação e ao DEVOPS
Fabiano Souza
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
Nécio de Lima Veras
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
CursoSENAC
 
Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008
ECRAYON Tecnologia Criativa
 
Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme Programming
Denis L Presciliano
 
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Fábio Nogueira de Lucena
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01
Franklin Matos Correia
 
Documentação
DocumentaçãoDocumentação
Documentação
Luiz China
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de Software
Peter Jandl Junior
 
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de SoftwareFundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
Álvaro Farias Pinheiro
 
Trabalho qualidade de software sistemas de informação
Trabalho qualidade de software   sistemas de informaçãoTrabalho qualidade de software   sistemas de informação
Trabalho qualidade de software sistemas de informação
Fernando Gomes Chaves
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven Design
Ítalo Bandeira
 
Aula Gestão de Projetos Escopo, Tempo e Custo
Aula Gestão de Projetos Escopo, Tempo e CustoAula Gestão de Projetos Escopo, Tempo e Custo
Aula Gestão de Projetos Escopo, Tempo e Custo
Rudson Kiyoshi Souza Carvalho
 
Engenharia de Software - Unimep/Pronatec - Aula 2
Engenharia de Software - Unimep/Pronatec - Aula 2Engenharia de Software - Unimep/Pronatec - Aula 2
Engenharia de Software - Unimep/Pronatec - Aula 2
André Phillip Bertoletti
 
BaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareBaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de Software
Adriano Bertucci
 
Aula 8 Modelagem de Dados
Aula 8 Modelagem de DadosAula 8 Modelagem de Dados
Aula 8 Modelagem de Dados
Eduardo S. Pereira
 
Documentos de software
Documentos de softwareDocumentos de software
Documentos de software
Júlio Fernandes
 
COMPARANDO FRAMEWORKS DE ARQUITETURA CORPORATIVA PARA APLICAÇÃO EM E-COMMERCE
COMPARANDO FRAMEWORKS DE ARQUITETURA CORPORATIVA PARA APLICAÇÃO EM E-COMMERCECOMPARANDO FRAMEWORKS DE ARQUITETURA CORPORATIVA PARA APLICAÇÃO EM E-COMMERCE
COMPARANDO FRAMEWORKS DE ARQUITETURA CORPORATIVA PARA APLICAÇÃO EM E-COMMERCE
Fernando S. de Paulo
 

Mais procurados (20)

Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Integração contínua - Rumo à automação e ao DEVOPS
Integração contínua - Rumo à automação e ao DEVOPSIntegração contínua - Rumo à automação e ao DEVOPS
Integração contínua - Rumo à automação e ao DEVOPS
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008
 
Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme Programming
 
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01
 
Documentação
DocumentaçãoDocumentação
Documentação
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de Software
 
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de SoftwareFundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
 
Trabalho qualidade de software sistemas de informação
Trabalho qualidade de software   sistemas de informaçãoTrabalho qualidade de software   sistemas de informação
Trabalho qualidade de software sistemas de informação
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven Design
 
Aula Gestão de Projetos Escopo, Tempo e Custo
Aula Gestão de Projetos Escopo, Tempo e CustoAula Gestão de Projetos Escopo, Tempo e Custo
Aula Gestão de Projetos Escopo, Tempo e Custo
 
Engenharia de Software - Unimep/Pronatec - Aula 2
Engenharia de Software - Unimep/Pronatec - Aula 2Engenharia de Software - Unimep/Pronatec - Aula 2
Engenharia de Software - Unimep/Pronatec - Aula 2
 
BaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareBaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de Software
 
Aula 8 Modelagem de Dados
Aula 8 Modelagem de DadosAula 8 Modelagem de Dados
Aula 8 Modelagem de Dados
 
Documentos de software
Documentos de softwareDocumentos de software
Documentos de software
 
COMPARANDO FRAMEWORKS DE ARQUITETURA CORPORATIVA PARA APLICAÇÃO EM E-COMMERCE
COMPARANDO FRAMEWORKS DE ARQUITETURA CORPORATIVA PARA APLICAÇÃO EM E-COMMERCECOMPARANDO FRAMEWORKS DE ARQUITETURA CORPORATIVA PARA APLICAÇÃO EM E-COMMERCE
COMPARANDO FRAMEWORKS DE ARQUITETURA CORPORATIVA PARA APLICAÇÃO EM E-COMMERCE
 

Semelhante a Arquitetura web para sistemas de negócio

Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
Opakus - Soluções Inteligentes
 
Infoschema - Company Overview
Infoschema - Company OverviewInfoschema - Company Overview
Infoschema - Company Overview
Renilton Oliveira
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
Eric Gallardo
 
Apresentação ISFramework
Apresentação ISFrameworkApresentação ISFramework
Apresentação ISFramework
Fernando Montenegro
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
eros.viggiano
 
O futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java EnterpriseO futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java Enterprise
Globalcode
 
Separando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestãoSeparando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestão
Rafael Chaves
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Luiz Costa
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
iMasters
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
jornaljava
 
BDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e SpecflowBDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e Specflow
Cleiton Felipe Moraes
 
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Luciano Condé
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMind
Jaydson Gomes
 
Operações - Base de Conhecimento - Parte 01
Operações - Base de Conhecimento - Parte 01Operações - Base de Conhecimento - Parte 01
Operações - Base de Conhecimento - Parte 01
Alan Carlos
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = Produtividade
Adriano Bertucci
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013
André Borgonovo
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven Design
Engenharia de Software Ágil
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
Milfont Consulting
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Comunidade NetPonto
 
Teched Brasil 2005 - A Metodologia MSF Agile e o Visual Studio Team System
Teched Brasil 2005 -  A Metodologia MSF Agile e o Visual Studio Team SystemTeched Brasil 2005 -  A Metodologia MSF Agile e o Visual Studio Team System
Teched Brasil 2005 - A Metodologia MSF Agile e o Visual Studio Team System
Fábio Câmara
 

Semelhante a Arquitetura web para sistemas de negócio (20)

Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Infoschema - Company Overview
Infoschema - Company OverviewInfoschema - Company Overview
Infoschema - Company Overview
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Apresentação ISFramework
Apresentação ISFrameworkApresentação ISFramework
Apresentação ISFramework
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
O futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java EnterpriseO futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java Enterprise
 
Separando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestãoSeparando arquitetura e negócios em sistemas de gestão
Separando arquitetura e negócios em sistemas de gestão
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
[JS EXPERIENCE 2018] Do jQuery aos microfrontends: os desafios de manter uma ...
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
BDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e SpecflowBDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e Specflow
 
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
Encontro no .NET Architects - Application Architecture Guide (AppArchGuide)
 
Criando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMindCriando Aplicações .NET com o TheWebMind
Criando Aplicações .NET com o TheWebMind
 
Operações - Base de Conhecimento - Parte 01
Operações - Base de Conhecimento - Parte 01Operações - Base de Conhecimento - Parte 01
Operações - Base de Conhecimento - Parte 01
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = Produtividade
 
Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013Arquitetura de Software e o DNAD2013
Arquitetura de Software e o DNAD2013
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven Design
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
 
Teched Brasil 2005 - A Metodologia MSF Agile e o Visual Studio Team System
Teched Brasil 2005 -  A Metodologia MSF Agile e o Visual Studio Team SystemTeched Brasil 2005 -  A Metodologia MSF Agile e o Visual Studio Team System
Teched Brasil 2005 - A Metodologia MSF Agile e o Visual Studio Team System
 

Mais de Ralph Rassweiler

Introdução à sistemas de recomendação
Introdução à sistemas de recomendaçãoIntrodução à sistemas de recomendação
Introdução à sistemas de recomendação
Ralph Rassweiler
 
Sistemas de Recomendação - Parte 2
Sistemas de Recomendação - Parte 2Sistemas de Recomendação - Parte 2
Sistemas de Recomendação - Parte 2
Ralph Rassweiler
 
Sistemas de Recomendação - Parte 1
Sistemas de Recomendação - Parte 1Sistemas de Recomendação - Parte 1
Sistemas de Recomendação - Parte 1
Ralph Rassweiler
 
Produtividade & elegância com linux
Produtividade & elegância com linuxProdutividade & elegância com linux
Produtividade & elegância com linux
Ralph Rassweiler
 
Especificação de Requisitos de Software
Especificação de Requisitos de SoftwareEspecificação de Requisitos de Software
Especificação de Requisitos de Software
Ralph Rassweiler
 
Estruturas organizacionais e comportamentos profissionais
Estruturas organizacionais e comportamentos profissionaisEstruturas organizacionais e comportamentos profissionais
Estruturas organizacionais e comportamentos profissionais
Ralph Rassweiler
 
Mobilidade inova ti_em_saude
Mobilidade inova ti_em_saudeMobilidade inova ti_em_saude
Mobilidade inova ti_em_saude
Ralph Rassweiler
 
Scrum no contexto de processos de desenvolvimento
Scrum no contexto de processos de desenvolvimentoScrum no contexto de processos de desenvolvimento
Scrum no contexto de processos de desenvolvimento
Ralph Rassweiler
 
Cinco tecnicas uteis para gerenciamento de projetos
Cinco tecnicas uteis para gerenciamento de projetosCinco tecnicas uteis para gerenciamento de projetos
Cinco tecnicas uteis para gerenciamento de projetos
Ralph Rassweiler
 
Processos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e práticaProcessos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e prática
Ralph Rassweiler
 

Mais de Ralph Rassweiler (10)

Introdução à sistemas de recomendação
Introdução à sistemas de recomendaçãoIntrodução à sistemas de recomendação
Introdução à sistemas de recomendação
 
Sistemas de Recomendação - Parte 2
Sistemas de Recomendação - Parte 2Sistemas de Recomendação - Parte 2
Sistemas de Recomendação - Parte 2
 
Sistemas de Recomendação - Parte 1
Sistemas de Recomendação - Parte 1Sistemas de Recomendação - Parte 1
Sistemas de Recomendação - Parte 1
 
Produtividade & elegância com linux
Produtividade & elegância com linuxProdutividade & elegância com linux
Produtividade & elegância com linux
 
Especificação de Requisitos de Software
Especificação de Requisitos de SoftwareEspecificação de Requisitos de Software
Especificação de Requisitos de Software
 
Estruturas organizacionais e comportamentos profissionais
Estruturas organizacionais e comportamentos profissionaisEstruturas organizacionais e comportamentos profissionais
Estruturas organizacionais e comportamentos profissionais
 
Mobilidade inova ti_em_saude
Mobilidade inova ti_em_saudeMobilidade inova ti_em_saude
Mobilidade inova ti_em_saude
 
Scrum no contexto de processos de desenvolvimento
Scrum no contexto de processos de desenvolvimentoScrum no contexto de processos de desenvolvimento
Scrum no contexto de processos de desenvolvimento
 
Cinco tecnicas uteis para gerenciamento de projetos
Cinco tecnicas uteis para gerenciamento de projetosCinco tecnicas uteis para gerenciamento de projetos
Cinco tecnicas uteis para gerenciamento de projetos
 
Processos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e práticaProcessos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e prática
 

Último

Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ismael Ash
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
Faga1939
 
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negóciosExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
Ismael Ash
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
ronaldos10
 

Último (6)

Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
 
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negóciosExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
ExpoGestão 2024 - Inteligência Artificial – A revolução no mundo dos negócios
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
 
ExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebuliçãoExpoGestão 2024 - Desvendando um mundo em ebulição
ExpoGestão 2024 - Desvendando um mundo em ebulição
 
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
 

Arquitetura web para sistemas de negócio

  • 1. Arquitetura Web Ralph J. R. Filho
  • 2. Cenário – Desenvolvimento Web Qual a melhor forma de desenvolver para a Web?
  • 3. Cenário – Simplicidade Escrever lógica de negócio em uma página de script JSP ASP PHP
  • 4. Exemplo include_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 que Se a abordagem escolhida para a arquitetura for precária, a escolha da tecnologia influencia pouco.
  • 6. Importante esclarecer que Existem “n” opções no mercado para desenvolvimento de software
  • 7. Importante esclarecer que O que faz diferença e agrega valor é uma arquitetura bem definida
  • 8. Importante esclarecer que A partir da arquitetura, seleciona-se as tecnologias adequadas à natureza dos projetos Exemplo: 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 seja Uma 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. Analogia Usa-se o mesmo tipo de material para estas duas construções?
  • 13. Cenário Com a falta de padrões arquiteturais pode ocorrer Dificuldade de manutenção Baixa escalabilidade Baixo nível de reuso Código “espaguete”
  • 15. Cenário – Spaghetti code 10 i = 0 20 i = i + 1 30 PRINT i; " squared = "; i * i 40 IF i >= 10 THEN GOTO 60 50 GOTO 20 60 PRINT "Program Completed." 70 END
  • 16. Technical Debt (Débito técnico) “The obligation that a software organization incurs when it chooses a design or construction approach that's expedient in the short term but that increases complexity and is more costly in the long term”
  • 17. O investimento em arquitetura é necessário, porém, seus benefícios são difíceis de mensurar De 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.)
  • 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ógica Causando os mesmos problemas
  • 24. Evolução (2) Separar a lógica da apresentação, usando um meio-de-campo
  • 25. Filosofia MVC Modelo Controle Visão
  • 26. MVC A visão não precisa saber que o modelo existe e vice-versa
  • 27. MVC Visão Cadastra-Clientes.html Controle ClientesControl.java Modelo ClientesModel.java
  • 28. MVC Já é alguma coisa, mas pode melhorar O código no modelo tende à ficar extenso MVC é uma filosofia de arquitetura, pode ser adaptada Abre aspas Alguns modelos e métodos servem como guias. Não são “doutrinas”. Não é pecado personalizar
  • 30. 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ócio Isto se aplica a softwares de negócio Outros tipos de software: ferramentas, embarcado
  • 31. Domain-Driven Design Conjunto de princípios Baseado no MVC Foco no reuso de código Facilidade de implementação Equipes distribuídas Arquitetura orientada a serviço Cloud-computing / Web-Services
  • 32. DDD
  • 33. A camada de Domínio Contém toda a lógica do negócio Assinatura de métodos Baixo nível de acoplamento Aumenta o número de arquivos, reduz o número de linhas de código Modelo de arquitetura que evoluiu com a tecnologia
  • 35. Java EE Conjunto de especificações Dita como deve ser implementado Transfere complexidade repetitiva das aplicações de negócio para a arquitetura Java EE 6
  • 36. ? INFRA EJB JPA DOMAIN Repos. Service Entity CONTROL JSF ?
  • 37. Oracle Glassfish Community Implementa o Java EE Gerencia transações e conexões com o BD Disponibiliza ambiente para servlets Controla aspectos de segurança e acesso Concorrentes JBoss AS Apache Geronimo
  • 38. Enterprise Java Beans (EJB) Especificação versão 3.1 (10/12/2009) Integra-se com a camada de persistência Controla estado de beans Controla aspectos de segurança Recursos de agendamento Suporte à web services
  • 39. Java Persistence API (JPA) Especificação 2.0 (10/12/2009) Oferece estrutura para mapear entidades do banco de dados Controla aspectos de CRUD Oferece os benefícios de O.O. para BD relacionais Implementadores: Hibernate, TopLink, etc.
  • 40. 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 controle Disponibliza templates Disponibiliza componentes visuais Disponibiliza AJAX e controle de eventos
  • 41. PrimeFaces Biblioteca de componentes visuais que utiliza o JSF e o Jquery (centenas de componentes) Atualmente na versão 3.2 Simplifica a construção de páginas web Ajuda o programador a manter o foco na lógica do negócio Concorrentes RichFaces IceFaces
  • 42. Exemplo Lista de Notas Fiscais lista-nota-fiscal.xhtml NotaFiscalMB.java NotaFiscalRepository.java NotaFiscalRepositoryJPA.java NotaFiscalService.java NotaFiscalServiceImpl.java NotaFiscal.java
  • 43. 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>
  • 48. 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 (POJO's)
  • 49. Posso substituir a camada de Infra, Controle, Visão, Servidor de Aplicação, Banco de Dados e a saída para o usuário No entanto, a modelagem de domínio pode continuar intacta
  • 50. O domínio representa o entendimento do programador sobre a lógica do negócio
  • 51. É no domínio que ficará a inteligência do negócio Regras de Negócio Eu digo o quê deve ser feito e não como Padrões ISO são assim Modelos de desenvolvimento são assim O como é feito vai nas camadas periféricas da arquitetura que implementam o domínio
  • 53. Caminho de implementação Arquitetar Assinar métodos do domínio Mapear entidades Implementar Implementar repositórios e regras de negócio Implementar interfaces e controladores Implementar validações e tratamento de erros Implementar testes unitários
  • 54. Adição de boas práticas Inspeção de código Projeto de solução (UML) Foco no negócio Programação coletiva (o código pertence à organização e não ao programador) Padrões devem ser evoluídos constantemente
  • 55. Nota Não há nirvana para uma organização. O apse é a melhoria contínua de processos bem definidos, estáveis e adequadamente quantificados
  • 56. Vantagens e Desvantagens Estabilidade Back-end não é trivial! Comunidades ativas Curva de aprendizado Material didático Debug em alto nível Manutenibilidade Produtividade Desempenho Rápido de Prototipar
  • 57. Tempo investido Aumenta o investimento em pensar como fazer para diminuir o investimento em fazer Mais planejamento, menos esforço
  • 58. Tempo Investido E quanto à liberações urgentes? Refactoring Planejamento de releases é crucial Organização da equipe e da demanda é crucial Política de gerenciamento de configuração Política de manutenção
  • 59. Lembrando Cada caso é um caso (natureza dos projetos) Todas as abordagens tem vantagens e desvantagens A melhor solução é aquela que atende à tua necessidade É bom manter os olhos abertos às novidades A inovação pode ser um diferencial competitivo
  • 61. Ambiente Decente Para desenvolvimento, em geral, os S.O.'s pinguim-like são superiores Escolher uma IDE é como escolher um time de futebol. Mas o eclipse tem uma legião de fãs.
  • 62. JAVA em 2012 #1 Linguagem de programação 9 milhões de desenvolvedores 1 bilhão de downloads por ano 3 bilhões de devices rodando java 97% de computadores empresariais 17 anos de mercado
  • 64. Para encerrar – Martin Fowler “Any fool can write code that a computer can understand. A good programmer write code that humans can understand”