DESENVOLVIMENTO DE UMA FERRAMENTA COLABORATIVA FUNDAMENTADA NOS CONCEITOS DE WEB 2.0



Documentos relacionados
UFG - Instituto de Informática

UNIVERSIDADE. Sistemas Distribuídos

Integração de sistemas utilizando Web Services do tipo REST

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

INTEGRAÇÃO DE APLICAÇÕES UTILIZANDO WEB SERVICE 1. Kellen Kristine Perazzoli 2 ; Manassés Ribeiro 3

3 Serviços na Web (Web services)

Serviços Web: Arquitetura

Noções de. Microsoft SQL Server. Microsoft SQL Server

Introdução ao Modelos de Duas Camadas Cliente Servidor

Sistemas Distribuídos

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

Web Services. Autor: Rômulo Rosa Furtado

DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5 E CSS3

Introdução a Web Services

Curso de Aprendizado Industrial Desenvolvedor WEB

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

PADRÕES PARA O DESENVOLVIMENTO NA WEB

SOA Introdução. SOA Visão Departamental das Organizações

2 Conceitos relativos a Web services e sua composição

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

18/04/2006 Micropagamento F2b Web Services Web rev 00

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Service Oriented Architecture (SOA)

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Semântica para Sharepoint. Busca semântica utilizando ontologias

Aplicativos para Internet Aula 01

Anexo VI Edital nº 03361/2008. Projeto de Integração das informações de Identificação Civil. 1. Definições de interoperabilidade adotadas pela SENASP

Kassius Vargas Prestes

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Fase 1: Engenharia de Produto

Programando em PHP. Conceitos Básicos

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Sistemas Distribuídos

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Um Driver NDIS Para Interceptação de Datagramas IP

DESENVOLVIMENTO DE SOFTWARE DE VOTAÇÃO WEB UTILIZANDO TECNOLOGIA TOUCHSCREEN

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

PROGRAMAÇÃO SERVIDOR WEBSERVICES EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Documento de Arquitetura

Desenvolvendo para WEB

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

SISTEMAS DISTRIBUÍDOS

Figura 1 - Arquitetura multi-camadas do SIE

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

Desenvolvendo Websites com PHP

Universidade Federal de Juiz de Fora Ciência da Computação Sistemas Distribuídos Professor Ciro Barbosa

Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Felippe Scheidt IFPR Campus Foz do Iguaçu 2014/2

Serviços Web: Introdução

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

Microsoft.NET. Desenvolvimento Baseado em Componentes

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS

Web Services. (Introdução)

Tópicos de Ambiente Web. Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres

Lista 3 Exercícios de Gestão de Redes

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

SQL APOSTILA INTRODUÇÃO A LINGUAGEM SQL

A computação na nuvem é um novo modelo de computação que permite ao usuário final acessar uma grande quantidade de aplicações e serviços em qualquer

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

XHTML 1.0 DTDs e Validação

Rotina de Discovery e Inventário

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA ETEC PROF. MÁRIO ANTÔNIO VERZA CURSO TÉCNICO EM INFORMÁTICA PARA INTERNET

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Programação para a Web - I. José Humberto da Silva Soares

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

2 Geração Dinâmica de Conteúdo e Templates de Composição

Introdução à Tecnologia Web. Tipos de Sites. Profª MSc. Elizabete Munzlinger

SOA na Prática Ricardo Limonta

Orientação a Objetos

Web Design. Prof. Felippe

Prof. Marcelo Machado Cunha

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

3 SCS: Sistema de Componentes de Software

UML - Unified Modeling Language

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

UML 2. Guia Prático. Gilleanes T.A. Guedes. Novatec. Obra revisada e ampliada a partir do título Guia de Consulta Rápida UML 2

ISO/IEC 12207: Gerência de Configuração

MANUAL DE IMPLANTAÇÃO SISTEMA DE INVENTÁRIO CACIC GOVERNO FEDERAL SOFTWARE PÚBLICO

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Arquitetura dos Sistemas de Informação Distribuídos

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

BEM-VINDOS AO CURSO DE ORIENTADO A OBJETOS

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

Documento de Análise e Projeto VideoSystem

Desenvolvimento de aplicações web com JSP

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Análise e Projeto Orientados por Objetos

4 Estrutura do Sistema Operacional Kernel

Tecnologia PCI express. Introdução. Tecnologia PCI Express

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

Transcrição:

FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃO RAPHAEL BATISTA SALDANHA DESENVOLVIMENTO DE UMA FERRAMENTA COLABORATIVA FUNDAMENTADA NOS CONCEITOS DE WEB 2.0 Fortaleza 2008 RAPHAEL BATISTA SALDANHA

DESENVOLVIMENTO DE UMA FERRAMENTA COLABORATIVA FUNDAMENTADA NOS CONCEITOS DE WEB 2.0 Monografia apresentada para obtenção dos créditos da disciplina Trabalho de Conclusão do Curso da Faculdade Farias Brito, como parte das exigências para graduação no Curso de Ciência da Computação. Orientador: Me. Ricardo Wagner. Fortaleza 2008 II

DESENVOLVIMENTO DE UMA FERRAMENTA COLABORATIVA FUNDAMENTADA NOS CONCEITOS DE WEB 2.0 Raphael Batista Saldanha PARECER: NOTAS: MONOGRAFIA (ESCRITA): APRESENTAÇÃO (ORAL): BANCA EXAMINADORA: Prof. Me. Ricardo Wagner Cavalcante Brito (Orientador) Profª. Dra. Wietske Ineke Meyering (Examinador) Prof. Me. Sérgio Araújo Yunes (Examinador) III

RESUMO Devido à necessidade de fornecer um meio no qual alunos, professores e colaboradores da Faculdade Farias Brito possam compartilhar conhecimento e informações, torna-se indispensável o desenvolvimento de uma aplicação que realize essa tarefa. A realização dessa pesquisa foi motivada pelo objetivo de possibilitar o compartilhamento, bem como a gestão do conhecimento gerado no contexto da Faculdade Farias Brito. Baseado nos conceitos de engenharia de software descritos por Ort (2005) e nos fundamentos do desenvolvimento de aplicações web descritos por O Reilly (2004), o desenvolvimento de um software colaborativo foi a solução encontrada para permitir gestão do conhecimento no contexto da Faculdade Farias Brito. Foi realizada uma revisão bibliográfica sobre os métodos, as ferramentas e as tecnologias mais utilizadas atualmente, e em especial, as que possibilitam o desenvolvimento de aplicações web. O desenvolvimento do software FFB Wiki foi a solução metodológica adotada para fornecer um meio no qual alunos, professores e colaboradores da Faculdade Farias Brito possam compartilhar conhecimento entre si. Como resultado desse trabalho, fazendo uso de tecnologias que possibilitam um melhor desempenho e uma maior usabilidade e tendo como base uma arquitetura de software bem estrutura, foi obtido um meio eficaz e de fácil utilização que permite o desenvolvimento intelectual, pessoal e profissional dos alunos, professores e colaboradores da Faculdade Farias Brito. Palavras chave: Web 2.0, Plataforma web, Web Services, SOA, SOAP e Arquitetura de Software. IV

A meu irmão Alisson Batista de Medeiros V

AGRADECIMENTOS Aos meus pais, Francisco Cunha Saldanha e Zidiê Batista de Medeiros, a minha avó Antonia Batista de Almeida e à minha irmã, Sara Batista de Medeiros, pelo apoio, dedicação, conselhos e admirável paciência. Ao Professor Jorge Albuquerque, por seu apoio e estimulo no início do curso. Ao Professor Ricardo Wagner, pela confiança, amizade, dedicação, competência e inestimável orientação, estando sempre disponível e comprometido com a qualidade do trabalho. Ao Professor Pitágoras Martins, pelo estímulo, confiança, amizade e dedicação. Ao meu amigo Felipe Oquendo Nogueira, por ter me ensinado e me guiado em todos esses anos de faculdade. Ao meu amigo Patrick Romero Quinderé Frota, por seu apoio incondicional em todos os momentos. Aos colegas e professores do curso, pelo incentivo e apoio. A todos aqueles que de forma direta ou indireta, colaboraram para a conclusão deste trabalho. VI

SUMÁRIO INTRODUÇÃO... 1 1 Web 2.0... 5 1.1 Tecnologias da Web 2.0... 6 1.2 Plataforma Web... 7 1.3 Tecnologias da Plataforma Web... 8 1.3.1 SOA... 9 1.3.2 Web Services... 9 2 Tecnologias... 18 2.1 Arquitetura Cliente/Servidor... 18 2.2 Linguagem HyperText Markup... 19 2.3 Cascading Style Sheet e JavaScript... 20 2.4 Linguagem Estruturada de Consultas... 21 2.5 Windows Communication Foundation... 21 2.6 LINQ... 22 3 Metodologia... 24 4 Arquitetura Proposta... 27 4.1 Camada de Apresentação... 27 4.2 Camada de Serviços... 30 4.3 Camada Lógica... 31 4.4 Camada de Dados... 39 5 FFB Wiki... 47 5.1 Desenvolvimento do FFB Wiki... 48 5.2 Interfaces do FFB Wiki... 48 5.2.1 Módulo Arquivos... 49 5.2.2 Módulo Cursos... 53 5.2.3 Módulo Debates... 55 5.2.4 Módulo Perguntas... 59 5.2.5 Módulo Usuários... 63 5.3 Funcionalidades da Solução... 65 6 Resultados Obtidos... 66 7 Conclusão... 67 7.1 Trabalhos Futuros... 67 8 Referências Bibliográficas... 68 VII

LISTA DE FIGURAS Figura 1 Exemplo de XML... 11 Figura 2 Exemplo de Mensagem SOAP... 12 Figura 3 Exemplo do elemento <definitions>... 13 Figura 4 Exemplo do elemento <types>... 14 Figura 5 Exemplo do elemento <message>... 14 Figura 6 Exemplo do elemento <porttype>... 15 Figura 7 Exemplo do elemento <binding>... 15 Figura 8 Exemplo do elemento <service>... 16 Figura 9 UDDI... 17 Figura 10 Arquitetura Cliente/Servidor... 19 Figura 11 Exemplo de consulta em uma fonte de informações em memória utilizando LINQ... 22 Figura 12 Arquitetura do LINQ... 23 Figura 13 Comunicação entre a Camada de Apresentação e a Camada Web... 28 Figura 14 Diagrama de entidades... 29 Figura 15 Comunicação na camada de serviços... 31 Figura 16 Interfaces da camada lógica... 32 Figura 17 Classes concretas da camada lógica... 34 Figura 18 Interfaces da camada de dados... 40 Figura 19 classes concretas da camada de dados... 42 Figura 20 - Tela de Arquivos... 49 Figura 21 - Tela de Filtros de Arquivo... 50 Figura 22 Tela de Versões de Arquivo... 50 Figura 23 Tela de Manutenção de Arquivo... 51 Figura 24 Tela de Compartilhamento de Arquivo... 51 Figura 25 Tela de Assuntos de Arquivo... 52 Figura 26 Tela de Manutenção de Assuntos de Arquivo... 52 Figura 27 Tela de Cursos... 53 Figura 28 Tela de Filtros de Curso... 54 Figura 29 Tela de Manutenção de Curso... 54 Figura 30 Tela de Debates... 55 Figura 31 Tela de Manutenção de Debates... 56 Figura 32 Tela de Itens de Debate... 57 Figura 33 Tela de Manutenção de Itens de Debate... 58 Figura 34 Tela de Perguntas... 59 Figura 35 Tela de Manutenção de Perguntas... 60 Figura 36 Tela de Respostas... 61 Figura 37 Tela de Manutenção de Respostas... 62 Figura 38 Tela de Usuários... 63 Figura 39 Tela de Filtros de Usuário... 64 Figura 40 Tela de Manutenção de Usuários... 64 VIII

LISTA DE ABREVIATURAS ANSI GUJ HTTP HTML IBM IDE IIS LINQ OASIS Information Standards SOA SOAP SQL TCP UDDI UDP URI WCF WSDL WWF W3C XML American National Standards Institute Grupo de Usuários Java Hypertext Transfer Protocol Hyper Text Markup Language International Business Machines Integrated Development Environment Internet Information Service Language Integrated Query Organization for the Advancement of Structured Service-Oriented Architecture Simple Object Access Protocol Structured Query Language Trasmission Control Protocol Universal Description, Discovery and Integration User Datagram Protocol Uniform Resource Identifier Windows Communication Foundation Web Services Description Language Workflow Foundation World Wide Web Consortium extensible Markup Language IX

INTRODUÇÃO A Web, para chegar a sua fase 2.0, necessitou passar por um longo processo de amadurecimento e por vários obstáculos que vão desde tecnologias que permitissem seu desenvolvimento até a crença de que a Web já estava bastante desenvolvida. Como ela foi projetada inicialmente para o simples compartilhamento de documentos, fazia-se necessário uma mudança no valor da Web para seus usuários para que a mesma pudesse evoluir (O REILLY, 2004). Segundo O Reilly (O REILLY, 2004), a Web, com o passar dos anos, evoluiu e se tornou uma rede de alcance mundial, onde pessoas de todos os lugares podiam se conectar e compartilhar informações entre si. Nesse contexto, surgiu a necessidade de maior interação do usuário com a Web, dando início ao processo de transição para sua fase 2.0. Essa nova fase da Web, além de permitir o compartilhamento de informações entre seus usuários de um modo distinto, possibilitou também uma maior colaboração entre os mesmos. Esse é um dos principais aspectos dessa nova fase, na qual os usuários deixam de ser apenas leitores de informações para também serem produtores, tornando assim a Web dinâmica e colaborativa (O REILLY, 2004). Dentre as aplicações disponíveis na Web que ilustram esses aspectos, é possível citar, a enciclopédia Wikipédia (http://pt.wikipedia.org/) cujo conteúdo é produzido, editado e validado por seus próprios usuários e o website Flickr (http://www.flickr.com/) que permite a criação de álbuns e o compartilhamento de fotografias entre usuários de todo o mundo. Vários fatores contribuíram para o avanço da Web em direção a sua fase 2.0, dentre esses é possível citar alguns que foram de fundamental importância para que isso ocorresse: A popularização da banda larga; Surgimento de tecnologias que possibilitam uma experiência de navegação mais rica para o usuário; 1

Melhoria das técnicas de desenvolvimento de aplicações web, que possibilitaram maior qualidade nos serviços disponibilizados na Web; Crescimento do interesse de pessoas e empresas de se conectarem a rede. Indo além, os conceitos e tecnologias disponíveis na Web 2.0 permitem que aplicações sejam desenvolvidas a partir de outras já existentes. Desse modo, é possível o crescimento mais rápido, com mais atrativos e funcionalidades nessa nova fase. Esse é justamente um dos principais fundamentos da Web 2.0, que apresenta a grande rede como uma plataforma de serviços, na qual aplicações podem e devem utilizar e disponibilizar recursos na Web (O REILLY, 2004). Motivação Cursos de Ciência da Computação geralmente possuem em seu currículo diversas disciplinas voltadas para o desenvolvimento de software. Na Faculdade Farias Brito, a existência do interesse em fornecer um amplo estudo sobre os principais aspectos relativos ao desenvolvimento de software pode ser observada nas ementas de disciplinas como: Estruturas de Dados I e II, Lógica de Programação I e II, Técnicas de Programação, Construção e Análise de Algoritmos, Bancos de Dados I e II, Engenharia de Software, Análise Orientada a Objetos, Programação para Web, Gerência de Projetos e Teoria Geral dos Sistemas. Essas disciplinas, quando reunidas, fornecem aos alunos da Faculdade Farias Brito uma base sólida, que será de grande importância para seu amadurecimento profissional, uma vez que o mercado de trabalho vem se tornando cada vez mais competitivo. Buscando reunir o conhecimento adquirido ao longo do curso de Ciência da Computação, este trabalho foi desenvolvido com o objetivo de fornecer informações e práticas atuais tanto sobre o desenvolvimento de aplicações baseadas no conceito de Web 2.0 quanto sobre o desenvolvimento de aplicações baseadas no conceito da arquitetura Service-Oriented Architecture (SOA). 2

Além disso, foi descrita a aplicação que faz uso de todo o conhecimento obtido ao longo do curso de Ciência da Computação para fornecer aos alunos, professores e colaboradores da Faculdade Farias Brito um meio no qual possam compartilhar conhecimento e informações a fim de tornar ainda mais eficaz a difusão de conhecimento no contexto da faculdade. Objetivos Esse trabalho tem como objetivo realizar um estudo do conceito de Web 2.0 e se propõe a projetar e disponibilizar uma plataforma de desenvolvimento baseada em serviços, além de desenvolver um software colaborativo que utilize os conceitos de Web 2.0, fazendo uso das melhores práticas de desenvolvimento web e fornecendo uma experiência rica de navegação para o usuário. Inicialmente, foi realizado o processo de desenvolvimento envolvendo o levantamento de requisitos e a geração inicial da estrutura de código do projeto que contemplará o modelo entidade-relacional; a estrutura de regras de negócio e as classes de acesso a dados que se limitam às operações de leitura, escrita, atualização e remoção. Os objetivos específicos são os seguintes: Definir os conceitos e tecnologias da Web 2.0; Desenvolver uma ferramenta colaborativa baseada nos conceitos de Web 2.0, que forneça um meio no qual seus usuários possam realizar o compartilhamento de conhecimento, abrindo espaço para a troca de informações e para o crescimento pessoal e profissional. 3

Organização do Trabalho Este trabalho está organizado como se segue. O capitulo 1 Web 2.0: Apresenta uma visão geral do termo Web 2.0 e detalha a definição tratada neste trabalho a Web como plataforma de software. Esse capítulo apresenta também as principais soluções e tecnologias usadas para construir a plataforma Web. No capitulo 2 Tecnologias: São apresentadas as tecnologias e os conceitos utilizados na elaboração do projeto e em sua implementação. O capitulo 3 Metodologia: São apresentadas as ferramentas utilizadas e a solução técnica adotada para o desenvolvimento do protótipo. O capitulo 4 Arquitetura Proposta: Descreve a arquitetura a ser utilizada para o desenvolvimento do protótipo. O capitulo 6 FFB Wiki: Descreve o FFB Wiki. trabalho. No Capítulo 7 Resultados Obtidos: Reúne os principais resultados deste No Capítulo 8 Conclusão: Reúne as principais conclusões deste trabalho e perspectivas futuras. 4

1 Web 2.0 No ano de 2001 houve uma grande mudança no cenário da Web. Esse período foi marcado pelo aparente colapso de inúmeras empresas ponto-com, a maioria criada de forma oportunista durante os dois anos anteriores. Porém, durante uma conferência promovida pela O Reilly Media e MediaLive International no ano de 2004, Dale Doughherty pioneiro da Web e vice-presidente da O Reilly, notou que, ao contrário de haver regredido, a Web estava mais dinâmica, crescendo cada vez mais e pronta para ser substituída por uma tecnologia ascendente (O REILLY, 2004). Com o passar do tempo, tornou-se evidente que após seu suposto colapso, a Web tinha sofrido diversas mudanças, dentre essas, principalmente em sua arquitetura, suas aplicações e suas formas de uso, indicando assim que a mesma encontrava em um novo estágio de seu desenvolvimento (O REILLY, 2004). Os principais aspectos dessa nova fase da Web são descritos por O Reilly (O REILLY, 2004): A transição de sites estáticos para sites dinâmicos; Uma mudança no valor socioeconômico da Web; Colaboração e participação dos usuários; Uma atitude, não uma tecnologia; Confiança em seus usuários; Experiência rica do usuário. A Web 2.0 se caracteriza por uma nova forma de navegar pela Internet, na qual seus utilizadores deixam de ser apenas leitores de informações, uma vez que o conteúdo existente na mesma pode ser editado por seus próprios usuários. Outro aspecto importante é o que fornece a Web como uma plataforma de serviços, onde seus usuários não precisam ter um computador com grande poder de processamento já que as aplicações acessadas fazem uso de recursos disponibilizados por outros. A distribuição do processamento dos dados é realizada entre várias máquinas, fazendo do computador que o usuário utiliza apenas uma plataforma de acesso para aplicativos da Web. 5

As características fundamentais da Web 2.0 são descritas por O Reilly (O REILLY, 2004): O usuário deixa de ser apenas um leitor de informações em uma página para se tornar um produtor de informações, inserindo e editando conteúdos já existentes na Web; Informações e conhecimento deixam de ser armazenados localmente para ser compartilhados na rede e tornam-se acessíveis a outros usuários; Para que seja possível visualizar os conceitos da Web 2.0 aplicados no mundo real, a seguir são apresentadas aplicações que foram desenvolvidas com base nesses conceitos: Youtube (http://www.youtube.com): permite que seus usuários carreguem, assistam e compartilhem vídeos em formato digital; Enciclopédia Wikipédia (http://pt.wikipedia.org): tem todo seu conteúdo produzido, editado e validado por seus próprios usuários; Flickr (http://www.flickr.com): permite que seus usuários criem álbuns, realizem o compartilhamento de fotografias e entrem em contato com fotógrafos de qualquer lugar do mundo; Google Docs (http://docs.google.com): possibilita a portabilidade de documentos, que permite a edição do mesmo documento por mais de um usuário. 1.1 Tecnologias da Web 2.0 A Web como conhecemos atualmente é conseqüência do surgimento de várias tecnologias, o aprimoramento de outras já existentes e a consolidação de princípios e práticas que tornaram possível seu desenvolvimento rápido e consistente da Web. A seguir são descritas as principais tecnologias utilizadas no desenvolvimento de aplicações na Web 2.0: AJAX: torna as páginas web mais dinâmicas, possibilitando assim uma navegação mais rica para o usuário (FLANAGAN, 2002); 6

XML: linguagem que se estabeleceu como padrão mundial para a troca de dados entre aplicações (MARCHAL, 2000); CSS: permite a estilização de um aplicativo web (W3C, 2008); SOA: fornece um modelo no qual uma aplicação possa ser disponibilizada como serviço (ORT, 2005). Essas tecnologias atendem aos requisitos básicos da Web 2.0, onde, além de ser necessário fornecer uma interface rica e amigável para o usuário, é preciso disponibilizar essas aplicações como serviços. 1.2 Plataforma Web Um dos principais aspectos da Web 2.0 se refere ao fato de que as aplicações desenvolvidas para essa nova fase da Web podem tanto utilizar recursos já existentes quanto podem ter seus recursos utilizados por outras aplicações. Dessa maneira, a Web se apresenta como um repositório de aplicações que interagem entre si para disponibilizar funcionalidades para seus usuários. As aplicações que utilizam ou que fornecem seus recursos e funcionalidades na Web implementam a arquitetura Service-Oriented Architecture (SOA), que é baseada nos princípios de computação distribuída. Essas aplicações são disponibilizadas na Web através de Web Services, que fazem uso de extensible Markup Language (XML), uma linguagem de marcação utilizada para descrever a aplicação e suas respectivas funcionalidades de modo que outras aplicações possam se comunicar de maneira adequada com a mesma, além de ser utilizado também para realizar o transporte de informações entre essas aplicações (ORT, 2005). Além das inúmeras vantagens de se usar XML para descrever a aplicação e para realizar o transporte de informações entre aplicações, o que o torna imprescindível para atender aos princípios da Web 2.0 é o fato dessa linguagem possibilitar que uma aplicação seja utilizada por qualquer outra independentemente de linguagem e/ou plataforma, tornando-se ideal no meio heterogêneo em que a Web se encontra atualmente (SEELY, 2002). 7

1.3 Tecnologias da Plataforma Web Tecnologias como Service-Oriented Architecture (SOA) e Web Services são indispensáveis para o desenvolvimento de aplicações e, quando bem empregadas, podem trazer grandes benefícios para o processo de desenvolvimento de software como um todo. Dentre os benefícios encontrados ao se utilizar essas tecnologias podemos citar: Facilidade na integração com outros sistemas: como as aplicações são disponibilizadas através de web services é possível que uma aplicação interaja com outra aplicação de modo transparente; Maior agilidade no processo de desenvolvimento: como a aplicação pode ser construída em módulos é possível uma realizar uma divisão durante o processo de desenvolvimento, atribuindo a cada grupo de desenvolvedores o módulo no qual seus desenvolvedores têm maior experiência; Menor custo na manutenção do sistema: como o sistema pode ser construído em módulos é possível realizar a manutenção de um módulo separadamente; Menor gasto com equipamentos: como a aplicação pode de seus módulos disponibilizados e processados em computadores vários computadores são necessários computadores mais simples ao invés de um com grande poder computacional; Melhor desempenho: pois a aplicação pode de seus módulos disponibilizados e processados em computadores vários computadores. A seguir são descritas as tecnologias mais utilizadas no desenvolvimento de aplicações para a Web 2.0: SOA, Web Services, XML, SOAP, WSDL e UDDI. 8

1.3.1 SOA Service-Oriented Architecture (SOA) é um modelo de arquitetura de software que fornece um padrão no qual arquitetos e/ou desenvolvedores de softwares possam desenvolver aplicações que utilizem ou que possam ser utilizadas por outras aplicações, ou seja, permitindo assim a compartilhamento de funcionalidades e recursos computacionais entre aplicações distintas (ORT, 2005). Permitir o compartilhamento de recursos computacionais é uma das grandes vantagens de SOA, pois ao se utilizar a mesma para conectar aplicações é possível obter uma redução significante nos gastos em equipamentos e em manutenção, bem como aumentar o desempenho da aplicação como um todo (ORT, 2005). Para uma aplicação-cliente realizar uma comunicação com um serviço disponível na Web é necessário que a mesma conheça a especificação desse serviço. Para isso é necessário que o serviço forneça uma interface bem definida dos métodos que serão disponibilizados. Porém, basta que a aplicação-cliente tenha conhecimento da definição dos métodos que o serviço disponibiliza, não importando como ou em qual linguagem de programação o mesmo os implementa. Desse modo, uma vez que não ocorra alteração na interface, o cliente ainda irá poder se comunicar com o serviço mesmo que esse tenha sofrido alteração na implementação de seus métodos (ORT, 2005). Normalmente, a comunicação das aplicações que se baseiam em SOA é realizada através de Web Services, que serão descritos a seguir. 1.3.2 Web Services Web Services representam uma solução adotada a nível mundial tanto para realizar a integração quanto para a comunicação entre aplicações. Os Web Services realizam o transporte de dados entre aplicações via protocolo HTTP (Hypertext Transfer Protocol) no formato XML que é encapsulado pelo protocolo SOAP (Simple Object Access Protocol) (ORT, 2005). Os aspectos de cada tecnologia mencionada acima serão abordados posteriormente. 9

É indispensável o uso de XML no contexto no qual a Web está inserida atualmente, pois o mesmo permite que uma aplicação possa ser utilizada por qualquer outra independentemente de linguagem de programação e/ou plataforma (ORT, 2005). No desenvolvimento de Web Services são utilizadas as seguintes tecnologias: XML, SOAP, WSDL e UDDI. XML Em meados da década de 1990, pela insatisfação com os formatos existentes e pela necessidade de se criar uma linguagem padronizada para a transferência de dados entre aplicações o World Wide Web Consortium (W3C) criou o extensible Markup Language (XML) que é uma linguagem de marcação simples e de grande legibilidade tanto para humanos como para máquinas (GUJ, 2008). O XML é uma linguagem extensível, que possibilita a criação de marcações (tags) sem qualquer limitação. Isso faz com que o XML seja ideal para estruturação de dados organizados de forma hierárquica, o que é de grande importância nos dias de hoje, onde as informações necessitam ser bem estruturadas para que aplicações distintas possam entendê-las (GUJ, 2008). A estrutura XML, apresentada na Figura 1, fornece um exemplo de um documento. Esse exemplo demonstra a flexibilidade existente nos documentos XML onde uma tag pode conter qualquer informação. Além disso, uma tag poder ter ou não atributos associados a ela. O exemplo também aborda uma característica descrita anteriormente, a legibilidade do documento. Por possuir uma estrutura bem definida, um documento XML também é facilmente interpretado por sistemas computacionais (W3C, 2004). 10

<?xml version="1.0" encoding="utf-8"?> <root> <class name="ffbwiki.net.dal.sqldao.cursodao"> <query name="insert"> INSERT INTO Cursos (Nome) VALUES (@Nome) </query> <query name="update"> UPDATE Cursos SET Nome = @Nome WHERE ID = @ID </query> <query name="delete"> DELETE FROM Cursos WHERE ID = @ID </query> <query name="getbyid"> SELECT TOP 1 * FROM Cursos WHERE ID = @ID </query> <query name="getall"> SELECT * FROM Cursos </query> <query name="selecionarpornome"> SELECT * FROM Cursos WHERE Nome like @Nome </query> </class> </root> Figura 1 Exemplo de XML Embora um documento XML seja flexível, ele deve atender a um único e indispensável requisito: ter somente um elemento raiz (GUJ, 2008). SOAP Como foi discutido no tópico anterior, XML é um padrão adotado a nível mundial para a troca de informações entre aplicações. Porém, para que essa comunicação seja realizada, é necessário definir uma maneira no qual seja possível construir mensagens que possam trafegar por diferentes protocolos e que garanta a interoperabilidade e intercomunicação entre aplicações distintas (SEELY, 2002). Essa tarefa é de responsabilidade do Simple Object Access Protocol (SOAP), que é um protocolo definido pelo World Wide Web Consortium (W3C). Esse protocolo é baseado em XML e HTTP e tem como objetivo realizar o transporte de informações estruturadas (SEELY, 2002). Os elementos necessários para a transmissão de dados utilizando SOAP são descritos por Seely (SEELY, 2002): 11

Envelope: É obrigatório na transmissão de toda mensagem SOAP. É o elemento raiz do documento XML. O Envelope pode conter declarações de dois elementos: o Namespaces: são os responsáveis por evitar o conflito de nomes dentro do arquivo. o encodingstyle: define como será feita a representação dos dados no documento XML. Cabeçalho: É opcional na transmissão, porém quando for utilizado deve obrigatoriamente ser o primeiro elemento do Envelope. É responsável por carregar informações adicionais. Corpo: É obrigatório na transmissão de toda mensagem SOAP. Contém a informação a ser transportada para o seu destino final. Na Figura 2, visualiza-se um exemplo de mensagem SOAP que apresenta os três elementos que foram descritos anteriormente. <?xml version="1.0" encoding="utf-8"?> <soap:header> <m:trans xmlns:m=" http://www.ffb.edu.br/wiki" soap:mustunderstand="1"> 234 </m:trans> </soap:header> <soap:envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingstyle="http://www.w3.org/2001/12/soap-encoding"> <soap:body xmlns:m="http://www.ffb.edu.br/wiki"> <m:getinfousuario> <m:nome>raphael</m:nome> <m:sobrenome> Saldanha </m:sobrenome> <m:telefone> 9999-8888 </m:telefone> <m:cidade> Fortaleza </m:cidade> <m:curso> Ciência da Computacao </m:curso> <m:semestre> Oitavo </m:semestre> </m:getinfousuario> </soap:body> </soap:envelope> Figura 2 Exemplo de Mensagem SOAP 12

WSDL Como descrito anteriormente, aplicações podem ser disponibilizadas na Web através de web services, porém, é necessário que seus utilizadores conheçam sua definição: como acessá-la e quais métodos a mesma disponibiliza. Para realizar essa tarefa, utiliza-se a Web Services Description Language (WSDL), que é uma linguagem baseada em XML desenvolvida em conjunto pela Ariba, IBM e Microsoft no início do ano de 2001 (RECKZIEGEL, 2006). Os elementos fundamentais que compõem um documento WSDL são descritos por Chirstensen (RECKZIEGEL, 2006). Elemento <definitions>: é a tag raiz do documento WSDL. É utilizado para definir os namespaces utilizados no documento. Na Figura 3, visualiza-se a definição de vários namespaces de um documento WSDL através do elemento <definitions> Figura 3 Exemplo do elemento <definitions> 13

mensagem. Elemento <types>: é utilizado para informar os tipos de dados presentes na Na Figura 4, visualiza-se a definição de vários tipos de dados de um documento WSDL através do elemento <types>. Figura 4 Exemplo do elemento <types> Elemento <message>: é utilizado para informar os dados que serão transmitidos. Para cada elemento <message> pode existir um ou mais elementos <part>, que representam os parâmetros de entrada e de saída que a mensagem retorna. Na figura 5, visualiza-se a definição de parâmetros de entrada e de saída de um documento WSDL através do elemento <message>. Figura 5 Exemplo do elemento <message> 14

Elemento <porttype>, define quais métodos serão disponibilizados. Na figura 6, visualiza-se a definição uma operação, bem como a definição de seus parâmetros de entrada e saída. Figura 6 Exemplo do elemento <porttype> Elemento <binding>: define como a mensagem será transmitida para um porttype em particular. Na figura 7, visualiza-se o exemplo do elemento <binding>. Figura 7 Exemplo do elemento <binding> 15

Elemento <service>: define a localização do serviço. Na figura 8, visualiza-se o exemplo do elemento <service>. Figura 8 Exemplo do elemento <service> UDDI O Universal Description, Discovery and Integration (UDDI) é uma especificação técnica baseada em XML que foi desenvolvida no ano de 2001 em conjunto pela Ariba, IBM e Microsoft, com patrocínio da Organization for the Advancement of Structured Information Standards (OASIS). Essa especificação tem como objetivo descrever, descobrir e integrar serviços disponíveis na Web (SNELL; TIDWELL; KULCHENKO, 2001). Uma maneira de uma aplicação-cliente se comunicar com um serviço disponível na Web é fazer com que a mesma conheça estaticamente a localização desse serviço através de um Uniform Resource Identifier (URI). Porém, existem casos em que a aplicação-cliente não conhece a URI do serviço, nesses casos é necessário que exista uma forma dinâmica para descobrir a localização desse serviço. Essa é uma das funcionalidades do UDDI, possibilitar que serviços possam ser publicados e descobertos na Web (SNELL; TIDWELL; KULCHENKO, 2001). A seguir são descritos as categorias que compõem o UDDI: Páginas brancas: contêm informações sobre os fornecedores do serviço, como por exemplo, o nome e o telefone do fornecedor do serviço (SNELL; TIDWELL; KULCHENKO, 2001); 16

Páginas amarelas: contêm uma listagem organizada por categorias dos serviços disponíveis na Web (SNELL; TIDWELL; KULCHENKO, 2001); Páginas verdes: contêm informações sobre serviços disponíveis bem como a especificação técnica de como é realizado a interação com os mesmos (SNELL; TIDWELL; KULCHENKO, 2001). Na figura 9, visualizam-se facilmente os conceitos do UDDI, onde uma aplicação-cliente pode utilizar um serviço caso essa conheça de modo estático a URI do serviço ou pesquisar dinamicamente um serviço que foi previamente publicado através do UDDI. Figura 9 UDDI 17

2 Tecnologias Este capítulo apresenta as tecnologias empregadas na construção do FFB Wiki. Optou-se pela escolha de tecnologias de fácil acesso, recentes e que ofereçam à proposta apresentada características relevantes na qualidade do produto final. 2.1 Arquitetura Cliente/Servidor A arquitetura Cliente/Servidor é um dos modelos mais utilizados no desenvolvimento de aplicações tanto para ambiente Web quanto para o ambiente desktop. O principio desse modelo é a separação entre clientes e servidores, onde cada cliente é capaz de enviar requisições para um servidor, e este realiza o processamento necessário e retorna os dados para o cliente (GRAY et. al, 2001). Esse modelo é de grande importância no desenvolvimento de aplicativos, pois permite a distribuição de processamento de dados entre várias máquinas, ou seja, compartilha recursos entre máquinas mais simples possibilitando que cada máquina realize apenas parte do processamento, ao invés de ter um único computador com grande poder computacional realizando todo o trabalho (GRAY et. al, 2001). A comunicação entre o cliente e o servidor pode ser realizada através dos protocolos Trasmission Control Protocol (TCP) ou User Datagram Protocol (UDP) (GRAY et. al, 2001). O TCP é um protocolo orientado a conexão, onde o cliente estabelece com o servidor uma conexão confiável e ambos realizam trocas de mensagens para verificar a perda de pacotes, eliminar a duplicação e possibilitar a recuperação de dados corrompidos (GRAY et. al, 2001). O UDP é um protocolo não orientado a conexão. Esse protocolo não é confiável, pois não há uma conexão permanente entre o cliente e o servidor para que haja troca de mensagens, ou seja, quando uma mensagem é enviada por um cliente não há qualquer tipo de garantia que essa mensagem chegue ao servidor (GRAY et. al, 2001). 18

A Figura 10 apresenta o modelo da arquitetura Cliente/Servidor, onde é demonstrado a comunicação entre aplicações-cliente representadas na figura pelos elementos ClienteA e ClienteB com o servidor representado pelo elemento Servidor. Figura 10 Arquitetura Cliente/Servidor 2.2 Linguagem HyperText Markup Antes do surgimento da Internet, Tim Berners-Lee desenvolveu uma coleção de ferramentas para realizar a comunicação e disseminação de pesquisas entre ele e seu grupo de colegas, porém, com o surgimento da Internet, ocorreu o desenvolvimento e aprimoramento desse conjunto de ferramentas até surgir o Hyper Text Markup Language (HTML) que se tornou uma linguagem robusta para o desenvolvimento de páginas web (BERNERS-LEE; CONNOLLY, 1995). O HTML é composto por texto e comandos de formatação chamados etiquetas (tags). Essas etiquetas são elementos entre parênteses angulares que permitem o desenvolvimento de uma página web. Segundo Berners-Lee (BERNERS-LEE, 1995) com a utilização dessas etiquetas o desenvolvedor pode realizar diversas tarefas, tais como: 19

Formatar textos Inserir tabelas Definir a aparência da página Definir propriedades da página Definir funções Definir a ligação da página com outros arquivos como CSS, Scripts, etc. 2.3 Cascading Style Sheet e JavaScript Embora o HTML forneça vários métodos para o desenvolvimento de páginas web, a linguagem tem inúmeras limitações em relação tanto ao design das interfaces das aplicações quanto às funcionalidades que essas páginas poderiam disponibilizar (BERNERS-LEE; CONNOLLY, 1995). Para que seja possível o desenvolvimento de uma página com um melhor design de interface e com mais funcionalidades é necessária a utilização de linguagens auxiliares como o CSS e o JavaScript (FLANAGAN, 2002). O CSS (Cascading Style Sheet) é uma linguagem utilizada para especificar o estilo de uma página web escrita em HTML. Essa página possui uma ligação para o arquivo que contém o código CSS com toda a definição do estilo da página. Uma das grandes vantagens da utilização do CSS para a estilização de um aplicativo web é a possibilidade de reuso do estilo, uma vez que cada página contém uma ligação para um mesmo documento CSS. Ao se alterar esse documento, a alteração é refletida em todas as páginas desse aplicativo (BERNERS-LEE; CONNOLLY, 1995). O JavaScript é uma linguagem de programação executada pelo navegador. Foi desenvolvida em 1995 pela Netscape com o objetivo de fornecer interação entre o usuário e as páginas (FLANAGAN, 2002). 20

2.4 Linguagem Estruturada de Consultas A Structured Query Language (SQL) é uma linguagem de pesquisa declarativa para banco de dados relacional que se baseia nos princípios da álgebra relacional. Foi desenvolvida nos anos 70 pela International Business Machines (IBM) e com o passar dos anos tornou-se padrão no mercado devido a sua simplicidade, facilidade de uso e robustez (HOFFMAN, 2004). Dada a utilização a nível mundial, adotou-se um padrão para a linguagem através do American National Standards Institute (ANSI) em 1986 e ISO em 1987 (HOFFMAN, 2004). 2.5 Windows Communication Foundation Windows Communication Foundation (WCF) é uma tecnologia recente, que foi introduzida no mercado pela Microsoft em dezembro de 2006 e que tem como principal objetivo realizar a comunicação distribuída de dados, onde dois ou mais computadores executam uma tarefa em comum (SMITH, 2007). Uma das grandes vantagens de se utilizar WCF na camada de serviço de uma aplicação é que o mesmo pode fazer uso de mensagens SOAP para realizar a comunicação com outro processo, possibilitando assim a comunicação entre um processo WCF e qualquer outro processo (SMITH, 2007). Quando um processo WCF se comunica com outro tipo de processo, ambos utilizam a serialização XML nas mensagens SOAP para realizar a comunicação. Dessa forma, o WCF é capaz de se comunicar com quase todos os tipos de processos uma vez que a XML é uma linguagem universal para a transmissão de dados. Porém, quando a comunicação é realizada entre dois processos WCF, é utilizada a serialização binária com o objetivo de otimizar a comunicação entre esses dois processos (SMITH, 2007). 21

2.6 LINQ Assim como o WCF, o Language Integrated Query (LINQ) é uma tecnologia recente, que foi introduzida no mercado pela Microsoft em dezembro de 2006 e tem como principal objetivo permitir que consultas sejam aplicadas a qualquer dado em memória (MARGUERIE; EICHERT; WOOLEY, 2008). O LINQ determina um conjunto de operadores padrões de consulta de propósito geral que admite que operações de travessia, de filtragem e de projeção sejam expressas de modo direto, porém declarativo, em qualquer linguagem de programação baseada em.net (MARGUERIE; EICHERT; WOOLEY, 2008). Na Figura 11, visualiza-se um exemplo de consulta utilizando LINQ que seleciona apenas as strings dentro da variável lstnomes que tenham comprimento maior ou igual a 5 e atribui o resultado à variável lstnomesfiltrados. using System; using System.Query; using System.Collections.Generic; class app { static void Main() { string[] nomes = { "Raphael", "Oquendo", "Patrick" }; } } IEnumerable<string> lstnomesfiltrados = from s in nomes where s.length >= 5 orderby s select s; Figura 11 Exemplo de consulta em uma fonte de informações em memória utilizando LINQ 22

Na Figura 12, visualiza-se um as linguagens programação, os provedores e as fonte de dados que são compatíveis com LINQ. Figura 12 Arquitetura do LINQ. 23

3 Metodologia Baseando-se especialmente em O Reilly (2004) e Ort (2005) foi realizada uma explanação dos conceitos de Web 2.0. Em seguida, iniciou-se a elaboração de uma plataforma baseada nesses conceitos, bem como o desenvolvimento de um software colaborativo chamado FFB Wiki. O FFB Wiki foi construído para fornecer um meio no qual alunos, professores e colaboradores da Faculdade Farias Brito possam compartilhar conhecimento e informações entre si. Esse software é uma aplicação web que foi projetada com base no padrão Cliente/Servidor e utiliza uma arquitetura N-Camadas. Na codificação do sistema foi utilizado o paradigma de programação orientada a objetos e para obter um melhor desempenho na manipulação de dados fez-se uso de Language Integrated Query (LINQ). Como repositório de informações foi utilizado um sistema de banco de dados. Além disso, esse software faz uso de tecnologias como JavaScript, CSS e HTML para fornecer ao usuário final uma interface rica e de fácil navegabilidade, aproximando a aplicação a um formato disponível em aplicações desktop. Para atender ao requisito da Web 2.0 que indica que uma aplicação deve disponibilizar seus recursos através da Web, foi desenvolvida uma camada de serviços. Essa camada foi desenvolvida baseando-se nos conceitos de Service-Oriented Architecture (SOA) e utiliza Windows Communication Foundation (WFC) para disponibilizar os recursos da aplicação. Optou-se por utilizar WCF ao invés de web services, pois como já foi descrito anteriormente o mesmo fornece maior segurança e melhor desempenho. 24

Durante todo o processo de desenvolvimento, de teste e de utilização do FFB Wiki foram necessários recursos de software e de hardware. Tais recursos são descritos a seguir. Software Na escolha dos softwares a serem utilizados no desenvolvimento da aplicação optou-se pelos mais recentes disponíveis no mercado, pois os mesmos fornecem melhor desempenho, uma maior segurança e possibilitam uma maior usabilidade do usuário final. Os softwares utilizados no desenvolvimento são descritos a seguir: Sistema Operacional: O sistema operacional utilizado no servidor é o Windows Vista Enterprise Edition. O mesmo foi responsável por permitir o funcionamento de todos os softwares, bem como os hardwares utilizados na fase de desenvolvimento da aplicação; Servidor Web: O Servidor Web utilizado é o Internet Information Service (IIS), na versão 7.0. O mesmo foi utilizado para hospedar a aplicação desenvolvida nesse trabalho; Banco de Dados: Foi utilizado o Microsoft SQL Server, na sua versão 2005. É responsável por armazenar as informações geradas a partir da aplicação desenvolvida nesse trabalho; Gerenciadores: Para o gerenciamento de banco de dados, utilizou-se o Microsoft SQL Management Studio na versão 9.00.1399.00; IDE: No desenvolvimento das interfaces em formato ASP.NET utilizouse o Microsoft Visual Studio 2008, programa que permite tanto a criação do design das páginas quanto a programação das mesmas; Plataforma: Como plataforma de desenvolvimento foi utilizado o.net Framework 3.5; Navegador: Foi utilizado o Microsoft Internet Explorer, na sua versão 7.0. É responsável pela interação entre o usuário e a aplicação. 25

Hardware As características dos equipamentos utilizados são: Servidor: Processador Pentium Core 2 Duo, com 2.20 GHz de clock, 2.0 GB de memória RAM, HD 160 GB Sata e placa de rede 10/100 MB. Estação de Desenvolvimento: Processador Pentium Core 2 Duo, com 2.20 GHz de clock, 2.0 GB de memória RAM, HD 160 GB Sata e placa de rede 10/100 MB. Estações Clientes: Especificações mínimas exigidas são: placa de rede 10/100 MB e 128 MB de memória RAM. 26

4 Arquitetura Proposta A arquitetura proposta foi projetada com o intuito de permitir o desenvolvimento de aplicações que se baseiam no conceito que propõe a Web como uma plataforma de software. Desta maneira, essas aplicações devem tanto fazer uso de serviços disponíveis na Web como também disponibilizá-los. Essa arquitetura baseia-se na arquitetura N-Camadas e é composta pelas seguintes camadas: Camada de Apresentação, Camada de Serviços, Camada Lógica e a Camada de Dados. 4.1 Camada de Apresentação A camada de apresentação é composta por formulários ASP.Net, construídos com o intuito de oferecer uma navegabilidade simples e intuitiva, e são responsáveis por realizar a interação entre o usuário e a aplicação. Ao receber uma requisição do usuário, são construídas as entidades a partir das informações que o usuário está editando, relacionando-se os campos dos formulários com as propriedades das entidades. Isso é necessário, pois para se trafegar uma informação entre a camada de apresentação e a camada de serviços é preciso que ambas as camadas conheçam o tipo de informação que irá transitar entre elas. A comunicação entre a camada de apresentação e a camada de serviços é realizada através do HyperText Transfer Protocol (HTTP), que é um protocolo que possibilita a comunicação de forma padronizada entre um cliente e um servidor a fim de realizar troca de dados. Na Figura 13, visualiza-se um exemplo de modelo de comunicação realizado entre a camada de apresentação e a camada de serviços. Nesse exemplo a camada de apresentação, que é representada pelo elemento Caller, envia as informações para serem processadas na camada de serviços, representada nesse exemplo pelo elemento Service. 27

Figura 13 Comunicação entre a Camada de Apresentação e a Camada Web No diagrama da figura 14, visualizam-se as entidades que foram utilizadas na construção do sistema e que podem ser utilizadas no transporte de dados entre a camada de apresentação e a camada de serviços. 28

Figura 14 Diagrama de entidades A classe ArquivoEntity representa um arquivo. Os arquivos deverão ser cadastrados no sistema para que possa ser realizado tanto o armazenamento quanto o compartilhamento desses arquivos com outros usuários. A classe VersãoDeArquivoEntity representa a versão de um arquivo. Para que uma versão de arquivo possa ser cadastrada, é necessário que um arquivo seja previamente cadastrado. Tem o objetivo de armazenar as modificações feitas em um arquivo. A classe AssuntoDeArquivoEntity representa o assunto de arquivo. Os assuntos de arquivo deverão ser cadastrados no sistema para que seja possível organizar os arquivos por contexto. 29

A classe CursoEntity representa os cursos. Os cursos deverão ser cadastrados no sistema para que seja possível organizar arquivos, perguntas e debate. A classe DebateEntity representa um debate. Tem o objetivo de agrupar um conjunto de informações. A classe ItemDeDebateEntity representa uma unidade do debate. Para que um item de debate possa ser cadastrado, é necessário que um debate seja previamente cadastrado. Representa a interação dos usuários do sistema com o debate. A classe PerguntaEntity representa uma pergunta. Representa uma pergunta feira por um dado usuário do sistema. A classe RespostaDePerguntaEntity representa a resposta de uma pergunta. Representa a resposta de um usuário a uma dada pergunta. 4.2 Camada de Serviços A camada de serviços é responsável por transmitir as requisições feitas a partir de uma aplicação-cliente para a camada lógica. Com essa breve descrição somada aos conceitos de Web 2.0 é possível notar que a camada de serviços aplica um dos principais conceitos dessa nova fase da Web, o que define que aplicações devem utilizar ou fornecer seus recursos na Web (O REILLY,2004). Na Figura 15, visualiza-se a arquitetura de comunicação na camada de serviços. Nesse exemplo nota-se que aplicações distintas fazem uso dos recursos e funcionalidades disponíveis nos serviços dessa camada. 30

Figura 15 Comunicação na camada de serviços Embora as tecnologias da Web 2.0 que foram previamente apresentadas neste trabalho sejam suficientes para o desenvolvimento de aplicações web, existem tecnologias já disponíveis no mercado que vão além. Desse modo optou-se por utilizar o Windows Communication Foundation como modelo de programação entre a camada de serviços e outras aplicações, pois o mesmo possibilita melhor desempenho e maior segurança. 4.3 Camada Lógica A camada lógica possui a lógica para atender os requisitos do sistema. É nessa camada que estão implementados os métodos e as regras de toda a aplicação. Não existe uma interface para o usuário e seus dados são voláteis, ou seja, para que algum dado seja persistido, deve ser utilizada a camada de dados (ORT, 2005). Essa camada recebe as requisições da camada de serviços, em seguida realizada a validação dos dados da entidade correspondente e por fim a mesma envia a entidade para a camada de dados para que a informação possa ser persistida. É necessário apenas que a camada de serviços tenha conhecimento da definição dos métodos que a camada lógica disponibiliza, não importando como ou em qual linguagem de programação o mesmo os implementa. Desse modo, uma vez que não 31

ocorra alteração na interface, a camada de serviços ainda poderá se comunicar com a camada lógica, mesmo que essa tenha sofrido alguma alteração na implementação de seus métodos. No diagrama da Figura 16, visualizam-se as interfaces que foram utilizadas para realizar o contrato entre a camada de lógica e camada de serviços. Figura 16 Interfaces da camada lógica 32

Todas as interfaces da camada lógica estendem a interface IBusiness que define a assinatura dos métodos mais genéricos de manipulação de dados, tais como: Inset, Update, GetALL, GetByID e Delete. dados. Insert: Interage com a camada de dados para inserir um novo objeto no banco de Update: Interage com a camada de dados para realizar as alterações feitas no objeto na base de dados. Delete: Interage com a camada de dados para remover o objeto da base de dados. GetAll: Interage com a camada de dados para retornar do banco de dados todos os objetos do tipo correspondente do mesmo. identificador. GetByID: Interage com a camada de dados para retornar o objeto filtrando pelo 33

No diagrama da Figura 17, visualizam-se as classes concretas da camada lógica. Figura 17 Classes concretas da camada lógica 34

arquivo. A classe ArquivoBusiness contém as regras de negócio específicas da entidade SelecionarPorUsuario: Interage com a camada de dados para retornar todos os arquivos que foram disponibilizados pelo usuário passado como parâmetro; SelecionarArquivosCompartilhados: Interage com a camada de dados para retornar os arquivos que estão sendo compartilhados; SelecionarArquivosCompartilhadosComUsuario: Interage com a camada de dados para retornar os arquivos compartilhados com o usuário passado como parâmetro; Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de um arquivo; Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um arquivo; Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um arquivo. A classe VersaoDeArquivoBusiness contém as regras de negócio específicas da entidade versão de arquivo. SelecionarPorUsuario: Interage com a camada de dados para retornar todas as modificações feitas em um arquivo filtrando pelo usuário passado como parâmetro; SelecionarPorArquivo: Interage com a camada de dados para retornar todas as versões de um arquivo; Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de uma versão de arquivo; 35

Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma versão de arquivo; Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma versão de arquivo. A classe AssuntoDeArquivoBusiness contém as regras de negócio específicas da entidade assunto de arquivo. SelecionarPorUsuario: Interage com a camada de dados para retornar todos os assuntos de arquivo que foram disponibilizados pelo usuário passado como parâmetro; Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de um assunto de arquivo; Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um assunto de arquivo; Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um assunto de arquivo. curso. A classe CursoBusiness contém as regras de negócio específicas da entidade SelecionarPorNome: Interage com a camada de dados para retornar uma lista de cursos filtrando pelo nome; Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de um curso; 36

Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um curso; Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um curso. debate. A classe DebateBusiness contém as regras de negócio específicas da entidade SelecionarPorUsuario: Interage com a camada de dados para retornar uma lista de debates filtrando por usuário; SelecionarPorCurso: Interage com a camada de dados para retornar uma lista de debates filtrando por curso; Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de um debate; Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um debate; Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um debate. A classe ItemDeDebateBusiness contém as regras de negócio específicas da entidade item de debate. SelecionarPorUsuario: Interage com a camada de dados para retornar uma lista de itens de debates filtrando por usuário; SelecionarPorDebate: Interage com a camada de dados para retornar uma lista de itens de debates filtrando por debate; Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de um item de debate; 37

Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um item de debate; Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de um item de debate. pergunta. A classe PerguntaBusiness contém as regras de negócio específicas da entidade SelecionarPorUsuario: Interage com a camada de dados para retornar uma lista de perguntas filtrando por usuário; SelecionarPorCurso: Interage com a camada de dados para retornar uma lista de perguntas filtrando por curso; Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de uma pergunta; Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma pergunta; Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma pergunta. A classe RespostaPerguntaBusiness contém as regras de negócio específicas da entidade reposta de pergunta. SelecionarPorUsuario: Interage com a camada de dados para retornar uma lista de respostas de pergunta filtrando por usuário; SelecionarPorPergunta: Interage com a camada de dados para retornar uma lista de respostas de pergunta filtrando pela pergunta; 38

Insert: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da inserção de uma resposta de pergunta; Update: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma resposta de pergunta; Delete: Sobrescreve o comportamento da classe AbstractBusiness para implementar as regras de negócio específicas da atualização de uma resposta de pergunta. 4.4 Camada de Dados A Camada de Dados representa o repositório das informações. Essa camada é responsável por receber as requisições da camada lógica e seus métodos executam as requisições no SQL Server 2005. Nessa camada estão presentes as implementações dos objetos de acesso a dados. Cada objeto de acesso a dados é acessado através de sua Interface, deixando a camada flexível para seja possível realizar a persistência de dados em diversos tipos de repositórios de informações, tais como arquivos XML, arquivos de texto e bancos de dados. Na solução apresentada, foram implementados objetos de acesso a dados para o banco de dados SQL Server 2005. A execução de operações no SQL Server é feita através da classe AbstractDAO. Essa classe utiliza a classe QueryReader para identificar a consulta SQL a ser disparada contra o banco. O QueryReader recebe o identificador da classe e o nome da operação a ser realizada para obter a consulta correspondente. Após o retorno da string de consulta, a AbstractDAO associa essa consulta a um objeto do tipo SqlCommand que é utilizado para efetuar a consulta no SQL Server Para operações de insert e update o objeto de acesso a dados recebe da camada de lógica a entidade a ser incluída ou atualizada e persiste os dados no banco. Para operações de consulta o objeto de acesso a dados retorna o resultado em um objeto do tipo IList. Por exemplo, para recuperar todos os arquivos disponibilizados por um 39

usuário o objeto de acesso a dados deve receber como parâmetro uma entidade do tipo UsuarioEntity e retornar uma IList contendo objetos do tipo ArquivoEntity que representam os arquivos disponibilizados pelo usuário passado como parâmetro. No diagrama da Figura 18, visualizam-se as interfaces que foram utilizadas para realizar o contrato entre a camada de lógica e a camada de dados. Figura 18 Interfaces da camada de dados 40

Todas as interfaces da camada de dados estendem a interface IDAO que define a assinatura dos métodos mais genéricos de manipulação de dados, tais como: Inset, Update, GetALL, GetByID e Delete. Insert: Insere um novo objeto no banco de dados. Update: Persiste as alterações feitas no objeto na base de dados. Delete: Remove o objeto da base de dados. GetAll: Solicita ao banco de dados todos os objetos do tipo da classe concreta. GetByID: Retorna o objeto filtrando pelo identificador. 41

dados. No diagrama da Figura 19, visualizam-se as classes concretas da camada de Figura 19 classes concretas da camada de dados 42