UNIVERSIDADE TIRADENTES CENTRO DE CIÊNCIAS FORMAIS E TECNOLOGIA – CCFT TECNOLOGIA EM PROCESSAMENTO DE DADOS DOCUMENTAÇÃO DE ESPECIFICAÇÃO FUNCIONAL PARA SISTEMAS BASEADOS NA WEB JORGE AUGUSTO MAROZZI CABRAL ORIENTADOR ANDRÉS I. MARTÍNEZ MENÉNDEZ Aracaju (SE)-Brasil Novembro de 2002 UNIVERSIDADE TIRADENTES CENTRO DE CIÊNCIAS FORMAIS E TECNOLOGIA – CCFT TECNOLOGIA EM PROCESSAMENTO DE DADOS DOCUMENTAÇÃO DE ESPECIFICAÇÃO FUNCIONAL PARA SISTEMAS BASEADOS NA WEB Monografia de conclusão do Curso de graduação apresentada ao Centro de Ciências Formais e Tecnologia da Universidade Tiradentes, como requisito parcial para obtenção do título de Tecnólogo em Processamento de Dados. JORGE AUGUSTO MAROZZI CABRAL ORIENTADOR ANDRÉS I. MARTÍNEZ MENÉNDEZ Aracaju (SE)-Brasil Novembro de 2002 ii DOCUMENTAÇÃO DE ESPECIFICAÇÃO FUNCIONAL PARA SISTEMAS BASEADOS NA WEB JORGE AUGUSTO MAROZZI CABRAL DATA ___ / ___ / _____ BANCA (1º Examinador)_____________________________________________ Andrés I. Martinez Menéndez (2º Examinador)_____________________________________________ Fábio Soares Silva (3º Examinador)_____________________________________________ Cleonaldo Andrade Freire iii “O maior prazer na vida é realizar aquilo que as demais pessoas acham que você é incapaz de fazer”. Walter Begehot iv Dedico este trabalho de conclusão de curso aos meus pais, que sempre me apoiaram e estiveram do meu lado em todos os momentos, aos meus amigos que sempre me apoiaram e participaram de minha formação pessoal e profissional e a minha família que sempre esteve torcendo por essa conquista. Jorge Augusto Marozzi Cabral v AGRADECIMENTOS A realização deste trabalho só foi possível graças: A Deus. Ao meu orientador, Andrés I. Martinez Menéndez, por dedicar parte de seu tempo a esse trabalho e pelas dicas e conselhos que me orientaram nessa formação acadêmica. A todos os colegas e professores de curso, que além de colegas tornaram-se grandes amigos, por estarem lutando e conquistando essa vitória em nossas vidas. Aos meus pais, que sempre estiveram presentes e incentivaram na minha formação. A minha namorada Andréa que sempre esteve ao meu lado nos momentos difíceis. A minha família, em especial a minha irmã Julie e a todos aqueles que sempre torceram por mim. vi SUMÁRIO LISTAS DE FIGURAS ............................................................................................... ix LISTAS DE SIGLAS .................................................................................................. xi RESUMO ................................................................................................................... xii INTRODUÇÃO.......................................................................................................... 13 1. APLICAÇÕES WEB .......................................................................................... 15 1.1. A Arquitetura WEB..................................................................................... 15 1.2. Protocolo HTTP .......................................................................................... 16 1.3. Conceitos Importantes................................................................................. 17 1.3.1. 1.3.2. Páginas WEB .....................................................................................................................17 Tipos ...................................................................................................................................18 1.4. Aplicação Web............................................................................................ 18 1.5. Servidores Web........................................................................................... 19 1.6. Aplicações WEB Estáticas ............................................................................... 19 1.6.1. 1.6.2. 1.7. 1.7.1. 1.7.2. 1.7.3. HTML.................................................................................................................................19 Como são formados os marcadores HTML ? .................................................................20 Aplicações WEB Dinâmicas........................................................................ 24 ASP.....................................................................................................................................24 JSP .....................................................................................................................................33 Servlets ...............................................................................................................................36 1.8. Aplicações Multicamadas ou N-Camadas.................................................... 37 UML................................................................................................................... 41 2.1. Conceito........................................................................................................... 41 2.2. Diagramas de Casos de Uso ............................................................................ 41 2.3. Diagramas de Classes.................................................................................. 43 2.4. Diagramas de Objetos ................................................................................. 44 2.5. Diagramas de Estados ................................................................................. 46 2.6. Diagramas de Seqüência.............................................................................. 47 2.7. Diagramas de Colaboração .......................................................................... 47 2.8. Diagramas de Atividade .............................................................................. 48 2.9. Diagramas de Componentes ........................................................................ 50 2.10. Diagramas de Implantação ............................................................................ 51 3. EXTENSÕES DE APLICAÇÕES WEB (WAE)................................................. 52 3.1. Ressalvas sobre aplicações Web .................................................................. 52 3.2. Modelagem de arquitetura (Conallen).......................................................... 53 3.3. O que é modelar? ........................................................................................ 54 3.4. Estereótipos de páginas e relacionamentos .................................................. 55 2. 3.4.1. 3.4.2. 3.4.3. 3.4.4. 3.5. 3.6. 3.6.1. 3.6.2. 3.7. 3.8. 3.8.1. 3.9. Página de servidor .............................................................................................................55 Página de cliente................................................................................................................55 Constrói ..............................................................................................................................55 Links...................................................................................................................................56 Estereótipos de componentes....................................................................... 57 Estereótipos de formulário........................................................................... 57 Formulário .........................................................................................................................57 Submit ................................................................................................................................58 Estereótipos de conjuntos de frames (framesets).......................................... 58 Outros Estereótipos ..................................................................................... 59 Target .................................................................................................................................59 Vantagens ................................................................................................... 60 vii 4. ESTUDO DE CASO – SISTEMA DE ATIVIDADES EXTRA-CURRICULARES 61 4.1. Introdução ................................................................................................... 61 4.2. Login do Sistema ........................................................................................ 61 4.3. Alterar Senha .............................................................................................. 65 4.4. Dados Cadastrais......................................................................................... 69 4.5. Alterar Endereço ......................................................................................... 71 4.6. Alterar Dados do Crachá ............................................................................. 74 4.7. Atividades Disponíveis................................................................................ 79 4.8. Atividades Disponíveis................................................................................ 89 4.9. Pagamentos ................................................................................................. 94 CONCLUSÃO............................................................................................................ 99 REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................... 101 viii LISTAS LISTAS DE FIGURAS Figura 1 – Arquitetura WEB (Modelo Cliente-Servidor) .........................................................................16 Figura 2 – Código fonte de marcadores.html.............................................................................................20 Figura 3 – página marcadores.html exibida no Internet Explorer 6.0.......................................................21 Figura 4 – Código-Fonte da página navegadores.html .............................................................................22 Figura 5 – Página navegadores.html visualizada no Netscape 6.22..........................................................22 Figura 6 – Página navegadores.html visualizada no Internet Explorer 6.0...............................................23 Figura 7 – Código fonte de teste.asp..........................................................................................................25 Figura 8 – Resultado do processamento da página teste.asp.....................................................................25 Figura 9 – Interação Cliente-Servidor para arquivos ASP........................................................................26 Figura 10 – Código-fonte da página teste_script_cliente.html ..................................................................27 Figura 11 – Resultado da execução do script ............................................................................................28 Figura 12 – Resultado da página após a execução do script da Figura 9 ................................................28 Figura 13 – Página processamento.asp antes da solicitação do cliente ....................................................29 Figura 14 – Página processamento.asp após a solicitação do cliente.......................................................30 Figura 15 – Exibição da página processamento.asp após a solicitação do cliente ..................................30 Figura 16 – Arquitetura do ASP segundo Rubens Prates ..........................................................................31 Figura 17 – Demonstração de uma aplicação ASP publicada no IIS .......................................................32 Figura 18 – Código-fonte de teste.jsp ........................................................................................................34 Figura 19 – Ciclo de processamento de um arquivo JSP...........................................................................35 Figura 20 – Resultado do processamento de teste.jsp................................................................................35 Figura 21 – Modelo clássico de uma aplicação multicamada ...................................................................39 Figura 22 – Diagrama de Casos de Uso ....................................................................................................42 Figura 23 – Diagramas de Classes ............................................................................................................44 Figura 24 – Diagrama de Objetos..............................................................................................................45 Figura 25 – Diagramas de Estados............................................................................................................46 Figura 26 – Diagramas de Seqüência ........................................................................................................47 Figura 27 – Diagramas de Colaboração ...................................................................................................48 Figura 28 – Diagramas de Atividades........................................................................................................49 Figura 29 – Diagramas de componentes....................................................................................................50 Figura 30 – Diagramas de Componentes...................................................................................................51 Figura 31 - Estereótipos pág. serv, pág. cliente e relacionamento <<build>> ........................................56 Figura 32 - estereótipo <<links>>............................................................................................................56 Figura 33 - Estereótipos «formulário» e «submit» ....................................................................................58 Figura 34 - Estereótipos «frameset» .........................................................................................................59 Figura 35 - Estereótipo <<target>> .........................................................................................................59 Figura 36 – Diagrama de classes para páginas de login...........................................................................62 Figura 37 – Diagrama de componentes para páginas de login .................................................................63 Figura 38 – Diagrama de sequência para login ........................................................................................64 Figura 39 – Diagrama de classes para páginas de alteração de senha.....................................................66 Figura 40 – Diagrama de componentes para alteração de senha .............................................................67 Figura 41 – Diagrama de sequência para alteração de senha ..................................................................68 Figura 42 – Diagrama de classes para páginas de consulta de dados cadastrais.....................................69 Figura 43 – Diagrama de componentes para consulta de dados cadastrais..............................................70 Figura 44 – Diagrama de sequência para consulta de dados cadastrais ..................................................70 Figura 45 – Diagrama de classes para páginas de alteração de endereço ...............................................71 Figura 46 – Diagrama de componentes para alteração de endereço ........................................................72 Figura 47 – Diagrama de sequência para alteração de endereço .............................................................73 Figura 48 – Diagrama de classes para páginas de alteração de dados do crachá ...................................75 ix Figura 49 – Diagrama de componentes para alteração de dados do cracha ............................................76 Figura 50 – Diagrama de sequência para alteração de dados do crachá – parte 1..................................77 Figura 51 – Diagrama de sequência para alteração de dados do crachá – parte 2..................................78 Figura 52 – Diagrama de classes para páginas de atividades disponíveis – parte 1 ................................80 Figura 53 – Diagrama de classes para páginas de atividades disponíveis – parte 2 ................................81 Figura 54 – Diagrama de componentes para páginas de atividades disponíveis – parte 1 .......................82 Figura 55 – Diagrama de componentes para páginas de atividades disponíveis – parte 2 .......................83 Figura 56 – Diagrama de seqüência para páginas de atividades disponíveis – parte 1............................84 Figura 57 – Diagrama de seqüência para páginas de atividades disponíveis – parte 2............................85 Figura 58 – Diagrama de seqüência para páginas de atividades disponíveis – parte 3............................86 Figura 59 – Diagrama de seqüência para páginas de atividades disponíveis – parte 4............................87 Figura 60 – Diagrama de seqüência para páginas de atividades disponíveis – parte 5............................88 Figura 61 – Diagrama de classes para páginas de atividades inscritas ....................................................90 Figura 62 – Diagrama de componentes para páginas de atividades inscritas ..........................................91 Figura 63 – Diagrama de seqüência para páginas de atividades inscrita – parte 1..................................92 Figura 64 – Diagrama de seqüência para páginas de atividades inscrita – parte 2..................................93 Figura 65 – Diagrama de classes para páginas de pagamentos................................................................95 Figura 66 – Diagrama de componentes para páginas de pagamentos ......................................................96 Figura 67 – Diagrama de seqüência para páginas de pagamentos – parte 1............................................97 Figura 68 – Diagrama de seqüência para páginas de pagamentos – parte 2............................................98 x LISTAS DE SIGLAS ASP Active Server Pages HTML HyperText Markup Language HTTP HyperText Transfer Protocol IIS Internet Information Server JSP Java Server Pages PWS Personal Web Server SGDB Sistema Gerenciador de Banco de Dado UML Unified Modeling Language WWW World Wide Web WAE Web Application Extension xi RESUMO Usar uma metodologia de desenvolvimento de sistemas para captar desde os primeiros contatos, até a conclusão das etapas de desenvolvimento de software, é de extrema importância. A Unified Modeling Language (UML) é uma conceituada linguagem de modelagem orientada a objetos, porém a UML não possui elementos que modelem sistemas baseados na Web. Este trabalho tem como objetivo estudar uma metodologia de modelagem de sistemas para a Internet, de forma a englobar todas as fases do processo, desde os eventos iniciais, passando pela Análise de Requisitos, Análise, Projeto, Programação e Testes. Utilizarei a ferramenta case Rational Rose, da Rational Software Corporation no apoio à modelagem do sistema. A validação da metodologia será realizada com a criação da documentação de um sistema já desenvolvido. xii 13 INTRODUÇÃO A Internet está deixando de ser um grande repositório de informações onde podemos visualizar apenas textos, imagens, vídeos e áudio. Aplicações e sistemas baseados na Web estão indo muito além da simples apresentação de conteúdos, tornando-se complexos, agregando muitas funcionalidades e integrando-se às estratégias de pequenas e grandes companhias que vêem na Internet um grande potencial para negócios, principalmente na área de comércio eletrônico. O grande enfoque dado ao direcionamento de construir aplicações para a Web está na facilidade de implementação dessas aplicações. Este fato tem levado os profissionais da área a utilizarem métodos e processos informais durante as etapas de desenvolvimento desses aplicativos. As tecnologias atuais permitem um desenvolvimento rápido de aplicativos Web, evoluindo de aplicações simples e produzindo como efeito colateral, sistemas confusos para os usuários e de difícil manutenção devido a parcial ou total ausência das fases de análise e projeto. Dessa forma, a modelagem e o projeto de um sistema são etapas essenciais para a geração de aplicações de boa qualidade. Diante deste contexto fica evidente a necessidade de construir aplicações confiáveis, fáceis de usar e de serem alteradas, além de adaptadas aos negócios das empresas. Uma característica importante é que as aplicações Web incorporam regras de negócios no lado do servidor da empresa, necessitando de uma abordagem disciplinada para um desenvolvimento consistente e coerente. A Unified Modeling Language (UML) é uma linguagem padronizada, utilizada para modelar sistemas com altos níveis de exigência e complexidade. A UML foi definida inicialmente para apoiar o processo de desenvolvimento de sistemas ClienteServidor. Dessa forma, sua versão básica não contempla componentes específicos para as aplicações Web, que tratam aspectos de interação do usuário, navegação e 13 14 apresentação. Contudo, ela prevê mecanismos de extensão que permitem adaptá-la a um método específico, organização, usuário ou aplicação. Um grande problema das aplicações Web que encontramos desenvolvidas no mercado é que a maioria delas não possui uma documentação especifica para elas, dificultando a manutenção dessas aplicações. Neste trabalho apresento os aspectos básicos de um aplicativo Web, as etapas normalmente presentes em um processo de construção de aplicações orientadas a objeto com foco para Web, uma visão sucinta dos mecanismos de extensão previstos na UML, a proposta de extensão de Conallen de novos elementos, chamados de estereótipos, derivados dos componentes básicos da UML, que permitem uma modelagem especifica para este tipo de aplicativo e uma proposta de modelagem de uma aplicação Web já em funcionamento utilizando as técnicas de modelagem propostas por Conallen. 14 15 1. APLICAÇÕES WEB 1.1. A Arquitetura WEB A arquitetura Web está baseada na arquitetura Cliente–Servidor. Essa arquitetura tem como principal objetivo simplificar e facilitar a interligação de computadores em uma rede. Com o avanço de novas tecnologias, os sistemas gerenciadores de banco de dados (SGBD) foram exigindo mais recursos, os sistemas operacionais foram se tornando mais flexíveis, as redes foram se ampliando e a necessidade de utilização de microcomputadores mais complexos, versáteis e em rede, onde em cada um deles podem ter recursos compartilhados, era inevitável. Nessa arquitetura, os clientes são estações que fazem requisições de informações aos servidores, que são computadores com um maior poder de processamento, com a finalidade de servir às estações clientes. Segundo Scott e James (2000,p.5), muitas atividades cotidianas simulam o modelo cliente-servidor. Um bom exemplo dessa afirmativa é quando queremos viajar para uma determinada cidade e não sabemos onde a mesma está situada, sendo necessária a utilização de um mapa. Nesse exemplo, o mapa funciona como um servidor, é nele onde podemos encontrar os dados referentes a nossa “solicitação” que poderia ser: onde encontrar a cidade de Aracaju?. No que diz respeito a Web, toda ou qualquer aplicação é voltada para essa arquitetura que pode ser vista na Figura 1: 15 16 Figura 1 – Arquitetura WEB (Modelo Cliente-Servidor) Esse modelo é base fundamental para qualquer aplicação Web, sendo necessário, portanto seu entendimento como pré-requisito para a compreensão do processamento das aplicações Web. 1.2. Protocolo HTTP De acordo com Marcos (1997), o Hypertext Transfer Protocol (HTTP) é o protocolo de transferência de arquivos hipertexto e de comunicação entre cliente e servidor na WWW. Toda informação transmitida entre cliente e servidor possui um cabeçalho. É neste cabeçalho que estão os comandos (métodos) que indicam as ações a serem tomadas pelo servidor ou pelo cliente. Todo processo de solicitação e devolução de páginas Web, entre o cliente e o servidor, ocorre via protocolo HTTP, sendo que quando as páginas foram implementadas através de códigos dinâmicos, os comandos são interpretados e seu resultado apresentado ao usuário. Neste cenário, o cliente envia um cabeçalho com o método GET indicando a página a ser recuperada. O servidor responde com um cabeçalho indicando o tipo da informação (por exemplo, um arquivo HTML) e a página em si. Em determinadas ocasiões é necessária a utilização de outro método para se obter dados enviados de um formulário, o método chamado POST. 16 17 No protocolo HTTP não existe o conceito de sessão, pois as conexões HTTP não ficam abertas, é necessário simular uma sessão em HTTP através de um identificador, conhecido como id da sessão. Esse id é enviado a cada requisição do usuário identificando a sessão específica do cliente. Fazendo analogia a uma situação do nosso cotidiano, é como se nós deixássemos um carro num estacionamento e no momento em que retornássemos para buscá-lo, fosse necessário um ticket de identificação do dono. O ticket subtende o seguinte significado: “Eu sou a mesma pessoa que deixou o carro aqui mais cedo, lembra?”. É assim que funciona a sessão HTTP, é como se o browser do cliente perguntasse ao servidor: “Ei servidor, sou o mesmo browser que solicitei a página anteriormente, lembra?”. Um bom exemplo para clarear a necessidade do uso de ids de sessões é a estratégia do carrinho de compras adotada em muitos sites de comércio eletrônico. Nesses sites poderemos ter vários clientes navegando ao mesmo tempo dentro da aplicação do comércio eletrônico. Como identificar os pedidos de cada cliente? Como identificar as compras de cada usuário? Estes problemas são solucionados graças ao id da sessão. Cada usuário possui o seu número de identificação da sua sessão, e através desse número que é enviado na maioria das vezes, de forma transparente ao usuário, através de cookies, podemos armazenar os pedidos de cada cliente numa região de memória específica desse cliente, caracterizando o que nós chamamos de Sessão HTTP. 1.3. Conceitos Importantes 1.3.1. Páginas WEB Entende-se por páginas Web, qualquer conjunto de documentos desenvolvidos através da linguagem HTML, JSP, ASP, etc, com ou sem comando de interação com o servidor, com o principal objetivo de prover aos clientes informações, transações e, sobretudo atender alguma necessidade do usuário. 17 18 1.3.2. Tipos As páginas Web se classificam em Estáticas e Dinâmicas. As páginas estáticas, como o próprio nome já diz, são páginas Web escritas em código HTML puro sem nenhuma interação com banco de dados ou mesmo códigos de execução no servidor. As páginas dinâmicas são mais versáteis, com um maior fluxo de informações e que apresentam determinadas linhas de comandos que serão executadas no servidor, podendo acessar ou não um banco de dados. 1.4. Aplicação Web Uma aplicação Web é um conjunto de páginas Web. Ela pode ser caracterizada por sistemas de informação, que podem variar de simples páginas pessoais (homepages) até complexos sistemas organizacionais de compras on-line. Com o passar do tempo, os desenvolvedores de aplicações Web perceberam que não era muito viável fornecer apenas páginas de conteúdo estático. Para fornecerem páginas mais atrativas seria importante que eles manipulassem códigos e pequenos programas nessas páginas. Surgiram então os chamados scripts, pequenos programas incorporados às páginas HTML, com a principal finalidade de promover efeitos de formatação, validações de formulários e animações. Outras soluções adotadas, e que atualmente são bastante usadas, são a tecnologia JAVA da Sun, através de Java Server Pages (JSP) e o Active Server Pages (ASP) da Microsoft. Estas tecnologias transformaram os sites antes estáticos, em sistemas dinâmicos ligados à banco de dados em tempo real. 18 19 1.5. Servidores Web É um software responsável pelo gerenciamento de todas as aplicações Web, tais como, criação e publicação de diretórios virtuais, segurança das informações, controle de logs, além de outras funcionalidades. Cada tecnologia de desenvolvimento apresenta um servidor Web diferenciado. Para a ASP, por exemplo, os servidores de aplicações mais conhecidos são o PWS (Personal WEB Server) e o IIS (Internet Information Server), no que diz respeito a tecnologia JSP, temos o popular Tomcat. 1.6. Aplicações WEB Estáticas 1.6.1. HTML Antigamente, a Internet era usada somente como um meio de transmitir dados, textos e informações, a interface gráfica que podemos visualizar hoje, nos diversos navegadores Web, estava muito longe de existir. Com o passar dos anos a Web passou a ser encarada como um meio de empresas divulgarem e venderem seus produtos, dando início a era comercial da www. Porém, à medida que passamos a divulgar nossa imagem pelo mundo, temos que tomar cuidado com o modo em que ela é exposta, com a interface gráfica de nossas aplicações. Tim Berner-Lee, um pesquisador do laboratório Europeu de Física das Partículas CERN e Marc Andreessen, um estudante de graduação que mais tarde iria fundar a Netscape, foram os responsáveis pela interface gráfica que temos hoje na Web. Eles criaram uma linguagem composta de marcações no formato hipertexto, e um programa que conseguia entender essas tags e exibir para o usuário sua formatação original. A linguagem era a Hypertext Markup Language (HTML) e o programa era o navegador Mosaic. 19 20 O HTML é uma linguagem de marcação hipertexto, que é base para qualquer aplicação Web que se deseje desenvolver. Ela é constituída por um conjunto de marcadores que determinam, por exemplo, o tipo de fonte a ser usada, a cor de fundo da página, as imagens que são exibidas, além de outras funcionalidades. Um aspecto importante dessa linguagem, é que o modo em que a página é exibida depende do navegador Web que o usuário está utilizando. 1.6.2. Como são formados os marcadores HTML ? As marcações HTML, são delimitadas por dois símbolos básicos : menor (<) e maior (>), de modo que o texto descrito dentro desses delimitadores definem o nome das tags e suas funcionalidades. Elas sempre aparecem em pares, e sempre a segunda tag é precedida do sinal de (/), indicando o término da mesma. Fazendo analogia a um programa Pascal, tem o mesmo papel do begin e end, que é de delimitar uma área específica de código. Por exemplo a tags <TITLE> </TITLE> que determinam o título da página no cliente, têm a função de “marcar” uma região (daí o significado do M de HTML), de modo que, todo texto escrito dentro dela será exibido no título do navegador Web do usuário (Figuras 2 e 3). <HTML> <HEAD> <TITLE>O TÍTULO DA PÁGINA DEVE ESTAR AQUI ...</TITLE> </HEAD> <BODY> </BODY> </HTML> Figura 2 – Código fonte de marcadores.html 20 21 Figura 3 – página marcadores.html exibida no Internet Explorer 6.0 Mas como toda regra tem exceção, o HTML possui marcações em que não é necessário ter um par de tags delimitando uma funcionalidade específica. É o caso da tag <P>, que para indicar o final de um parágrafo, não necessita da correspondente </P>, assim como a <BR>, que determina a quebra de linha de uma página. Um ponto importante e que deve ser levado em consideração é que a forma que as tags são exibidas dependem dos clientes Web que são utilizados pelos usuários, de forma que nem todas suas marcações e recursos são interpretadas por todos eles. Quando um cliente não entende uma marcação, ele simplesmente a ignora, por isso a necessidade de se testar uma página Web em vários navegadores. A figura 4 mostra o código fonte da página navegadores.html e as figuras 5 e 6, mostram esse código HTML exibido em dois diferentes clientes Web. 21 22 <html> <!-- Cabeçalho da Página --> <head> <title>Testando Páginas</title> </head> <!-- Início do Corpo da Página --> <body> <br> <!-- Criando Tabela--> <table align="center" width="100" height="50" border="8"> <!-- Definindo Linha--> <tr> <!-- Definindo Coluna--> <td width="100%" colspan="100%"> <b><font face="verdana" size="2"> Testando Tags nos navegadores <br><br> Monografia de Conclusão de Curso <br></font></b> </td> </tr> <tr> <td width="100%" colspan="100%"> <center> <img src="imagens/unit.jpg" align="center" border="0"> </center> </td> </tr> </table> </html> Figura 4 – Código-Fonte da página navegadores.html Figura 5 – Página navegadores.html visualizada no Netscape 6.22 22 23 Figura 6 – Página navegadores.html visualizada no Internet Explorer 6.0 Elizabeth (2000), aponta como uma das principais causas dessa divergência de visualização de código HTML entre os navegadores, a guerra e a concorrência de seus fabricantes pela conquista de usuários na Web. Em 1994, por exemplo, a Netscape criou um conjunto de extensões para o HTML que só o Netscape poderia entender, assim os usuários que utilizassem esse navegador poderiam usufruir mais recursos e funcionalidades que aqueles que optassem por outros navegadores. A Microsoft, que não poderia perder mercado para a concorrente, logo desenvolveu extensões fora de padrão para HTML que somente o Internet Explorer poderia reconhecer. Com isso, quem saiu perdendo foram os desenvolvedores e projetistas que precisam se preocupar em adaptar suas aplicações para qualquer browser e em qualquer plataforma. 23 24 1.7. Aplicações WEB Dinâmicas 1.7.1. ASP “As active server pages são a solução da Microsoft para criar páginas da Web dinâmicas” (Mitchell, Scott; Atkinsin, James, 2000:3). De acordo com essa nova solução de desenvolvimento, a tarefa de desenvolver para a Web passou a ter como foco principal a programação e não mais a interface, que embora ainda seja importante, teve seu ápice nos primeiros dias da World Wide Web. Imagine que é necessário desenvolver uma aplicação Web de vendas on-line de produtos, a criação das páginas que armazenarão e coletarão as informações dos clientes é mais importante do que decidir a cor da fonte ou do fundo de tela a utilizar. Outro aspecto fundamental que devemos levar em consideração é com relação a implementação de páginas ASP. “O que o ASP fez pelos Web sites é comparável a mudança nos aviões quando as hélices foram substituídas por turbinas a jato. O ganho de performance foi fenomenal, a eficiência da ‘máquina’ foi aumentada, mas tudo isso trouxe um pequeno problema: pilotar um jato não é tão fácil como manejar um monomotor” (WEBKIT 2002, Cap.2 p.5). Partindo dessa concepção, temos que ter em mente que desenvolver em ASP não é tão fácil quanto desenvolver em HTML. É necessário ter embasamento e entender os princípios e conceitos dessa nova tecnologia. O que são páginas ASP ? As páginas desenvolvidas em ASP, como o próprio nome já diz, são páginas “ativas” constituídas de código HTML normal, estático, mais pequenos programas que são executados no servidor, chamados de scripts. Os scripts podem ser implementados segundo uma série de linguagens de script, ente elas, as mais utilizadas são o vbscript e o javascript. Os próprios nomes já indicam de que liguagem de programação as mesmas foram originadas, o Vbscript é uma derivação do Visual Basic (Microsoft) enquanto que o Javascript provém da linguagem Java (Sun Microsystems). 24 25 É importante salientar, que a página só é enviada para o cliente depois que o servidor executa todos os códigos dinâmicos inclusos na página. A Figura 7, demonstra um exemplo de uma página chamada teste.asp. <HTML> <HEAD> <TITLE>TESTE DE UMA PÁGINA ASP </TITLE> </HEAD> <BODY> <B>Testando página ASP no dia: <%=Date%></B> </BODY> </HTML> Figura 7 – Código fonte de teste.asp A Figura 7, contém um marcador em HTML (<B> e </B>) que indica que todo texto escrito dentro desses marcadores deve ficar em negrito, e ainda um texto estático (“Testando página ASP no dia:”). O texto em <% %> é uma instrução dinâmica que deve ser executada pelo servidor. No exemplo acima, a palavra Date é uma função em VbScript que retorna a data atual do servidor. Depois do processamento dessa instrução o servidor completa o código HTML estático com o resultado da instrução e devolve o resultado para o cliente, como pode ser visto na Figura 8. Figura 8 – Resultado do processamento da página teste.asp 25 26 Processamento das páginas ASP No que diz respeito ao processamento das páginas ASP, o modelo clienteservidor ilustrado na Figura 1 sofre algumas alterações. Agora, o servidor não apenas devolve as páginas de forma direta ao cliente, como ocorre nas páginas HTML estáticas. É necessário um processamento de determinados scripts, para que depois seja enviada a página solicitada pelo usuário. No exemplo da Figura 8, o processamento da página teste.asp seguiu os seguintes passos: 1. O cliente informa no navegador Web, o endereço completo da página asp que deseja visualizar, no caso, http://kelyx/Testes/teste.asp ; 2. O servidor Web interpreta o arquivo asp e processa todo o seu código; 3. Depois que a página foi processada pelo servidor Web, a saída é enviada no formato de HTML para o cliente; 4. O navegador Web do cliente recebe o HTML enviado pelo servidor e exibe para o usuário. Observe que para o cliente é difícil distinguir uma página HTML estática de uma página ASP, porque o resultado da página solicitada por ele é sempre o HTML estático. A Figura 9 ilustra o modelo cliente-servidor diante dessa transação. Figura 9 – Interação Cliente-Servidor para arquivos ASP 26 27 Scripts no lado Cliente X Scripts no lado Servidor Uma das principais dúvidas que surgem quando estamos aprendendo a desenvolver em ASP é distinguir quais scripts são executados no lado cliente e quais são executados no lado servidor. Os scripts que são executados no lado cliente são delimitados pelos marcadores <script language=?> </script> , onde “?” é o tipo de linguagem a ser implementado o código contido dentro do script. Esses scripts, ao contrário do que ocorre com o ASP, são enviados ao navegador Web, que deve se encarregar de sua excecução. É importante salientar, que as linguagens dos scripts devem ser compatíveis que o navegador Web do cliente, por exemplo, o Internet Explorer é compatível com o VBscript e o Jscript (uma variação do Javascript), mas o Netscape só é compatível com javascript. O mais adequado é a utilização do javascript que será entendido por qualquer navegador. A Figura 10, demonstra o código fonte de uma página com scripts que serão executados no lado cliente. A instrução alert é uma função em javascript que exibe uma mensagem passada como parâmetro para o usuário. A Figura 11 mostra o resultado da execução do script e a Figura 12 mostra o resultado da página, após a execução do script da Figura 10. <HTML> <HEAD> <TITLE>PÁGINA COM SCRIPTS NO LADO CLIENTE</TITLE> <SCRIPT LANGUAGE=”JAVASCRIPT”> alert(“Este script está sendo executado no cliente!”); </SCRIPT> </HEAD> <BODY> Esta página contém scripts executados no lado cliente </BODY> </HTML> Figura 10 – Código-fonte da página teste_script_cliente.html 27 28 Figura 11 – Resultado da execução do script Figura 12 – Resultado da página após a execução do script da Figura 9 O outro tipo script, que normalmente é o mais utilizado, é “executado” no servidor e o resultado é enviado “pronto” ao cliente. Assim, qualquer navegador pode visualizar uma página ASP, porque ela não é enviada para o cliente com códigos dinâmicos, mas apenas o resultado HTML após o processamento. A Figura 13, ilustra um exemplo de uma página ASP antes de ser processada pelo servidor, a Figura 14 é o código HTML devolvido pelo servidor e a Figura 15 é o resultado exibido ao usuário. . 28 29 <html> <head> <title>Teste Processamento</title> </head> <body> <font face="Tahoma" size="3"><center>Informações da Aplicação </center></font><br> <table border="1" width="400" height="20" align="center"> <tr> <td width="80%" colspan="80%"><font face="Tahoma" size="2"> Horário de Inicío da Aplicação </font></td> <td width="20%" colspan="20%"><font face="Tahoma" size="2"> <!-- Obtendo o horário que a aplicação foi iniciada --> <%=Application("Hora_Aplicacao_Iniciada")%> </font></td> </tr> <tr> <td width="80%" colspan="80%"><font face="Tahoma" size="2"> Número de Usuários Ativos </font></td> <td width="20%" colspan="20%"><font face="Tahoma" size="2"> <!-- Obtendo o número de usuários ativos --> <%=Application("UsuariosAtivos")%> </font></td> </tr> <tr> <td width="80%" colspan="80%"><font face="Tahoma" size="2"> Horário de Início da Sessão </font></td> <td width="20%" colspan="20%"><font face="Tahoma" size="2"> <!-- Obtendo a hora em que a sessão foi iniciada --> <%=Session("Hora_Sessao_Iniciada")%> </font></td> </tr> </table> <!-- Encerrando a Sessão do Usuário --> <%Session.Abandon%> </body> </html> Figura 13 – Página processamento.asp antes da solicitação do cliente 29 30 <html> <head> <title>Teste Processamento</title> </head> <body> <font face="Tahoma" size="3"><center>Informações da Aplicação </center></font><br> <table border="1" width="400" height="20" align="center"> <tr> <td width="80%" colspan="80%"><font face="Tahoma" size="2"> Horário de Inicío da Aplicação </font></td> <td width="20%" colspan="20%"><font face="Tahoma" size="2"> 23:14:04 </font> </td> </tr> <tr> <td width="80%" colspan="80%"><font face="Tahoma" size="2"> Número de Usuários Ativos </font></td> <td width="20%" colspan="20%"><font face="Tahoma" size="2"> 1 </font></td> </tr> <td width="80%" colspan="80%"><font face="Tahoma" size="2"> Horário de Início da Sessão </font></td> <td width="20%" colspan="20%"><font face="Tahoma" size="2"> 23:17:23 </font></td> </tr> </table> </body> </html> Figura 14 – Página processamento.asp após a solicitação do cliente Figura 15 – Exibição da página processamento.asp após a solicitação do cliente 30 31 Plataforma para ASP Como o ASP é uma tecnologia Microsoft, originalmente as páginas ASP somente poderiam ser utilizadas em servidores Web da Microsoft para plataforma Windows, como o PWS e o IIS. Porém já existem programas de terceiros com a mesma funcionalidade ASP para outros servidores Web. Rubens (2000), indica como as mais conhecidas o Chili!Soft (www.chilisoft.com ) e o Instant ASP (www.halcyon.com ). Arquitetura do ASP De acordo com Rubens (2000), a tecnologia ASP é encapsulada numa DLL chamada ASP.DLL, que é instalada por padrão no diretório Winnt\System32\Inetsrv . Quando uma página Web é solicitada ao servidor o mesmo verifica a extensão do arquivo da página solicitada. Se a extensão for .asp o servidor encaminha o arquivo para ASP.DLL para ser interpretado. O resultado é devolvido ao servidor Web, que por sua vez envia para o browser que solicitou a página, como pode ser visto na Figura 16. BROWSER SERVIDOR WEB Solicitação HTTP (arquivo .asp) Arquivo .asp Resposta HTTP (página HTML) ASP.DLL Script Engine (Vbscript, Jscript,etc) Figura 16 – Arquitetura do ASP segundo Rubens Prates 31 32 A Aplicação ASP Uma aplicação ASP é o conjunto de todas as páginas contidas num determinado diretório virtual com seus subdiretórios, de um servidor Web, que suporta essa tecnologia, usualmente caracterizadas pela extensão .asp e .html. Uma página asp é parte de uma aplicação ASP. Todos os usuários da rede podem compartilhar uma mesma aplicação ASP através do objeto Application, que é criado pelo servidor Web no momento que a primeira página é solicitada. Este objeto é usado para armazenar variáveis que são comuns para qualquer página dentro da aplicação, que podem ser lidas e modificadas por qualquer usuário. A Figura 17, ilustra uma aplicação ASP publicada no Internet Information Services. Figura 17 – Demonstração de uma aplicação ASP publicada no IIS 32 33 1.7.2. JSP De acordo com Ulisses (2002), a tecnologia JSP é muito semelhante a tecnologia ASP, porém com uma grande diferença: a portabilidade de plataforma. Podemos executar aplicações implementadas através do JSP em outros sistemas operacionais além dos da Microsoft. Assim como o ASP, o JSP é um meio de promover a interação com as páginas HTML estáticas. Ele nos permite desenvolver aplicações com acesso a banco de dados, obter informações enviadas através de formulários, obter informações sobre os visitantes das páginas, manipular arquivos textos, além de outras funcionalidades. O que são páginas JSP As páginas JSP são arquivos representados pela extensão .jsp, constituídos ou não de código HTML, mais um conjunto de comandos descritos através da linguagem JAVA, que irão ser executados no servidor . Segundo a definição da especificação JSP 1.2 (2002), uma página JSP é “um documento baseado em texto que descreve como processar uma solicitação (Request) para criar uma resposta (Response)”. Diante desse conceito, Francisco (2002) enfatiza que a resposta do servidor à solicitação do cliente se dá através do HTML, assim como outras tecnologias de desenvolvimento Web. O poder da linguagem Java, através de sua imensa variedade de objetos e funções, é o principal fator responsável pela sua grande ascensão no mercado de desenvolvimento de aplicações Web. A Figura 18 ilustra o código fonte de uma página jsp. 33 34 <%@ page import="java.util.*"%> <%! Calendar tData; int dia; int mes; int ano; int hora; int minuto; int segundo; %> <% tData = Calendar.getInstance(); dia = tData.get(Calendar.DATE); mes = tData.get(Calendar.MONTH); ano = tData.get(Calendar.YEAR); hora = tData.get(Calendar.HOUR_OF_DAY); minuto = tData.get(Calendar.MINUTE); segundo = tData.get(Calendar.SECOND); %> <html> <head> <title>TESTE DE UMA PÁGINA JSP</title> </head> <body> <B>Testando página JSP no dia: <%= dia + "/" + mes + "/" + ano + " às " + hora + ":" + minuto + ":" + segundo%></B> </body> </html> Figura 18 – Código-fonte de teste.jsp Processamento das páginas JSP Quando uma página desenvolvida através da tecnologia JSP é solicitada pelo cliente através do navegador Web, a mesma é executada pelo servidor Web, e a partir dessa execução é gerado o código HTML que será visualizado pelo cliente. Nessa solicitação, o cliente envia um objeto request para a JSP engine, que é um software que se responsabiliza pelo tratamento dos dados, que envia a solicitação de qualquer componente especificado no arquivo. O componente se responsibilizará por controlar a requisição possibilitando a recuperação em arquivos de banco de dados, passando o objeto response de volta para a JSP engine que juntamente com o servidor Web enviam a página jsp revisada, de volta para o cliente, que visualizará os resultados. A Figura 19, 34 35 ilustra como ocorre o processamento de páginas JSP e a Figura 20, o resultado do processamento da página teste.jsp. REQUEST JSP ENGINE & WEB SERVER RESP JSP FILE REQUEST RESPONS E COMPONENT REQUEST Figura 19 – Ciclo de processamento de um arquivo JSP Figura 20 – Resultado do processamento de teste.jsp 35 36 Características Páginas JSP possuem uma série de características, entre elas podemos citar: • Facilmente codificada, melhorando o desenvolvimento e manutenção de uma aplicação; • Independência de programação lógica e programação visual, ou seja, podemos ter em um mesmo projeto de uma aplicação JSP um programador responsavél pelas regras de negócios da aplicação e um designer trabalhando de maneira independente; • Reutilização dos conteúdos dinâmicos produzidos; • Utilização da linguagem JAVA como linguagem de scripts; 1.7.3. Servlets De acordo com Francisco (2002, p.117), os servlets são pequenos programas escritos através da linguagem JAVA, que originam as páginas que serão visualizadas pelo navegador. A principal característica dos servlets é a velocidade após a primeira execução. Isso ocorre graças a um processo chamado contêiner servlet, que não permite que o servlet passe por um novo processo de execução a cada nova solicitação. Esse contêiner cria um único processo para ele e então todas as outras solicitações seguintes são encaminhadas para esse novo processo que irá permanecer ativo até que o servlet ou o contêiner seja desativado. Essa otimização no processo de execução de um servlet é de suma importância para a performance das aplicações Web. Podemos tomar como exemplo o caso de uma conexão com o banco de dados, em outras tecnologias como ASP e PHP, esse processo é feito a cada nova solicitação do cliente. Através dos servlets a conexão já estará disponibilizada desde que o servlet já tenha sido iniciado. 36 37 1.8. Aplicações Multicamadas ou N-Camadas Aplicações Multicamada são aplicações implementadas de forma distribuída, onde as partes (camadas) se comunicam através de um determinado meio e executam determinadas funções de modo a obter resultados eficientes para a aplicação. A Internet é sem dúvida uns dos principais fatores que influenciaram na evolução no desenvolvimento de aplicações multicamadas. A World Wide Web não é mais apenas um canal onde o usuário obtém conhecimento e informação, as pessoas estão buscando algo mais. Serviços, lazer e comunicação são setores que crescem na preferência dos usuários da rede mundial de computadores. Muitas empresas vêm tentando se adequar à nova tendência do mercado. Serviços oferecidos pela Internet trouxeram para as empresas grandes avanços nas oportunidades de empreendimentos. Em vista deste enriquecimento nos negócios, empresas buscam soluções que possam leva-las, com sucesso, a disponibilizar o seu produto ou serviço na Web. O primeiro passo é desenvolver um modelo de rede e projetar sistemas que serão utilizados para distribuir suas informações e serviços na Internet, sistemas estes que demandam novos conceitos: • Apoio para aplicações heterogêneas: o sistema tem que se adequar aos mais diversos tipos de aplicações clientes, isto devido à quantidade de usuários que irão utilizar os serviços das empresas; • Fazendo fila automático: em aplicações distribuídas o número de processos que competem pelos recursos do servidor é proporcional ao número de usuários. Deste modo, o processador é sobrecarregado com um número de tarefas que competem pela memória consumindo todos os recursos do servidor, deixando solicitações de aplicações clientes sem respostas. O servidor deve ser capaz de organizar essas solicitações de modo a responde-las adequadamente; 37 38 • Aplicações dinâmicas: as aplicações precisam ser flexíveis e dinâmicas. O servidor deve ser capaz de buscar recursos de acordo com as solicitações feitas pela aplicação cliente; • Apoio para plataforma de servidores heterogêneos: com o resultado de fusões, aquisições e reorganizações das organizações é inevitável a utilização de diversas plataformas de servidor que armazenam as informações. Por exemplo, uma implementação da lógica empresarial em JAVA pode ser perfeitamente portada para os diversos sistemas utilizados em servidores; • Carga equilibrada: o processamento das solicitações cliente pode ser distribuído entre diversos servidores para obter um tempo de resposta menor; • Suporte a falha: a aplicação deve tolerar falhas no processamento, que certamente deverão acontecer, para que não comprometa a resposta à aplicação cliente; • Acesso à fontes de dados heterogêneas: permitir o acesso a diversas fontes de dados de acordo com as necessidades do usuário. Devido a esses fatores e a demanda de aplicações para o mercado corporativo, que são aplicações projetadas para sua utilização em rede, começaram a implementar o conceito de aplicações multicamada (n-tier). Mesmo que as aplicações multicamada envolvam a implementação em até duas camadas, conceito já utilizado em projetos cliente/servidor simples, as aplicações atuais estão adicionando mais uma camada de desenvolvimento. A arquitetura cliente/servidor multicamada consiste em: • Uma aplicação que contém uma lógica de apresentação e coleta de dados que se localiza na aplicação cliente utilizada pelo usuário geralmente chamada de interface do usuário; • Outra aplicação que contém a lógica de negócio empresarial, é essa aplicação que fica responsável pela comunicação com o componente de fonte de dados; • É uma aplicação que contém a lógica de sistema de armazenamento de dados seja ele um sistema de banco de dados, um sistema de arquivos hierárquicos ou outra fonte de dados que permita a interação com aplicações externas. 38 39 A Figura 21 ilustra um modelo clássico de uma aplicação multicamada: Servidor de Aplicação Cliente Servidor de Banco de Dados Figura 21 – Modelo clássico de uma aplicação multicamada As camadas de aplicações podem, ou não, ser implementadas em componentes físicos diferentes: • As aplicações clientes geralmente estão localizadas em máquinas diferentes das outras camadas, pois fazem solicitações ao servidor e não precisam e nem podem ter acesso direto aos dados. Essas solicitações precisam passar por uma validação que tem como objetivo manter a base de dados integra; • A camada intermediária pode muito bem ser aplicada em máquinas diferentes. Esta aplicação em máquinas diferentes pode aumentar a performance já que o processamento pode ser dividido entre vários componentes físicos; • A camada final ou camada servidor pode possuir diferentes sistemas de armazenamento de dados, cada um rodando em uma máquina distinta. 39 40 Uma aplicação multicamada é caracterizada como tal, não pelo número de máquinas envolvidas, mas sim pelo número de aplicações que trabalham interligadas cada qual com um objetivo especifico. Uma aplicação da camada intermediária pode ser carregada em N máquinas diferentes, como também a camada servidor pode ser implementada em mais de um servidor. Mesmo assim a aplicação não deixará de ser multicamada. 40 41 2. UML 2.1. Conceito Quando se faz modelagem, simplifica-se a realidade para um melhor entendimento do sistema em desenvolvimento. Em UML desenvolvem-se seus modelos a partir de blocos distintos tais como: classes, interfaces, colaborações, componentes, dependências, generalizações, associações, etc. Os diagramas são meios utilizados para visualização de blocos de construção [Booch, 2000]. Os diagramas utilizados pela UML são compostos de nove tipos: diagramas de casos de uso, classes, objetos, estados, seqüência, colaboração, atividade, componentes e execução. A seguir veremos cada um destes tipos de diagramas e serão apresentados vários exemplos. 2.2. Diagramas de Casos de Uso Um diagrama de caso de uso ilustra um conjunto de casos de uso para um sistema, os atores e a relação entre os atores e os casos de uso [Larman, 2000]. Os casos de uso são usados para modelar como um sistema ou empresa funciona, ou como os usuários desejam que ele funcione. Os casos de uso geralmente são o ponto de partida da análise orientada a objetos utilizando a UML. O modelo de caso de uso consiste de atores e casos de uso. Os atores representam usuários e outros sistemas que interagem com sistema modelado. Eles são representados graficamente por um homem palito. Os casos de uso mostram o comportamento do sistema, cenários que o sistema percorre em resposta ao estímulo de um ator. Eles são desenhados como elipses conforme mostra a Figura 22. 41 42 No modelo de caso de uso o relacionamento entre um ator e um caso de uso representa a participação deste ator no caso de uso. Além deste relacionamento, existem dois outros tipos de relacionamentos entre casos de uso: • O relacionamento estender: é representado graficamente por uma seta com o estereótipo <<extends>>, mostrando que o caso de uso destino pode incluir o comportamento especificado pelo caso de uso origem; • O relacionamento usar: é representado por uma seta com o estereótipo <<uses>>, mostrando que o caso de uso origem inclui o comportamento especificado pelo caso de uso destino. Co nta d or D ig ita d o r (from A c tors ) (from A c tors ) < < us es > > < < ex tends > > S is te m a d e C o n ta b ilid a d e Fo lh a d e P a g a m e n to S is te m a d e C u s to s S is t em a s E xte rn o s A nalis ta (fr om A c tor s) Figura 22 – Diagrama de Casos de Uso 42 (from A c tors ) 43 2.3. Diagramas de Classes É uma estrutura lógica estática em uma superfície de duas dimensões mostrando uma coleção de elementos declarativos de modelo, como classes, tipos e seus respectivos conteúdos e relações [Furlan, 1998]. Um exemplo pode ser visto na Figura 23. Uma classe em UML é representada por uma caixa retangular com três compartimentos: um com o nome da classe, o outro com a lista de atributos da classe e o último com a lista de operações da classe. As associações representam relacionamentos estruturados entre objetos de diferentes classes, e são representados graficamente através de uma linha conectando as classes. Uma associação pode ter um nome. As extremidades da linha, que representam uma associação, podem receber o nome de papéis mostrando como a classe é vista pelas outras classes na associação. A multiplicidade de uma associação especifica quantas instâncias de uma classe relacionam-se a uma única instância de uma classe associada. Uma multiplicidade é representada por um intervalo de valores possíveis, no seguinte formato: limite_inferior..limite_superior, onde esses limites são valores inteiros ( o caracter * pode ser usado como limite_superior para indicar falta de limite). A agregação é uma forma especial de associação que representa o relacionamento “todo-parte” entre objetos. Ela é representada incluindo-se um losango na extremidade do objeto “todo” do relacionamento “todo-parte”. A generalização é uma ferramenta poderosa para a abstração. A generalização é um relacionamento existente entre uma classe mais geral (superclasse) e uma classe mais específica (subclasse), onde a classe mais específica é consistente com a mais geral e adiciona informações a ela. Uma generalização é representada por uma linha com um triângulo, que liga a classe mais específica a mais genérica. Veja a Figura 23, que 43 44 representa o cliente efetuando um pedido de produtos, onde a seta representa que o pedido é a classe mãe e o cliente é a classe filho. C lie n t e C o d ig o Nom e E n d e re c o P e d id o N u m e ro D ata C lie n t e In s e r ir () A t u a liz a r () E x c lu i r( ) 1..* In s e rir() A t u a liz a r() E m it ir() P ro d u t o N u m e ro U n id a d e E s toque nam e 1..* In s e rir() A t u a liz a r() E x c lu ir() Figura 23 – Diagramas de Classes 2.4. Diagramas de Objetos Os diagramas de objetos fazem a modelagem de instâncias de itens contidos em diagramas de classes. Um diagrama de objetos mostra um conjunto de objetos e seus relacionamentos em determinado ponto no tempo. Estes diagramas não são importantes apenas para a visualização, especificação e documentação de modelos estruturais, mas também para a construção de aspectos estáticos de sistemas por meio de engenharia de produção e engenharia reversa [Booch, 2000]. A UML permite a utilização de diagramas de classes para uma visualização dos aspectos estáticos dos blocos de construção do sistema. Os diagramas de interação são usados para visualizar os aspectos dinâmicos de seu sistema, formados por instâncias desses blocos de construção e mensagens enviadas entre eles. Os diagramas de objetos cobrem um conjunto de instâncias dos itens encontrados nos diagramas de classes. O diagrama de objetos expressa a parte estática de uma interação, composta pelos objetos 44 45 que colaboram entre si, mas sem qualquer uma das mensagens passadas entre eles. Nos dois casos, o diagrama de objetos congela um momento no tempo. Os diagramas de objetos são usados para fazer a modelagem da visão de projeto estática ou da visão de processo estática de um sistema, da mesma forma como faz com os diagramas de classes, mas a partir da perspectiva de instâncias reais ou prototípicas. Isso envolverá a modelagem de um retrato do sistema em determinado momento e a representação de um conjunto de objetos, seus estados e relacionamentos. Essa visão atende principalmente aos requisitos funcionais do sistema – ou seja, os serviços que o sistema deverá proporcionar aos seus usuários finais. Os diagramas de objetos permitem que se faça a modelagem de estruturas de dados estáticos. Na Figura 24 podemos ver um diagrama de objetos, representando três objetos onde o objeto que se encontra no topo é o principal e os outros dois possuem dependência dele, nesse caso existe o objeto universidade e dependente dela existe os objetos departamento, ou seja, essa figura representa que não pode existir departamento senão existir universidade. u : U n ivers id a d e d 1 : D e p a rt a m e n t o n o m e : 'D C C ' d 2 : D e p a rt a m e n t o n o m e : 'D E ' Figura 24 – Diagrama de Objetos 45 46 2.5. Diagramas de Estados Os diagramas de estados são usados para modelar o comportamento dinâmico de um sistema. Mostram o ciclo de vida de um objeto em níveis de detalhe arbitrariamente simples ou complexos [Larman, 2000]. Visualizam a seqüência de estados que um objeto ou uma interação percorre durante sua vida em resposta a estímulos recebidos, junto com suas próprias ações e respostas conforme mostra a Figura 25. Por exemplo, o comportamento de um objeto é modelado em função de qual estado ele está inicialmente, e para qual estado ele vai passar quando um determinado evento ocorrer. Os estados representam as condições dos objetos em um determinado momento. Os eventos representam incidentes que causam a mudança de um estado para outro. As linhas de transição descrevem o movimento de um estado para o outro. Cada linha de transição é rotulada com o evento que causou a transição. Na Figura 25 mostra uma operação de pagamento onde existe dois estados: [pagamento ok], o qual é autorizado para receber a mercadoria e [pagamento não ok], onde é rejeitado a entrega da mercadoria. Autorizando para verificar pagamento [ pagamento não Ok] [pa game nto ok] Autorizado Rejeitado Entregue Figura 25 – Diagramas de Estados 46 47 2.6. Diagramas de Seqüência Os diagramas de seqüências são usados para modelar a interação entre objetos em um sistema. Tipicamente, um diagrama de seqüência captura o comportamento de um único caso de uso. O diagrama apresenta os objetos e as mensagens que são passadas entre estes objetos dentro do caso de uso, conforme mostra a Figura 26, existem três objetos: professor, diário e aluno, onde ambos os objetos estão trocando mensagens entre si. Os objetos são representados por linhas tracejadas verticais, e a passagem de mensagens entre dois objetos são representados por vetores horizontais. As mensagens são desenhadas cronologicamente do topo à base do diagrama. : P r o fe s s o r : D iá r io : A lu n o In fo r m a N o t a s ( ) In fo r m a F a l t a s ( ) C o n fi r m a A p r o v a c a o ( ) Figura 26 – Diagramas de Seqüência 2.7. Diagramas de Colaboração Os diagramas de colaboração são uma outra alternativa para a modelagem de interações entre objetos de um sistema. Diferentemente do diagrama de seqüência que focaliza na seqüência cronológica do cenário que está sendo modelado, o diagrama de 47 48 colaboração focaliza no relacionamento entre os objetos e na compreensão dos efeitos sobre um objeto durante um cenário. Os objetos são conectados através de associações e cada associação representa uma instância de associação entre as respectivas classes envolvidas. As associações mostram as mensagens enviadas entre os objetos e a seqüência destas mensagens é determinada usando-se números seqüenciais, como pode ser visto na Figura 27. O objeto professor está colaborando com o objeto diário através da troca de mensagens entre eles, que por sua vez esta colaborando com o objeto aluno através da mensagem de confirmação de aprovação. Uma colaboração é uma visão de um conjunto de elementos de modelagem relacionados para um propósito particular em apoio a interações [Furlan, 1998]. 1: InformaNotas() 3: ConfirmaAprovacao() :Diario :Professor :Aluno 2: InformarFaltas() Figura 27 – Diagramas de Colaboração 2.8. Diagramas de Atividade Um diagrama de atividade é essencialmente um gráfico de fluxo, mostrando o fluxo de controle de uma atividade para outra [Booch, 2000]. Os diagramas de atividades são um caso especial de diagramas de estado, onde todos os estados têm uma ação interna e nenhuma transição tem um evento de entrada. O propósito de um diagrama de atividades é focar nos fluxos dirigidos pelo processamento interno e descrever o comportamento de processamentos paralelos. Os diagramas de atividades são usados para detalhar classes, implementação de operações e casos de uso, enquanto os diagramas de estado são usados para especificar o comportamento global de um tipo. 48 49 Os diagramas de atividades representam o que acontece, mas não representam quem faz o que. Isso significa que o diagrama não diz qual classe é responsável por cada atividade. Os divisores contornam esse problema através da organização das responsabilidades das atividades dentro de uma classe. Através dos divisores podemos separar as atividades de acordo com as classes responsáveis por essas atividades. Os divisores são representados por linhas verticais tracejadas. Na Figura 28 podemos ver o exemplo de um diagrama de atividades. [DiscoCheio] ImprimirArquivo() MostrarCaixade Mensagem"DiscoCheio" [Espaçoemdisco] MostrarCaixade Mensagem"Imprimindo" RemoverCaixa demensagem Impressora.Imprimir(arq) Criararquivo Figura 28 – Diagramas de Atividades 49 50 2.9. Diagramas de Componentes Mostram dependências entre componentes de software [Furlan, 1998]. Os diagramas de componentes representam, de forma estática, aspectos físicos do sistema sendo modelado. São importantes tanto para visualizar, especificar e documentar sistemas baseados em componentes quanto, para construir sistemas através de engenharia reversa (reverse) e direta (forward). Eles mostram um conjunto de componentes e seus relacionamentos conforme mostra a Figura 29. São tipicamente usados para: • Modelar a organização do código fonte; • Modelar lançamento de executáveis (versões); • Modelar fisicamente um banco de dados; • Engenharia de produção e engenharia reversa. Cobranç a .ex e Curs o.dll Curs o.c ls Regis tro .ex e P es s oa.dll Cur s o o fer ec ido.dl l A luno. c ls Figura 29 – Diagramas de componentes 50 P rofes s or. c ls 51 2.10. Diagramas de Implantação Os diagramas de implantação são diagramas que mostram a configuração de nós de processamento em tempo de execução e os componentes que neles existem, como pode ser visto na Figura 30. Os diagramas de implantação não são importantes somente para visualizar, especificar e documentar sistemas cliente/servidor e distribuídos, mas também para o gerenciamento de sistemas por engenharia de produção e engenharia reversa. Os diagramas de implantação são empregados para modelagem da visão estática de implantação de um sistema. Essa visão direciona primariamente a distribuição, entrega e instalação das partes que formam o sistema físico. Na maior parte, isso envolve a modelagem da topologia do hardware em que o sistema é executado. Os diagramas de implantação são essencialmente diagramas de classes que focalizam os nós do sistema. ClienteA: Pentium 200 <<TCP/IP>> Servidor de Aplicação: ClienteB: Pentium 200 SQL<<TCP/IP>> <<TCP/IP>> Figura 30 – Diagramas de Componentes 51 Servidor de Banco de Dados 52 3. EXTENSÕES DE APLICAÇÕES WEB (WAE) 3.1. Ressalvas sobre aplicações Web As aplicações Web tornaram disponível a publicação de informações de diversas instituições em forma de texto para todas as pessoas conectadas à rede. Com os avanços no desenvolvimento de softwares utilizando as novas tecnologias, vários sistemas de informações foram desenvolvidos para a Web, avançando em diversos segmentos do mercado: comércio eletrônico, financeiro, saúde, educação, turismo, economia, etc. Essa nova realidade foi levada as empresas onde vários sistemas foram desenvolvidos utilizando essa nova arquitetura. As aplicações Web são sistemas que têm como foco principal disponibilizar informações para um grande número de usuários. Portanto elas se diferenciam das aplicações convencionais em vários pontos: ü Equipe de projeto (Web designers, desenvolvedores Web, DBA’s, etc); ü Utilização do browser como cliente; ü Arquitetura exigindo maior segurança e performance; ü Facilidade de acesso. Powell (2001) resume com precisão os pontos citados acima: “sistemas baseados em Web envolvem uma combinação entre a publicação de conteúdo e desenvolvimento de software, entre marketing e computação, entre comunicação interna e externa, e entre arte e tecnologia”. O desenvolvimento de aplicações Web deve seguir um método de modelagem. As mesmas práticas de processo tratadas na engenharia de software devem ser aplicadas aos processos de desenvolvimento de sistemas para a Web: ü Formular o problema; ü Identificar os requerimentos; 52 53 ü Analisar; ü Projetar; ü Implementar; ü Testar. Todas as fases devem seguir um padrão de modelagem, facilitando o entendimento da equipe envolvida no projeto. Aplicações Web podem inicialmente ser simples, mas no decorrer do seu processo de evolução ou de integração com os outros sistemas da empresa podem tornar-se bastante complexas. Atualmente, como essas questões não são observadas, criam-se problemas de manutenção e evolução para o gerente de sistemas e problemas de facilidade de uso, navegação e performance para o usuário. Pressman (2000) afirma que “antes de se construir um sistema, é melhor compreender o problema e em seguida projetar uma solução factível e implementá-la de forma sólida. Muitos desenvolvedores da Web não discutem isto porque vêem o desenvolvimento deste tipo de aplicação de forma diferente, e que as abordagens da engenharia de software convencionais simplesmente não se aplicam ao domínio Web”. Algumas metodologias para projetos de aplicações voltadas para Web têm sido apresentadas por vários pesquisadores, e muitas delas abordam as técnicas e notações utilizadas na UML, pois possuem um padrão de modelagem para sistemas orientados a objetos. 3.2. Modelagem de arquitetura (Conallen) A UML é uma linguagem padronizada que permite a modelagem de sistemas com altos níveis de exigência e complexidade. Em sua versão básica, a linguagem não possui todos os elementos necessários para representar componentes para aplicações Web. Contudo, ela prevê mecanismos de extensão que permitem adaptá-la a um método específico, organização, usuário ou aplicação. 53 54 A partir dos mecanismos de extensão definidos pela UML, Conallen apresentou uma proposta com o objetivo de apoiar o domínio de aplicações Web, utilizando-se de estereótipos1 de classes e associações. A extensão da UML proposta por Conallen tem como principais objetivos: • Modelar os elementos apropriados de uma aplicação Web: as páginas Web, a relação entre as páginas, os scripts executados no cliente e os executados no servidor; • Modelar o nível apropriado de abstração e detalhes da aplicação; • Dar uma visão da modelagem dos elementos específicos da aplicação Web e o restante dos elementos do sistema. Conallen utilizou a Web Application Extension for UML (WAE) para definir um conjunto de estereótipos com propriedades e restrições para a modelagem de aplicações Web. 3.3. O que é modelar? • As coisas importantes para se modelar em uma aplicação Web são as páginas Web, hyperlinks, forms, applets, etc. São estes componentes do sistema que os designers modelam e os implementadores codificam; • Não é necessário modelar elementos como GIFs, já que não são resultado direto de requisito de negócio; • O modelo UML de um sistema deve estar focado na descrição da lógica de negócio do sistema e não preocupado com o look and feel da interface do usuário. Estes detalhes são mais bem capturados em um modelo separado de interface do usuário. 1 Estereótipo (stereotype) é um dos mecanismos de extensão da UML. É uma extensão do vocabulário da linguagem com semântica ligada a um elemento do modelo existente. Estereótipos típicos são metaclasses. 54 55 3.4. Estereótipos de páginas e relacionamentos As páginas de uma aplicação Web podem ser consideradas objetos. Cada uma possui conteúdo (estado) e podem executar scripts (comportamento). Elas também possuem relacionamentos com outras páginas e objetos no sistema. Conallen apresenta os estereótipos de páginas e relacionamentos, que possibilitam modelar uma página Web com diferentes variáveis e scripts executados no servidor ou no cliente. 3.4.1. Página de servidor É um estereótipo de classe que tem seus métodos representados por sub-rotinas e funções (scripts) executadas no servidor. Variáveis declaradas nos scripts representam os atributos da classe. 3.4.2. Página de cliente Está associado a componentes que executam no cliente, incluindo Java Applets, controles ActiveX e elementos do browser. 3.4.3. Constrói É aplicado a associações e sempre está presente no modelo como uma associação unidirecional do servidor para o cliente, como pode ser visto na Figura 31. Uma página de servidor “build” uma página de cliente. Esta é uma relação unidirecional, uma vez que uma página HTML tem pouco acesso à interface dos objetos no servidor. 55 56 <<co n stro i >> pág. s erv pág. cliente Figura 31 - Estereótipos pág. serv, pág. cliente e relacionamento <<build>> 3.4.4. Links É definido para representar as associações entre páginas de cliente e outras páginas. Um bom projeto deve pelo menos modelar os links mais relevantes para a aplicação. A associação «links» pode ser uma associação bidirecional. Se existirem parâmetros, estes têm que ser modelados como atributos do link fora da associação. Na Figura 32 podemos ver o estereótipo link. <<links>> Manutenção de clientes Administração Figura 32 - estereótipo <<links>> 56 57 3.5. Estereótipos de componentes Componentes no sentido de tornar as interfaces disponíveis a objetos na aplicação Web como controles e DLLs, ActiveX, Java Applets ou outros módulos executáveis também são representados com estereótipos na extensão de elementos da Web. Componentes de páginas são aqueles que executam tanto no lado servidor quanto no lado cliente. São eles o estereótipo «componente de servidor» e «componente de cliente». 3.6. Estereótipos de formulário Formulários em uma página em HTML representam uma parte distinta da página de cliente. Formulários contêm atributos adicionais que podem não ser apropriadamente representados no contexto da página de cliente. Também é possível ter formulários múltiplos em uma única página, cada um com papel diferente. Um formulário em uma página tem como objetivo receber e processar dados que serão submetidos ao servidor. Isto pode ser modelado através de estereótipos de classe. 3.6.1. Formulário Tem como atributos os campos; os métodos em uma página de cliente têm acesso a todos os atributos de formulários contidos dentro da mesma. A relação entre o formulário e página é de composição. Dessa forma podemos dizer que páginas contêm formulários. 57 58 3.6.2. Submit É um estereótipo de associação e representa a relação entre um formulário e a página. A associação é bidirecional uma vez que o processamento da página tem que acessar os atributos do formulário. Na Figura 33 podemos ver os estereótipos formulário e submit. Glossário <<submit>> Pesquisa formulário Processa pesquis a Figura 33 - Estereótipos «formulário» e «submit» 3.7. Estereótipos de conjuntos de frames (framesets) Uma interface de usuário adicional disponível para uso em aplicações Web é o frame, que dá a flexibilidade de apresentar uma página como se fossem várias páginas concorrentes. Estas páginas simultâneas são exibidas com uma única interface de usuário. Frameset é um estereótipo que se referencia a outras páginas ou a outros frames do próprio frameset tendo uma relação de composição. A Figura 34 exemplifica o estereótipo frameset. 58 59 L ivro In d ice Figura 34 - Estereótipos «frameset» 3.8. Outros Estereótipos 3.8.1. Target Um target é um compartimento especificado em uma página Web. Tipicamente, um target, visto na Figura 35, é um frame em uma janela definida por um frameset; entretanto, um target podia ser uma nova solicitação de browser ou janela O estereótipo <<targeted link>> a associação especifica o target como o lugar onde surge uma nova página Web. Targed Figura 35 - Estereótipo <<target>> 59 60 3.9. Vantagens • Os estereótipos criados enriquecem os diagramas dando uma visão da implementação do sistema Web, separando claramente os processos de cliente, regras de negócio e armazenamento de dados; • Não é necessário a criação de nenhum diagrama adicional, facilitando o entendimento dos usuários da UML; • O trabalho de Conallen está muito além de uma simples proposta. Ele já integra a equipe de engenheiros da Rational e o conjunto de estereótipos apresentados em sua extensão já podem ser utilizados dentro da ferramenta internacionalmente conhecida como Rational Rose. 60 61 4. ESTUDO DE CASO – SISTEMA DE ATIVIDADES EXTRA-CURRICULARES 4.1. Introdução Neste capítulo montarei os principais diagramas do sistema baseado na documentação discutida nos capítulos anteriores. Serão abordados os seguintes itens: digramas de seqüência, diagramas de classe para páginas Web e os diagramas de componentes para páginas Web das funções do sistema. 4.2. Login do Sistema Nessa função o usuário irá se logar para ter acesso ao sistema, existem dois tipos de usuários: aluno e visitante, o aluno entra com sua matrícula e senha já cadastradas no sistema, já o visitante precisa fazer um cadastro para registrar seus dados pessoais no sistema, depois de feito o cadastro ele entra com o seu CPF e senha para ter acesso. A Figura 36 ilustra as páginas que serão processadas quando for executado o login no sistema. A Figura 37 ilustra os componentes que serão utilizados no processo de login e a Figura 38 mostra o diagrama de seqüência do login do sistema. 61 62 <<HTML Form>> Sistema de Atividades Extra-Curriculares Geração de Nova Senha <<link>> <<link>> Entrada de Login Obter Login <<link>> <<redi rect>> <<submit>> Extensao <<redirect>> Login <<redirect>> <<redi rect>> Dados do Cracha Login. java Exibir Eventos Figura 36 – Diagrama de classes para páginas de login 62 Novo Cadas tro 63 Extensaoi Sistema de Ativid ades Extra-Curriculares ObterLogin <<link>> <<redirect>> <<link>> <<link>> <<redirect>> Login DadosdoCracha NovoCadastro <<redirect>> GerarSenha <<redirect>> ExibirEventos Figura 37 – Diagrama de componentes para páginas de login 64 Login.java ObterLogin.jsp Browse Login.jsp Ext ensaoi.jsp link c od_at v=0 cod_at v<>0 cod_atv<>0 redirect mensagem Figura 38 – Diagrama de sequência para login ExibirEventos.jsp DadosdoCracha. jsp 65 4.3. Alterar Senha Nessa função o usuário tem a opção de alterar a senha de acesso ao sistema, para fazer a alteração é necessário entrar com a senha atual, uma nova de senha e confirmar a nova senha. A Figura 39 ilustra as páginas que serão processadas quando for executada a alteração da senha. A Figura 40 ilustra os componentes que serão utilizados no processo de alteração de senha e a Figura 41 mostra o diagrama de seqüência. 66 <<HTML Form>> Cadastro ObterDadosVSistAluno.java <<link>> Alterar Senha Alteração de Senha <<subm it>> Altera Senha <<redirect>> Extens ao AlterarSenha.java Figura 39 – Diagrama de classes para páginas de alteração de senha 67 Cadastro <<link>> AlterarSenha ObterNovaSenha <<redirect>> <<redirect>> Extensaoi Figura 40 – Diagrama de componentes para alteração de senha 68 ObterNovaSenha. jsp Alterar S enha link AlterarSenha.jsp ObterDadosVSi stAluno .java AlterarSenha.java Extensaoi.jsp POST redirect Figura 41 – Diagrama de sequência para alteração de senha 69 4.4. Dados Cadastrais Nessa função o usuário tem a opção de consultar seus dados cadastrais no sistema. A Figura 42 ilustra as páginas que serão processadas quando for executada a consulta dos dados cadastrais, a Figura 43 ilustra os componentes que serão utilizados no processo de consulta dos dados cadastrais e a Figura 44 mostra o diagrama de seqüência. <<HTML Form>> Cadastro <<link>> Dados Cadastrais <<link>> Extensao ObterDado sCadastrais.java Figura 42 – Diagrama de classes para páginas de consulta de dados cadastrais 70 Cadas tro Extensaoi <<link>> <<redirect>> DadosCadastrais Figura 43 – Diagrama de componentes para consulta de dados cadastrais Dados Cadastrais DadosCadastrai s.jsp ObterDadosCa dastrais.java Extensaoi.jsp link link Figura 44 – Diagrama de sequência para consulta de dados cadastrais 71 4.5. Alterar Endereço Nessa função o usuário tem a opção de alterar o seu endereço no sistema. A Figura 45 ilustra as páginas que serão processadas quando for executada a alteração do endereço, a Figura 46 ilustra os componentes que serão utilizados no processo de alteração do endereço e a Figura 47 mostra o diagrama de seqüência da alteração do endereço no sistema. Ex tensao <<HTML Form>> Cadastro <<link>> <<redirect>> Alteração de Endereço Alterar Endereço <<submit>> Endereco Alterado ObterDadosCadastrais.java AlterarEndereco.java Figura 45 – Diagrama de classes para páginas de alteração de endereço 72 Cadastro <<link>> AlterarEndereco <<redirect>> AlterarDadosEn dereco <<redirect>> <<redirect>> EnderecoAlterado Extensaoi Figura 46 – Diagrama de componentes para alteração de endereço 73 AlterarEndereco. jsp Alterar Endereco ObterDadosCa dastrais.java AlterarDadosEn dereco.jsp AlterarEndereco.java EnderecoAlterado . jsp link redirect POST CANCELAR Figura 47 – Diagrama de sequência para alteração de endereço Extensaoi.jsp 74 4.6. Alterar Dados do Crachá Nessa função o usuário tem a opção de alterar os dados do crachá de inscrição na atividade do sistema. A Figura 48 ilustra as páginas que serão processadas quando for executada a alteração dos dados do crachá. A Figura 49 ilustra os componentes que serão utilizados no processo de alteração dos dados do crachá e as Figuras 50 e 51 mostram os diagramas de seqüência. 75 <<H TML F orm >> Ca d astro <<link >> E x ib ir A t iv id ad es C rac ha <<inc lu de >> << in c lu de >> <<link >> E x ibir D ad os d o C rac ha A ti vi d a d e s Cra ch a O bte rA t iv id ade s I ns c rit o.ja v a O bt erD ado s C rac ha . jav a A lt erar D a dos D o C ra c ha A lt era rD ado s C rac ha. jav a <<inc lu de >> <<s u bm it >> E xte n sa o Alt erac a o Dad o s do C rac h a <<link >> <<red ire c t >> Ex ibir D a dos C rac ha A lt e rad o <<red ire c t >> D a dos C ra c ha A lt erado O bt erD ad os P reI n s c ric a o. jav a Figura 48 – Diagrama de classes para páginas de alteração de dados do crachá 76 Cadastro <<link>> ExibirAti vi dades Cracha <<include>> <<include>> ExibirDadosCra cha AtividadesCracha <<redirect >> Extensaoi <<include>> AlterarDadosCra cha <<link>> <<redirect>> ExibirDadosCracha Alterado DadosCrachaAlt erado <<redirect>> Figura 49 – Diagrama de componentes para alteração de dados do cracha 77 Alterar Dados Cracha AtividadesCrach a.jsp ExibirAtividades Cracha.jsp link ExibirDadosCrac h a.j sp ObterAtividades Inscrito.java ObterDadosCra cha.java include link include POST Figura 50 – Diagrama de sequência para alteração de dados do crachá – parte 1 AlterarDadosCra cha.jsp 78 AtividadesCrach a.jsp AlterarDadosCra ch a.jsp ExibirDadosC rac haAlterado.jsp Ext ensaoi.jsp AlterarDadosCr a cha.java DadosCrachaAlt erado.jsp link include redirect redirect Figura 51 – Diagrama de sequência para alteração de dados do crachá – parte 2 ObterDadosPre Inscricao.java 79 4.7. Atividades Disponíveis Nessa função o usuário tem acesso a todas as informações das atividades disponíveis para inscrição no evento, inclusive local e taxas dos eventos disponíveis. As Figuras 52 e 53 ilustram as páginas que serão processadas quando forem feitas solicitações as atividades disponíveis, as Figuras 54 e 55 ilustra os componentes que serão utilizados no processo de solicitação das atividades disponíveis e as Figuras 56, 57, 58, 59 e 60 mostram os diagramas de seqüência das atividades disponíveis. A quebra da função em duas figuras se deve ao fato da mesma ficar com uma quantidade muito grande de ligações entre os componentes, indicando que a função trará problemas tanto para o usuário – que recerá uma página muito carregada – quanto para o desenvolvedor – que terá problemas com manutenção. 80 <<HTML Form>> Atividades ObterAtividadesDisponiveis.java <<link>> Atividades Disponiveis <<link>> <<link>> Detalhes das Atividades Dados do Cracha <<include>> <<include>> <<include>> Eventos da Atividade Dados das Atividades ObterEventosdaAtividade.java Taxas das Atividades <<link>> Detalhes Evento ObterDadosAtividade.java ObterTaxasAtividade.java Figura 52 – Diagrama de classes para páginas de atividades disponíveis – parte 1 81 Taxas das Atividades Eventos das Atividades Dados do Cracha <<li nk>> <<include>> ObterLocai sEventosFora.java <<link>> Det alhes do Evento <<include>> Locais Evento Fora ObterPracelasEvento.java <<include>> <<include>> <<li nk>> <<include>> Dados Evento Parcelas Evento Inscrever Evento Locais dos Eventos ObterLocaisEvento.java ObterDadosEvento.java <<redirect>> Exibir Eventos InscreverEvento.java ObterDados AtividadesPresInsc.java <<link>> ObterEventosDisponiveis.java Obter Eventos Pgto Figura 53 – Diagrama de classes para páginas de atividades disponíveis – parte 2 82 Atividades <<link>> ObterAtividades Disponiveis <<link>> <<link>> DadosCracha DetalhesAtividade <<include>> <<include>> DadosAtividade <<include>> EventosdaAtivid ade TaxasAtividade <<link>> DetalhesEvento Figura 54 – Diagrama de componentes para páginas de atividades disponíveis – parte 1 83 TaxasAtividade DadosCracha EventosdaAtividade <<link>> <<include>> <<link>> DetalhesEvento ParcelasEvento <<include>> <<include>> <<include>> <<link>> <<include>> DadosEvento LocaisEventoFora InscreverEvento LocaisEvento <<redirect>> ExibirEventos ObterEventosPa gto <<link >> Figura 55 – Diagrama de componentes para páginas de atividades disponíveis – parte 2 84 At ividades Dis po niveis Ob te rAtivid ad e s D is p o n iveis .js p Ob te rAtivid ad e D i s po n ive is .java D e ta l he s Ati vi d a d e .js p D a d o s C ra ch a .js p D a d os Ativida d e .j sp link link inc lude li nk Figura 56 – Diagrama de seqüência para páginas de atividades disponíveis – parte 1 Obte rD a d os Ativi da d e .ja va 85 Detal hesAtivida d e.jsp Taxa sAti vi dade.j sp EventosdaAtivid ade.jsp ObterEventosda Atividade.java ObterTaxasAtivi dade.java include include link Figura 57 – Diagrama de seqüência para páginas de atividades disponíveis – parte 2 DetalhesEvento.j sp 86 Detalh esEvento.j sp TaxasAtividade.j sp EventosdaAtivid ade.jsp Dad osCracha.js p DadosEvento.jsp include link link include Figura 58 – Diagrama de seqüência para páginas de atividades disponíveis – parte 3 ObterDadosEve nto.java 87 Detalhes Evento.j sp Locais EventoFor a.js p ObterLocais Eve ntos Fora.java Parcelas Evento.j sp Obt erParcel as Eve nto.java Locais Evento.js p include include include Figura 59 – Diagrama de seqüência para páginas de atividades disponíveis – parte 4 Obter Locai sEve nto.java 88 Detal hes Even to.j sp Ins creverEvento.j sp Exib ir Eventos .js p Ins creverEvento .java ObterDados Ativid ades PreIns c.java ObterEventos Pa gto.js p link redirect link Figura 60 – Diagrama de seqüência para páginas de atividades disponíveis – parte 5 Obte rEve ntos Di s p onivei s .java 89 4.8. Atividades Disponíveis Nessa função o usuário tem acesso a todas as informações das atividades inscritas por ele no evento, inclusive local e taxas das atividades inscritas e pré-inscritas. A Figura 61 ilustra as páginas que serão processadas quando forem feitas solicitações das atividades inscritas. A Figura 62 ilustra os componentes que serão utilizados no processo de solicitação das atividades inscritas e as Figuras 63 e 64 mostram os diagramas de seqüência das atividades inscritas. 90 <<HTML Form >> Atividades <<li nk>> Ob ter Atividades Ins crito <<link>> Atividades Inscrito ObterAtividades Ins crito.java <<link >> <<link>> <<li nk>> Excluir Atividade Ins crito Obter Eventos Pgt o <<link>> Exibir Eventos <<include>> <<link>> ObterDado s Atividades PreInsc.java <<link>> Obter Eventos Ins crever Evento <<link>> ObterEventos Dis poniveis .java Detalhes Evento Figura 61 – Diagrama de classes para páginas de atividades inscritas 91 Atividades <<link>> Ativida desIns crito <<link>> ObterAtividades Pgto <<link>> <<link>> <<link>> ExcluirAtividadeIn s crito ObterEventosPg to <<include>> ExibirEventos <<link>> <<link>> InscreverEvento ObterEventos <<link>> <<link>> Det alhesEvent o Figura 62 – Diagrama de componentes para páginas de atividades inscritas 92 Atividades Inscrito Ati vi dades Ins c ri t o.j s p link ObterAtividades Pgto.js p Exib ir Eventos .js p ObterEventos Pg to.js p ObterAtividades Ins crito.java link link link link link Figura 63 – Diagrama de seqüência para páginas de atividades inscrita – parte 1 ExcluirAtividadeI n s crito.js p 93 ExibirEventos.jsp InscreverEvento.j sp ObterEventos.jsp ObterDadosAtivid adesPreInsc.java DetalhesEvento.j sp include link link link Figura 64 – Diagrama de seqüência para páginas de atividades inscrita – parte 2 ObterEventosD i sponiveis.java 94 4.9. Pagamentos Nessa função o usuário tem acesso a todos os pagamentos das atividades e eventos inscritos. A Figura 65 ilustra as páginas que serão processadas quando forem feitas solicitações dos pagamentos, a Figura 66 ilustra os componentes que serão utilizados no processo de solicitação dos pagamentos e as Figuras 67 e 68 mostram os diagramas de seqüência dos pagamentos. 95 <<HTML Form>> Atividades <<link>> ObterAtividadesPgto.java Obter Atividades Pgto <<link>> Obter Eventos Pgto <<li nk>> Boleto Tesouraria Boleto.java <<link>> BoletoTotal.j ava Obter Parcelas BoletoTaxa.java ObterEventosPgto.java ParcelaDebEvento.java Figura 65 – Diagrama de classes para páginas de pagamentos 96 Pagamentos <<link>> ObterAtividades Pgto <<link>> BoletoTesouraria ObterEventosPgto <<link>> <<link>> <<link>> ObterParcelas Figura 66 – Diagrama de componentes para páginas de pagamentos 97 Pagamentos ObterAtividades Pgto.jsp ObterAtividaes Pgto.java Boleto.java ObterEventosPg to.jsp BoletoTesouraria .jsp link link link Figura 67 – Diagrama de seqüência para páginas de pagamentos – parte 1 Bole toTo tal .java BoletoTaxa.java 98 Boleto Tesouraria .jsp ObterEventosPg to.jsp ObterParcelas.js p ObterEventosP gto.java link link link Figura 68 – Diagrama de seqüência para páginas de pagamentos – parte 2 ParcelaDebEve nto.java 99 CONCLUSÃO A modelagem de uma aplicação constitui-se de grande relevância nas etapas de desenvolvimento da mesma. Os elementos devem ser modelados de forma coerente e consistente através de modelos que representem a semântica dos mesmos. Em uma aplicação Web o projetista trabalha basicamente com páginas, componentes de lógica de negócios, navegação e apresentação. A solução apresentada pela WAE de Conallen com extensão da UML é uma semântica nova para elementos de modelo especiais. Ela permite ao projetista modelar adequadamente as páginas Web dando uma representação clara de seus objetos e a forma de relacionamentos entre eles. As extensões aqui apresentadas propõem novos estereótipos para a UML. Os modelos mostrados podem não ser suficientes para modelar aspectos particulares de uma aplicação. Porém, a integração delas pode dar ao projetista uma alternativa de construir modelos que façam a adequada abstração do mundo real e do nível de implementação da aplicação. Mesmo adicionando as extensões ao UML, ainda assim não são suficientes para expressar com clareza a navegação entre as páginas clientes e os demais componentes, tendo como proposta para futuras modelagens um aprimoramento desses aspectos de navegação, para que não ocorram muitas ramificações entre as páginas ajudando a tornar a aplicação mais simples e objetiva, outro ponto relevante são os diagramas que são muito semelhantes, por exemplo o diagrama de classes para páginas Web é muito idêntico ao diagrama de componentes para páginas Web, o que torna a documentação muito exetensa, uma solução seria “cortar” um desses diagramas. Podemos levar em consideração que modelar um sistema Web já existente é uma tarefa uma tanto árdua, já que modificações na aplicação são feitas constantemente e não se tem uma visão clara do sistema, o ideal seria modelar a aplicação do início para depois 100 implementa-la, tornando assim a aplicação mais eficiente e verificando com clareza se a metodologia aplicada na documentação da aplicação é válida. 101 REFERÊNCIAS BIBLIOGRÁFICAS [1] CASTRO, Elizabeth HTML: Para a World Wide Web. Makron Books. 2000 [2] NEWMAN, Alexander Usando Java: O Guia de Referência Mais Completo. Editora Campus, 2000 [3] PAGE-JONES, Meilir Fundamentos do desenho orientado a objetos com UML. Editora MAKRON Books, 2001 [4] BOOCH, Grady UML: Guia do usuário. Editora Campus, 2000 [5] CONALLEN, Jim Building Web applications with UML. Editora Addison Wesley, 2002 [6] JÚNIOR , Fracisco B. JSP : A Tecnologia Java na Internet. Editora Érica, 2002. [7] VILLAS, Marcos. “Desenvolvendo Sistemas na Internet”, 1997. [on-line] Disponível em na Internet via WWW.URL: http://www.rsi.com.br/artigos/rsi-dsi.doc. Arquivo capturado em 10 de abril de 2002. [8] TELEMACO, Ulisses Neto. Tutoriais, 2002. [on-line] Disponível na Internet via WWW.URL: http://www.jspbrasil.com.br:8081/jspbrasil/tutoriais/tutoriais.jsp. capturado em 11 de abril de 2002. Arquivo