Você está na página 1de 27

Engenharia de Software III – P1

Exemplo de modelagem de software II:


Modelagem de Software Levantamento e Análise de Requisitos: trabalham com o domínio do problema, determinando as
funcionalidades do software (Guedes, 2012). Modelos de Casos de Uso: fornece uma visão dos requisitos necessários ao
sistema, identificando as funcionalidades do software e os atores que poderão utilizá-las (Guedes, 2012). Diagrama de
Classes: permite a visualização das classes que compõem o sistema e seus respectivos atributos e métodos. Apresenta uma
visão estática de como as classes estão organizadas (Guedes, 2012). Modelo Conceitual: identifica as classes relacionadas ao
domínio do problema, sem detalhar os métodos (Guedes, 2012). Modelo de Domínio: amplia o modelo conceitual, incluindo
informações relativas à solução do problema, como os métodos das classes (Guedes, 2012). Diagrama de sequência:
apresenta as interações entre objetos na ordem temporal em que elas acontecem (Bezerra, 2007).

Estágios da modelagem dinâmica de um sistema

• Um desenvolvimento iterativo sugere o desenvolvimento do modelo de casos de uso e o seu modelo de classes iniciais. Na
sequência vem o desenvolvimento do modelo de interações de estados, que descrevem as transições de estados de um
objeto relacionadas a um evento interno ou externo do sistema, e depois se retorna aos modelos iniciais para verificar a
consistência dos mesmos (Bezerra, 2007).

Representação dos modelos de uma modelagem dinâmica (Bezerra, 2007).

Requisitos da aplicação

• 1. Um funcionário da Receita pode inserir o nome de um contribuinte.

• 2. Um funcionário da Receita pode inserir o CPF ou o CNPJ de um contribuinte.

• 3. Um funcionário da Receita pode inserir a identificação do cartão de um contribuinte.

• 4. Um funcionário da Receita pode consultar o nome de um contribuinte.

• 5. Um funcionário da Receita pode consultar o CPF ou o CNPJ de um contribuinte.

• 6. Um funcionário da Receita pode consultar a identificação do cartão de um contribuinte.


Diagrama de Casos de Uso

Ator = Funcionário: classe de usuários que fazem acesso a aplicação

Inserir Contribuinte

Inserir Pessoa Física

Inserir Pessoa Jurídica

Consultar Pessoa Física

Consultar Pessoa Jurídica

Diagrama de Classes
Diagrama de Sequência

Esboço da interface da aplicação

Classes
Resultados

Padrões de Arquitetura III


Padrões de Arquitetura - A opção de um padrão de arquitetura envolve a observação de boas práticas experimentadas e
testadas em diferentes sistemas e ambientes.

- Observar como diferentes partes do sistema devem interagir.

- Quando utilizar recursos remotos e aplicações distribuídas ou optar por aplicações de


âmbito local.

- Escolha da melhor abordagem Web.

- Escolha adequada do acesso e manipulação da base de dados.

Padrões de Arquitetura: Layers e Tiers Divisão de um sistema e camadas:

layer: separação lógica, organização do código de modo a diminuir a dependência (acoplamento) e facilitar mudanças.
Exemplo: arquitetura MVC.

tier: separação física do sistema, ou seja, diferentes componentes que podem ser executados em máquinas separadas.
Exemplo: um servidor Web e um banco de dados.
Uso de layers em excesso pode gerar código de difícil manutenção (muitas classes)

Uso de muitos tiers: Aumenta a quantidade de invocações remotas, impacta a performance e a capacidade de manipular
uma porção crescente de trabalho (escalabilidade).

Uso de apenas um tier: - Mainframes que centralizavam todo o processamento, persistência e interface do sistema. -
Programas Desktop locais.

- Vantagem de diminuir a latência (tempo de resposta) e melhorar a performance (sem a necessidade de efetuar
requisições na rede);

- Capacidade de manipular uma porção crescente de trabalho de forma uniforme (escalabilidade) fica comprometida. - Não
é possível que um número arbitrário de usuários compartilhe a aplicação.

Arquiteturas de dois tiers: clientes e um servidor.

- Exemplo: aplicações clientes em Desktops distintos conectadas a um banco de dados central através de um servidor.

- Tier de interface (cliente) possui muito código de domínio (lógica da aplicação) = fat clients.

- Alivia o servidor de tarefas que podem ser executadas no cliente;

- Dificuldade de manter a integridade, confiabilidade e confiança.

- Predomínio da lógica de negócios no servidor:

- Dificuldade de manter todos os clientes atualizados, prejudicando a extensibilidade (capacidade do sistema crescer pela
adição de novos componentes), a manutenibilidade e a segurança.

- Possibilidades maiores quanto a integridade, confiabilidade e confiança.

- Predomínio da lógica de negócios no servidor - exemplo: - Manutenção da lógica de negócio em stored procedures no
banco de dados, com objetivo de deixar a lógica segura e encapsulada, além de minimizar a perda de performance pela
adição de tiers clientes.

- Stored procedures: coleção de comandos SQL para otimizar a manipulação de bancos de dados.

Arquitetura Web atual:

3 tiers → cliente remoto; → servidor Web; → banco de dados.

- Sistema centralizado no tier Web: proporciona maior segurança e confiabilidade (minimiza a possibilidade do cliente
influir no sistema);

-Adições de novos tiers aumenta o tempo de resposta (response-time).

- Cliente: navegador Web que renderiza (obtém o produto final de uma aplicação) a interface

– thin clients; - Servidor Web e banco de dados: centralizam a evolução do sistema.


- Abordagem mais atual → tecnologias como Java, Flash, Flex, Silverlight e outras (tecnologias externas ao navegador),
proporcionam os fat clients com o uso de interfaces ricas no navegador (Rich Internet Applications – RIA).

- O uso do próprio navegador para as interfaces ricas é baseado no uso de tecnologias como JavaScript, Ajax e HTML5.

“O futuro das aplicações Web é a evolução do navegador para suportar interfaces cada vez mais ricas, mas mantendo as
vantagens de uma arquitetura de fácil gerenciamento”.

• Padrões de Arquitetura de Sistemas


- Arquitetura Modelo Visão Controlador

– MVC - Arquitetura Cliente-Servidor

- Arquitetura de Duto e Filtro

- Arquitetura em Camadas

- Arquitetura de Repositório

Padrão de arquitetura de duto e filtro

• Em uma arquitetura de duto e filtro o processamento de dados está organizado de modo que cada componente de
processamento (filtro) realize uma transformação de dados. Os dados fluem (como em um duto) de um componente para
outro para processamento. A arquitetura de duto e filtro é usada em aplicações de processamento de dados (dados em
lotes e transações de dados), em que as entradas são processadas em etapas separadas para gerarem saídas relacionadas

Exemplo:
Padrão de arquitetura de repositório

• Neste tipo de arquitetura um conjunto de componentes que interagem podem compartilhar dados. Todos os dados de
um sistema de repositório são gerenciados em um repositório central, acessível a todos os componentes do sistema.
[Summerville, 2011]. Aarquitetura de repositório é utilizada em sistemas que geram grandes volumes de informações, que
necessitam ser armazenadas por um longo período. É também usual em sistemas dirigidos a dados, nos quais a inclusão
dos dados no repositório dispara uma ação ou ferramenta. Os componentes deste tipo de arquitetura podem ser
independentes, e as informações armazenadas no repositório podem ser propagadas para todos os componentes
[Summerville,2011].

Exemplo uma IDE em que os componentes usam um repositório de informações sobre projetos de sistema. Cada
ferramenta de software gera informações que ficam disponíveis para uso de outras ferramentas. Os componentes não
interagem diretamente, somente via repositório.

exemplo: Compilador
Padrão de arquitetura em camadas

• Organiza o sistema em camadas com a funcionalidade relacionada associada a cada camada. Uma camada fornece serviços
à camada situada acima dela. Os níveis mais baixos de camadas representam os principais serviços suscetíveis de serem
usados em todo o sistema. Geralmente o uso deste padrão de arquitetura está relacionado à construção de novos recursos
sobre sistemas existentes, quando o desenvolvimento está distribuído em grupos, com a responsabilidade de cada grupo em
uma camada de funcionalidade e há a existência de um requisito de proteção entre as camadas. O uso da arquitetura em
camadas permite o uso de autenticações entre as camadas e a possibilidade de substituição das mesmas.

• Acamada mais baixa inclui software de apoio ao sistema. A próxima camada é a camada de aplicação, que inclui os
componentes relacionados com a funcionalidade da aplicação e os componentes utilitários que são usados por outros
componentes da aplicação. A terceira camada executa o gerenciamento de interface de usuário e fornecimento de
autenticação e autorização de usuário, com a camada superior fornecendo recursos de interface com o usuário.
Model - View - Control – MVC
• O modelo MVC atende a premissa de uma padronização documentada para a construção de web sites, com informações
da arquitetura envolvendo os componentes que são comuns em aplicações do domínio em questão, assim como
informações que permitam aos desenvolvedores utilizar uma mesma solução, inserindo nesta solução componentes
específicos. O modelo MVC constitui uma forma de organizar a arquitetura de aplicação criando três camadas conceituais,
independentes e formadas por componentes distintos para manipular cada parte da aplicação.

Exemplo de arquitetura onde o padrão MVC é usado para o gerenciamento de interações em um sistema baseado em
Web.

View: conjunto de componentes para apresentar os dados na tela do navegador; pode acessar os dados da Model e decidir
como eles devem ser apresentados ao cliente. Os dados podem ser apresentados no formato HTML, dados esses que
podem ser formatados com CSS. Esta camada não processa nenhuma lógica de controle/negócio.

Model: todos os dados e a lógica do negócio para processá-los podem ser representados na camada Model, onde são
desenvolvidas classes que representam as entidades do banco de dados. Fazem parte do Model as classes que executam
por meio de instruções SQL, as operações de inclusão, alteração, consulta e exclusão em bancos dados.

Controller: conjunto de classes para controlar o fluxo de informações entre o navegador do cliente e a base de dados. Pode
interagir com a camada View para converter as ações do cliente em ações que são compreendidas e executadas pela
Model.

O Controller também decide qual o componente da View que será usado para exibir os dados, dependendo da última ação
do cliente. Executa as regras do negócio através de componentes que utilizam os dados da Model. Permite criar e
manipular o estado de sessão para os usuários. Pode controlar o acesso dos usuários ao sistema e cuidar da segurança da
informação.
cliente-servidor
• A arquitetura cliente-servidor é uma arquitetura usada em sistemas distribuídos, em tempo de execução. Um sistema
que segue a arquitetura cliente-servidor é organizado como um conjunto de serviços, servidores associados e clientes que
acessam e usam o serviço. O modelo lógico de serviços independentes pode ser executado em um único computador.
Serviços e servidores podem ser modificados sem afetar partes do sistema. Os clientes podem saber o nome dos servidores
disponíveis e os serviços que oferecem, mas os servidores não precisam conhecer a identificação ou a quantidade de
clientes. Os clientes acessam os serviços fornecidos por um servidor por meio de chamadas de procedimento remoto
usando um protocolo de solicitação-resposta, tal como o protocolo HTTP usado na internet. Essencialmente, um cliente faz
uma solicitação a um servidor e espera até receber uma resposta.

exemplo: Serviços Web

Ambiente de Rede e Sockets- VI


Camadas do modelo OSI - Open System Interconnection

Internet: proporciona a interoperação de redes heterogêneas e a comunicação fim-a-fim.

2 tipos de rede:

- Rede física = enlace ou tecnologia de comunicação (Ethernet, Wi-Fi, xDSL, HDLC, Frame Relay, ...).

- Rede lógica = responsável por compatibilizar interconexão das redes físicas de diferentes tecnologias.
Camada de rede: implementa o endereçamento lógico e o roteamento. Utiliza o Protocolo IP (Internet Protocol).

Camada de transporte: oferece um serviço de comunicação para os elementos em comunicação (faz a multiplexação
através do conceito de portas). Exemplos:

Protocolos de Transporte: Transmission Control Protocol – TCP e User Datagram Protocol- UDP .

Camada de aplicação: oferece o serviço de comunicação para o usuário (navegação Web, por exemplo). Utilizam protocolos
de transporte TCP e UDP.

Internet: utiliza arquitetura TCP/IP.

Protocolo de rede IP: é responsável pelo roteamento de pacotes, que é o procedimento de decidir o caminho (conjunto de
enlaces) que um pacote IP deve seguir.

IP versão IPv4: endereços possuem tamanho de quatro octetos.

IP versão IPv6: endereços possuem tamanho de dezesseis octetos.

Protocolo de transporte - TCP: proporciona o acesso direto entre as aplicações e o serviço de comunicação.

Multiplexação através do conceito de portas: uma porta é um ponto de acesso entre a camada de aplicação e a camada de
transporte. O número de porta indica à camada de transporte a que aplicação determinado dado recebido deve ser
entregue.

No paradigma de comunicação cliente-servidor um cliente inicia uma comunicação com o servidor utilizando uma porta
padrão para o serviço desejado. Uma comunicação fim-a-fim está associada a duas portas, uma para cada participante da
comunicação.

A porta do cliente é determinada de forma automática enquanto a porta do servidor está relacionada ao serviço a ser
disponibilizado.

Internet

Endereço de transporte -> O par de endereços de transporte (endereço IP e porta) identifica unicamente uma comunicação
na Internet. Quando um pacote IP chega ao seu destino, um campo presente no cabeçalho IP é verificado para saber que
tipo de protocolo de transporte (TCP ou UDP) está encapsulado pelo pacote IP.

O conteúdo do pacote IP é direcionado então para o software UDP ou TCP do host.

Para enviar/receber informações de um host é necessário:

- o seu endereço de rede, os protocolos de aplicação e de transporte utilizados e a porta de recepção a que o processo
remoto, que irá receber ou enviar os dados, está associado.

- protocolos de transporte TCP e UDP determinam o uso (TCP) ou não (UDP) de mensagens de controle enviadas e
recebidas no estabelecimento e no encerramento de conexões.

- a funcionalidade (Web, email, FTP, SSH, DNS, etc) associada ao host em relação ao protocolo de aplicação.

Internet: utiliza arquitetura TCP/IP. (#protocolo)

Protocolo de rede IP: protocolo IP não é orientado à conexão e não tem controle de erro de fluxo, não tem confiabilidade
na entrega dos dados garantida.

Internet: protocolos de transporte TCP e UDP.


Protocolo de transporte - TCP: oferece confiabilidade na comunicação em rede e controle no fluxo de dados.

Comunicação “virtual“ (porque na camada de rede o serviço de comunicação não é orientado à conexão) full-duplex: os
dois hosts participantes da comunicação podem enviar e receber informações através da conexão TCP simultaneamente.
segmentos TCP :
- estabelecem e encerram conexões;
- efetuam reconhecimento de segmentos enviados;
- informam tamanho da janela de recepção de dados;
- enviam dados de usuário.

Internet: protocolos de transporte TCP e UDP

Protocolo de transporte - UDP: fornece serviço de comunicação fim-a-fim simples, sem controle de erro ou de fluxo.

- O protocolo UDP fornece multiplexação entre diversas comunicações através do conceito de portas;
- Suas unidades de transmissão de dados são chamadas de datagramas (por utilizarem os mesmos conceitos sem conexão
e não confiável dos pacotes (datagramas) IP);
- Tem uma verificação de erros opcional dos dados encapsulados no datagrama.

- Para realizar comunicação com o UDP, basta apenas enviar um datagrama para um endereço IP e uma porta.
- Se houver algum processo aguardando mensagens UDP naquela porta, o datagrama é recebido e processado.
- Não há abertura nem fechamento de conexões.

Internet: conceito de socket

A abstração criada pelos sockets (e formada pela Internet) garante que um bit enviado por um host irá chegar ao outro
host na comunicação, caso o TCP seja utilizado

Multiplexação de comunicações

O mesmo princípio vale para o protocolo UDP, porém sem garantias de entrega.
É necessário apenas conhecimento dos detalhes das funções necessárias para enviar e receber dados na rede, mas não da
operação dos protocolos de transporte.

Número de porta TCP nos servidores Web

-A porta TCP identifica uma aplicação específica no hardware do servidor.


- Uma porta TCP é um número de 16 bits.
- Um número de porta representa uma conexão lógica com uma determinada aplicação.

- 65536 números possíveis.


- Cada aplicação deve ter seu próprio protocolo.
- Os números TCP de 0 a 1023 são reservadas para serviços já conhecidos

URI – Uniform Resource Identifier (Identificador Uniforme de Recursos): não precisa especificar uma localização.
URLs – Uniform Resource Locators (Localizadores Uniformes de Recursos): especifica uma localização na web. Todo recurso
na web tem seu endereço (único) no padrão URL.

Exemplo: http:// -> protocolo: informa ao servidor qual protocolo de comunicação é usado
www.xxxxxxxxx.com -> nome físico do servidor: -aponta para um único endereço IP. - endereços IP podem ser numéricos
no formato: xxx.yyy.zzz.aaa
:80/ -> porta: parte opcional da URL. -Uma aplicação é identificada por uma porta. -se não for especificada o nº 80 é padrão
nos servidores Web.
diretórios/ -> caminho (path) da localização do recurso no servidor, com a hierarquia dos diretórios.
arquivo.html -> recurso
Padrão de arquitetura Cliente-Servidor – V
• Exemplos de aplicações
• Socket TCP
• Socket UDP
Sockets TCP - Servidor

• Um servidor pode ser visto como um computador dedicado a oferecer serviços para outros computadores dentro de uma
rede.
• Estes serviços variam de acordo com a necessidade de uma corporação, partindo de um simples servidor de arquivos
(FTP) até outras funcionalidades mais específicas como web, banco de dados, email, proxy, entre outros, nos quais
máquinas clientes se conectam e utilizam diversos recursos oferecidos por eles.
• Sockets permitem realizar uma comunicação entre computadores, no caso do Java, entre máquinas virtuais remotas.

Socket TCP
• O TCP é um protocolo orientado à conexão que permite a comunicação entre dois computadores estabelecendo uma
conexão (handshaking) antes que qualquer transmissão de dados seja realizada. Dentro desse contexto, cada máquina
cliente necessitará estabelecer uma conexão com o servidor, abrindo um canal de comunicação entre os dois
computadores conforme apresentado na figura. Assim, é possível conectar vários clientes a um único servidor.

Aplicação Cliente-Servidor utilizando socket TCP

Cliente
conexão informa: (através do socket) - IP do servidor - Porta do servidor
aplicação recebe: - dado (número) enviado pelo servidor
Servidor
- Tem número de porta - quantidade de conexões
conexão devolve: (através do socket) - dado (número)

Socket UDP

• Quando uma troca de informações não precisa ser confiável, pode-se usar o protocolo UDP (User Datagram Protocol),
pois este protocolo não garante a entrega dos pacotes (o UDP não espera uma mensagem de confirmação do host de
destino).
• É de responsabilidade da aplicação receptora a remontagem dos pacotes na ordem correta e a solicitação de reenvio de
pacotes que não foram recebidos.
• O UDP utiliza datagram sockets para a troca de mensagens. As principais aplicações do UDPsão aplicações como
transmissões de vídeo, skype, voip, etc...
• Para exemplificar imagine um serviço de voz sobre IP onde um pacote é perdido enquanto dois usuários conversam, não
faz sentido reenviar o pacote pois o usuário da outra ponta precisaria saber que ainda faltam pacotes a receber.
• Em Java pode-se trabalhar com datagramas utilizando as classes DatagramPacket e DatagramSocket do pacote java.net.
Aplicativo java: Socket UDP

Cliente
conexão informa: (através do socket)
- IP do servidor
- Porta do servidor
conexão ENVIA: (através do socket – Datagrama UDP → dado (número))

Servidor
- tem número de porta
- quantidade de conexões
conexão recebe: (através do socket Datagrama UDP → dado (número))

Arquiteturas Orientadas a Serviços – VI


Tipos de SOA - Web Service ou Rest

Define os dados disponíveis e como os mesmos podem ser acessados. Geralmente é uma representação-padrão para
algum recurso computacional, de informações ou recursos de armazenamento que podem ser usados por outros sistemas.

Contextualização da Arquitetura Orientada a Serviços – SOA (Service OrientedArchitecture)

SOA é um paradigma para estruturar as aplicações de software em elementos chamados serviços.


O termo “serviço” passa a ser a ponte entre os processos de negócio e as funções do sistema de software.
SOA pode ser implementado com as tecnologias:
- Web Service: a troca de mensagens entre o provedor de serviços e o cliente se dá através de textos estruturados na forma
de documentos que atendam padrões XML.
- REST (Representational State Transfer ou Transferência de Estado Representacional) também chamada RESTful: em um
serviço de estilo REST a troca de mensagens entre provedor de serviço e cliente necessita de uma identificação HTTP e URL.

Qual a diferença entre SOA e Web Services? SOA é um estilo arquitetural em que sistemas consistem de usuários e
provedores de serviços, e Web Service é uma tecnologia que pode ser usada para implementar SOA (Bianco, Kotermanski e
Merson, 2007).
Um servidor de aplicação Java pode ser utilizado para publicar um Web Service Java (Tomcat ou Glassfish).

Transferência de Estado Representacional (Representational State Transfer) - REST

• O REST é uma abstração da arquitetura Web. Consiste em princípios/regras/limitações que, quando seguidas, permitem a
criação de um projeto de modo que aplicações se comuniquem.
• Os termos REST e RESTful representam os mesmos princípios. A diferença é apenas gramatical, ou seja, sistemas que
utilizam os princípios REST são chamados de RESTful.
• REST: conjunto de princípios de arquitetura.
• RESTful: capacidade de determinado sistema aplicar os princípios de REST.

Transferência de Estado Representacional (Representational State Transfer) – REST

• É possível inferir, nos comandos acima, que no primeiro caso se esteja pegando (GET) todos os usuários do site, ou seja,
haverá uma lista de todos os usuários que estão cadastrados no sistema/site. Já, no segundo caso, está se apagando
(DELETE) o usuário Jackson. No último exemplo, está sendo usado o método (POST), em que se percebe o envio de dados
extras para cadastrar um novo usuário.
• Em meados dos anos 2000, um dos principais autores do protocolo HTTP, Roy Fielding, sugeriu o uso de novos métodos
HTTP. Estes métodos visavam resolver problemas relacionados a semântica quando requisições HTTPeram feitas.
• Nos métodos acima fica mais fácil expressar o que se deseja realizar ao acessar um determinado endereço, usando
verbos específicos para URLs específicas e usando dados padronizados, quando necessário. Estes princípios apresentados
fazem parte do REST, ou seja, nesses exemplos, tem-se uma representação padronizada, verbos e métodos usados, bem
como, URLs.

SOA implementada com Web services

• A tecnologia Web Services é fundamentada na linguagem XML (eXtensible Markup Language), utilizada para a
representação dos dados e como base para os outros padrões, que são:
• WSDL(Web Service Definition Language) – linguagem baseada em XML para definição formal de interfaces de serviços;
• SOAP (Simple Object Access Protocol) – protocolo de comunicação baseado na troca de mensagens em formato XML
transmitidas via HTTP ou outros protocolos.
• UDDI (Universal Description, Discovery and Integration) – especificação de registro de serviços publicados e descoberta
de interfaces de serviços em WSDL.
• WS-BPEL (Business Proccess Execution Language) é um padrão para uma linguagem de workflow, que é usada para
definir programas de processo que envolvem vários serviços diferentes.

Tecnologias XML(XML, XSD, XSLT, ...)


Suporte (WS-Security, WS-Addressing,...)
Processo (WS-BPEL)
Definição de serviço (UDDI, WSDL)
Serviço de mensagem (SOAP)

Linguagem WS-BPEL - Web Services Business Process Execution Language

É um padrão para a execução de processos de negócios, descrevendo como ocorre o relacionamento entre diversos web
services. A programação com WS-BPEL é parecida com a programação das linguagens de programação já existentes, na
medida que ela oferece determinados tipos de construções como estruturas de repetição, condicionais, variáveis e
atribuições. Este fato possibilita que o processo de negócio seja visto como um algoritmo.

Universal Description, Discovery, and Integration (UDDI)

O Universal Description, Discovery, and Integration (UDDI) é uma especificação técnica que tem como objetivo descrever,
descobrir e integrar Web Services. Segundo a Organization for the Advancement of Structured Information Standards, é um
elemento central do grupo de padrões que compõe a pilha de componentes dos serviços web. Um Web Service necessita
que os seus serviços sejam acessados em algum lugar da Internet por um cliente. Uma das maneiras é fazer com que a
aplicação cliente conheça a URI do respectivo serviço.

Pode-se comparar o UDDI com uma lista telefônica, da seguinte maneira:

. Páginas Brancas: contêm informações sobre nomes, endereços, números de telefone, além de outras informações sobre
os fornecedores do serviço.
. Páginas Amarelas: contêm listagens comerciais baseadas nos tipos desses negócios, de maneira organizada por categoria
específica ou regiões demográficas.
. Páginas Verdes: são usadas para indicar os serviços oferecidos por cada negócio, incluindo todas as informações técnicas
envolvidas na interação com o serviço. Resumindo, explica como fazer a comunicação com eles.

SOAP (Simple Object Access Protocol)


Abordagem orientada a serviços

• Segundo Summerville (Summerville, 2011) a abordagem orientada a serviços para engenharia de software é um novo
paradigma de importância similar a abordagem orientada a objetos. Essa importância será acelerada pelo desenvolvimento
de ‘computação em nuvem’(Carr, 2009), em que os serviços são oferecidos em uma infraestrutura de computação pública
hospedada por grandes fornecedores, como Google ou Amazon. São previstos efeitos significativos sobre os produtos de
sistemas e processos de negócios. Newcomer e Lomow (2005), resumem o potencial das abordagens orientada a serviços:
“Impulsionada pela convergência de tecnologias-chave e a adoção universal de web-services, a empresa orientada a
serviços promete melhorar significativamente a agilidade empresarial, a velocidade de inserção de novos produtos e
serviços no mercado, reduzir custos e melhorar a eficiência operacional”.

O serviço é publicado no endereço de rede 127.0.0.1 = localhost e na porta 9876, com o path do pacote do projeto. A
aplicação roda indefinidamente esperando solicitações de serviço (precisa ser finalizada na IDE).
Depois de executada a classe, abrir o navegador para a URL.
Tecnologias para web – VII
HTTP – Protocolo de Transferência de Hipertexto

conteúdo HTML: quando o browser encontra a tag <html> de abertura, entra em modo de processamento HTML,
HyperText Markup Language, que significa Linguagem de Marcação de Hipertexto, que é uma linguagem de marcação
utilizada na construção de páginas na web. Documentos HTML podem ser interpretados por navegadores

HTTP: depende dos protocolos de transporte – TCP e de rede IP para solicitações e respostas.

URI – Uniform Resource Identifier (Identificador Uniforme de Recursos): não precisa especificar uma localização.

URLs – Uniform Resource Locators (Localizadores Uniformes de Recursos): especifica uma localização na web. Todo recurso
na web tem seu endereço (único) no padrão URL.
Servidor → resposta a uma solicitação de conteúdo dinâmico

→ envolve a capacidade para escrever e salvar dados no servidor (em um arquivo ou banco de dados).
→ é feito por uma aplicação chamada de “helper” que “roda” no próprio servidor:
- se esta aplicação não é Java, é denominada de CGI (Common Gateway Interface ou Interface de Passagem Comum). CGI
pode utilizar:
- scripts em Perl
- linguagem C
- Python
- scripts em PHP
Geração de conteúdo dinâmico pelo servidor: CommonGateway Interface (CGI)

- O CGI é um padrão da internet que permite que um servidor web execute um programa no lado servidor, conhecido como
script CGI. - Em geral os scripts CGI são alocados em um diretório, na aplicação web, designado por cgi-bin, para que o
servidor web possa localizá-los.

Servidor web → resposta a uma solicitação de conteúdo dinâmico:


Aplicação “helper” escrita em Java = servlet.

Um servidor entrega a um servlet a request do navegador e devolve a response HTTP. Chama os métodos do servlet
(como doPost( ) ou doGet( ) ).

Container exemplos: Tomcat e Glassfish


Glassfish: servidor de aplicações que oferece suporte a Java EE.
Tomcat: é um processador de servlet.

Padrão de arquitetura MVC: Model-View-Controller

Arquitetura MVC Servlets e acesso a banco de dados

• Servlets são classes Java que recebem requisições no servidor utilizando o protocolo HTTP, processam essas requisições e
devolvem conteúdo ao usuário no formato HTML. Têm a finalidade de permitir a geração de conteúdo dinâmico em
aplicações web a partir de operações realizadas em banco de dados.

• Na arquitetura MVC as servlets são usadas na camada Controller, na função de gerenciamento do fluxo de informações
da aplicação. Todos os componentes da camada View (arquivos JSP, HTML, XHTML, CSS, JavaScript, etc) centralizam suas
requisições nas servlets, fornecendo dados que serão processados e que podem gerar operações no banco de dados,
retornando conteúdo ao usuário no formato HTML.

Arquitetura MVC
Pyton

- A linguagem Pyton foi criada em 1991 por Guido Van Rossum com muitas características da linguagem ABC. Ela é
orientada a objetos, interpretada e interativa. Sua característica marcante é o controle de bloco por identação sem a
necessidade de símbolos delimitadores e códigos bastante legíveis. Extensível para C/C++ em caso de acessos a bibliotecas
construídas nessas linguagens.

- Pode fazer acesso e manipulação a banco de dados – MySQL.

- Em geral os servidores web têm suporte para executar scripts CGI em Pyton. - Pyton possui um servidor web próprio,
incluído em um módulo de biblioteca “http.server”.

- Servidor Pyton:
//importa o servidor HTTP e os módulos CGI
from http.server import HTTPServer, CGIHTTPRequestHandler
//especifica uma porta
port = 8080
//cria o servidor HTTP
httpd = HTTPServer((‘’, port), CGIHTTPRequestHandler)
//exibe mensagem de iniciar o servidor
print(“Starting simple_httpd on port: “ + str(http.server_port))
//inicia o servidor
httpd.serve_forever()

Tecnologias Web

WorldWide Web Consortion (W3C) - Organização que inclui as maiores empresas mundiais de tecnologia, que tem por
missão criar padrões para disponibilização de conteúdo na web. A criação de padrões é necessária para que os
navegadores consigam interpretar um conjunto de elementos (tags) que seguem regras bem definidas.

- Para estabelecer padrões com o objetivo de dar suporte ao desenvolvimento de aplicações para a web, a W3C criou uma
série de linguagens de marcação (markup languages), sendo as principais: eXtensible Markup Language – XML, Hyper Text
Markup Language – HTML e eXtensible Hyper Text Markup Language XHTML.

Linguagem de marcação XML

Linguagem padronizada pela W3C que pode ser utilizada na comunicação entre aplicações executadas em diferentes
plataformas de hardware ou sistema operacional.

Linguagem de marcação XML

Arquivos XML ou HTML formatados por CSS


Cascading Style Sheets – CSS:
CSS permite a visualização do conteúdo dos elementos XML e HTML, definindo a forma como os elementos são exibidos. O
uso do CSS permite o mesmo estilo de formatação para exibição de vários documentos XML ou HTML (é chamada de
formatação em cascata).

Linguagem de marcação XML


Declaração de Tipo de Documento – DTD:
valida um arquivo XML. A DTD contém um conjunto de instruções que descrevem os elementos usados no documento
XML.

Leitura de dados de um arquivo XML com JavaScript e DOM

• Document Object Model – DOM:


define modo padrão de acessar e manipular documentos XML. O DOM apresenta o documento XML no formato de uma
árvore, com elementos, atributos e respectivos conteúdos. É utilizado por linguagens que fazem leitura de arquivos XML,
como a linguagem JavaScript [Teruel E.C, 2009].
• JavaScript: linguagem de programação para web que permite inserir códigos de programação em documentos HTML. É
um dos principais componentes do conjunto de tecnologias
Asynchronous JavaScript And XML – AJAX. Instruções JavaScript são interpretadas nativamente pelos navegadores de
internet.

Exemplo de Aplicação: Um aplicativo JavaScript (Dom.js) fará a leitura dos dados do arquivo XML(Produtos.xml) e a
exibição dos dados se dará por meio de um arquivo HTML (LerProdutos.html).

Arquivos XMLmanipulados por CSS

Cascading Style Sheets – CSS: CSS permite a visualização do conteúdo dos elementos XML, definindo a forma como os
elementos são exibidos. O uso do CSS permite o mesmo estilo de formatação para exibição de vários documentos XML (é
chamada de formatação em cascata).
Exemplo: O arquivo Pessoas5.xml faz uma referência ao arquivo CSS (TemplatePessoas5) que irá manipulá-lo através da
linha de código: <?xml-stylesheet type="text/css" href="TemplatePessoas5.css"?>

Arquivos XMLmanipulados por CSS

Para formatação do arquivo Pessoas5.xml com o arquivo TemplatePessoas5.css é necessário editar e salvar os arquivos
com as respectivas extensões em uma mesma pasta. A seguir deve-se “clicar” duas vezes com o mouse (esquerdo) sobre o
arquivo Pessoas5.xml . O resultado da formatação do arquivo Pessoas5.xml é mostrado ao lado.

Java Server Pages - JSP

A tecnologia JSP é própria para o desenvolvimento de aplicações web em que as informações possam ser atualizadas
através de acessos a base de dados. As páginas web construídas com tecnologia JSP podem conter elementos HTML,
XHTML, XML, CSS, instruções JavaScript e Java. Conter instruções Java possibilita o acesso a banco de dados, manipulação
de tipos de dados primitivos e de referência, laços de repetição, estruturas de seleção, tratamento de exceções, além da
criação de métodos e objetos de classes no padrão Java SE. JSP permite criar aplicação web para cadastrar, alterar, excluir e
pesquisar dados em conjunto com banco de dados MySQL.

JavaServer Pages Standard Tag Library JSTL

• Os códigos de programação Java nas páginas JSP são substituídos por elementos JSTL, que são um conjunto de bibliotecas
de propósitos específicos, que permitem desenvolver páginas JSP sem código Java. JSTL utiliza um conjunto de elementos
(tags) que executam funções que eram executadas por código em Java.

Bibliotecas componentes da JSTL

Para utilização das bibliotecas é necessário a inserção dos respectivos elementos de diretivas no início das páginas:
<%taglib uri=“http://java.sun.com/jsp/jstl/...”%>
• Core: utilizada para implementar comandos de declaração, saída, decisão e repetição.
• SQL: utilizada para acesso a banco de dados.
• FMT: utilizada para a formatação de números e datas.
• XML: utilizada para o processamento de elementos XML.

Asynchronous JavaScriptAnd XML–AJAX Funcionalidade do AJAX:

permite atualização parcial de uma página web.


Tecnologias Web

framework – Struts
É um padrão de arquitetura para desenvolvimento de aplicações web que utiliza as tecnologias Java Servlet e JSP, que
permite a construção de sites no padrão MVC. Criado entre 2000 e 2001 e doado para a Fundação Apache. É considerado
um framework padrão de mercado para o desenvolvimento de aplicações web.
O NetBeans traz o Struts embutido, mas pode ser baixado de:
http://jakarta.apache.org/Struts
Características Struts:
→ o Struts disponibiliza um conjunto de componentes centrais predefinidos e comuns em aplicações web, que são
interligados para deixar transparente a separação de componentes da aplicação nas camadas do padrão MVC. O usuário
também pode criar seus próprios componentes e configurá-los na aplicação por meio de arquivos XML.
→ classes criadas com o Struts: ActionServlet (controlador) configurada através de um documento XML chamado
strutsconfig.xml.

Exemplo de aplicação MVC construída com struts

Java Server Faces - JSF

JSF é um framework Java para web, do lado servidor, baseado em componentes. Seria similar a um tipo de swing para
aplicações do lado do servidor (server-side).
É uma especificação.
Permite projetar interfaces de usuário web colocando componentes dentro de um formulário e conectá-los com objetos
Java.
JSF é baseado em servlets.
Arquiteturas e tecnologias para web – VII
Projeto Java Web arquitetura MVC e tecnologia JavaServer Pages – JSP

Container – exemplos: Tomcat e Glassfish


aplicação java, dentro de um servidor, que entrega a um servlet a request e a response HTTP. Chama os métodos do servlet
(como doPost( ) ou doGet( )).
Suporte para comunicações: proporciona a comunicação com o servidor através do conhecimento do protocolo do mesmo,
proporcionando o acesso ao servlet. Evita desse modo a necessidade de construção de um ServerSocket e de
monitoramento de uma porta.
Gerenciamento do ciclo de vida: controla o nascimento e a morte dos seus servlets. Carrega as classes, instancia e inicializa
os servlets, chama os métodos do servlet e torna as instâncias do servlet aptas a coletar o lixo.
Segurança: O Deployment Descriptor é utilizado para configurar a segurança envolvendo um servlet.
Suporte ao JSP: traduz o código JSPpara Java.

Exemplo de projeto de utilização de Servlet com acesso a banco de dados


• Na arquitetura MVC as servlets são usadas na camada Controller, na função de gerenciamento do fluxo de informações
da aplicação. Todos os componentes da camada View (arquivos JSP, HTML, XHTML, CSS, JavaScript, etc) centralizam suas
requisições nas Servlets, fornecendo dados que serão processados e que podem gerar operações no banco de dados,
retornando conteúdo ao usuário no formato HTML.
• Criar páginas JSP implica necessariamente na geração de servlets no momento em que a aplicação é compilada e
executada no servidor. Por exemplo, no NetBeans, quando uma página JSP é criada, durante a compilação é gerada uma
classe servlet com a extensão _jsp.java.
• O projeto JavaWeb ao ser executado gera o arquivo “index_jsp.java” a partir do arquivo “index.jsp” que passa a exercer a
função relacionada a aplicação.

Exemplo de projeto de aplicação JSPcom acesso a banco de dados


• A tecnologia JSP é própria para o desenvolvimento de aplicações web em que as informações possam ser atualizadas
através de acessos a base de dados. As páginas web construídas com tecnologia JSP podem conter elementos HTML,
XHTML, XML, CSS, instruções JavaScript e Java. Conter instruções Java possibilita o acesso a banco de dados, manipulação
de tipos de dados primitivos e de referência, laços de repetição, estruturas de seleção, tratamento de exceções, além da
criação de métodos e objetos de classes no padrão Java SE. O projeto demonstrado como exemplo é uma aplicação web
para cadastrar, alterar, excluir e pesquisar clientes utilizando JSP com banco de dados MySQL. A interface com o usuário da
aplicação é mostrada na figura:

Interface com usuário de aplicação web criada com tecnologia JSP a partir de exemplo original de (Teruel, 2009).

Componentes da camada View centralizam suas requisições em um componente da camada Controller. Arquivo
Controle.jsp processa requisições e acessa o banco de dados através da classe Conexão.java.
Componentes do projeto:

• Menu da aplicação index.jsp – está configurado no web.xml para ser o arquivo de inicialização da aplicação. Gera o menu
abaixo:

O menu é formado por uma lista de links que têm as funções:


Incluir: requisita a execução do arquivo Telaincluir.jsp. Consultar, Alterar, Excluir: requisitam a execução do arquivo
TelaConsultar.jsp.
Listar: requisita a execução do arquivo Controle.jsp.
Listar passa para Controle, como parâmetro, o campo denominado tela que contém o valor listar por meio do método get.
Esse parâmetro será recebido no arquivo Controle.jsp para identificar a requisição através do evento do mouse (clique) no
link listar.

Componentes do projeto:
• Folha de estilo config.css – é uma folha de estilo usada para formatar os elementos do menu index.jsp e demonstrar que
o conteúdo HTML dos arquivos JSPs pode ser formatado pela linguagem CSS. Trecho de código de index.jsp:
...<link rel = “stylesheet” type= “text/css” href= “config.css” />...

• Formulário para realizar cadastro TelaIncluir.jsp – formulário de cadastro é exibido ao usuário quando é clicado o link
Incluir. O ID que aparece é o da seqüência ao maior cadastrado no banco de dados. Este formulário .JSP faz import da
classe Conexão.java por utilizar seus métodos.

• Através de objeto da classe Conexão.java, chama o método conectar( ) para fazer a conexão com o banco de dados.
Também por intermédio deste objeto, é chamado o método consultar(sql) que fornece um parâmetro de comando sql para
uma consulta de ID e depois atualização do ID de novo cliente.

• Formulário para realizar consulta TelaConsultar.jsp – formulário de consulta é exibido ao usuário quando é clicado o link
Consultar. Este formulário também atende as opções de alterar, limpar e excluir clientes através da identificação pelo ID.

• Botões do tipo submit “submit( )” enviam os dados do formulário a um arquivo no servidor web utilizando os métodos do
tipo post ou get (method=“post”). Este tipo de botão envia os dados dos campos do formulário utilizando elementos HTML.
Os botões do formulário Controle de Clientes, quando clicados, submetem dados ao arquivo Controle.jsp.

Por exemplo, o botão Consultar submete o Formulário com o campo ID contendo um valor digitado e o campo oculto
hidden tela contendo a palavra consultar.
...<input type=“hidden” name= “tela” value=“”/>...

• Formulário para listar clientes: TelaConsultar.jsp – formulário de lista é exibido ao usuário quando é clicado o link listar.
• Apresentação dos dados das pesquisas: Exibir.jsp – O arquivo é responsável pela apresentação dos dados retornados de
pesquisas no banco de dados. Todo fluxo que se inicia ao clicar nos links Consultar ou Listar do menu principal index.jsp
termina nesse arquivo. Aopção Listar exibe todos os dados dos clientes em ordem alfabética por nome e a opção Consultar
exibe os dados de apenas um cliente. Para que esse arquivo identifique qual operação deve ser realizada, o conteúdo do
campo ID recebido na requisição feita por meio do arquivo Controle.jsp é verificado.
(Teruel, 2009)
Para cada linha do formulário resultante da pesquisa estão disponíveis os links Excluir e Alterar, que respondem
respectivamente com requisições ao arquivo Controle.jsp com as passagens dos parâmetros tela com o valor excluir e ID
contendo o valor id da linha.

• Apresentação dos dados dos clientes: Alterar.jsp – O arquivo não altera os dados do cliente no banco de dados, mas
apenas realiza uma pesquisa a partir do ID informado, exibe os dados retornados no formulário e permite que o usuário
modifique esses dados. Ao clicar no botão Salvar, os dados do formulário são submetidos ao arquivo Controle.jsp que, pelo
método incAltExc da classe Conexão.java, realiza a alteração no banco de dados.

• Controlador de fluxo da aplicação: Controle.jsp – gerencia o fluxo de informações da aplicação. Todas as interações que o
usuário faz no sistema passam por esse arquivo antes de chegar à classe Conexão.java, que acessa o banco de dados. Faz o
import da classe Conexão.java, e consequentemente todas as classes do pacote java.sql.

• Classe Conexão.java – disponibiliza métodos e atributos que podem ser acessados pelos arquivos JSP da aplicação. Essa
classe possui um método para fazer a conexão com o banco de dados “conectar( )”, um método para incluir , alterar ou
excluir registros “incAlcExc( )”; possui também um método para pesquisar registros “consultar( )” e outro método para
encerrar a conexão com o banco de dados “desconectar( )“.

Você também pode gostar