faculdade farias brito ciÊncia da...

78
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

Upload: others

Post on 07-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

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

Page 2: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

II

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

Page 3: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

III

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)

Page 4: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

IV

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.

Page 5: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

V

A meu irmão Alisson Batista de Medeiros

Page 6: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

VI

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.

Page 7: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

VII

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

Page 8: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

VIII

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

Page 9: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

IX

LISTA DE ABREVIATURAS

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

Page 10: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

1

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;

Page 11: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

2

• 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).

Page 12: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

3

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.

Page 13: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

4

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.

No Capítulo 7 – Resultados Obtidos: Reúne os principais resultados deste

trabalho.

No Capítulo 8 – Conclusão: Reúne as principais conclusões deste trabalho e

perspectivas futuras.

Page 14: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

5

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.

Page 15: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

6

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);

Page 16: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

7

• 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).

Page 17: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

8

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.

Page 18: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

9

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.

Page 19: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

10

É 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).

Page 20: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

11

<?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):

Page 21: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

12

• 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

Page 22: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

13

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>

Page 23: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

14

Elemento <types>: é utilizado para informar os tipos de dados presentes na

mensagem.

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>

Page 24: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

15

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>

Page 25: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

16

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);

Page 26: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

17

• 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

Page 27: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

18

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).

Page 28: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

19

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:

Page 29: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

20

• 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).

Page 30: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

21

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).

Page 31: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

22

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

Page 32: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

23

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.

Page 33: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

24

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.

Page 34: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

25

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 utilizou-

se 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.

Page 35: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

26

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.

Page 36: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

27

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”.

Page 37: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

28

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.

Page 38: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

29

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.

Page 39: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

30

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.

Page 40: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

31

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

Page 41: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

32

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

Page 42: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

33

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.

Insert: Interage com a camada de dados para inserir um novo objeto no banco de

dados.

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.

GetByID: Interage com a camada de dados para retornar o objeto filtrando pelo

identificador.

Page 43: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

34

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

Figura 17 – Classes concretas da camada lógica

Page 44: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

35

A classe ArquivoBusiness contém as regras de negócio específicas da entidade

arquivo.

• 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;

Page 45: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

36

• 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.

A classe CursoBusiness contém as regras de negócio específicas da entidade

curso.

• 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;

Page 46: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

37

• 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.

A classe DebateBusiness contém as regras de negócio específicas da entidade

debate.

• 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;

Page 47: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

38

• 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.

A classe PerguntaBusiness contém as regras de negócio específicas da entidade

pergunta.

• 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;

Page 48: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

39

• 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

Page 49: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

40

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

Page 50: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

41

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.

Page 51: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

42

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

dados.

Figura 19 – classes concretas da camada de dados

Page 52: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

43

A classe ArquivoDAO tem o objetivo de manipular e persistir os dados da

entidade arquivo. A classe ArquivoDAO implementa os seguintes métodos:

• SelecionarPorUsuario: Retorna os uma lista arquivos filtrando por

usuário;

• SelecionarArquivosCompartilhados: Retorna uma lista contendo todos os

arquivos que estão compartilhados;

• SelecionarArquivosCompartilhadosComUsuario: Retorna uma lista de

arquivos compartilhados filtrando por usuário;

• Insert: Insere um novo arquivo na base de dados;

• Update: Persiste as alterações feitas na entidade arquivo;

• GetALL: Retorna uma lista contendo todas os arquivos;

• GetByID: Retorna o objeto arquivo filtrando pelo identificador;

• Delete: Remove o objeto arquivo da base de dados.

A classe VersaoDeArquivoDAO tem como objetivo manipular e persistir os

dados da entidade versão de arquivo. A classe VersaoDeArquivoDAO implementa os

seguintes métodos:

• SelecionarPorUsuario: Retorna uma lista de versões de arquivo filtrando

por usuário;

• SelecionarPorArquivo: Retorna uma lista de versões de arquivo filtrando

por arquivo;

• Insert: Insere uma nova versão de arquivo na base de dados;

• Update: Persiste as alterações feitas na entidade versão de arquivo;

• GetALL: Retorna uma lista contendo todas as verões de arquivo;

• GetByID: Retorna o objeto versão de arquivo filtrando pelo

identificador;

• Delete: Remove o objeto versão de arquivo da base de dados.

Page 53: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

44

A classe AssuntoDeArquivoDAO tem como objetivo manipular e persistir os

dados da entidade assunto de arquivo. A classe AssuntoDeArquivoDAO implementa os

seguintes métodos:

• SelecionarPorUsuario: Retorna uma lista de assuntos de arquivo filtrando

por usuário;

• Insert: Insere um novo assunto de arquivo na base de dados;

• Update: Persiste as alterações feitas na entidade assunto de arquivo;

• GetALL: Retorna uma lista contendo todos os assuntos de arquivo;

• GetByID: Retorna o objeto assunto de arquivo filtrando pelo

identificador;

• Delete: Remove o objeto assunto de arquivo da base de dados.

A classe CursoBusiness tem o objetivo de manipular e persistir os dados da

entidade curso. A classe CursoBusiness implementa os seguintes métodos:

• SelecionarPorNome: retorna uma lista de cursos filtrado por nome;

• Insert: Insere um novo curso na base de dados;

• Update: Persiste as alterações feitas na entidade curso;

• GetALL: Retorna uma lista contendo todos os cursos;

• GetByID: Retorna o objeto curso filtrando pelo identificador;

• Delete: Remove o objeto curso da base de dados

A classe DebateDAO tem o objetivo de manipular e persistir os dados da

entidade debate. A classe DebateDAO implementa os seguintes métodos:

• SelecionarPorUsuario: retorna uma lista de debates filtrado por usuário.

• Insert: Insere um novo debate na base de dados;

• Update: Persiste as alterações feitas na entidade debate;

• GetALL: Retorna uma lista contendo todos os debates;

• GetByID: Retorna o objeto debate filtrando pelo identificador;

Page 54: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

45

• Delete: Remove o objeto debate da base de dados.

A classe ItemDeDebateDAO tem o objetivo de manipular e persistir os dados da

entidade item de debate. A classe ItemDeDebateDAO implementa os seguintes

métodos:

• SelecionarPorUsuario: Retorna uma lista de itens de debates filtrado por

usuário.

• SelecionarPorDebate: Retorna uma lista de itens de debates filtrado por

debate.

• Insert: Insere um novo item de debate na base de dados;

• Update: Persiste as alterações feitas na entidade item de debate;

• GetALL: Retorna uma lista contendo todos os itens de debate;

• GetByID: Retorna o objeto item de debate filtrando pelo identificador;

• Delete: Remove o objeto item de debate da base de dados.

A classe PerguntaDAO tem o objetivo de manipular e persistir os dados da

entidade pergunta. A classe PerguntaDAO implementa os seguintes métodos:

• SelecionarPorUsuario: Retorna uma lista de perguntas filtrado por

usuário.

• SelecionarPorCurso: Retorna uma lista de perguntas filtrado por curso.

• Insert: Insere uma nova pergunta na base de dados;

• Update: Persiste as alterações feitas na entidade pergunta;

• GetALL: Retorna uma lista contendo todos as perguntas;

• GetByID: Retorna o objeto pergunta filtrando pelo identificador;

• Delete: Remove o objeto pergunta da base de dados.

Page 55: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

46

A classe RespostaDePerguntaDAO tem o objetivo de manipular e persistir os

dados da entidade resposta de pergunta. A classe RespostaDePerguntaDAO implementa

os seguintes métodos:

• SelecionarPorUsuario: Retorna uma lista de respostas de pergunta

filtrado por usuário.

• SelecionarPorPergunta: Retorna uma lista de respostas de pergunta

filtrado por pergunta.

• Insert: Insere uma nova resposta de pergunta na base de dados;

• Update: Persiste as alterações feitas na entidade resposta de pergunta;

• GetALL: Retorna uma lista contendo todos as respostas de pergunta;

• GetByID: Retorna o objeto resposta de pergunta filtrando pelo

identificador;

• Delete: Remove o objeto resposta de pergunta da base de dados.

Page 56: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

47

5 FFB Wiki

O FFB Wiki é uma aplicação baseada no conceito de plataforma web (principio

que indica que uma aplicação disponibiliza seus serviços para que outros

desenvolvedores possam implementar suas próprias aplicações) construída usando uma

arquitetura N-Camadas.

A aplicação visa fornecer um meio no qual alunos e professores da Faculdade

Farias Brito possam se comunicar e compartilhar informações de maneira eficaz e

inteligente. A aplicação foi projetada com o intuito de fornecer uma interface amigável

e intuitiva para seus usuários, mas além do cuidado no planejamento da interface, houve

um cuidado especial no desenvolvimento da arquitetura da aplicação. A arquitetura do

FFB Wiki foi desenvolvida utilizando-se as melhores práticas de desenvolvimento de

sistemas e as tecnologias mais recentes e inovadoras, tais como: Windows

Communication Foundation e LINQ.

Em resumo, as objetivos do FFB Wiki são:

• Realizar o compartilhamento de arquivos e informações entre os usuários, de

acordo com o curso (Ciência da Computação, Administração, Marketing ou

Direito) e o assunto;

• Permitir a realização de perguntas entre seus usuários e que essas perguntas

possam ser respondidas por qualquer outro usuário de forma seletiva, ou

seja, por relevância de conteúdo das mensagens;

• Fornecer um meio pelo qual os professores possam interagir, debater e/ou

orientar os alunos que fazem parte de sua(s) disciplina(s), servindo também

como divulgação de trabalhos e grupos de pesquisa no qual o aluno possa se

engajar;

• Fornecer um meio pelo qual o aluno possa lançar desafios na área de

computação, propor soluções, estimulando a busca pelo conhecimento.

Page 57: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

48

5.1 Desenvolvimento do FFB Wiki

A aplicação foi desenvolvida na linguagem de programação C#. Utiliza como

servidor de aplicação o Internet Information Services (IIS) 7.0. Para a camada de

serviços é utilizado o Windows Communication Foundation e como servidor de banco

de dados é utilizado o SQL Server 2005.

5.2 Interfaces do FFB Wiki

No desenvolvimento das interfaces do sistema, procurou-se tornar o ambiente o

mais amigável possível, através de uma interface rica aliada a uma navegabilidade

simples e bem estruturada.

As páginas foram desenvolvidas na linguagem ASP.NET, utilizando as técnicas

atuais de codificação como que proporcionam um menor tempo de processamento.

Além disso, procurou-se evitar o uso de estruturas, formatações e imagens que

pudessem prejudicar o desempenho da aplicação em casos que o usuário não possua

conexão banda larga.

Page 58: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

49

A seguir são apresentadas as interfaces do FFB Wiki.

5.2.1 Módulo Arquivos

Este módulo realiza a gestão dos arquivos do usuário bem como o

compartilhamento dos mesmos. É composto pelas seguintes páginas:

• Arquivos – Possibilita a visualização de todos os arquivos do usuário

bem como todos os arquivos que foram compartilhados com ele.

Na Figura 20, visualiza-se a interface de Arquivos.

Figura 20 - Tela de Arquivos

• Filtros de Arquivo – Possibilita ao usuário definir os filtros que serão

aplicados na tela de Arquivos para uma melhor visualização dos dados.

Page 59: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

50

Na Figura 21, visualiza-se a interface de Filtros de Arquivo.

Figura 21 - Tela de Filtros de Arquivo

• Versões do Arquivo – possibilita a visualização de todas as versões de

um dado arquivo

Na Figura 22, visualiza-se a interface Versões de Arquivo.

Figura 22 – Tela de Versões de Arquivo

• Manutenção de Arquivo – possibilita a criação, edição ou remoção de um

arquivo.

Page 60: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

51

Na Figura 23, visualiza-se a interface de Manutenção de Arquivo.

Figura 23 – Tela de Manutenção de Arquivo

• Compartilhamento de Arquivo – Possibilita um usuário compartilhar seus

arquivos com outros usuários do sistema

Na Figura 24, visualiza-se a interface de Compartilhamento de Arquivo.

Figura 24 – Tela de Compartilhamento de Arquivo

• Assuntos do Arquivo – possibilita a visualização dos assuntos de arquivo

do usuário

Page 61: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

52

Na Figura 25, visualiza-se a interface de Assuntos de Arquivo.

Figura 25 – Tela de Assuntos de Arquivo

• Manutenção de Assuntos de Arquivo – possibilita a criação, edição de

assuntos de arquivo.

Na Figura 26, visualiza-se a interface de Manutenção de Assuntos de Arquivo.

Figura 26 – Tela de Manutenção de Assuntos de Arquivo

Page 62: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

53

5.2.2 Módulo Cursos

Este módulo realiza a gestão dos cursos do sistema. É composto pelas seguintes

páginas:

• Cursos – possibilita a visualização dos cursos do sistema

Na Figura 27, visualiza-se a interface de Cursos.

Figura 27 – Tela de Cursos

Page 63: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

54

• Filtros de Cursos – Possibilita ao usuário definir os filtros que vão ser

aplicados na tela de Cursos para uma melhor visualização dos dados.

Na Figura 28, visualiza-se a interface de Filtros de Cursos.

Figura 28 – Tela de Filtros de Curso

• Manutenção de Curso – Possibilita a criação, edição ou exclusão dos

cursos do sistema.

Na Figura 29, visualiza-se a interface de Manutenção de Cursos.

Figura 29 – Tela de Manutenção de Curso

Page 64: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

55

5.2.3 Módulo Debates

Este módulo realiza a gestão dos debates que ocorrem no sistema. É composto

pelas seguintes páginas:

• Debates – possibilita a visualização de todos os debates do curso no qual

o usuário está associado.

Na Figura 30, visualiza-se a interface de Debates.

Figura 30 – Tela de Debates

Page 65: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

56

• Manutenção de Debates – possibilita a criação, edição ou exclusão de

debates

Na Figura 31, visualiza-se a interface de Manutenção de Debates.

Figura 31 – Tela de Manutenção de Debates

Page 66: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

57

• Itens de Debate – possibilita a visualização das interações dos usuários

com um determinado debate.

Na Figura 32, visualiza-se a interface de Itens de Debate.

Figura 32 – Tela de Itens de Debate

Page 67: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

58

• Manutenção de Itens de Debates – Possibilita a criação, edição ou

exclusão de uma interação com um debate.

Na Figura 33, visualiza-se a interface de Manutenção de Itens de Debate.

Figura 33 – Tela de Manutenção de Itens de Debate

Page 68: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

59

5.2.4 Módulo Perguntas

Este módulo realiza a gestão das perguntas que são realizadas através do

sistema. É composto pelas seguintes páginas:

• Perguntas – possibilita a visualização das perguntas. Somente serão

exibidas as perguntas que foram feitas por usuários do mesmo curso.

Na Figura 34, visualiza-se a interface de Perguntas.

Figura 34 – Tela de Perguntas

Page 69: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

60

• Manutenção de Perguntas – Possibilita a criação, edição ou exclusão de

perguntas.

Na Figura 35, visualiza-se a interface de Manutenção de Perguntas.

Figura 35 – Tela de Manutenção de Perguntas

Page 70: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

61

• Respostas – possibilita a visualização das interações dos usuários com

uma determinada pergunta.

Na Figura 36, visualiza-se a interface de Respostas.

Figura 36 – Tela de Respostas

Page 71: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

62

• Manutenção de Respostas – Possibilita a criação, edição ou exclusão de

uma interação com uma pergunta.

Na Figura 37, visualiza-se a interface de Manutenção de Respostas.

Figura 37 – Tela de Manutenção de Respostas

Page 72: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

63

5.2.5 Módulo Usuários

Este módulo realiza a gestão dos usuários do sistema. É composto pelas

seguintes páginas:

• Usuários – possibilita a visualização dos usuários do sistema.

Na Figura 38, visualiza-se a interface de Usuários.

Figura 38 – Tela de Usuários

• Filtros de Cursos – Possibilita o usuário definir os filtros que vão ser

aplicados na tela de Usuários para uma melhor visualização dos dados.

Page 73: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

64

Na Figura 39, visualiza-se a interface de Filtros de Usuário.

Figura 39 – Tela de Filtros de Usuário

• Manutenção de Usuários – Possibilita a criação, edição ou exclusão de

um usuário.

Na Figura 40, visualiza-se a interface de Manutenção de Usuário.

Figura 40 – Tela de Manutenção de Usuários

Page 74: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

65

5.3 Funcionalidades da Solução

A aplicação desenvolvida neste trabalho fornece uma interface simples e

intuitiva para que os alunos da Faculdade Farias Brito possam compartilhar

conhecimento e informações entre si. Dentre as funcionalidades que a aplicação

fornecer podemos citar:

1. Possibilitar compartilhamento de arquivos e informações entre os

usuários, de acordo com o curso (Ciência da Computação,

Administração, Marketing ou Direito) e o assunto.

2. Permitir que usuários façam perguntas para outros usuários e que possam

ser respondidos por qualquer outro usuário de forma seletiva, ou seja, por

relevância de conteúdo das mensagens.

3. Fornecer um meio no qual os professores possam interagir, debater e/ou

orientar alunos que façam parte de sua(s) disciplina(s), servindo também

como divulgação de trabalhos e grupos de pesquisa no qual o aluno pode

se engajar.

4. Fornecer um meio pelo qual o aluno possa lançar desafios na área de

computação, propor soluções, estimulando a busca pelo conhecimento.

Page 75: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

66

6 Resultados Obtidos

O desenvolvimento da aplicação FFB Wiki em apenas dois meses (março e abril

de 2008), serve para confirmar a produtividade da arquitetura detalhada anteriormente e

do ambiente integrado de desenvolvimento Visual Studio .NET 2008.

O uso de tecnologias recentes como o Language Integrated Query (LINQ) e o

Windows Communication Foundation (WCF) representa o grande diferencial do FFB

Wiki, pois além de fornecer uma melhor segurança e um melhor desempenho, também

faz da aplicação um referencial de utilização dessas tecnologias, proporcionando aos

profissionais da área de informática uma melhor compreensão da aplicabilidade dessas

tecnologias.

Além disso, o FFB Wiki pode ser um passo importante no processo de ensino na

Faculdade Farias Brito, uma vez que os alunos, ao utilizarem o sistema, terão acesso ao

conhecimento de maneira mais eficiente.

Os principais resultados estão diretamente ligados aos objetivos específicos:

• Definição do conceito de Web 2.0 bem como os principais princípios e

técnicas utilizadas no desenvolvimento de aplicações que se baseiam

nesse conceito;

• Desenvolvimento de uma ferramenta colaborativa que possibilita o

compartilhamento de conhecimento entre os alunos, professores e

colaboradores da Faculdade Farias Brito.

Page 76: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

67

7 Conclusão

Este trabalho realizou um estudo dos conceitos da Web 2.0, principalmente os

que colocam a mesma com uma plataforma de serviços. Também desenvolveu um

software colaborativo chamado FFB Wiki que aplica os conceitos de Web 2.0 para

fornecer um meio no qual alunos, professores e colaboradores da Faculdade Farias Brito

possam compartilhar conhecimento.

Inicialmente foi abordado o conceito de Web 2.0, bem como os conceitos

relacionados ao termo. A seguir foi apresentado o conceito de plataforma web e as

tecnologias utilizadas para disponibilizar aplicações como serviços na Web. Em seguida

foi descrito o FFB Wiki, um software colaborativo que possibilita o crescimento

pessoal, intelectual e profissional dos alunos, professores e colaboradores da Faculdade

Farias Brito.

Os resultados obtidos mostram que a utilização dos conceitos de Web 2.0 pode

trazer grandes benefícios a seus usuários, pois ao possibilitar a interação entre os

mesmos de modo eficaz é possível realizar a difusão de conhecimento.

7.1 Trabalhos Futuros

A implementação de outras funcionalidades e tecnologias no software

apresentado neste trabalho podem colaborar para a sua evolução e utilidade, gerando

diferentes resultados e obtendo um vasto leque de objetivos.

Dentre as recomendações para trabalhos futuros tomando como base a proposta

abordada, incluem-se:

• Utilização de Windows Workflow Foundation (WWF) para controlar os

fluxos do sistema;

• Estudo sobre as convergências da Engenharia de Software voltada para a

Web;

Page 77: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

68

8 Referências Bibliográficas

1. ARAÚJO, A. Framework de Análise e Projeto Baseado no RUP para o

Desenvolvimento de Aplicações Web. Dissertação de Mestrado, UFPE, Centro de

Informática, 2001.

2. BERNERS-LEE, T., FIELDING, R.; Hypertext Transfer Protocol -- HTTP/1.0, RFC

1945, Maio de 1996.

3. BERNERS-LEE, T. CONNOLLY, D.; Hypertext Markup Language - 2.0, RFC 1866,

Novembro de1995.

4. CHRISTENSEN, E; CURBERA, F; MEREDITH, G; WEERAWARANA, S. Web

Services Description Language (WSDL), 2001. Disponível em:

http://www.w3.org/TR/wsdl. Acessado em: Novembro de 2007.

5. FLANAGAN, D. JavaScript: The Definitive Guide. O'Reilly Media, Inc., 2002.

6. GRAY, R. S.; KOTZ, D.; PETERSON, R. A.; BARTON, J.; CHACON, D.; GERKEN,

P.; HOFMANN, M.; BRADSHAW, J.; BREEDY, M.; JEFFERS, R.; SURI, N. Mobile-

Agent versus Client/Server Performance: Scalability in an Information-Retrieval Task.

Fifth IEEE International Conference on Mobile Agents. Atlanta, Georgia, USA,

dezembro 2001.

7. GUJ. GRUPO DE USUÁRIOS JAVA. Entendendo XML. Disponível em:

http://www.guj.com.br/java.tutorial.artigo.19.1.guj. Acessado em: Novembro de 2008.

8. HOFFMAN, J. Introduction to Structured Query Language, 2001.

9. RECKZIEGEL, M. Descrevendo um Web Service – WSDL. Disponível em:

http://imasters.uol.com.br/artigo/4422/webservices/descrevendo_um_web_service_-

_wsdl/. Acessado em: Novembro de 2008.

10. MARCHAL, B. XML conceitos e aplicações. São Paulo: Berkeley, 2000.

Page 78: FACULDADE FARIAS BRITO CIÊNCIA DA COMPUTAÇÃOfbuni.edu.br/sites/default/files/tcc-20082-raphael-batista-saldanha.pdf · nos conceitos de engenharia de software descritos por Ort

69

11. MARGUERIE, F; EICHERT, S; WOOLEY, J. LINQ in Action. Manning Publications,

2008.

12. O’REILLY, T. What is WEB 2.0: Design patterns and business models for the next

generation of software. Disponível em:

http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html.

Acessado em: Novembro de 2007.

13. ORT, E. Service-Oriented Architecture and Web Services: Concepts, Technologies, and

Tools, Sun Developer Network, April 2005 Disponível em:

http://java.sun.com/developer/technicalArticles/WebServices/soa2/. Acessado em:

Novembro de 2007.

14. SEELY, S. SOAP: Cross plataform web service development using XML. Upper

Saddle River: Prentice Hall PTR, 2002

15. SMITH, J. Inside Windows Communication Foundation, Microsoft Press, 2007.

16. SNELL, J.; TIDWELL, D.; KULCHENKO, K. Programming web services with soap.

O'Reilly, 2001.

17. The UDDI Technical White Paper. Disponível em: http://www.uddi.org. Acessado em:

Novembro de 2007

18. W3C. WORLD WIDE WEB CONSORTIUM. Simple object access protocol (SOAP).

Disponível em: http://www.w3.org/XML. Acessado em: Novembro de 2007

19. W3C. WORLD WIDE WEB CONSORTIUM. Cascading Style Sheets (CSS).

Disponível em: http://www.w3.org/Style/CSS/ Acessado em: Novembro de 2007