Repositório de Arquivos Online utilizando Web Services Ricardo Takazu Hatae, Rogério Homem da Costa, Felipe Mancini Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - Campus Guarulhos [email protected], {rogerio.costa,fmancini}@cefetsp.br Resumo. Existe atualmente um novo paradigma na Tecnologia da Informação referente à adoção de soluções envolvendo hardware e software de forma remota, e em grande escala, com a finalidade da guarda de informações de forma ubíqua, imune a imprevistos e disponibilizados como serviços em ambientes de Computação em Nuvem. O objetivo deste trabalho é a apresentação da utilização de conceitos e tecnologias que permitem o acesso ao recurso computacional de armazenamento de informações baseada no modelo arquitetural orientada a serviços, independente da plataforma em uso pelo cliente através do uso de Serviços Web como meio para facilitar o envio e recebimento de arquivos. Palavras-chave: Web Services; SOA; IaaS 1. Introdução Segundo Capron e Johnson (2004), nas primeiras décadas após o surgimento dos computadores de uso pessoal, as primeiras formas de armazenamento de dados eram obtidas através de dispositivos móveis de armazenamento em meio magnético. Naturalmente, o maior problema neste tipo de armazenamento de dados eram os desgastes resultantes no processo de gravação e leitura das informações ali armazenadas e as dimensões e pesos destes dispositivos. Com o passar do tempo, a partir do início da década de 70, surgiram os primeiros dispositivos portáteis de armazenamento, conhecidos como disquetes, com capacidade de armazenamento de até 80 KB de informações, pela dimensão deste dispositivo melhorou-se a forma de transporte e armazenamento de dados de forma otimizada, mas mesmo assim ainda estavam presentes os problemas advindos no desgaste físico no uso destes dispositivos e também a limitação no armazenamento de dados do mesmo. A partir da década de 90 surgiram os Compact Discs (CDs) como forma de armazenamento de dados computacionais, imagens e músicas. Como vantagem deste tipo de armazenamento, temos a ausência do desgaste físico no processo de armazenamento de dados e informações, maior capacidade de armazenamento de cada dispositivo (em torno de 600 MB de dados) e a total digitalização no processo de leitura e gravação de dados. Como desvantagem no uso deste dispositivo, temos a fragilidade na superfície de leitura e gravação destes dados. Posteriormente, a partir do ano de 2002, surgiram os primeiros dispositivos de armazenamento de informações em memória Flash, os chamados pendrives. Como vantagens desta forma de armazenamento de informações, temos a possibilidade de armazenamento de uma quantidade considerável de dados (em torno de alguns GB de dados), portabilidade no transporte destes dispositivos e grande ciclo de vida de gravação, leitura e regravação de dados. Atualmente, verificamos a tendência da disponibilidade desses e de outros recursos computacionais nas nuvens, ou seja, o chamado Cloud Computing. Alecrim (2008) afirma que a Computação nas Nuvens ou Cloud Computing se refere, à idéia de utilizarmos, em qualquer lugar e independentemente de plataforma, as mais variadas aplicações através da Internet. Seu conceito ainda é um pouco incerto, mas pode-se definir como a virtualização de produtos e serviços computacionais, ou seja, é uma maneira de armazenar todas as informações em servidores virtuais chamados de “nuvem”, onde há uma tendência mundial para este modelo, não necessitando de máquinas velozes com um grande potencial de hardware e sim de um simples computador conectado à Internet para rodar todos os aplicativos. “A idéia de Computação nas Nuvens certamente não é uma novidade, mas a forma de implementá-la é um tanto inovadora” (CARNEIRO; DA COSTA RAMOS, 2010, p 6). “Para alguns, é apenas um nome novo para iniciativas já feitas no passado, como o outsourcing (obter recursos computacionais de terceiros) e Grid Computing, que é uma rede de computadores ligados por baixo acoplamento” (TAURION, 2009, p 2). “Grandes empresas estão investindo nessa nova tecnologia, onde se destacam: Google, IBM, Amazon, Dell, HP e Microsoft” (CARNEIRO; DA COSTA RAMOS, 2010, p 6). Este tipo de acesso a recursos têm como grande vantagem a garantia da disponibilidade destes mesmos, tendo como único requisito a possibilidade de acesso à Internet, e a liberdade por parte do usuário de não se preocupar com a segurança no armazenamento de dados utilizando esse novo padrão de uso de recursos computacionais. Após verificarmos as vantagens de armazenamento de dados baseado no conceito de Cloud Computing, e segundo publicação da revista B2B Magazine do dia 13 de Junho de 2011, uma pesquisa realizada pela Universidade do Texas, nos Estados Unidos em 2011 feito com pequenas e médias empresas afirma que 94% não conseguiriam sobreviver caso perdessem todos os seus dados armazenados nos computadores dos funcionários e servidores – 51% fechariam em até dois anos e 43% não voltariam a funcionar, consideramos a real viabilidade no desenvolvimento de um projeto baseado na disponibilização de um local de armazenamento de arquivos disponível na Internet, de forma a garantir um acesso fácil e seguro ao usuário cadastrado para fazer uso do sistema proposto neste trabalho. Este conceito, assim como os demais relacionados ao termo Cloud Computing, fazem parte de uma tendência onde recursos - neste caso a infraestrutura - são compartilhados, onde o cliente em vez de comprar servidores de alto desempenho, softwares complexos e equipamentos de rede pode adquirir esses recursos como um serviço totalmente terceirizado. Segundo Alecrim (2008), as principais características da Computação nas Nuvens são: - Acesso às aplicações independente de sistema operacional ou hardware; - O usuário não precisará se preocupar com a estrutura para execução da aplicação: hardware, backup, controle de segurança, manutenção, entre outros, ficam a cargo do fornecedor de serviço; - Compartilhamento de dados e trabalho colaborativo se tornam mais fáceis, uma vez que todos os usuários acessam as aplicações e os dados do mesmo lugar; - Dependendo do fornecedor, o usuário pode contar com alta disponibilidade, já que, se por exemplo, um servidor parar de funcionar, os demais que fazem parte da estrutura continuam a oferecer o serviço. Ainda segundo Taurion (2009), algumas das vantagens que as empresas podem obter ao adotar o modelo de computação nas nuvens são: - Melhor utilização dos recursos computacionais, podendo as empresas se abstrair de uma camada de complexidade demandada pela infraestrutura computacional e se concentrar na geração de valor de nível mais alto, ou seja, as empresas podem ao adotar este modelo de computação investir mais tempo e energia para otimizar ou expandir os seus negócios. - Disposição de uma elasticidade em sua infraestrutura, permitindo à organização aumentar ou diminuir seu “parque computacional virtual” de acordo com a demanda de recursos. Entretanto, uma vez comprovado que o modelo de Cloud Computing é uma solução que provê recursos computacionais de forma rápida e sob demanda, surge a questão de como implementar os recursos de infraestruturas, de transporte de dados e utilização de software necessários para que os elementos chave do negócio, os usuários e o provedor possam respectivamente ter acesso a esse serviço computacional nas nuvens, e disponibilizá-lo de forma transparente e independente da plataforma em uso pelo cliente. Através da análise de tecnologias disponíveis que possibilitam a criação de aplicações que podem ser acessadas entre computadores diferentes, identificamos que o uso da tecnologia de Web Services permite ao desenvolvedor, a criação de aplicações de software, que podem ser acessadas remotamente. Conforme cita Gomes (2011), os Web Services são uma evolução dos modelos de computação distribuída, muito utilizados na segunda metade da década de noventa, no entanto essas tecnologias eram utilizadas na integração de softwares em ambientes de redes locais e homogêneos. Quando a Internet avançou para o mercado corporativo, surgiu também a necessidade de integrar aplicações além das redes locais e, por conseqüência, em ambientes heterogêneos. “É nesse contexto que surge a tecnologia que chamamos de Web Services, proveniente de um consórcio formado por grandes empresas como IBM, Microsoft e BEA, entre outras pertencentes ao W3C” (GOMES, 2011, p13). Ainda segundo Gomes (2011), de uma forma genérica, podemos entender que os Web Services são uma tecnologia de integração de sistemas, podendo ser empregada em ambientes heterogêneos, atendendo assim a necessidade prevista para a implementação de serviços conforme descrito anteriormente a respeito da modelagem de Computação nas Nuvens. Em suma, podemos utilizar essa tecnologia para desenvolvimento de softwares ou componentes de software capazes de interagir; seja enviando ou recebendo informações, com outros softwares, não importando a linguagem de programação em que estes forem desenvolvidos, o sistema operacional em que rodam e o hardware utilizado. Portanto, para a implementação do transporte de dados, incluindo dados não-caracteres que é requisito fundamental para a realização deste trabalho, visando a disponibilização do armazenamento remoto de arquivos junto a um servidor, utilizaremos a tecnologia dos Web Services para esse fim, e também para a implementação de geração de relatórios possibilitando acesso a informações, contendo o registro de todo os eventos realizados pelo usuário. 2. Objetivo O presente trabalho tem por objetivo apresentar uma aplicação baseada na utilização da tecnologia dos Web Services para disponibilização de espaço físico de armazenamento de arquivos, demonstrando a disponibilização de uma infraestrutura como serviço. 3. Método O meio adotado para a disponibilização do serviço de armazenamento de arquivos de forma remota, que é o repositório remoto online deste trabalho, foi basicamente a utilização da tecnologia de Web Services para a disponibilização dos métodos que possibilitem o consumo do serviço proposto neste trabalho por parte do cliente e a plataforma de desenvolvimento NetBeans, específica para desenvolvimento de softwares em linguagem Java, escolhida para a concepção do sistema deste trabalho, de uma forma rápida e otimizada. Também foi adotado o uso do Sistema Gerenciador de Banco de Dados Java DB, para gerenciamento das informações dos eventos realizados relacionado ao repositório de arquivos remoto do sistema deste trabalho, pelo fato deste gerenciador ser totalmente integrado ao ambiente de desenvolvimento NetBeans. 3.1. Web Services Segundo Potts e Kopack (2003), um Web Service é uma aplicação de software que pode ser acessada remotamente usando diferentes linguagens baseadas em XML (Extensible Markup Language), sendo que sua identificação na Web é realizada por um URL (Uniform Resource Locator), exatamente como qualquer outro site Web mas o tipo de informação que os Web Services podem oferecer é diferente com relação aos sites Web comuns. Para que se possa entender como os Web Services funcionam, é necessário primeiramente o entendimento da metalinguagem XML. Uma metalinguagem é uma linguagem que pode descrever e integrar-se com outras linguagens, fundamentada no uso de padrões construtivos criadas pelo W3C (World Wide Web Consortium), que é uma instituição de padronização das mais abertas, dinâmicas e difundidas. Portanto a principal característica do XML, de criar uma infra-estrutura única para diversas linguagens, é que linguagens desconhecidas e de pouco uso também podem ser definidas sem maior trabalho e sem necessidade de ser submetidas aos comitês de padronização. Pelas características citadas anteriormente, os Web Services utilizam essa característica do XML para a intercomunicação entre softwares baseadas em plataformas diferentes. As transações de Web Services acontecem entre componentes. Você pode programar esses componentes por si mesmo, baixá-los de fundações de software de fonte aberta, como Apache, ou comprá-los de fornecedores comerciais como Microsoft ou IBM. Você não precisa adquirir todos os componentes que usa de um único fornecedor; pode escrever alguns, fazer download de outros e comprar ainda outros (POTTS; KOPACK, 2003 p5). 3.1.1. Padrões para o desenvolvimento de Web Services Segundo Gomes (2011), atualmente existem dois padrões para o desenvolvimento de Web Services: o padrão SOAP (Simple Object Access Protocol) e o padrão REST (Representational State Transfer) ou RESTfull. Os Web Services desenvolvidos seguindo o padrão REST baseiam-se no uso de requisições em HTTP (Hypertext Transfer Protocol), como mostra a ilustração a seguir: Figura 1. Arquitetura dos Web Services REST O HTTP é um protocolo de aplicação responsável pelo tratamento de pedidos e respostas entre cliente e servidor na Web, ele surgiu da necessidade de distribuir informações pela Internet e para que essa distribuição fosse possível foi necessário criar uma forma padronizada de comunicação entre os clientes e os servidores da Web e entendida por todos os computadores ligados à Internet. Com isso, o protocolo HTTP passou a ser utilizado para a comunicação entre computadores na Internet e a especificar como seriam realizadas as transações entre clientes e servidores, através do uso de regras básicas, através de 4 métodos que indicam a ação a ser realizada em uma comunicação: GET – Solicitação de algum recurso, como um arquivo por exemplo. PUT – Envia certo recurso. POST – Envio de dados para serem processados. DELETE – Exclui certo recurso. Os Web Services baseados no padrão SOAP, fazem uso de um formato de mensagem que permite que chamadas de métodos sejam enviadas em XML de um computador para outro, e também é possível o envio de um documento inteiro, contendo apenas dados. O site de pesquisas Wikipédia define o SOAP como um protocolo para troca de informações estruturadas em uma plataforma descentralizada e distribuída, ele se baseia na linguagem XML para seu formato de mensagem, e também se baseia em outros protocolos como o HTTP, para negociação e transmissão de mensagens. Este protocolo baseado em XML, como mencionado anteriormente, consiste de três partes, um envelope, que define o que está na mensagem e como processá-la, um conjunto de regras codificadas para expressar instâncias dos tipos de dados definidos na aplicação e uma convenção para representar chamadas de procedimentos e respostas. Em um Web Service baseado no protocolo SOAP, os demais componentes envolvidos na sua arquitetura são: - WSDL (Web Service Description Language): arquivo do tipo XML que descreve de forma detalhada um Web Service. Especifica as operações e métodos que compõem o Web Service definindo de forma clara como deve ser o formato de entrada e saída de cada operação. Segundo Potts e Kopack (2003), este arquivo contém todas as informações de que você precisa para contatar um serviço, independente de plataforma e linguagem. Um programador ou programa é capaz de ler esse arquivo e criar uma mensagem clara que pode chamar um método ou métodos nesse serviço. Verificando na figura a seguir, o WSDL pode tanto ficar armazenado no “Provedor de Web Services” quanto no UDDI. Figura 2. Arquitetura para Web Services SOAP adaptada de Gomes (2011) - UDDI (Universal Description Discovery and Integration): o UDDI segundo Gomes (2011), é um mecanismo que visa atender tanto ao cliente do Web Service quanto ao provedor, pois ele fornece ao provedor de Web Services meios para que os Web Services sejam registrados e publicados, permitindo assim que os Web Services sejam pesquisados e localizados pelos clientes. O UDDI também possibilita o armazenamento de arquivos WSDL. - Cliente: segundo Gomes (2011), é um software que consumirá Web Services, ou seja, utilizará as operações disponibilizadas por um determinado Web Service. Um cliente possui várias etapas de seu ciclo de vida, que começa pela preexistência, quando este obtém o arquivo WSDL do Web Service que se deseja consumir, até o momento em que o software cliente já está em operação, fazendo solicitações e recebendo resultados dos Web Services, ambos no formato XML. - Provedor de Web Services: Esse componente tanto pode ser um servidor de aplicações, como o GlassFish, criado pela Sun Microsystems, subsidiária da Oracle, ou um Web container, como o Apache criado pela Apache Foundation. Ele também pode armazenar os arquivos WSDL. 3.1.2. Integração dos componentes de um Web Service De acordo com a figura 2, adaptada da estrutura citada por Gomes (2011), os componentes de um Web Service se integram da seguinte forma: 1. Registra e publica o web service: após criado o Web Service, ele é disponibilizado em um provedor de Web Services, onde o cliente a partir deste provedor obtém o seu endereço ou URI (Uniform Resource Identifier) através do diretório de registro de Web Services, também conhecido como UDDI. 2. Obtém informações sobre o Web Service: quando um desenvolvedor de software necessita utilizar um Web Service, utiliza o UDDI para obter seu endereço e seu documento WSDL. 3. Efetua download do WSDL: efetuando o download do arquivo WSDL, pelo UDDI ou provedor de Web Services, o desenvolvedor poderá criar um cliente que fará uma chamada ao Web Service e obterá uma resposta, dependendo do serviço solicitado. 4. Envia solicitação XML: o software cliente criado fará chamadas ao Web Service, enviando solicitações no formato de mensagens em XML. 5. Recebe resposta XML: o Web Service recebendo a solicitação do cliente, efetuará um processamento e produzirá um resultado, podendo enviar ou não uma resposta também no formato XML. Além dos componentes descritos, existe também a questão de qual o protocolo pode ser adotado para o tráfego de mensagens SOAP. Gomes (2011) afirma que a arquitetura proposta pelo W3C especifica que as solicitações e respostas XML possam trafegar por meio de qualquer protocolo como HTTP, FTP (File Transfer Protocol), entre outros. Na prática o que se utiliza é mensagens em XML trafegando sobre o protocolo HTTP, isso porque esse protocolo atualmente é o dominante na Web e é suportado por praticamente todo tipo de plataforma de software/hardware e não possui problemas de restrições por firewalls. 3.2. Tecnologias utilizadas As tecnologias utilizadas para a implementação do sistema proposto no projeto foram a escolha da linguagem de programação Java, o ambiente de desenvolvimento IDE (Integrated Development Environment) NetBeans versão 6.9.1, o Sistema Gerenciador de Banco de Dados Java DB, e o servidor de aplicações em Java GlassFish versão 3.1. 3.2.1. A linguagem de programação Java Segundo Mendes (2009), a linguagem Java foi desenvolvida inicialmente para ser uma ferramenta de programação de um projeto da Sun Microsystems, chamado The Green Project, iniciado por Patrick Naughton, Mike Sheridam e James Gosling, em 1991. Esse projeto tinha como principal objetivo criar uma nova plataforma para a computação interativa, ou seja, a linguagem de programação não era o principal objetivo do projeto. A linguagem de programação Java representa uma linguagem simples, orientada a objetos, multithread, interpretada, neutra de arquitetura, portável, robusta, segura e que oferece alto desempenho. É importante observar que a tecnologia Java é composta de uma linguagem de programação e de uma plataforma (API e a máquina virtual) (MENDES, 2009, p17) É importante observar que a linguagem Java segue o paradigma de orientação a objeto, que existe desde a década de 70, cujo êxito obtido possibilitou que a Linguagem Java alcançasse maior credibilidade. Mendes (2009) afirma que o paradigma de orientação a objetos traz um enfoque diferente da programação estruturada, no sentido de adotar formas mais próximas do mecanismo humano para gerenciar a complexidade de um sistema. Nesse paradigma, o mundo real é visto como sendo construído por objetos autônomos, concorrentes, que interagem entre si, e cada objeto tem seu próprio estado (atributos) e comportamento (métodos), semelhante a seu correspondente no mundo real. A característica de robustez, devido ao fato da linguagem Java ter sido projetada para gerar manipulação de exceções, foi relevante para a escolha desta linguagem de programação para o desenvolvimento do projeto deste trabalho. 3.2.2. O IDE NetBeans Uma explicação preliminar se faz necessária a respeito do que são ambientes de desenvolvimento IDE antes da explanação sobre o ambiente de desenvolvimento NetBeans. Um IDE é um aplicativo que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. Geralmente os IDEs facilitam a técnica de RAD (de Rapid Application Development, ou "Desenvolvimento Rápido de Aplicativos"), que visa a maior produtividade dos desenvolvedores. Segundo pesquisa realizado no site da Wikipédia, as características e ferramentas mais comuns encontradas nos IDEs são: Editor - edita o código-fonte do programa escrito na(s) linguagem(ns) suportada(s) pela IDE; Compilador (compiler) - compila o código-fonte do programa, editado em uma linguagem específica e a transforma em linguagem de máquina; Linker - liga os vários "pedaços" de código-fonte, compilados em linguagem de máquina , em um programa executável que pode ser executado em um computador ou outro dispositivo computacional. Depurador (debugger) - auxilia no processo de encontrar e corrigir defeitos no códigofonte do programa, na tentativa de aprimorar a qualidade de software; Modelagem (modelling) - criação do modelo de classes, objetos, interfaces, associações e interações dos artefatos envolvidos no software com o objetivo de solucionar as necessidades-alvo do software final. Distribuição (deploy) - auxilia no processo de criação do instalador do software, ou outra forma de distribuição, seja discos ou via internet. Testes Automatizados (automated tests) - realiza testes no software de forma automatizada, com base em scripts ou programas de testes previamente especificados, gerando um relatório, assim auxiliando na análise do impacto das alterações no código-fonte. Ferramentas deste tipo mais comuns no mercado são chamadas robôs de testes. Refatoração (refactoring) - consiste na melhoria constante do código-fonte do software, seja na construção de código mais otimizado, mais limpo e/ou com melhor entendimento pelos envolvidos no desenvolvimento do software. A refatoração, em conjunto com os testes automatizados, é uma poderosa ferramenta no processo de erradicação de "bugs", tendo em vista que os testes "garantem" o mesmo comportamento externo do software ou da característica sendo reconstruída. O NetBeans é um exemplo de ambiente IDE, atualmente mantido pela empresa Sun Microsystems, subsidiária da Oracle, que gera códigos em linguagem de programação Java, assim como outros: C++ e Phyton. Figura 3. O IDE NetBeans versão 6.9.1 O NetBeans IDE é um ambiente de desenvolvimento - uma ferramenta para programadores escrever, compilar, depurar e implantar programas. É escrito em Java - mas pode suportar qualquer linguagem de programação. Existem também um enorme número de módulos para aprimorar o NetBeans IDE. O NetBeans IDE é um produto gratuito sem restrições de como ser utilizado (http://netbeans.org/index_pt_BR.html). O NetBeans atualmente é disponibilizado pelo órgão chamado netbeans.org. O NetBeans apresentou-se como uma boa ferramenta para a construção de Web Services, uma vez que o desenvolvimento deste tipo de aplicativo neste ambiente é rápido e fácil, devido a principal característica desta IDE: a possibilidade da otimização de tarefas a serem realizadas pelo programador. Desde que a palavra Web Service foi pronunciada pela primeira vez ao mundo, todas as linguagens de programação voltadas para a construção de aplicações Web começaram a correr em busca de trabalhar com esta forma de serviço. Alguns padrões foram estabelecidos e isto facilitou o desenvolvimento de rotinas aplicáveis a IDEs como o NetBeans (GONÇALVES, 2007 p421). 3.2.3. Java DB Segundo Reese (2000), o Java DB, anteriormente conhecido como Apache Derby é um banco de dados relacional Java que pode ser embutido em programas Java e usado para processamento de transações online. Consome apenas 2 MB de espaço em disco. O Apache Derby é desenvolvido como um projeto open source pela Apache Foundation. O Derby era anteriormente distribuido como IBM Cloudscape. Em meados de Julho de 2005, a Sun Microsystems uniu-se ao projeto Derby com a intenção de usar o Derby como um componente de seus produtos, e com o lançamento do Java 6 em Dezembro de 2006, a Sun incluiu o Derby no pacote de Kit de Desenvolvimento do Java, renomeado como Java DB. As principais características de banco de dados incluem a facilidade de uso, totalmente transacional, baseado em padrões SQL (Structure Query Language) e se apresenta como uma aplicação que pode ser embutida ao servidor de aplicativos Java GlassFish. Por apresentar um alto grau de compatibilidade com aplicações desenvolvidos em Java, este sistema gerenciador de banco de dados foi adotado para ser utilizado com a finalidade de armazenar as informações de eventos do sistema proposto neste trabalho. 3.2.4. Servidor de aplicações GlassFish Heffelfinger (2009) afirma que o GlassFish é um servidor de aplicações Java e é uma versão open source do Sun Java Application Server. Ele oferece diversas facilidades que vão desde a gerência das aplicações que estão hospedadas, de forma online, facilitadores para aplicar softwares criados para ambiente Web até a gerência completa de pools de conexão de bancos de dados, e tudo isso pode ser feito através de uma página de gerência do servidor. Para a criação do projeto proposto neste trabalho, o GlassFish foi escolhido para servir como container da aplicação do sistema principalmente devido a dois fatores: - possibilidade da utilização do framework Metro, para a concepção de Web Services que permitem a otimização de mensagens transmitidas pela Internet de maneira mais eficiente, em comparação ao framework Axis, disponibilizada pelo servidor Web Java conhecido como Tomcat. - possibilidade de utilização da tecnologia de componentes EJB (Enterprise Java Beans) no projeto. O EJB é uma tecnologia que oferece um rápido e simplificado desenvolvimento de aplicações Java baseado em componentes distribuídas, transacionais, seguras e portáveis. 4. Resultado Os procedimentos adotados para a geração do software deste projeto baseou-se primeiramente na definição do cronograma de construção do software com a utilização da ferramenta de EAP (Estrutura Analítica do Projeto) para decompor um projeto como todo em módulos ou partes mais manejáveis, com o intuito de melhor planejar o seu desenvolvimento. A seguir foram realizados estudos em termos de viabilidade e performance no uso da tecnologia de Web Services para atender os requisitos do sistema proposto, desenvolvimento do software com as técnicas definidas para a concepção do sistema e por fim, foram realizados testes de validação dos casos de uso definidos para o sistema com a criação de aplicativos cliente para o serviços oferecidos pelo mesmo. 4.1. Construção do software Para a construção do software deste trabalho, foi elaborado inicialmente a EAP do sistema proposto, gerando como resultado o diagrama da EAP apresentada a seguir: Implantação do produto do Projeto do TCC Padronização do Projeto Desenvolvimento Testes e revisão Finalização Padronização na organização de arquivos Implantação do escopo do Projeto Criação e execução de sequência de testes Validação do Sistema Criação de programas auxiliares (se necessário) Refatoração do código do Sistema Elaboração da Documentação Técnica do Sistema Padronização do Banco de Dados Padronização de telas Criação da versão beta do Sistema Criação da versão final do Sistema Criação da versão final da Documentação do Projeto Figura 4. O diagrama de EAP do sistema do projeto Após definidas as etapas da construção do software foram realizados levantamentos relacionados a viabilidade do uso da tecnologia de Web Services e ao melhor tipo de padrão de projeto a serem adotados para a implementação do sistema. 4.1.1. Estudo da viabilidade do uso da tecnologia de Web Services para transferência de arquivos Segundo afirmam Potts e Kopack (2003), uma das principais críticas aos Web Services que utilizam XML para troca de mensagens, é a área de transmitir dados não-caracteres. A idéia de converter tudo em caracteres não é considerada viável para certos tipos de dados, como fotografias e código executável. Um documento XML é transmitido apenas como um conjunto de caracteres, outros tipos de dados não binários – como imagens, arquivos de áudio ou programas compilados, são problemáticos para seu envio. Diante desse cenário, uma possível solução seria o envio desses arquivos como anexos em uma mensagem SOAP, através dos seguintes recursos: - Conversão de dados binários usando codificação Base64 para que estes possam ser enviados como texto. - Codificação de anexos utilizando o protocolo MIME (Multipurpose Internet Mail Extensions). A codificação Base64 é baseada na popular codificação US-ASCII, com a diferença de que este, ao contrário da codificação ASCII (American Standard Code for Information Interchange), permite transmitir qualquer documento binário como arquivos de áudio, vídeo e executável em anexo de correio eletrônico codificando-o com ajuda de caracteres clássicos. A codificação Base64 provoca um aumento global de 33% do volume dos dados a codificar, e também provoca um alto grau de consumo de recursos tanto do lado do cliente como do lado do servidor, para a realização dos processos de codificação e decodificação das mensagens, e é necessário que haja garantia de abundância de largura de banda para que o envio de anexos dentro de transações de Web Services funcione bem. Para a transmissão de dados não-ASCII como anexo é necessário a utilização do protocolo MIME. Segundo Potts e Kopack (2003), o MIME funciona incluindo um cabeçalho ContentType que pode ser usado para especificar o tipo e o subtipo dos dados sendo enviados no anexo, e conforme citado, sete tipos de dados são especificados - Tipo 1 – Texto – Dados de texto em um conjunto de caracteres - Tipo 2 – Imagem – Dados de imagem estática - Tipo 3 – Áudio – Dados de áudio ou voz - Tipo 4 – Vídeo – Dados de imagem dinâmica - Tipo 5 – Mensagem – Encapsulação de uma mensagem de e-mail - Tipo 6 – Multiparte – Combinações de outros tipos em uma única mensagem - Tipo 7 – Aplicação – Dados binários ou de aplicação Inicialmente foi levado em consideração o uso do framework Axis de código aberto, baseado em linguagem Java e no padrão XML, para a construção dos Web Services responsáveis pela transmissão de dados em anexo para o repositório de arquivos do sistema. Entretanto, o Metro, que é um framework de código aberto, e faz parte do servidor de aplicativos GlassFish para criação de Web Services, apresentou suporte para envio e recebimento para grande quantidade de anexos em forma de streaming (fluxo) de dados através de seu componente IR (Implementação de Referência) JAX-WS (Java API for XML Web Services). O envio desses arquivos utilizando o framework Metro é possível através do modelo baseado na codificação Base64 e o acesso a esses dados através do recurso de StreamingDataHandler (manipulador de fluxo de dados). O órgão netbeans.org através de seu site disponibiliza um tutorial de como implementar um projeto para envio de anexos de forma binária através da IDE NetBeans, por meio da alteração do arquivo WSDL do Web Service criado para a utilização da codificação de dados Base64 e protocolo de envio de anexos MIME fazendo uso do framework Metro. Uma vez definido a viabilidade do uso de Web Services para transporte de dados (arquivos) remotos, realizamos diversos levantamentos de pesquisas realizadas para dimensionar a real eficácia do uso de Web Services por parte de programadores e arquitetos de software. Segundo Wong (2009), os serviços de upload e download de arquivos através de Web Services para grandes arquivos regulares como doc, pdf e jpg pode gerar consumo excessivo de memória, uma vez que a transmissão de arquivos de ponta a ponta, ou seja, do cliente para o repositório de arquivos remoto e o contrário é realizado através do uso de um array de bytes, e também podem ocorrer problemas de escalabilidade, se houver muitos clientes usando o mesmo serviço. O modelo proposto por Wong (2009) relata que a melhor solução para transmissão e recepção de arquivos seria através do uso do protocolo FTP (File Transfer Protocol). O uso de Web Services neste caso seria para armazenamento e posterior acesso a todas as informações da movimentação do repositório remoto, ou seja, a tecnologia de Web Services seria utilizado para fins de troca de mensagens a respeito da utilização do serviço oferecido para armazenamento de arquivos. O armazenamento das informações intrínsecas dos arquivos hospedados no repositório neste caso necessitaria do uso de um banco de dados. Concluiu-se portanto neste estudo preliminar que em termos de desempenho e eficácia, a melhor solução a ser adotada para transferência de arquivos seria através da utilização do protocolo FTP, e a tecnologia de Web Services poderá ser utilizada para geração de informações de movimentação dos arquivos armazenados no repositório remoto do sistema ao cliente utilizador deste serviço. 4.1.2. Desenvolvimento do software Definido a utilização do protocolo FTP para transferência de arquivos do sistema, foram realizados pesquisas por ferramentas open source e de desempenho garantido para a criação de um servidor FTP do sistema, que possibilitasse o serviço de armazenamento remoto de arquivos. O FTP é uma forma rápida e versátil para transferência de arquivos, sendo a muito tempo uma das formas mais utilizadas na Internet. O aplicativo open source CesarFTP 0.99g, disponibilizado pela empresa desenvolvedora ACLogic, permite a mudança na estrutura dos arquivos contidos em um HD, ou seja, permite a configuração rápida da escolha de quais arquivos se deseja disponibilizar de forma pública para que esta possa se acessada remotamente. Figura 5. Interface do servidor FTP CesarFTP 0.99g Pelas suas características, este aplicativo permitiu a criação de um servidor FTP como um serviço do sistema proposto neste projeto. O gerenciamento do servidor FTP, que é o repositório remoto deste projeto e disponibilização das informações dos arquivos contidos nele, foi desenvolvido através da criação de Web Services dentro da IDE NetBeans. Como padrão utilizado para a construção desta parte do sistema, foi utilizado o design pattern Façade, que permite a definição de uma interface comum para as classes que compõem este componente do sistema, vide Apêndice J - Diagrama de Componentes em anexo. Como pode ser observado no Apêndice G - Diagramas de Classes em anexo, no componente do sistema responsável pela manipulação de arquivos , foi criada uma classe chamada ArquivoORM, que por meio de seu atributo privado do tipo EntityManager, fará acesso aos registros do Banco de Dados do sistema para realizar as operações de localização, listagem, exclusão, inserção e registro da data de download dos arquivos no servidor FTP do sistema. O Web Service CadastrarArqWs disponibilizará as funcionalidades deste componente ao cliente remoto do sistema. De forma análoga, no componente do sistema responsável pela manipulação dos cadastros de usuários junto ao repositório remoto, a classe UsuarioORM, por meio de seu atributo privado do tipo EntityManager, fará acesso ao Banco de Dados na tabela Usuario para realizar as operações de inserção, localização e exclusão dos usuários para fins de autenticação ao acesso do servidor FTP do sistema. O Web Service CadastrarUsWs disponibilizará as funcionalidades deste componente ao cliente remoto do sistema. Definidos os componentes que farão parte do sistema que oferecerá o serviço de repositório de arquivos remoto, foram criados neste projeto dois modelos de aplicação cliente para este serviço apenas para fins de demonstração e teste do software do lado do servidor, que é a aplicação real proposta neste projeto. 4.2. Teste do software Com a finalidade de se realizar testes de verificação e validação dinâmica da aplicação proposta neste projeto, para assegurar que esta cumpra com suas especificações e atenda às necessidades do usuário referente a usabilidade do serviço proposto, foram criados duas aplicações clientes para o servidor FTP do sistema em conjunto com os clientes do Web Service responsável pela geração de registros de movimentação deste servidor por parte do usuário. A tabela a seguir demonstra os casos de uso definidos para o sistema, conforme encontrado no Apêndice E – Diagramas de casos de uso do Sistema Repositório de Arquivos Online, sendo atendidos pelas aplicações clientes desenvolvidas apenas para fins de teste do software proposto neste trabalho: Casos de uso Aplicação cliente em Java Aplicação cliente em C# Acessar sistema X X Salvar arquivo X X Acessar lista de arquivos X X Recuperar arquivo X X Excluir arquivo X X Visualizar data do último download dos arquivos X X Visualizar data de upload dos arquivos X X Tabela 1. Validação dos casos de uso do sistema pelas aplicações clientes O primeiro modelo de aplicação cliente construído para teste de consumo do Web Service e de acesso ao servidor FTP do sistema foi a criação e execução de um projeto Web criado na IDE NetBeans. Figura 6. Tela de abertura de um novo projeto na IDE NetBeans Neste modelo de aplicação, foi adotado o uso de um servidor de aplicação, neste caso, o GlassFish versão 3.1, e também o uso de uma API para a criação de uma classe cliente do servidor FTP do sistema, disponibilizada pela Apache Foundation, o commons-net 2.2. A API commons-net 2.2 permite a disponibilização de clientes para muitos protocolos básicos da Internet, como o Telnet (Telecommunications Network), SMTP (Simple Mail Transfer Protocol) e FTP. Figura 7. Utilização da API commons-net 2.2 no modelo de aplicação cliente do sistema Foi utilizado neste modelo de aplicação um Servlet para a camada de controle da mesma, com a finalidade de instanciar e invocar os métodos da classe responsável pelo acesso ao servidor FTP do sistema e também instanciar a classe cliente do Web Service disponível na aplicação que disponibiliza o serviço do sistema. Um Servlet é basicamente uma classe que recebe requisições da camada Web de um projeto e gera respostas a essas requisições, no caso deste projeto as requisições são referentes ao acesso do servidor FTP no sistema para realização de upload, download, e exclusão de arquivos deste servidor, e requisições de chamadas dos métodos dos Web Services do sistema para registro das atividades pelos usuários do sistema. Para teste de consumo dos Web Services disponíveis pela aplicação do Sistema, foram criados clientes para os mesmos como mostra a figura 8, repare que é possível especificar a URL do arquivo WSDL do Web Service nesta etapa. Figura 8. Criação de um novo cliente para Web Service na IDE NetBeans Neste modelo de aplicação, para fins de controle de acesso, foi criado um cliente para o Web Service responsável pela autenticação dos usuários cadastrados no sistema, através de consulta aos registros da tabela Usuario do sistema (vide Apêndice H – Modelo conceitual da base de dados do sistema). Os dados de acesso ao sistema são passados pelo cliente através de uma página disponibilizada pela Web por meio de um arquivo JSP (Java Server Pages). Figura 9. Página de login do sistema disponibilizada por um arquivo JSP Um arquivo JSP é um arquivo em HTML com tags especiais que delimitam o início e o fim de trechos de código em Java que serão compilados e executados pelo servidor de aplicação adotado. Os relatórios de movimentação de arquivos do repositório remoto do sistema é disponibilizado por meio de uma tabela conforme mostra a figura 10. Figura 10. Tabela do sistema contendo relatório de movimentação de arquivos O segundo modelo de aplicação cliente construído para teste de consumo do Web Service e de acesso ao servidor FTP do sistema foi desenvolvido na IDE Visual Studio 2010, por meio de um projeto desktop criado usando-se a linguagem de programação C#, com a finalidade demonstrar a interoperabilidade entre a aplicação proposta neste trabalho e um exemplo de cliente criado em um ambiente de programação distinto ao anterior. A interface utilizada para criação do projeto foi o Windows Forms Application, este é parte integrante do framework .NET da Microsoft, que oferece a possibilidade da utilização de recursos do sistema operacional Windows. A figura 11 mostra a tela de abertura de um novo projeto do Visual Studio 2010, com a opção da utilização da API (Application Programming Interface) gráfica Windows Forms. Figura 11. Tela de abertura de um novo projeto na IDE Visual Studio 2010 Neste modelo de aplicação também foi utilizado uma API para acesso ao servidor FTP do sistema e dois clientes, um para o Web Service que permite acesso ao banco de dados remoto com as informações dos arquivos do repositório do sistema e outro para acesso ao banco de dados remoto com os cadastros de username e login de cada usuário cadastrado no sistema (vide Apêndice H – Modelo conceitual da base de dados do sistema). Figura 12. Criação de Web Service client no Visual Studio 2010 A interface gráfica deste modelo de aplicação para o usuário cliente é mostrada na figura 13, o acesso das informações de arquivos do repositório remoto também é disponibilizada na forma de uma tabela. Figura 13. Interface gráfica do modelo de aplicação desenvolvido no Visual Studio 2010 Neste segundo modelo de aplicação, o acesso às funcionalidades disponibilizadas pelo serviço do sistema deste trabalho é baseado em eventos. Desta forma, uma vez acessado a tabela contendo a lista de arquivos disponíveis pelo servidor FTP do sistema, o usuário no evento duplo clique na linha onde está nomeado o arquivo em que se pretende efetuar alguma ação, terá acesso a uma segunda tela que permite a exclusão do arquivo no repositório remoto ou o download deste localmente para o usuário. Assim como o primeiro modelo de aplicação apresentado, esta segunda aplicação permitiu a validação de forma dinâmica das funcionalidades do sistema proposto neste trabalho. 5. Discussão A disponibilização de um serviço, através do modelo de computação nas nuvens, como o produto proposto neste trabalho, segue o princípio de computação em grade, através do uso da Internet. A computação em grade é um modelo computacional anterior ao modelo de computação nas nuvens, em que toda a taxa de processamento de dados é realizada de forma a ser dividida em diversas máquinas, através de redes locais ou distribuídas formando o que chamamos de máquina virtual, cujo objetivo é justamente a garantia de interoperabilidade, portabilidade e reutilização de serviços. A utilização de Web Services para a construção do aplicativo apresentado neste trabalho, para a implementação dos requisitos anteriores mencionados, nos permitiu a observação das seguintes vantagens e desvantagens no uso desta tecnologia apontados por Potts e Kopack (2003). Vantagens: - Obtenção de relatórios de status remotos: Pelo fato de dois computadores poderem participar de uma transação Web Service, significa que é possível obtermos um relatório de status do recurso ou serviço oferecido remotamente em qualquer lugar, ou qualquer hora do dia ou da noite, conforme apresentado neste trabalho. - Menos custo de desenvolvimento de software: O fato dos Web Services poderem interoperar independente de plataforma, permite que a reutilização de código ocorra, por exemplo, por meio da descoberta de um novo programa de um código já criado, assim, se um código já existisse e não fosse possível a sua descoberta, também não seria possível o benefício da existência deste. A interoperabilidade oferecida pelos Web Services é um enorme desenvolvimento no mundo da reutilização de código. Desvantagens: - Disponibilidade: Como a Internet não garante 100% de disponibilidade o tempo todo, os Web Services, que usam a mesma estrutura dos sites Web, também não estarão totalmente disponíveis, mesmo que o servidor esteja funcionando plenamente, o serviço oferecido nas nuvens não estará se seu provedor de serviços de Internet não estiver disponível. - Problemas de desempenho: O processo de comunicação entre Web Services ou entre um Web Service com seus clientes acontece com mensagens XML codificadas em um formato especial (um envelope SOAP), e essa conversão leva tempo. Dependendo da complexidade dos seus dados e de sua complexidade, esse tempo pode ser uma série penalidade. Como exemplo, podemos citar a tentativa de envio de uma imagem binária como um parâmetro de método, neste caso, estes dados precisam ser codificados em um formato que possa ser representado em XML, isso certamente não é tão rápido quanto transferir a imagem através de um fio em seu formato original, e diante deste cenário, no sistema apresentado neste trabalho, foi adotado o uso do protocolo FTP para transferência de dados. 7. Conclusão A partir do aplicativo desenvolvido neste trabalho, podemos concluir que a utilização de serviços adotando a cultura de computação nas nuvens apresenta-se como uma ferramenta dinâmica, prática e simples para a finalidade de proteção de dados por meio da prática de backups, que são um dos ativos mais importantes de uma empresa ou mesmo pessoas físicas contra perdas de informações. 7. Trabalhos futuros A partir do produto apresentado neste trabalho, existem diversas opções de aperfeiçoamento e incrementação de vários recursos para a disponibilização do serviço de armazenamento remoto de arquivos. Podemos ver a adição destes recursos como possíveis trabalhos futuros a serem desenvolvidos a partir deste projeto, dentre as principais podemos destacar: - Maior garantia de segurança e privacidade: Segundo Potts e Kopack (2003), partindo da premissa que tudo o que é enviado pela Internet pode ser visto por outras pessoas, o uso de técnicas de criptografia como o SSL (Structure Sockets Layer) faz um ótimo trabalho de salvaguardar informações e é fácil de ser configurada, entretanto, fazendo o uso desta técnica em conjunto com o protocolo HTTP, o chamado HTTPS temos maior lentidão nas transações entre cliente e servidor do que somente fazendo uso do protocolo HTTP puro. O uso do protocolo FTPS para controle de canais FTP como meio para garantir a confidencialidade, integridade e disponibilidade dos dados transportados entre cliente e servidor em uma rede insegura como a Internet, também é um recurso a ser considerado para melhoria na camada de segurança de dados. - Sincronização automática de arquivos entre cliente e servidor: Este recurso possibilita o envio somente de arquivos que forem alterados nas nuvens em relação aos que já foram salvos no repositório remoto, possibilitando maior rapidez na salvaguarda do que realmente é importante ao usuário. Agradecimentos Agradeço ao professor Msc. Felipe Mancini por aceitar e apoiar o tema deste trabalho e pela oportunidade em colocar em prática os conhecimentos adquiridos nas disciplinas de Linguagem de Programação III e Desenvolvimento Web I e II, que foi a motivação para a escolha do tema, e ao professor Rogério Homem da Costa pela orientação na documentação deste trabalho. Agradeço também a todos os professores pelo empenho nas orientações e incentivos ao longo deste curso. Referências ALECRIM, EMERSON. O que é Cloud Computing (Computação nas Nuvens)?. Disponível em: <http://www.infowester.com/cloudcomputing.php>. Acesso em: 18 Mar. 2011. AMBIENTE de desenvolvimento integrado – Wikipédia, a enciclopédia livre. Disponível em: <http://pt.wikipedia.org/wiki/Ambiente_de_Desenvolvimento_Integrado>. Acesso em: 21 Mar. 2011. APACHE Commons Net. Disponível em: <http://commons.apache.org/net/>. Acesso em: 21 Mar. 2011. BACKUP na nuvem: opção segura para pessoas e empresas. Disponível em: <http://www.jornaldooeste.com.br/informatica/noticias/3465/?noticia=backup-na-nuvemopcao-segura-para-pessoas-e-empresas>. Acesso em: 21 Mar. 2011. CAPRON, H. L.; JOHNSON, J. A. Introdução à Informática. 8° ed. São Paulo: Prentice – Hall, 2004. ISBN 8587918885 CARNEIRO, R. J. G.; DA COSTA RAMOS, C. C. L. A SEGURANÇA NA PRESERVAÇÃO E USO DAS INFORMAÇÕES NA COMPUTAÇÃO NAS NUVENS. Disponível em: <http://www.4learn.pro.br/guarino/sd/08-Cloud%20Computing.pdf>. Acesso em: 21 Mar. 2011. CODIFICAÇÃO Base64. Disponível em: < http://pt.kioskea.net/contents/base/base64.php3 >. Acesso em: 21 Mar. 2011. C# FTP Library. Disponível em: <http://ftplib.codeplex.com/>. Acesso em: 21 Mar. 2011. GOMES, D. A. Web Services Soap em Java. São Paulo: Novatec, 2011. ISBN 9788575222188. GONÇALVES, E. Desenvolvendo aplicações Web com NetBeans IDE 5.5. Rio de Janeiro: Ciência Moderna, 2007. ISBN 9788573935790 GUERRA, GLAUCIO. Desenvolvendo um Cliente FTP. Disponível em: <http://www.devmedia.com.br/post-3547-Desenvolvendo-um-Cliente-FTP.html>. Acesso em: 21 Mar. 2011.CARNEIRO, R. J. G.; DA COSTA RAMOS, C. C. L. A SEGURANÇA NA PRESERVAÇ\ AO E USO DAS INFORMAÇ\ OES NA COMPUTAÇ\ AO NAS NUVENS. [S.l.], [S.d.]. HEFFELFINGER, D. Java EE 6 with GlassFish 3 Application Server. [S.l.]: Packt Publishing, 2010. ISBN 1849510369. MENDES, D. R. Programação Java com ênfase em orientação a objetos. São Paulo: Novatec, 2009. ISBN 9788575221761 METRO Guide – Large Attachments – Java.net. Disponível <http://metro.java.net/guide/Large_Attachments.html>. Acesso em: 21 Mar. 2011. em: O que é o NetBeans?. Disponível em: <http://netbeans.org/index_pt_BR.html>. Acesso em: 22 Mar. 2011. POTTS, Stephen; KOPACK, Mike. Aprenda web services em 24 horas. Rio de Janeiro Campus, 2003. ISBN 853521321X REESE, G.; REESE, G. Database Programming with JDBC and Java. 2nd ed. [S.l.]: O’Reilly Media, 2000. ISBN 1565926161. SOAP Wikipédia, a enciclopédia livre. Disponível http://pt.wikipedia.org/wiki/SOAP>. Acesso em: 21 Mar. 2011. em: < TAURION, C. CLOUD COMPUTING - COMPUTAÇAO EM NUVEM: TRANSFORMANDO O MUNDO DA TECNOLOGIA DA INFORMAÇAO. [S.l.]: BRASPORT, 2009. ISBN 9788574524238. TUTORIAL: Como criar um servidor FTP. Disponível em: <http://www.babooforum.com.br/forum/index.php?/topic/232337-tutorial-como-criar-umservidor-ftp/>. Acesso em: 21 Mar. 2011. VAZ, VERÔNICA TARQUETTE, MIME. Disponível <http://www.gta.ufrj.br/grad/07_2/veronica/MIME.html>. Acesso em: 22 Mar. 2011. em: WONG, RYAN. File Transfer through Java Web Service. Disponível em: <http://www.programcreek.com/2009/02/file-transfer-through-java-web-service/>. Acesso em: 19 Mar. 2011. Lista de abreviaturas e siglas API – Application Programming Interface ASCII – American Standard Code for Information Interchange BEA – Bill Coleman, Ed Scott, Alfred Chuang DB – Data Base EAP – Estrutura Analítica do Projeto EJB – Enterprise Java Beans FTP – File Transfer Protocol HD - Hard Disk HP – Hewlett Packard HTTP – Hypertext Transfer Protocol IaaS – Infrastructure as a Service IBM – International Business Machines IDE – Integrated Development Environment JAX-WS – Java API for XML Web Services JSP – Java Server Pages MIME – Multipurpose Internet Mail Extensions RAD – Rapid Application Development REST – Representational State Transfer SOAP – Simple Object Access Protocol SMTP – Simple Mail Transfer Protocol SQL – Structured Query Language SSL – Secure Sockets Layer TELNET – Telecommunications Network UDDI – Universal Description Discovery and Integration URI – Uniform Resource Identifier URL – Uniform Resource Locator WSDL – Web Service Description Language W3C – World Wide Web Consortium XML – Extensible Markup Language Apêndice A - Descrição dos requisitos funcionais do Sistema do Projeto - O Sistema deve permitir a inclusão, exclusão e atualização de arquivos diversos armazenados em um repositório disponibilizado em um servidor pela Internet. - O usuário deverá ser capaz de buscar as informações presentes em um relatório de dados disponibilizados um BD acessado pelo Sistema. - Todas as funcionalidades e métodos disponibilizados pelo Sistema deverão estar disponibilizados para o usuário através do recurso de serviços Web e através de um meio versátil que utilize a internet como meio para esse fim. - O Sistema fornecerá telas apropriadas para que o usuário possa recuperar e salvar documentos que este julgar importantes do repositório de arquivos para o seu dispositivo local e vice-versa. - Uma vez acessando o sistema cada ação de upload, download e exclusão de arquivo do repositório pelo usuário serão registrados pelo banco de dados do Sistema. - O Sistema garantirá apenas acesso ao repositório de arquivos por usuários cadastrados no Sistema. -Cada usuário cadastrado no Sistema terá acesso somente à área do repositório correspondente à sua cota reservada. Apêndice B - Descrição dos requisitos não funcionais do Sistema do Projeto - Facilidade do usuário no acesso às telas de login e visualização dos arquivos armazenados no repositório do Sistema (interoperabilidade), basicamente fazendo uso de qualquer Web Browser, ou interface independente da plataforma utilizado pelo usuário. - Garantia de portabilidade, com acesso e recuperação de arquivos salvos no repositório do Sistema necessitando apenas acesso à Internet. - Garantia de acesso à mesma área do repositório por mais de uma pessoa. - O local físico do repositório de arquivos ficará em um servidor cujo acesso estará disponível pela Internet. Apêndice C - Técnicas utilizadas para a obtenção dos requisitos funcionais e não funcionais do Sistema: - Observação direta: Através das funcionalidades de programas já existentes e disponíveis no mercado. - Brainstorming: Realizado através da reunião entre o orientador do projeto e possíveis usuários para o Sistema que está sendo desenvolvido neste projeto. Apêndice D - Perfil dos potenciais usuários do Sistema - Atender empresas como gráficas, editoras, birôs, agências de publicidade e fotografia que trabalham com grandes fluxos de informação e necessitam de um sistema que permita o envio de arquivos pesados. Apêndice E - Diagrama de casos de uso do Sistema Repositório de Arquivos Online Acessar Sistema <<include>> <<include>> Salvar Arquivo Acessar lista de arquivos Recuperar arquivo Usuário Excluir arquivo Visualizar data do último download dos arquivos Visualizar data de upload dos arquivos Apêndice F - Documentação dos Casos de Uso do Sistema UC 001 - Acessar Sistema Descrição Este caso de uso define as etapas percorridas para o acesso ao Sistema Repositório de Arquivos online Ator Usuário cadastrado do Sistema Pré-condições Usuário deve estar cadastrado no Sistema Fluxo principal Ator Sistema 1. Acessa a tela de acesso do Sistema 2. Solicita nome e senha de acesso 3. Informa nome e senha 4. Verifica o nome e senha informados 5. Libera o acesso à tela principal do Sistema Fluxo alternativo A - Usuário não cadastrado no Sistema O fluxo começa no passo 3 do fluxo principal quando o usuário informa senha e/ou nome inválidos Ator Sistema 1. Informa usuário e/ou senha inválidos UC 002 - Salvar arquivo Descrição Este caso de uso define as etapas percorridas pelo usuário para salvamento de arquivo no repositório do Sistema Ator Usuário cadastrado do Sistema Pré-condições Usuário deve estar cadastrado e tendo feito login de acesso no Sistema Fluxo principal Ator Sistema 1. Executar o UC001 - Acessar Sistema 2. Requisita salvamento de arquivo no repositório do Sistema 3. Realiza conexão com o servidor FTP do Sistema 4. Solicita o arquivo para salvamento 5. Informa o arquivo a ser salvo 6. Realiza o salvamento do arquivo na no repositório 7. Exibe mensagem de arquivo salvo 8. Fecha a conexão com o servidor FTP do Sistema Fluxo alternativo A - Erro durante o processo de salvamento do arquivo no repositório do Sistema O fluxo começa no passo 6 do fluxo principal quando o Sistema lança uma exceção no processo de upload do arquivo no repositório do Sistema Ator Sistema 1. Informa erro no processo de upload do arquivo no repositório do Sistema B - Usuário não informa o arquivo, mas solicita salvamento no repositório O fluxo começa no passo 5 do fluxo principal quando o usuário informa o arquivo a ser salvo Ator Sistema 1. Sistema retorna ao passo 4 do fluxo principal UC 003 - Recuperar arquivo Descrição Este caso de uso define as etapas percorridas pelo usuário para recuperação de arquivo salvo no repositório do Sistema Ator Usuário cadastrado do Sistema Pré-condições Usuário deve estar cadastrado, ter feito login de acesso no Sistema e ter feito solicitação da lista de arquivos disponíveis no repositório de arquivos Fluxo principal Ator Sistema 1. Executar o UC 005 - Acessar lista de arquivos 2. Requisita recuperação de arquivo do repositório do Sistema a partir da lista de arquivos 3. Realiza conexão com o servidor FTP do Sistema 4. Solicita a pasta de destino onde será salvo o arquivo do repositório 5. Informa a pasta de destino do arquivo 6. Realiza a cópia do arquivo do repositório 7. Envia cópia do arquivo na pasta de destino informado pelo usuário 8. Informa o sucesso da operação de download do arquivo 9. Sistema fecha a conexão com o servidor FTP do Sistema 10. Confirma o sucesso da operação Fluxo alternativo A - Arquivo não encontrado O fluxo começa no passo 5 do fluxo principal quando o usuário informa a pasta de destino para recuperação de arquivo Ator Sistema 1. Informa arquivo não encontrado B- Erro no envio do arquivo O fluxo começa no passo 7 do fluxo principal quando o Sistema lança uma exceção ao tentar enviar o arquivo solicitado pelo usuário para a pasta de destino informado pelo usuário Ator Sistema 1. Informa falha na operação de download do arquivo UC 004 - Excluir arquivo Descrição Este caso de uso define as etapas percorridas pelo usuário para exclusão de arquivo salvo no repositório do Sistema Ator Usuário cadastrado do Sistema Pré-condições Usuário deve estar cadastrado, ter feito login de acesso no Sistema e ter feito solicitação da lista de arquivos disponíveis no repositório de arquivos Fluxo principal Ator Sistema 1. Executar o UC 005 - Acessar lista de arquivos 2. Requisita exclusão de arquivo do repositório do Sistema 3. Realiza conexão com o servidor FTP do Sistema 4. Realiza a exclusão do arquivo informado pelo usuário no repositório do Sistema 5. Informa o sucesso da operação Fluxo alternativo A - Arquivo não encontrado O fluxo começa no passo 2 do fluxo principal quando o usuário informa o arquivo para exclusão Ator Sistema 1. Informa arquivo não encontrado UC 005 - Acessar lista de arquivos Descrição Este caso de uso define as etapas percorridas pelo usuário para acesso e visualização da lista de arquivos no repositório do Sistema Ator Usuário cadastrado do Sistema Pré-condições Usuário deve estar cadastrado e ter feito login de acesso no Sistema Fluxo principal Ator Sistema 1. Executar o UC001 - Acessar Sistema 2. Requisita acesso a tabela contendo a lista com os registros dos arquivos no Banco de Dados do Sistema 3. Realiza conexão com o Banco de Dados do Sistema 4. Consulta a tabela correspondente aos registros de arquivos no Banco de Dados do Sistema 5. Informa os registros existentes para o usuário 6. Visualiza os registros da tabela correspondente aos arquivos no repositório do Sistema Fluxo alternativo A - Nenhum acesso encontrado O fluxo começa no passo 3 do fluxo principal quando o Sistema consulta a tabela correspondente aos registros de arquivos no Banco de Dados do Sistema Ator Sistema 1. Apresenta uma tabela sem nenhum registro ao usuário UC 006 - Visualizar data do último download dos arquivos no Sistema Descrição Este caso de uso define as etapas percorridas pelo usuário para acesso a tabela de visualização das datas do último download dos arquivos no repositório do Sistema Ator Usuário cadastrado do Sistema Pré-condições Usuário deve estar cadastrado, ter feito login de acesso no Sistema e ter feito solicitação da lista de arquivos disponíveis no repositório de arquivos Fluxo principal Ator Sistema 1. Executar o UC 005 - Acessar lista de arquivos 2. Visualiza a coluna correspondente aos registros da data do último download dos arquivos no repositório do Sistema UC 007 - Visualizar data de upload dos arquivos no Sistema Descrição Este caso de uso define as etapas percorridas pelo usuário para acesso a tabela de visualização das datas de upload dos arquivos no repositório do Sistema Ator Usuário cadastrado do Sistema Pré-condições Usuário deve estar cadastrado, ter feito login de acesso no Sistema e ter feito solicitação da lista de arquivos disponíveis no repositório de arquivos Fluxo principal Ator Sistema 1. Executar o UC 005 - Acessar lista de arquivos 2. Visualiza a coluna correspondente aos registros da data de upload dos arquivos no repositório do Sistema Apêndice G – Diagrama de classes do sistema Apêndice H - Modelo conceitual da base de dados do sistema O diagrama DER apresentado foi baseado a partir do modelo proposto por Peter Chen, a partir da técnica de ER. Nesta técnica, o modelo de dados é representado através de um modelo entidaderelacionamento (modelo ER). Usualmente, um modelo ER é representado graficamente, através de um diagrama entidade relacionamento (DER). A abordagem ER foi criada em 1976 por Peter Chen. Ela pode ser considerada como um padrão de fato para modelagem conceitual. A modelagem ER envolve os seguintes conceitos principais: entidade, relacionamento, atributo, generalização/especialização e entidade associativa. “Entidade = conjunto de objetos da realidade modelada sobre os quais deseja-se manter informações no banco de dados” (HEUSER, 2001, p 23). Relacionamento = conjunto de associações entre entidades. “Em um DER, um relacionamento é representado através de um losango, ligado por linhas aos retângulos representativos das entidades que participam do relacionamento” (HEUSER, 2001, p 24). Em uma representação de relacionamento, existe uma propriedade muito importante que é a representação de quantas ocorrências de uma entidade podem estar associadas a uma determinada ocorrência através deste relacionamento, essa propriedade é chamada de cardinalidade. Existem duas cardinalidades a serem consideradas: a cardinalidade máxima e mínima. “Cardinalidade (mínima, máxima) de entidade em relacionamento = número (mínimo, máximo) de ocorrências de entidade associadas a uma ocorrência da entidade em questão através do relacionamento” (HEUSER, 2001, p 26). No diagrama de ER do projeto, além da representação do relacionamento binário, ou seja, relacionamento representando duas entidades foi representado também a representação de mais de duas entidades associadas (através da entidade Relatório relacionada com Arquivo, Pasta e Cliente). A esse tipo de relacionamento, damos o nome de Relacionamento Ternário. “Atributo = dado que é associado a cada ocorrência de uma entidade ou de um relacionamento” (HEUSER, 2001, p 34) Em cada entidade, existe um ou mais atributos que o distinguem das demais entidades, esse atributo é chamado de atributo identificador. “Um identificador é um conjunto de um ou mais atributos cujos valores servem para distinguir uma ocorrência da entidade das demais ocorrências da mesma entidade” (HEUSER, 2001, p 35) “Além de relacionamentos e atributos, propriedades podem ser atribuídas a entidades através do conceito de generalização/especialização. Através deste conceito é possível atribuir propriedades particulares a um subconjunto das ocorrências (especializadas) de uma entidade genérica” (HEUSER, 2001, p 39). O símbolo para representar generalização/especialização é um triângulo isósceles, conforme mostra a seguinte figura: No modelo proposto para representar o Banco de Dados relacional deste projeto não houve a ocorrência de generalização/especialização. Entidade Associativa = é a ocorrência de uma nova entidade surgida através da associação de duas entidades que possuem um relacionamento de n : n (muitos para muitos). No código-fonte do projeto, o mapeamento do Banco de Dados Relacional adotado para o Sistema do projeto foi realizado através do mecanismo de ORM (Object-Relational Mapping). Este mecanismo mapeia automaticamente objetos Java (classes de entidade de banco de dados, por exemplo) para e a partir de um banco de dados relacional, oferece linguagem de consulta semelhante a SQL para trabalhar com estes objetos, e são responsáveis pelas ações que envolvem a persistência ao banco de dados para realizar as seguintes tarefas: – Gerenciamento do mapeamento Objeto-Relacional; – Possibilidade para criar consultas, localizar objetos, sincronizar objetos e inserir objetos no banco de dados; – Co-gerenciamento das transações que envolvem entidades Objeto-Relacional. Este serviço gerencia (acopla) o objeto Java que realiza o mapeamento OR. Quando este objeto está acoplado ao serviço de Entity Manager: – O Entity Manager monitora as alterações no estado da entidade do banco de dados; – Sincroniza essas alterações com o banco de dados; A representação do modelo ER representando as entidades existentes para a criação da Base de Dados do Sistema do projeto (modelo conceitual) segue abaixo: Documentação do modelo lógico da base de dados do Projeto Modelo lógico = modelo de dados que representa a estrutura de dados de um banco de dados conforme vista pelo usuário do SGBD.(HEUSER, 2001, p 18) A representação do modelo lógico para a criação da Base de Dados do Sistema do projeto segue abaixo: Usuario (Codigo, Username, Senha) Arquivo (Codigo, Nome, Tamanho, TipoArquivo, DataUpload, DataDownload, DataExclusao, Usuario) Usuario referencia Usuario Documentação do modelo físico da base de dados do Projeto Modelo físico = Detalha o armazenamento interno de informações, que não tem influencia sobre a programação de aplicações no SGBD, mas podem influenciar a performance das aplicações (por exemplo, as estruturas de arquivos usadas no acesso as informações). A representação do modelo físico para a criação da Base de Dados do Sistema do projeto é apresentada a seguir: Nome da Tabela Descrição Coluna Codigo Username Senha Usuario Estrutura que armazena informações sobre os usuários do Sistema Descrição Tipo de dado ID do cliente Int(10) Nome do cliente Varchar(50) Senha do cliente Int(10) Nome da Tabela Descrição Coluna Codigo Nome Tamanho TipoArquivo DataUpload DataDownload DataExclusao Usuario Arquivo Estrutura que armazena informações sobre os arquivos dos usuários Descrição Tipo de dado ID do arquivo Int(10) Nome do arquivo Varchar(50) Tamanho (em bytes) do arquivo Int(10) 0 = arquivo, 1 = diretório Int(10) Data de inclusão do arquivo no repositório Varchar(50) Última data de download do arquivo Varchar(50) Data de exclusão do arquivo Varchar(50) Nome do usuário dono do arquivo Varchar(50) Nulo N N N Nulo N N N N N S S N Seqüencial Consistência S PK N N Seqüencial S N N N N N N N Consistência PK A representação das tabelas para a criação da Base de Dados do Sistema do projeto segue abaixo: Bibliografia: HEUSER, C. A. Projeto de banco de dados. [S.l.]: Sagra Luzzatto, 2001. ISBN 8524105909. Softwares utilizados para a modelagem do Banco de Dados: Brmodelo Versão 2.0.0 Desenvolvedores: Carlos Henrique Cândido sob a orientação do Prof. Dr. Ronaldo dos Santos Mello (UFSC), como trabalho de conclusão do curso de pós-graduação em banco de dados (UNVAG - MT e UFSC). DBDesigner Versão 4.0.5.6 Desenvolvedor: Michael G. Zinner (fabForce) Apêndice I – Diagramas de seqüência do sistema Apêndice J – Diagrama de componentes do sistema