Desenvolvimento de aplicações web utilizando separação de

Propaganda
Daniel Delatorre Vanzin
Desenvolvimento de aplicações web utilizando
separação de preocupações
Monograa
apresentada
ao
programa
de
Bacharelado em Ciências da Computação
da Universidade Federal de Santa Catarina
como requisito parcial para obtenção do grau
Bacharel em Ciências da Computação
Orientador:
Professor Dr. Raul Sidnei Wazlawick
Universidade Federal de Santa Catarina
Centro Tecnológico
Florianópolis SC
2005
Daniel Delatorre Vanzin
Desenvolvimento de aplicações web utilizando
separação de preocupações
Florianópolis SC
2005
Monograa de graduação sob o título
Desenvolvimento de aplicações web utilizando
separação de preocupações, defendida por Daniel Delatorre Vanzin e aprovada em XX de
xxxxxx de 2005, em Florianópolis, Santa Catarina, pela banca examinadora constituida
pelos doutores:
Prof. Dr. Raul Sidnei Wazlawick
Orientador
Prof. Dr. Leandro José Komosinski
Universidade de Santa Catarina
Prof. Dr. Ricardo Pereira e Silva
Universidade de Santa Catarina
Resumo
Escreva aqui o texto de seu resumo..., seguido de palavras chave!!
Abstract
Write here the English version of your `Resumo'...
Sumário
Lista de abreviaturas e siglas
Lista de símbolos
1
Introdução
p. 8
1.1
Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
p. 8
1.1.1
Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
p. 8
1.1.2
Objetivo Geral
. . . . . . . . . . . . . . . . . . . . . . . . . . .
p. 8
1.1.3
Objetivos Especícos . . . . . . . . . . . . . . . . . . . . . . . .
p. 8
Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
p. 9
1.2.1
Método de abordagem
p. 9
1.2.2
Métodos de procedimento
1.2
. . . . . . . . . . . . . . . . . . . . .
p. 9
Objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
p. 10
1.3.1
Hipótese Básica . . . . . . . . . . . . . . . . . . . . . . . . . . .
p. 10
1.3.2
Hipóteses Secundárias
. . . . . . . . . . . . . . . . . . . . . . .
p. 10
1.4
Justicativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
p. 10
1.5
Resultados esperados . . . . . . . . . . . . . . . . . . . . . . . . . . . .
p. 11
1.6
Limitações do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . .
p. 11
1.3
2
. . . . . . . . . . . . . . . . . . . . . . .
p. 12
Programação Web
2.1
World Wide Web, uma rede de alcance mundial
. . . . . . . . . . . . .
p. 12
2.1.1
A arquitetura cliente/servidor . . . . . . . . . . . . . . . . . . .
p. 12
2.1.2
Servidores Web e servidores de aplicação . . . . . . . . . . . . .
p. 13
2.1.3
2.1.4
Páginas estáticas e páginas dinâmicas . . . . . . . . . . . . . . .
p. 13
2.1.3.1
Processamento de páginas estáticas . . . . . . . . . . .
p. 14
2.1.3.2
Processamento de páginas dinâmicas . . . . . . . . . .
p. 14
Sites e aplicações web
. . . . . . . . . . . . . . . . . . . . . . .
p. 16
Lista de abreviaturas e siglas
Lista de símbolos
8
1
Introdução
1.1 Objetivo
1.1.1 Tema
Desenvolvimento de aplicações web
1.1.2 Objetivo Geral
Demonstrar as vantagens da aplicação do conceito de separação de preocupações no
desenvolvimento de aplicações web.
1.1.3 Objetivos Especícos
•
Apontar ferramentas, linguagens e serviços utilizados para a chamada programação
web.
•
Descrever as principais linguagens de programação e marcação utilizadas em aplicações web.
•
Desenvolver uma aplicação web aplicando um método de análise orientada a objetos
baseado no Processo Unicado para a criação de aplicações desktop tradicionais,
constatar o que não funciona para esse tipo de aplicação e sugerir alternativas.
•
Demonstrar os benefícios que podem ser alcançados com a utilização de XML e XSL
com relação à separação de preocupações.
•
Comparar as diferentes arquiteturas de software utilizadas para a criação de aplicações web, em especial a separação de preocupações com o MVC Modelo 2.
•
Debater sobre as vantagens da adoção de linguagens ociais da web, como denidas
pelas especicações da W3C, em contraste com a utilização de linguagens criadas
9
por grupos liados a outras organizações.
•
Avaliar as diferentes alternativas de linguagens de transformação baseadas no XSL,
como o Freemaker, NiceXsl e o EXSL.
1.2 Metodologia
1.2.1 Método de abordagem
Será utilizado o método argumentativo, utilizando-se de argumentos e não necessariamente de fatos para alcançar os objetivos do trabalho.
1.2.2 Métodos de procedimento
O trabalho irá inicialmente denir importantes termos relacionados a programação
web.
Palavras utilizadas de forma incorreta serão esclarecidas e será estabelecido uma
denição para aquelas que não possuem consenso quanto a seu signicado.
Seguindo a denição de termos, será discutido as características das aplicações web
que a tornam diferentes de aplicações comuns. Serão abordados os desaos de programar
para um protocolo sem estados, e como as linguagens dinâmicas entram em cena para
ajudar.
Na próxima parte o foco principal do trabalho, a separação de preocupações, será
tratada. Serão identicadas quais são as preocupações envolvidas nas aplicações web e
como elas vem sendo tratadas.
Essa é a parte onde serão descritas as principais ferra-
mentas utilizadas no desenvolvimento de aplicações web, e como elasse relacionam com
os princípios da separação de preocupações.
Frameworks serão analisados e um deles
será escolhido para uso na criação da apli cação que será usada como caso de estudo. O
framework escolhido terá seu funcionamento detalhado.
Na última etapa do projeto, será aplicado um método de análise e projeto orientado a
objetos para a criação de uma aplicação web. O processo de desenvolvimento da aplicação
será descrito e alterações serão sugeridas nas partes em que o método não for eciente em
se tratando de uma aplicação web.
10
1.3 Objeto
1.3.1 Hipótese Básica
É possível reduzir os custos de gerenciamento, aumentar a produtividade, facilitar
a manutenção e reduzir o tempo de desenvolvimento de aplicações web se aplicado o
conceito de separação de preocupações.
1.3.2 Hipóteses Secundárias
1. Apesar de alguns programadores conseguirem gerenciar a divisão entre conteúdo e
interface com o usuário, tal feito é conseguido apesar da tecnologia utilizada, não
por causa dela.
2. O resultado nal de uma aplicação web terá melhor qualidade se cada área de
preocupação da aplicação for desenvolvida por um prossional especializado na área
em questão.
3. O processo de desenvolvimento de uma aplicação web será mais rápido se diferentes
equipes puderem trabalhar concomitantemente.
4. O trabalho de correção de problemas ou atualização de conteúdo ou funcionalidades
ca mais fácil quando a área em questão pode ser alterada sem afetar as demais.
5. A tarefa de dividir e coordenar diferentes grupos trabalhando no mesmo projeto é
facilitada se as áreas de preocupação forem identicadas e bem denidas.
6. O esforço de controle e coordenação dos grupos de trabalho é reduzido signicativamente quando cada grupo tem bem denido o que deve fazer, e sua atividade
independe do trabalho dos demais grupos.
7. A falta de comprometimento com a adoção de padrões no desenvolvimento de aplicações web traz problemas de compatibilidade com outras aplicações.
1.4 Justicativa
O uso de separação de aplicações facilita a divisão de grupos de trabalho para o
desenvolvimento de aplicações. Cada grupo pode ser formado por pessoas com habilidades
comuns, especialistas em sua área. Os grupos também podem trabalhar ao mesmo tempo,
11
contanto que a denição das atividades de cada um seja bem estabelecida para que não
ocorra interferência no trabalho de um grupo com outro. Logo é preciso saber coordenar
adeqüadamente o trabalho.
Em métodos
ad hoc que predominam na Web, todo trabalho relativo ao desenvolvi-
mento de uma aplicação web é delagado a uma única pessoa. Esse prossional precisa ter
um conhecimento técnico amplo para poder lidar com as diferentes áreas de preocupação
envolvidas no processo, as quais muitas sequer são identicadas. Logo, a mesma pessoa
encarregada da programação da aplicação é a responsável pela inserção de novo conteúdo,
ganhando o mesmo salário para isso.
Apesar de diferentes, aplicações web não necessitam de uma abordagem completamente novade desenvolvimento. As mesmas técnicas que vem sendo utilizadas nos últimos anos de análise e projeto de sistemas podem ser empregadas, com algumas pequenas
alterações. O escopo deste trabalho também cobre o estudo de algumas destas alterações.
1.5 Resultados esperados
Obter um método que garanta a maior separação de preocupações possível.
1.6 Limitações do trabalho
A quantidade de ferramentas (em especial frameworks) existentes para criação de
aplicações web são enormes. Serão abordadas apenas três ou quatro das mais importantes
e mais utilizadas.
Também não serão analisadas muitos métodos de análise e projeto de aplicações web,
pois aqueles que valem a pena serem vistos baseiam-se em métodos de desenvolvimento
de software que já vem sendo utilizados há anos.
12
2
Programação Web
2.1 World Wide Web, uma rede de alcance mundial
Quando Tim Berners-Lee escreveu em 1989 uma proposta como solução para os problemas de colaboração entre os pesquisadores do laboratório onde trabalhava, jamais
poderia imaginar nas proporções de seu sucesso.
The World Wide Web is the universe of network-accessible information, an embodiment of human knowledge.- Tim Berners-Lee. Ela é uma parte da Internet, muitas vezes
sendo confundida como seu sinônimo. A Internet é uma rede física formada por computadores e cabos, enquanto a WWW é um espaço abstrato formado por documentos e links
de hipertexto.
1
A Web, como também é conhecida, usa a metáfora páginas"para a organização de
informação. O conteúdo das páginas web podem aparecer na forma de texto, hyperlinks,
grácos, vídeos, sons e animações.
Uma página web pode ser acessada através de seu
endereço único na Web, chamado de Uniform Resource Locator (URL).
2.1.1 A arquitetura cliente/servidor
A Web gira em torno do modelo cliente-servidor, uma arquitetura de rede na qual
cada computador na rede age como um cliente ou um servidor. Um computador cliente
é aquele que executa uma aplicação cliente, como um navegador web, que interage com
um servidor web, uma aplicação em execução no computador servidor, para a exibição de
páginas.
A interação cliente-servidor acontece através de um conjunto de instruções chamado
de protocolo. Protocolos ajudam na transferência de dados entre computadores. Existem
muitos protocolos na Internet. A Word Wide Web utiliza o HyperText Transfer Protocol
Um documento que um clique em alguma parte dele encaminhara o usuário para outro documento
ou outra parte do mesmo documento
1
13
(HTTP) para realizar a comunicação entre computadores na Internet.
Ele simplica a
ecrita de endereços e automaticamente busca a Internet pela URL indicada e chama a
página para visualização.
O HTTP funciona com base num ciclo de requisição-resposta. Quando um computador cliente faz uma requisição por uma página, ele envia uma mensagem ao computador
servidor. Um vez recebida essa mensagem, o computador servidor processa seu conteúdo
e gera uma mensagem que será enviada como resposta para o cliente. O cliente interpreta
a resposta e exibe a página para a aplicação que a requisitou, geralmente, um navegador
web. Uma requisição deve sempre ser acompanhada de uma resposta, e o ciclo é sempre
iniciado pelo cliente, nunca pelo servidor.
2.1.2 Servidores Web e servidores de aplicação
Um servidor web é um programa que serve arquivos em resposta a requisições de
navegadores web. As vezes, é chamado de servidor HTTP. Servidores web comuns incluem
Microsoft Internet Information Server (IIS), Netscape Enterprise Server, Sun ONE Web
Server, e Apache HTTP Server.
Existem inúmeros serviços de hospedagem de páginas que possuem servidores web
instalados.
Se um desses serviços não for utilizado, é possível instalar o servidor na
máquina local ou em uma máquina remota.
Servidores web trabalham com um servidor de aplicações, que ajudam ele a processar
páginas dinâmicas. O servidor de aplicação a ser utilizado depende da tecnologia a ser
utilizada (ColdFusion, ASP.NET, ASP, JSP, ou PHP), do servidor web escolhido(.NET
Framework só trabalha com IIS 5 ou maior, por exemplo) e também do orçamento disponível. Um servidor de aplicação popular e gratuíto é o Jakarta Tomcat.
A gura 2 mostra alguns servidores de aplicações e as tecnologias que suportam.
2.1.3 Páginas estáticas e páginas dinâmicas
Páginas web são classicadas em dois tipos de acordo com o estado de seu conteúdo no
momento em que são acessadas. Se o conteúdo já está denido são chamadas de páginas
estáticas.
Quando o conteúdo está parcialmente ou inteiramente indeterminado são
chamadas de páginas dinâmicas.
Páginas estáticas são alteradas sempre que seu conteúdo é modicado, enquanto pá-
14
Figura 1: Exemplos de servidores de aplicações e as tecnologias que suportam
ginas dinâmicas podem apresentar um conteúdo distinto a cada vez que são visualizadas.
O conteúdo pode ser alterado de uma requisição para outra de acordo com as ações do
usuário.
2.1.3.1
Processamento de páginas estáticas
Páginas estáticas não mudam quando são requisitadas. Quando o servidor web recebe
uma requisição por uma página estática, o servidor lê a requisição, encontra a página e
envia ela para o navegador que a requisitou. Esse processo pode ser visto na gura 2.
As linguagens de marcação (
markup languages ) como a HTML e a XHTML são uti-
lizadas para a criação deste tipo de páginas.
2.1.3.2
Processamento de páginas dinâmicas
Páginas dinâmicas são modicadas pelo servidor antes de serem enviadas para o navegador que as requisitou. Quando um servidor web recebe uma requisição por uma página
dinâmica, ele passa a página para um servidor de aplicação que será responsável por
terminar ela.
O servidor de aplicação lê o código na página e substitui ele de acordo com as instruções nele contidas.
O resultado é uma página estática que o servidor de aplicação
devolve para o servidor web, que então envia a página para o programa cliente. A gura
3 mostra uma visão do processo.
As linguagens utilizadas para a criação deste tipo de páginas adicionam scripts ou
15
Figura 2: Processamento de páginas estáticas
Figura 3: Processamento de páginas dinâmicas
16
tags ao código estático da página para torná-la dinâmica. Quando o código é visualizado,
a linguagem aparece embutida com o código estático, sendo por isso conhecidas como
linguagens de programação embutidas. Exemplos incluem a ColdFusion Markup Language
(CFML), JavaServer Pages (JSP), Active Server Pages(ASP), Hypertext Preprocessor
(PHP), JavaScript e VisualScript.
2.1.4 Sites e aplicações web
Web sites são conjuntos de páginas web ligadas umas com as outras.
Eles corre-
spondem a uma representação virtual de interesses ou produtos das pessoas ou empresas
responsáveis por sua criação. Quando um web site oferece funcionalidades além de apenas
conteúdo, ele é chamado de uma aplicação web. Uma aplicação é um programa de computador projetado para uma tarefa ou uso especíco. Aplicações web utilizam um site
web como interface gráca para uma aplicação mais típica. Em uma aplicação web dados
de entrada do cliente executam lógica de negócios no servidor.
Pelo fato de sua execução envolver dois (ou mais) computadores conectados em uma
rede, uma aplicação web é também uma aplicação distribuída.
O contrário não é
verdade no entanto, uma vez que aplicações web utilizam apenas o protocolo HTTP para
comunicação.
A distinção entre um site web e uma aplicação web pode ser bastante nebulosa. Uma
armação de que sites web possuem apenas conteúdo estático implicaria em dizer que
qualquer página com um contador de visitantes é uma aplicação web.
Baxley
2
sugere
duas propriedades presentes apenas em aplicações web:
•
Relação um-para-um - aplicações web estabelecem uma sessão e relacionamento
únicos com cada visitante. Como elas exigem algum tipo de identicação do usuário,
é possível que a aplicação seja dinamicamente alterada de um usuário para outro.
Isto pode tomar a forma de conteúdo ou funcionalidades personalizados, baseado
em papéis e privilégios.
•
Habilidade de mudar dados permanentemente - aplicações web permitem usuários
a criar, manipular, e permanentemente guardar dados. Tal dados podem assumir
a forma de transações de vendas completadas, registros de recursos humanos, ou
mensagens de email, para citar apenas algumas.
2
citação
17
Aplicações web que possuem ambas características necessariamente contém algum
grau de comportamento, lógica e estado, carentes em sites web tradicionais baseados em
conteúdo.
O grau de complexidade presente nessas aplicações é que irá decidir se há
necessidade de aplicar conceitos avançados de análise e projeto de sistemas.
A denição adotada por Baxley no entanto, não é muito precisa. Um aplicativo de
calculadora não satisfaz nenhuma das exigências, no entanto é uma aplicação, que pode
ter sua interface tanto na Web quanto no desktop.
Uma outra diz que web sites são
formados por páginas cujo conteúdo já está denido no momento de seu acesso. Devido
ao conteúdo passar para o usuário sem nenhuma mudança essas páginas são chamadas de
estáticas. Aplicações web contém páginas com conteúdo parcialmente ou inteiramente
indeterminado. O conteúdo nal é determinado somente quando o visitante requer uma
página do servidor web. Devido a mudança de conteúdo de uma requisição de acordo com
as ações do usuáro essas página são chamadas de dinâmicas.
Essa denição de associação feita com páginas dinâmicas e páginas estáticas é mais
especíca, mas também não é a mais adequada. De acordo com ela, uma página simples contendo apenas algum texto e um contador de visitantes ou a data atual pode ser
considerada uma aplicação web.
Doravante será utilizado uma combinação de ambas as denições para designar uma
aplicação web.
Qualquer aplicação tradicional de desktop, como uma calculadora, que
possua uma interface web é uma aplicações web, assim como sites que apresentarem um
grau mínimo de comportamento, lógica e estado.
Server-side vs.
Client-side scripting What distinguishes PHP from something like
client-side JavaScript is that the code is executed on the server. If you were to have a
script similar to the above on your server, the client would receive the results of running
that script, with no way of determining what the underlying code may be. You can even
congure your web server to process all your HTML les with PHP, and then there's
really no way that users can tell what you have up your sleeve.
Download