“avcomponent: um framework para … virtual private network vrml: virtual reality model language...

87
Pós-Graduação em Ciência da Computação “AvComponent: Um Framework para Desenvolvimento de Componentes de Realidade Virtual em Infraestrutura de Compartilhamento de Componentes em Nuvem” Por Daniel Abella Cavalcante Mendonça de Souza Dissertação de Mestrado Universidade Federal de Pernambuco [email protected] www.cin.ufpe.br/~posgraduacao RECIFE 2014

Upload: phungminh

Post on 24-May-2019

242 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

Pós-Graduação em Ciência da Computação

“AvComponent: Um Framework para Desenvolvimento

de Componentes de Realidade Virtual em Infraestrutura

de Compartilhamento de Componentes em Nuvem”

Por

Daniel Abella Cavalcante Mendonça de Souza

Dissertação de Mestrado

Universidade Federal de Pernambuco

[email protected]

www.cin.ufpe.br/~posgraduacao

RECIFE

2014

Page 2: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

UNIVERSIDADE FEDERAL DE PERNAMBUCO

CENTRO DE INFORMÁTICA

PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO

DANIEL ABELLA CAVALCANTE MENDONÇA DE SOUZA

“AvComponent: Um Framework para Desenvolvimento de Componentes de Realidade Virtual em Infraestrutura de

Compartilhamento de Componentes em Nuvem”

ESTE TRABALHO FOI APRESENTADO À PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO DO CENTRO DE INFORMÁTICA DA UNIVERSIDADE FEDERAL DE PERNAMBUCO COMO REQUISITO PARCIAL PARA OBTENÇÃO DO GRAU DE MESTRE EM CIÊNCIA DA COMPUTAÇÃO.

ORIENTADOR: Prof. Dr. Fernando da Fonseca de Souza CO-ORIENTADOR: Prof. Dr. Marcus Salerno de Aquino

RECIFE

2014

Page 3: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

Catalogação na fonte Bibliotecária Jane Souto Maior, CRB4-571

S729a Souza, Daniel Abella Cavalcante Mendonça de AvComponent: um framework para desenvolvimento de

componentes de realidade virtual em infraestrutura de compartilhamento de componentes em nuvem / Daniel Abella Cavalcante Mendonça de Souza. – Recife: O Autor, 2014.

86 f.: il., fig., quadro Orientador: Fernando da Fonseca de Souza. Dissertação (Mestrado) – Universidade Federal de

Pernambuco. CIn, Ciência da computação, 2014. Inclui referências.

1. Ciência da computação. 2. Engenharia de software. 3. Computação em nuvem. 4. Realidade virtual. I. Souza, Fernando da Fonseca de (orientador). II. Título. 004 CDD (23. ed.) UFPE- MEI 2015-50

Page 4: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

Dissertação de Mestrado apresentada por DANIEL ABELLA CAVALCANTE

MENDONCA DE SOUZA à Pós-Graduação em Ciência da Computação do Centro de

Informática da Universidade Federal de Pernambuco, sob o título “AvComponent: Um

Framework para Desenvolvimento de Componentes de Realidade Virtual em

Infraestrutura de Compartilhamento de Componentes em Nuvem” orientada pelo

Prof. Fernando da Fonseca de Souza e aprovada pela Banca Examinadora formada pelos

professores:

______________________________________________

Prof. André Luis de Medeiros Santos

Centro de Informática/UFPE

______________________________________________

Prof. Gabriel de França Pereira e Silva

Departamento de Estatística e Informática / UFRPE

_______________________________________________

Prof. Fernando da Fonseca de Souza

Centro de Informática / UFPE

Visto e permitida a impressão.

Recife, 27 de novembro de 2014.

___________________________________________________

Profa. Edna Natividade da Silva Barros Coordenadora da Pós-Graduação em Ciência da Computação do

Centro de Informática da Universidade Federal de Pernambuco.

Page 5: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

AGRADECIMENTOS

Ao professor Fernando da Fonseca de Souza, pela confiança e pela colaboração

durante a execução deste trabalho e ao professor Marcus Salerno de Aquino, pela

contribuição na minha inserção na área acadêmica, assim como acompanhamento durante

todo este percurso.

À Deus, por ter colocado na trajetória da minha vida, pessoas maravilhosas como

minha esposa, Nathaly Abella, meus pais, Eurípedes Sebastião e Elisa Abella, e o meu

irmão, Felipe Abella.

Aos meus amigos professores e alunos da faculdade iDez (Estácio de Sá), em

especial aos professores Jaildo Pequeno, Karoline Lira e Gerson Domingos.

Por fim, aos meus amigos, Edvalson Ribeiro, Tibério Lúcio, Paulo André (Paulão),

Max Davis, Eder Ferreira, Ryan Ribeiro, César Rocha e Rodrigo Fujioka.

Page 6: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

RESUMO

Cenários tridimensionais construídos com técnicas de RV estão sendo usados em sistemas

nas mais diversas áreas, em especial em educação. Entretanto, durante o processo de

criação, os ambientes tridimensionais, assim como os componentes de software

desenvolvidos estão destinados à plataforma criada. Com intuito de permitir o

compartilhamento de componentes em RV, sejam ambientes tridimensionais ou

componentes de software, é apresentado o framework AvComponent, que permite aos mais

diversos sistemas na área compartilhar seus componentes, assim como obter outros

componentes, podendo ainda aprimorá-los. Para contemplar esta necessidade, técnicas de

Desenvolvimento Baseado em Componentes foram desenvolvidas, em associação com

ferramentas de Computação nas Nuvens, em especial o Banco de Dados nas Nuvens.

Palavras chaves: 1. Computação nas nuvens. 2. Engenharia de software. 3. Reuso de

software. 4. Realidade virtual

Page 7: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

ABSTRACT

Tridimensional scenarios built with Virtual Reality techniques are being used in systems in

several areas, especially in education. However, during the creation process, tridimensional

environments and developed software components are limited to the platform it was

originally created. In order to allow sharing of components in Virtual Reality area

(tridimensional environments or software components), is presented the AvComponent

framework that allows several systems in the area share their components as well as obtain

or improve other components. To address this need, Component-based Development

techniques were developed in association with Cloud Computing tools, especially Cloud

Databases.

Keywords: 1. Cloud computing. 2. Software engineering. 3. Software reuse. 4. Virtual

reality

Page 8: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

LISTA DE FIGURAS

Figura 1: Apresentação do Jogo Second Life

Figura 2: Camadas de Software no Java 3D

Figura 3: Relação das Características Essenciais, Modelos de Serviço e Modelos de

Implantação

Figura 4: Características Essenciais de Cloud Computing

Figura 5: Modelos de Serviço

Figura 6: Exemplo de Aplicativos no Modelo Software as a Service (SaaS)

Figura 7: Exemplo de Ambientes no Modelo Platform as a Service (PaaS)

Figura 8: Relacionamento entre os Modelos de Implantação

Figura 9: Estrutura Básica de um Banco de dados como Serviço

Figura 10: Classificação de Banco de Dados nas Nuvens

Figura 11: Disseminação das primeiras ideias sobre reuso de software

Figura 12: Processo de Desenvolvimento de Software baseado em DBC proposto por

Sommerville

Figura 13: Arquitetura do NRVA

Figura 14: Ambiente do TSS

Figura 15: Ambiente do ViMeT

Figura 16: Representação do Processo de Desenvolvimento Scrum

Figura 17: Arquitetura do AvComponent

Figura 18: Relação das Tecnologias e Frameworks envolvidos no Desenvolvimento

Figura 19: Arquitetura Interna do Browser

Figura 20: Processo de Associação de uma Task ao Browser

Figura 21: Representação gráfica da estrutura do descritor de implantação

Figura 22: Processo de Associação de uma Task ou Ambiente Tridimensional ao Browser

Page 9: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

Figura 23: Implementação Mínima para uma Task

Figura 24: Resultado da associação de uma Task simples

Figura 25: Processo de Solicitação de um Ambiente em Base Interna

Figura 26: Arquitetura do VEPersonal

Figura 27: Arquitetura do VEPersonal após integração com o AvComponent

Figura 28: Processo de Solicitação de uma Task

Figura 29: Apresentação de um Ambiente pelo VEPersonal

Figura 30: Ambiente Apresentado pelo VEPersonal com TouchSensor Mapeado pelo

AvComponent

Figura 31: Apresentação de uma Task do AvComponent no VEPersonal

Figura 32: Demonstração do Módulo de Modelagem Visual de Agentes com o

AvComponent

Page 10: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

LISTA DE QUADROS

Quadro 1: Obstáculos e Oportunidades em Cloud Computing

Quadro 2: Requisitos chave para um SGBD nas nuvens

Quadro 3: Benefícios e Dificuldades na Abordagem de Reuso de Software

Quadro 4: Requisitos para Estruturação de um Repositório de Componentes

Quadro 5: Comparativo entre as Ferramentas Analisadas

Quadro 6: Relação dos Papéis e Responsabilidades no Processo Scrum

Quadro 7: Exemplo válido de um descritor de implantação para o browser

Quadro 8: Parte do Ambiente X3D para o Processo de Associação de uma Task ao

Browser

Quadro 9: Arquivo browser.xml para Processo de Associação de uma Task ao Browser

Quadro 10: Descrição dos Testes realizados na Aplicação

Page 11: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

LISTA DE ABREVIAÇÕES

AV: Ambientes Virtuais

AVA: Ambiente Virtual Adaptativo

API: Application Programming Interface

BD: Banco de Dados

CC: Cloud Computing

DBC: Desenvolvimento Baseado em Componentes

DSL: Domain Specific Languages

DSVL: Domain Specific Visual Language

EAD: Ensino a Distância

EC2: Amazon Elastic Cloud Computing

ES: Engenharia de Software

GP: Gerência de Projetos

IAAS: Infrastructure as a Service

JPA: Java Persistence API

MOR: Mapeamento Objeto-Relacional

NIST: National Institute of Standards and Technology

OTAN: Organização do Tratado do Atlântico Norte

OO: Orientação a Objetos

PAAS: Platform as a Service

PMK: Project Management Knowledge

RV: Realidade Virtual

SL: Service Locator

SAAS: Software as a Service

SGBD: Sistemas de Gerenciamento de Banco de Dados

SMA: Sistema Multi-Agente

TI: Tecnologia da Informação

TSS: Transformer Substation Simulation

VEPERSONAL: Personalized Virtual Environment

VPN: Virtual Private Network

Page 12: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

VRML: Virtual Reality Model Language

X3D: Extensible 3d

XML: eXtensible Markup Language

XP: Extreme Programming

Page 13: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

SUMÁRIO

1 Introdução ................................................................................................. 14

1.1 Motivação ............................................................................................................. 15 1.2 Objetivos ............................................................................................................... 16 1.3 Organização do Trabalho...................................................................................... 16

2 Referencial Teórico .................................................................................. 18

2.1 Realidade Virtual .................................................................................................. 18

2.1.1 Representação de Objetos Tridimensionais ...................................................... 21 2.1.2 Armazenamento de Objetos Tridimensionais .................................................. 22

2.2 Computação nas Nuvens (Cloud Computing) ...................................................... 24 2.2.1 Características Essenciais ................................................................................. 26

2.2.2 Modelos de Serviço .......................................................................................... 28 2.2.3 Modelos de Implantação ................................................................................... 31

2.2.4 Tendências da Cloud Computing ...................................................................... 33 2.3 Banco de Dados nas Nuvens (Cloud Databases) ................................................. 33

2.3.1 Categorias ......................................................................................................... 35

2.4 Engenharia de Software ........................................................................................ 36 2.4.1 Reuso de Software ............................................................................................ 37

2.5 Trabalhos Relacionados ........................................................................................ 41 2.5.1 NRVA ............................................................................................................... 42 2.5.2 Java Adaptive Dynamic Environment .............................................................. 43

2.5.3 Transformer Substation Simulation (TSS) ........................................................ 44 2.5.4 Virtual Medical Training (ViMeT) ................................................................... 44

2.6 Conclusões ............................................................................................................ 45

3 AvComponent: Um Framework para Desenvolvimento de Componentes

de Realidade Virtual em Infraestrutura de Compartilhamento de Componentes

em Nuvem ........................................................................................................ 47

3.1 Metodologia de Desenvolvimento ........................................................................ 47 3.2 Arquitetura de Software ........................................................................................ 49

3.2.1 Tecnologias ....................................................................................................... 51

3.2.2 Módulo Cliente (Browser) ................................................................................ 52 3.2.3 Módulo Servidor ............................................................................................... 59

3.3 Testes .................................................................................................................... 60

3.4 Considerações Finais ............................................................................................ 62

4 Aplicação do Framework para Reuso de Ambientes na Ferramenta

VEPersonal ....................................................................................................... 63

4.1 Ferramenta VEPersonal ........................................................................................ 63 4.2 Processo de Integração com o VEPersonal .......................................................... 64 4.3 Execução do Cenário do Estudo de Caso ............................................................. 66 4.4 Avaliação do Cenário do Estudo de Caso ............................................................ 68 4.5 Considerações Finais ............................................................................................ 70

Page 14: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

5 Conclusões e Trabalhos Futuros............................................................... 71

5.1 Contribuições ........................................................................................................ 71 5.2 Limitações ............................................................................................................ 72 5.3 Trabalhos Futuros ................................................................................................. 72

5.3.1 Modelagem Visual de Agentes Inteligentes ..................................................... 72

5.3.2 Ferramenta Web de Gerenciamento de Componentes ..................................... 74 5.4 Produção Científica .............................................................................................. 74

Referências ....................................................................................................... 81

Page 15: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

14

1 Introdução

Buscando a redução do impacto na adoção de Ambientes de Ensino a Distância (EAD),

Ambientes Virtuais (AV) estão sendo aplicados, pois eliminam as fronteiras físicas para o

aprendizado, de maneira que o desenvolvimento de habilidades cognitivas seja realizado

com uso da Internet.

Nestes ambientes, a realidade pode ser descrita como ambientes interativos,

compostos por objetos tridimensionais, com objetivo de simular ambientes reais ou

imaginários, de maneira que os usuários interajam por meio da visualização e manipulação

de objetos (Kirner e Siscoutto, 2007).

Nos últimos anos, AV tornaram-se uma das ferramentas adotadas para a

composição de ambientes de aprendizagem em diversas áreas do conhecimento (Aquino et

al., 2007), como por exemplo os relacionados às áreas de Medicina e Engenharia de

Software.

Especificamente na área de medicina, pode-se citar como exemplo o MEDIDACTE

Project (Soul et al., 2001), o qual dispõe de um ambiente adaptativo para o

desenvolvimento de capacidades na referida área. Uma importante característica do projeto

é a adaptatividade, que permite tratar de maneira individual as necessidades inerentes de

cada usuário, considerando a sua capacidade cognitiva.

Por outro lado, na área de Engenharia de Software, existe um ambiente de ensino a

distância chamado Project Management Knowledge (PMK) Learning Environment

(Torreão, 2005), que atua no ensino de conceitos na área de Gerência de Projetos (GP).

Atuando na mesma área, o Honey (Souza et al., 2008) possui foco no ensino de

metodologias ágeis, em especial a metodologia Extreme Programming (XP) (Beck, 2000;

Martin, 2003).

Apesar dessa evolução, as ferramentas que utilizam AV têm no processo de criação

dos seus ambientes uma limitação. Uma vez que os artefatos são gerados pelas ferramentas

ou frameworks estão limitados apenas à aquela plataforma. Entretanto, estes artefatos

poderiam representar boas soluções na área e serem disseminados, ou ainda evoluídos em

outras plataformas, o que é impossibilitado pela limitação supracitada.

Page 16: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

15

Neste contexto, a introdução de técnicas de reuso poderia estimular a criação de AV

melhores, independentemente de plataformas, visto que as boas soluções geradas pela

comunidade poderiam ser reutilizadas e possivelmente aprimoradas.

O Reuso de Software comumente é relacionado a aumento de produtividade e

qualidade nos artefatos gerados, que podem ser reutilizados em vários projetos. Segundo

Souza e Wills (1999), nesta área quando se cita o Reuso de Software não apenas se refere

ao código fonte, mas também às interfaces de usuário, testes, entre diversos artefatos

relacionados.

Na área de Reuso de Software, existem diversas abordagens, entre elas o

Desenvolvimento Baseado em Componentes (DBC) (Sametinger, 1997), Linguagens

Específicas de Domínio, mais comumente conhecidas pela sua sigla DSL, referindo-se ao

termo em inglês Domain Specific Languages (DSL) (Fowler, 2010; Mernik et al., 2005).

Além dos citados, existem técnicas como Reengenharia de Software (Jacobson e

Lindstrom, 1991), Designação de Frameworks (Johnson, 1997), entre outras abordagens

menos populares.

Entre as técnicas citadas anteriormente, o DBC tem destaque como uma abordagem

promissora na área de Realidade Virtual (Oliveira et al., 2009), uma vez que componentes

são reutilizáveis, intercambiáveis, de uso geral ou específicos, podendo interagir ainda com

outros componentes.

1.1 Motivação

Com objetivo de usufruir dos benefícios da abordagem do DBC em ambientes de RV,

pode-se criar um serviço de repositório de Ambientes Virtuais, possibilitando o

armazenamento, busca e recuperação destes ambientes (Guo e Luqui, 2000), o que

possibilita a contribuição para a disseminação das soluções.

Entretanto, verifica-se que, em alguns casos, tem-se a disponibilização de ambientes

tridimensionais ou componentes de Software, porém, seguem a mesma limitação técnica, na

qual os componentes estão destinados a apenas uma plataforma. Além disto, os repositórios

não atuam de maneira distribuída, limitando a escalabilidade e disponibilidade do sistema.

Page 17: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

16

1.2 Objetivos

Esta dissertação tem como objetivo principal propor, construir e validar um framework que

fornece uma infraestrutura para disponibilização de componentes em RV, seja componente

de Software, ou de ambientes tridimensionais, como qualquer artefato que possa ser

descrito por meio desta infraestrutura.

A infraestrutura desenvolvida, denominada AvComponent framework disponibiliza

estes componentes em um repositório baseado em Cloud Computing, que possibilita o

compartilhamento dos componentes de maneira distribuída.

1.2.1 Objetivos Específicos

Analisar as técnicas de Reuso de Software e suas aplicações em Ambientes Virtuais;

Desenvolver um framework visando definir componentes na área de RV;

Analisar as técnicas de Cloud Computing, em especial Cloud Databases;

Desenvolver um repositório para os componentes integrado ao framework

desenvolvido, disponibilizado em um ambiente de Cloud Computing; e

Validar o framework desenvolvido em integração com a ferramenta VEPersonal.

1.3 Organização do Trabalho

Além desta introdução, este trabalho está organizado em mais seis capítulos como se segue:

Capítulo 2 – Referencial Teórico: Nesse capítulo, serão abordados inicialmente

conceitos essenciais na área de Realidade Virtual (RV), Computação nas Nuvens (Cloud

Computing - CC), com ênfase em Banco de Dados nas Nuvens (Cloud Databases). Além

destes assuntos, ainda são abordados conceitos de Engenharia de Software, com foco

Page 18: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

17

especial em DBC. Por fim, é realizada uma análise dos trabalhos relacionados e as

considerações finais do capítulo.

Capítulo 3 - Uma Infraestrutura para Reutilização de Ambientes Virtuais

Tridimensionais com Técnicas de Reuso de Software e Cloud Computing: Nesse

capítulo, será abordada a metodologia de desenvolvimento adotada para a construção do

framework e os detalhes da sua arquitetura de software, incluindo as tecnologias utilizadas,

e na sequencia descrevem-se os testes de software realizados.

Capítulo 4 - Aplicação do Framework para Reuso de Ambientes na Ferramenta

VEPersonal: Nesse capítulo, é abordada a ferramenta VEPersonal, que será usada como

estudo de caso, detalhando todo o processo de integração. Na sequência, tem-se detalhes

sobre a execução e avaliação do estudo de caso, seguido pelas considerações finais do

capítulo.

Capítulo 5 – Conclusões e Trabalhos Futuros: Neste capítulo é realizada a

apresentação das contribuições do trabalho, seguida das suas limitações. Na sequência,

serão apresentados alguns possíveis trabalhos futuros e a produção científica resultante

deste trabalho.

Page 19: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

18

2 Referencial Teórico

Esta dissertação envolveu três abrangentes linhas de pesquisa, que são a Realidade Virtual,

Computação nas Nuvens e Engenharia de Software.

Com objetivo de esclarecer cada uma destas linhas de pesquisa, assim como os

pontos relevantes para este trabalho, neste capítulo são descritos conceitos relacionados à

Realidade Virtual, incluindo as formas de representação e armazenamento.

Em seguida, é examinada a computação das nuvens e, em especial, o banco de dados

nas nuvens. Por fim, são tratados conceitos de engenharia de software importantes para este

trabalho, como Reuso de Software e a sua técnica chamada desenvolvimento baseado em

componentes.

2.1 Realidade Virtual

A área de RV é uma das subáreas da Computação Gráfica que permite a criação de

ambientes gerados por computador que lidam com características como imersão, de

maneira que a realidade é representada por meio de objetos tridimensionais (Machado,

2003; Kirner e Siscoutto, 2007).

Segundo Braga (2001), o termo RV se refere a uma técnica avançada de interface,

que prevê a interação do usuário por meio de ambientes tridimensionais.

Complementarmente, o mesmo autor explicita que a RV é composta de três ideias básicas:

interação, envolvimento e imersão.

Os ambientes construídos com emprego de Realidade Virtual são também

conhecidos por AV, e conforme Oliveira et al. (2009) pode ser definido como um ambiente

na qual é incorporado algum avatar, ou seja, o usuário atua como um personagem, podendo

interagir com o ambiente, o qual pode ser compostos por diversas entidades, a exemplo de

casas, veículos ou pessoas (Singhal e Zyda, 1999).

Desta maneira, torna-se possível a participação e interação de diversos usuários

entre si e em tempo real, de maneira que estes passam estar conectados em locais

geograficamente diferentes, colaborando e interagindo entre si (Kirner e Siscoutto, 2007).

Page 20: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

19

Em sistemas de RV, a interatividade está relacionada às respostas do sistema em

função das ações do usuário, envolvendo navegação e capacidade de manipular objetos do

mundo virtual (Pessin et al., 2008). Entretanto, para que esta interatividade seja

desempenhada de maneira mais realista é essencial que a geração de imagens seja em

tempo real e direcionada às necessidades do usuário.

Neste contexto, Braga (2001) também relaciona alguns benefícios na utilização de

Realidade Virtual:

Amplia a motivação dos usuários;

Aprimora capacidade de representação de conceitos;

Permite a análise do ambiente em diversos âmbitos;

Possibilita a realização de novas experiências;

Possibilita conhecer o seu próprio nível de aprendizado; e

Facilita o manuseio de pessoas com deficiência de maneira a realizar tarefas

antes não possíveis.

De acordo com o modo de interação do usuário, os AV podem ser classificados em:

Ambientes Imersivos: nestes ambientes, o usuário tem a sensação que as

suas atividades produzem reações em ambientes virtuais. Para o

desenvolvimento de ambientes imersivos, é necessária a aquisição de

dispositivos que possibilitem a captura dos movimentos do usuário, como

por exemplo, luvas e capacetes digitais (Kirner, 1996); e

Ambientes Não-Imersivos: nestes ambientes, as interações com os

ambientes tridimensionais serão realizadas com emprego de monitores de

vídeo. Embora estes não necessitem de dispositivos de captura de

movimentos, muitas vezes são os mais adotados, pois possuem menor custo

envolvido, são independentes da localização geográfica do usuário, e, além

disso, podem fazer uso das novas tecnologias para representação de

ambientes tridimensionais existentes (Kirner, 1996).

Page 21: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

20

Devido à inserção de ambientes tridimensionais que representam à realidade, assim

como a associação de atributos como interação, envolvimento e imersão, os ambientes

virtuais são frequentemente aplicados em sistemas de entretenimento e educação (Braga,

2014).

No entanto, a aplicabilidade destes ambientes não se restringe aos citados

anteriormente, podendo ser utilizados em sistemas de simulação, como por exemplo, o

Second Life, mostrado na Figura 1, que conforme o nome se propõe, disponibiliza um

ambiente tridimensional de maneira que você pode escolher o seu avatar, podendo interagir

com outras pessoas, representando uma segunda vida, porém dentro deste ambiente.

Figura 1: Apresentação do Jogo Second Life

Fonte: http://www.secondlife.com

No sentido de ampliar a discussão sobre o assunto, a Seção 2.1.1 apresenta as

formas de representação de objetos tridimensionais geralmente empregadas para o

desenvolvimento de ambientes virtuais, enquanto na Seção 2.1.2 serão discutidas as formas

de armazenagem destes ambientes.

Page 22: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

21

2.1.1 Representação de Objetos Tridimensionais

Para o desenvolvimento de Ambientes Virtuais, tem-se a necessidade de utilização de uma

linguagem que possibilite a definição de objetos tridimensionais, podendo descrever

propriedades como cor, escala, dimensões, posicionamento e forma, de maneira que o

usuário possa interagir e recuperar informações (Aquino et al., 2007).

Atuando neste sentido, com relação a linguagens utilizadas para representação dos

objetos tridimensionais, será relacionado neste trabalho o Java 3D (Sowizral et al., 1997),

Virtual Reality Model Language (VRML) (Ames et al., 1997) e Extensible 3d (X3D) (X3D,

2014).

O framework Java3D é escrito com a linguagem Java (Java, 2014), e possui um

conjunto de classes que abstraem a complexidade na criação e manipulação de objetos

geométricos, com objetivo de fornecer um framework que atue independentemente de

plataforma, assim como é a linguagem Java e o VRML, que são discutidos na sequência

(Barrilleaux, 2000).

Conforme se pode verificar na Figura 2 abaixo, as aplicações que usam o framework

Java 3D estão escritas em um nível mais alto de abstração, ocultando detalhes na geração

de gráficos, informações de hardware, entre outras informações.

Figura 2: Camadas de Software do framework Java 3D

Fonte: Adaptado de http://www.inf.pucrs.br/~manssour/Publicacoes/TutorialSib2003.pdf

Page 23: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

22

Na sequência, é abordada a linguagem VRML. Esta permite a construção de

mundos virtuais com objetos persistidos no sistema de arquivos, devendo ao ambiente

possuir todas as características necessárias para sua execução (Carey e Bell, 1997).

Por fim, a linguagem X3D, provida pela Web3D Consortium, é uma evolução do

VRML supracitado, caracterizado por uma padronização mais elaborada, que permite a

manipulação de objetos em tempo real, desta maneira promovendo o reuso, além de ter

integração com Serviços Web, o que dá a possibilidade de vincular recursos externos, além

de permitir a integração entre sistemas (Brutzman, 2010).

Após apresentação de como os ambientes tridimensionais podem ser representados,

na Seção 2.1.2 apresenta como estes são armazenados.

2.1.2 Armazenamento de Objetos Tridimensionais

As linguagens como a X3D permitem construir ambientes tridimensionais utilizando uma

estrutura XML, atuando especificamente nesta linguagem, uma vez que este trabalho faz

uso desta linguagem, nesta seção são identificadas as maneiras com que estes objetos

tridimensionais que compõem estes ambientes podem ser armazenados visando a

identificação de maneiras de promover a reutilização destes.

a) Banco de Dados Relacional

A origem do termo Banco de Dados (BD) surge da palavra em inglês databank, de

maneira que os primeiros trabalhos usaram este termo. Porém, o termo passou a ser

descontinuado, enquanto o termo database, que significa Base de Dados passou a ser usado

amplamente até os dias atuais (Heuser, 2011).

O modelo de BD Relacional foi introduzido pelo pesquisador inglês Edward Frank

Codd (1970) no artigo A relational model for large shared data banks, na qual se baseia na

teoria das relações para fornecer o gerenciamento de dados.

O termo BD se refere ao mecanismo de armazenamento e recuperação de dados, de

forma que o que torna relacional é o modo com que estes dados estão dispostos, em que

neste caso, refere-se às tabelas, na qual os relacionamentos entre tabelas as tornam

relacionais e atualmente é o tipo mais amplamente usado nos sistemas (Heuser, 2011).

Page 24: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

23

Pode-se citar como exemplos de Sistemas de Gerenciamento de Banco de Dados

(SGBD) relacionais amplamente usados o MySQL (MySQL, 2014), PostgresSQL

(PostgreSQL, 2014), SQL Server (SQLServer, 2014) e o Oracle Database (Oracle, 2014).

O uso deste tipo de SGBD em aplicações de RV acontece por meio da utilização de

campos para armazenamento de texto, na qual são inseridos os arquivos X3D em formato

XML, ou ainda, em formato binário (Aquino et al., 2007), entretanto ambas as abordagens

hoje não são amplamente usadas devido às funcionalidades de manipulação de arquivos em

formato XML descritas a seguir.

b) Banco de Dados (XML nativo ou com suporte para XML)

Para permitir um tratamento de documentos XML de maneira mais eficiente,

surgiram os SGBD XML, que nativamente possuem modelo lógico baseado em

documentos XML (Mello, 2002).

Os SGBD XML, visando interagir com o XML persistido incorporam linguagens de

consultas como o XPath (XPath, 2014) ou o XQuery (XQuery, 2014), que possibilitam

consultar padrões em textos ou consultar por trechos do arquivo XML, obtendo como

resposta fragmentos do arquivo ou ainda informações em específico.

Neste contexto, tem-se SGBD que foram desenvolvidos especificamente para

trabalhar com documentos XML, que são os SGBD XML nativos, a exemplo do Oracle

Berkeley DB (Olson et al., 1999). Por outro lado, existem outros tipos de SGBD que podem

adquirir tais funcionalidades com uso de extensões como é o caso do PostgreSQL (Kido et

al., 2006).

O uso deste tipo de SGBD em aplicações de RV acontece por meio da utilização de

consultas em formato XML persistidas, podendo retornar trechos do ambiente, ou ainda

informações específicas, entretanto com um desempenho superior aos de SGBD

relacionais, visto que o tratamento do arquivo XML é realizado pelo SGBD, seja de

maneira nativa ou customizada com uso de bibliotecas (Sousa et al, 2010).

Page 25: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

24

c) Banco de Dados Nas Nuvens

A Cloud Computing surge como uma possibilidade de expor suas aplicações, e neste

caso o SGBD, em um ambiente de terceiros, que dispõe de toda a infraestrutura necessária

(Abadi, 2009).

Por se tratar de um tema emergente, o qual o framework proposto neste trabalho

abordará, as Seções 2.2 e 2.3 tratam respectivamente dos temas Computação das Nuvens

(Cloud Computing) e Banco de Dados nas Nuvens (Cloud Databases).

2.2 Computação nas Nuvens (Cloud Computing)

O termo cloud se originou na área das telecomunicações, ao utilizarem os serviços de

Virtual Private Network (VPN) para comunicação de dados (Jadeja e Modi, 2012).

Posteriormente, este termo migrou para a área de Tecnologia da Informação (TI), movendo

computação e dados para Data Centers.

A definição de Cloud Computing mais disseminada foi provida pelo National

Institute of Standards and Technology (NIST) informa que “Computação em Nuvem é um

modelo que possibilita acesso, de modo conveniente e sob demanda, a um conjunto de

recursos computacionais configuráveis que podem ser rapidamente adquiridos e liberados

com mínimo esforço gerencial ou interação com o provedor de serviços” (Mell e Grance,

2011; Jansen e Grande, 2011).

Na seqüência é mostrada na Figura 3, segundo a definição do NIST, quais seriam as

características essenciais, modelos de serviço e implantação, que serão aprofundadas em

seções posteriores.

Page 26: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

25

Figura 3: Relação das Características Essenciais, Modelos de Serviço e Modelos de Implantação

Fonte: Adaptado de Mell e Grance (2011)

Segundo Jadeja e Modi (2012), o principal objetivo da Cloud Computing é fazer

melhor uso de recursos distribuídos, combinando-os para obter maior rendimento e ser

capaz de solucionar problemas de escalabilidade em computação.

Armbrust et al. (2012), em seu trabalho A View of Cloud Computing, define Cloud

Computing e se refere à aplicações entregues como serviços na Internet e Hardware e

Software alocados em Data Centers, que provêem estes serviços.

Nos últimos anos, o conceito de Cloud Computing se difundiu, de maneira que o

pagamento é realizado da mesma maneira de uma conta de água, luz ou telefone, isto é,

baseado no uso (Weinhardt, 2009). Desta maneira, a utilização de recursos de computação

passam a ser disponilizados de maneira transparente com pagamento baseado na utilização.

Armbrust et al. (2012) sintetiza no Quadro 1 abaixo os dez obstáculos para o

crescimento deste tema e, para cada um dos obstáculos, as oportunidades existentes.

Conforme o mesmo autor, os três primeiros afetam a adoção, os próximos cinco afetam o

crescimento e os dois últimos são políticas e obstáculos no negócio.

Page 27: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

26

Quadro 1: Obstáculos e Oportunidades em Cloud Computing

Fonte: Lima (2014)

Nas próximas seções, descrevem-se em maiores detalhes as características

essenciais da Computação nas Nuvens, modelos de serviço e modelos de implantação, até

que na sequencia discutiremos o tema Cloud Databases.

2.2.1 Características Essenciais

Conforme discutido anteriormente, a definição de Cloud Computing proposta pelo NIST,

sintetizada na Figura 3, elencava algumas de suas características, relacionada na Figura 4 a

seguir e discutida em maiores detalhes na sequência.

Page 28: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

27

Figura 4: Características Essenciais de Cloud Computing

Fonte: Adaptado de http://engineeringmentor.com/cloud-computing-characteristics-the-essential-five-to-

understand/

a) Auto-atendimento sob demanda (On-demand Self-service)

Neste caso, o cliente poderá adquirir recursos computacionais unilateralmente, na

medida em que for necessário, sem interação humana. Por exemplo, o cliente possui um

servidor nas nuvens de uma empresa e caso o tráfego esteja excedendo a quantidade

adquirida, ou o processador ou espaço em disco estiver insuficiente, ou quaisquer outros

recursos computacionais na mesma situação, pode-se adquirir mais recursos

instantaneamente (Mell e Grance, 2011; Jansen e Grande, 2011; Sousa et al., 2010).

b) Rápida Elasticidade (Rapid Elasticity)

Neste caso, os recursos podem ser adquiridos e removidos com elasticidade,

possibilitando escalabilidade de acordo com a demanda e a possibilidade de liberação de

recursos quando há uma diminuição da demanda, ou seja, de acordo com o ponto de vista

do usuário, os recursos parecem ilimitados (Mell e Grance, 2011; Sousa et al., 2010).

Usando o exemplo descrito anteriormente, em que o cliente tinha necessidade de mais

recursos (seja de armazenamento, processamento, tráfego, entre outros), o fator descrito

aqui (Rápida Elasticidade) possibilita que os recursos solicitados estejam disponíveis

instantaneamente (Sousa et al., 2010).

Page 29: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

28

c) Amplo Acesso à Rede (Ubiquitous Network Access)

Neste caso, os serviços disponibilizados na nuvem estão acessíveis de qualquer

plataforma, sendo usadas em plataformas heterogêneas, por exemplo, para um computador

pessoal ou um smartphone (Mell e Grance, 2011; Sousa et al., 2010).

d) Pool de Recursos (Resource Pooling)

Neste caso, os recursos computacionais são organizados em um pool para servir

múltiplos usuários, ou seja, há uma virtualização de armazenamento de maneira que a

localização física dos recursos é transparente para o usuário (Mell e Grance, 2011; Sousa et

al., 2010).

e) Serviços Mensuráveis (Measured Service)

Neste caso, os recursos adquiridos são controlados e monitorados automaticamente, de

maneira que há uma transparência entre o cliente e o fornecedor, informando os serviços

adquiridos e a utilização em dado momento (Mell e Grance, 2011; Sousa et al., 2010).

Além da transparência, permite ao cliente evitar a indisponibilidade do serviço por

algum recurso computacional, de maneira que, em dado momento recursos complementares

podem ser adquiridos para suprir uma possível falta.

Após apresentação dos detalhes dos itens elencados pelo Nist (Mell e Grance, 2011;

Jansen e Grande, 2011) como características essenciais da Computação nas Nuvens, na

Seção 2.2.2 serão detalhados os modelos de serviço

2.2.2 Modelos de Serviço

Seguindo a definição de Cloud Computing proposta pelo Nist, sintetizada na Figura 3,

foram elencados três tipos de modelos de serviço, detalhados posteriormente e relacionados

na Figura 5.

Page 30: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

29

Figura 5: Modelos de Serviço

Fonte: Adaptado de http://www.cloudreview.in

a) Software as a Service (SaaS)

Dentre os três modelos de serviço, o SaaS é o mais amplamente conhecido, visto

que o foco principal são os usuários finais, conforme relacionado na Figura 5, fornecendo

os serviços de uma aplicação sendo executada na infraestrutura nas nuvens.

Pode-se citar como exemplos, o Google Drive e o Amazon S3, que oferecem

serviços de armazenamento de dados nas nuvens (Cloud Storage), assim como o Gmail,

que atua provendo serviços de correio eletrônico. Ainda podem-se citar como exemplos, os

aplicativos apresentados na Figura 6.

Nota-se que muitas destas aplicações são amplamente utilizadas e os usuários

desconhecem a infraestrutura subjacente que provê o serviço.

Page 31: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

30

Figura 6: Exemplo de Aplicativos no Modelo Software as a Service (SaaS)

Fonte: Adaptado de http://www.cloudreview.in

b) Platform as a Service (PaaS)

Provê ao consumidor a capacidade de implantar aplicações criadas pelo próprio usuário

ou desenvolvidas pelo provedor em uma infraestrutura na Cloud Computing (Mell e

Grance, 2011). Por este motivo, conforme relacionado na Figura 5, o foco principal são os

desenvolvedores.

Pode-se citar como exemplos, os aplicativos apresentados na Figura 7, entre os quais se

pode destacar o Windows Azure, no qual qualquer desenvolvedor cadastrado pode enviar os

seus aplicativos e a infraestrutura é controlada pela Microsoft.

Figura 7: Exemplo de Ambientes no Modelo Platform as a Service (PaaS)

Fonte: http://www.cloudreview.in

Page 32: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

31

Complementarmente, Sousa et al (2010) informam que um PaaS fornece sistema

operacional, linguagens de programação e ambiente de desenvolvimento para aplicações,

auxiliando a implementação de sistemas de software.

c) Infrastructure as a Service (IaaS)

Neste caso se tem acesso transparente aos servidores, as redes e ao armazenamento ou

outros recursos computacionais, podendo desta forma executar qualquer software,

incluindo sistemas operacionais (Mell e Grance, 2011).

Seguindo a mesma ideia dos anteriores, a infraestrutura é controlada e monitorada pelo

provedor, como é o exemplo do Amazon Elastic Cloud Computing (EC2), que provê acesso

a máquinas virtuais hospedadas no Data Center da Amazon (Sousa et al., 2010).

Com a designação do modelo de serviço é necessário selecionar o modelo de

implantação, que conforme se discute na Seção 2.2.3, depende principalmente da

necessidade, assim como do objetivo do negócio a ser implantado.

2.2.3 Modelos de Implantação

Após selecionar o modelo de serviço, que pode ser IaaS, PaaS ou SaaS, há a

necessidade de definir qual o modelo de implantação necessária, uma vez que tem-se a

necessidade de ambientes mais restritos, pois dependendo da área de negócio, a exposição

dos dados nas nuvens pode se tornar uma vulnerabilidade.

De acordo com Sousa et al. (2010), a escolha do modelo de implantação está

baseada nos seguintes itens:

Restrição ou Abertura de Acesso;

Área de Atuação;

Tipo de Informação; e

Nível de Visão.

Page 33: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

32

Neste contexto, os Modelos de Implantação segundo a definição de Cloud

Computing proposta pelo Nist, são detalhados posteriormente e relacionados na Figura 8.

Figura 8: Relacionamento entre os Modelos de Implantação

Fonte: Sousa et al. (2010)

a) Nuvem Pública

A infraestrutura da Cloud é provisionada para uso geral e amplamente disponível e está

sob as premissas do provedor da Cloud, fazendo com que tenha perspectiva de redução na

sua utilização, devido a segurança dos dados, o que impulsionou a Nuvem Híbrida, que é

detalhada na sequência (Sousa et al., 2010).

b) Nuvem Privada

A infraestrutura da Cloud é provisionada para uso exclusivo para apenas uma

organização (Sousa et al., 2010).

c) Nuvem Comunidade

A infraestrutura da Cloud é provisionada para uso exclusivo por uma comunidade de

consumidores de organizações que possuem interesses comuns, a exemplo de requisitos de

segurança, política, entre outros requisitos (Sousa et al., 2010).

Page 34: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

33

d) Nuvem Híbrida

A infraestrutura da Cloud é a composição de dois ou mais distintas infraestruturas nas

nuvens (privada, pública ou comunidade), de forma que permanecem entidades únicas, ou

seja, virtualizadas como uma única entidade, porém unidas por tecnologia, permitindo, por

exemplo, balanceamento de carga entre nuvens (Sousa et al., 2010).

2.2.4 Tendências da Cloud Computing

De acordo com Morrissey (2014), o tema Cloud Computing seguirá transformando a

maneira como as organizações fazem negócios e pode-se esperar um aprimoramento nos

mecanismos de segurança e controle corporativo, de maneira que as empresas possam

mover processos importantes para a nuvem.

Skok (2014) assinalou que a Nuvem Híbrida passará a ser a mais utilizada nos

próximos 5 anos, enquanto que a Nuvem Pública diminuirá substancialmente devido a

preocupações com segurança.

Com apresentação das características essenciais da Computação nas Nuvens, seus

modelos de serviço e implantação, na Seção 2.3 será detalhado uma tendência de aplicações

em Cloud Computing, que é o Banco de Dados nas Nuvens (Cloud Databases).

2.3 Banco de Dados nas Nuvens (Cloud Databases)

Nos últimos anos, com o crescimento de ferramentas baseadas na Cloud Computing, surge

a possibilidade de disponibilizar banco de dados, como uma opção para redução de custo

através do medição da utilização dos serviços, disponibilizando a infraestrutura e o sistema

para terceiros (Abadi, 2009).

Outro fato que torna o banco de dados candidatos potenciais para implantação na

nuvem é a manutenção de um banco de dados em sua infraestrutura temos uma instalação

complexa e o alto custo de hardware, assim como licenciamento (Sousa et al., 2010).

Em seu artigo Relational Cloud: The Case for Database Service, Curino et al.

(2010), após discussão com pesquisadores na área e potenciais usuários, elencou quais

Page 35: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

34

seriam os requisitos chave para um SGBD atuar como um serviço, apresentado no Quadro

2. Desta forma, os clientes podem ter maior previsibilidade, custos inferiores e redução de

complexidade técnica (Curino et al., 2010).

Quadro 2: Requisitos chave para um SGBD nas nuvens

Fonte: Sousa et al. (2010)

Baseado nos requisitos expostos anteriormente, Sousa et al. (2010) apresentaram

como seria uma estrutura básica de um Banco de Dados atuando como Serviço, mostrada

na Figura 9. Cada inquilino contrata o provedor de serviços e a responsabilidade de

disponibilidade e confiabilidade são transferidos ao provedor, mantendo a transparência da

infraestrutura ao usuário .

Page 36: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

35

Figura 9: Estrutura Básica de um Banco de dados como Serviço

Fonte: Sousa et al. (2010)

Após apresentar a estrutura básica de um Banco de Dados como Serviço, na Seção

2.3.1 apresentam-se as categorias de Banco de Dados na Cloud Computing.

2.3.1 Categorias

O Banco de Dados na Cloud Computing, conforme apresentado na Figura 10, podem ser

classificados em Relacionais e Não-Relacionais, estes últimos podendo ser considerados

como Nativos ou Não-Nativos, de forma que:

No primeiro quadrante, tem-se SGBD relacionais construídos para operar

nas nuvens, incluindo funcionalidades de administração de dados adequadas;

No segundo quadrante, tem-se SGBD que não foram concebidos para a

nuvem, entretanto podem ser utilizados neste sentido;

No terceiro quadrante, tem-se SGBD que foram concebidos para a nuvem e

não são relacionais, utilizando o par chave-valor, tendo-se como exemplos o

Amazon S3, HBase, Cassandra e o Voldermont.

Page 37: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

36

No quarto e último quadrante, tem-se SGBD que não são relacionais e não

foram concebidos para as nuvens, como é o caso do Neo4j, Orient DB,

Couch DB e o Mongo DB.

Figura 10: Classificação de Banco de Dados nas Nuvens

Fonte: Adaptado de Sousa et al. (2010)

Na Seção 2.4 descreve-se a Engenharia de Software, destacando técnicas de Reuso

de Software e uma das suas principais técnicas que é o Desenvolvimento Baseado em

Componentes.

2.4 Engenharia de Software

Engenharia de Software (ES) é o estabelecimento e o emprego de sólidos princípios de

engenharia para obtenção de software de forma econômica, que seja confiável e eficiente

em máquinas reais (Mahoney, 2004).

Em outra visão, Musa (1975), define ES como a aplicação da abordagem

sistemática, disciplinada e quantificável no desenvolvimento, na operação e na manutenção

do Software.

Page 38: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

37

Em 1968, diante da crise do software, em uma conferência na Organização do

Tratado do Atlântico Norte (OTAN), Mc Ilroy, conforme mostrado na Figura 11 apresenta

as primeiras ideias e os benefícios referentes ao conceito que existe de reuso de software.

Figura 11: Disseminação das primeiras ideias sobre reuso de software

Fonte: http://homepages.cs.ncl.ac.uk/brian.randell/NATO/N1968

Complementarmente, Krueger (1992) relata que durante esta conferência foi

apresentada uma definição simples, porém poderosa de reuso de software, momento em

que, segundo sua opinião, deveria ter se tornado um padrão em Engenharia de Software.

2.4.1 Reuso de Software

Entre as técnicas de programação, o Reuso de Software é uma das menos evidenciadas, pela

sua complexidade e ao baixo conhecimento do corpo técnico a respeito do assunto. Com a

utilização desta técnica, para um código desenvolvido, testado e disponibilizado em

ambiente de produção, este poderia ser reutilizado em outros cenários similares.

No ano de 1992, Charles Krueger relatou um cenário em que as empresas buscavam

melhorias em seu processo de criação de software, principalmente no que diz respeito a

Page 39: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

38

qualidade e produtividade. Neste contexto, Krueger (1992) define Reuso de Software como

o processo de criar novos aplicativos a partir de já existentes ao invés de construí-los desde

o início.

O reuso de software possibilita, de acordo com Freeman (1987), o uso destes

artefatos em outro cenário para o qual não foi produzido inicialmente. Em visão

complementar, Werner e Braga (2000), relatam que o reuso necessita de uma sistemática

ampla e formal para realizá-la, podendo obter os benefícios e dificuldades descritos no

Quadro 3.

Quadro 3: Benefícios e Dificuldades na Abordagem de Reuso de Software

Benefícios

- Qualidade

- Produtividade

- Redução de Custos

- Redução de Tempo

- Flexibilidade

Dificuldades

- Identificação, recuperação, compreensão

- Modificação, composição

- Qualidade de componentes

- Barreiras psicológicas, legais e econômicas

- Necessidade de incentivos

Fonte: Werner e Braga (2000)

Page 40: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

39

Para determinar boas propriedades para reuso de software, Krueger (1992) define

cinco dimensões:

Abstração - Identificar unidades de conhecimento reutilizáveis e representá-

los de forma abstrata;

Classificação - Armazenar o conhecimento reutilizável em uma base de

conhecimento classificada e indexada;

Seleção - Consultar o conhecimento reutilizável em forma parametrizada;

Especialização - Modificar o conhecimento reutilizável para atender novas

situações; e

Integração - Combinar o conhecimento reutilizável com seu projeto.

Pode-se citar como exemplos clássicos de reuso de software: as linguagens de

programação de alto nível, como a linguagem Java (Gosling, 2000), frameworks, como o

Swing (Ekstein et al., 1998) que atua na construção de interfaces gráficas.

Nesta área, existem diversas abordagens, entre elas o DBC (Sametinger, 1997),

Linguagens Específicas de Domínio, mais comumente conhecidas pela sua sigla DLS,

referindo-se ao termo em inglês Domain Specific Languages (DSL) (Fowler, 2010).

Além das abordagens citadas, existem técnicas como Reengenharia de Software

(Jacobson e Lindström, 1991), frameworks de aplicação (Camargo e Masiero, 2005),

padrões de projeto (Gamma et al., 1994), desenvolvimento de software orientado a aspectos

(Elrad e Bader, 2001), entre outras abordagens menos populares.

Na Seção 2.4.1.1 serão detalhados os conceitos de DBC, que possui abordagens

bem sucedidas em integração com aplicações na área de RV (Oliveira et al, 2009), uma vez

que componentes são reutilizáveis, intercambiáveis, de uso geral ou específicos, podendo

interagir ainda com outros componentes.

Page 41: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

40

2.4.1.1 Desenvolvimento Baseado em Componentes

Segundo Werner e Braga (2000), componentes de software são artefatos autocontidos,

identificáveis, possuindo função específica com interfaces bem definidas, de forma a

propiciar a sua reutilização em outros ambientes.

Uma visão complementar, Singhal e Zyda (1999) definem componentes como uma

unidade que possui interfaces especificadas previamente definidas, por meio de contratos e

dependências de contexto explícitas.

Nesta abordagem, um aplicativo é criado a partir da integração entre diversos

componentes, fazendo com que, após serem desenvolvidos possam ser reutilizados

integralmente em outros aplicativos, viabilizando o aumento de produtividade

(Sommerville, 2003).

Morisio (2000) relata que é necessária a introdução de processos de software

específicos ao invés de adaptar os processos tradicionais ao paradigma DBC, que é uma das

principais causas para fracasso na adoção do DBC. Complementarmente, Sommerville

(2003) propõe um fluxo de atividades para o processo de desenvolvimento de sistemas

baseados no paradigma DBC, mostrado na Figura 12.

Figura 12: Processo de Desenvolvimento de software baseado em DBC proposto por Sommerville

Fonte: Sommerville (2013)

Page 42: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

41

Segundo Henninger (1997), um ponto chave para obtenção de melhores resultados

com DBC é a estruturação de um repositório para acesso e disponibilização dos

componentes.

Para a estruturação de um repositório, Guo e Luqui (2000) elencaram no Quadro 4

os requisitos para estruturação de um repositório de componentes, que conforme Werner e

Braga (2000) podem ser classificados em: locais, específicos a um domínio e de referência.

Quadro 4: Requisitos para Estruturação de um Repositório de Componentes

Interface para as operações básicas no manuseio de componentes (uso,

pesquisa e disponibilização).

Disponibilização de documentação sobre cada componente.

Estrutura padrão para os componentes.

Esquema para classificação nos mais diversos domínios.

Fonte: Guo e Luqui, 2000

Compartilhando a mesma visão, Werner e Braga (2000) identificam que a chance de

um desenvolvedor reutilizar um dado componente está diretamente relacionada a

disponibilidade com que um componente possa ser localizado e recuperado.

Na Seção 2.5 serão relacionadas as ferramentas que trabalham com aplicação de

DBC na área de RV, que é o foco deste trabalho, considerando ambientes nas nuvens, assim

como ambientes que não estão nas nuvens.

2.5 Trabalhos Relacionados

O levantamento bibliográfico realizado teve como principal objetivo identificar os sistemas

que possuem suporte ao desenvolvimento de aplicações envolvendo conceitos de RV, DBC

e Cloud Computing.

Page 43: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

42

Neste contexto, para descrever os trabalhos relacionados, foram definidos critérios

de inclusão e exclusão, que foram:

- Critérios de Inclusão:

Plataformas/Aplicações/Frameworks que possuem suporte ao

desenvolvimento de aplicações na área de RV;

Plataformas/Aplicações/Frameworks que possuem suporte ao

desenvolvimento de aplicações na área de RV com base no DBC; e

Plataformas/Aplicações/Frameworks que possuem suporte ao

desenvolvimento de aplicações na área de RV com infraestrutura nas

Nuvens.

- Critério de Exclusão:

Plataformas/Aplicações/Frameworks que não possuem suporte ao

desenvolvimento de aplicações na área de RV.

2.5.1 NRVA

.

Relacionando o conceito de DBC na área de RV e RA em um ambiente na nuvem, o NRVA

(Freiberger, 2013) apresenta um modelo arquitetural de uma plataforma de produção,

compartilhamento e execução de aplicações de realidade virtual e aumentada, apresentado

na Figura 13.

A plataforma NRVA conta com dois níveis de abstração, o módulo Serviços de

Plataforma, que são os serviços básicos ofertados aos clientes, enquanto que o módulo

Subsistemas de Plataforma concentra os serviços de baixo nível, como controle de acesso e

recursos, produção, execução e renderização de mundos 3D (Freiberger, 2013).

Page 44: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

43

Figura 13: Arquitetura do NRVA

Fonte: Freiberger (2013)

2.5.2 Java Adaptive Dynamic Environment

.

Em uma perspectiva diferente do NRVA, o Java Adaptive Dynamic Environment (Oliveira

et al., 2003) disponibiliza um framework para o desenvolvimento de aplicações de RV na

linguagem Java (Goesling, 2000), de forma a unificar e padronizar este processo.

Entretanto, não há uma clara definição dos componentes, assim como estes poderiam ser

reutilizados em outras plataformas.

Page 45: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

44

2.5.3 Transformer Substation Simulation (TSS)

A ferramenta TSS (Li et al., 2010) possui similaridades com o NRVA, para criar uma

infraestrutura para desenvolvimento de aplicações de RV, de forma que nesta aplicação é

definido um ambiente de simulação de transformação em estações de energia elétrica, como

os apresentados na Figura 14.

Também é evidenciada neste trabalho a redução de custo, assim como aumento na

qualidade de software, uma vez que todos os componentes são gerados e montados por

meio da ferramenta.

Figura 14: Ambiente do TSS

Fonte: Li et al. (2010)

2.5.4 Virtual Medical Training (ViMeT)

Com atuação na produção de aplicações para simulação de exames de biópsia, como os da

Figura 15, o Virtual Medical Training (ViMeT) possui grandes contribuições para a área,

possibilitando a criação de ambientes amparados por uma metodologia, de forma que os

ambientes criados de forma customizada podem ser reutilizados dentro da infraestrutura

criada (Nunes, 2010).

Page 46: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

45

Figura 15: Ambiente do ViMeT

Fonte: Nunes (2010)

2.6 Conclusões

Neste capítulo, foram apresentados conceitos fundamentais sobre RV, como a

representação de objetos tridimensionais, além das formas de armazenamento, entre os

quais o Banco de Dados nas Nuvens se destaca, devido as suas características de

escalabilidade e disponibilidade, que em aplicações na área de RV são um diferencial.

Neste capítulo foram tratados ao leitor os conceitos fundamentais sobre Engenharia

de Software, em especial o tema de Reuso de Software com a abordagem de DBC, que com

a correta aplicação, possibilita o compartilhamento de soluções para aplicações futuras.

Sobre os trabalhos relacionados (Seção 2.5), foram apresentados quatro trabalhos

que conforme os critérios apresentados estão sintetizados no Quadro 5. Verificou-se que o

trabalho mais recente, o NRVA (Freiberger, 2013), reúne a maior parte das abordagens

estabelecidas em nossos critérios, em comparação aos outros sistemas elencados.

Page 47: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

46

Quadro 5: Comparativo entre as Ferramentas Analisadas

Realidade

Virtual

Realidade

Aumentada

Infraestrutura

nas Nuvens

Desenvolvimento

Baseado em

Componentes

NRVA (Freiberger, 2013) Sim Sim Não Sim

Java Adaptive Dynamic Environment

(Oliveira et al., 2003)

Sim Não Não Não

TSS (Li et al., 2010) Sim Não Não Sim

ViMeT (Nunes, 2010) Sim Não Não Não

Fonte: O Autor

Aliando aplicações na área de RV em um de Banco de Dados nas Nuvens, com

estrutura de reuso de componentes desenvolvidos, no próximo capítulo será descrito o

framework proposto neste trabalho.

Page 48: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

47

3 AvComponent: Um Framework para Desenvolvimento

de Componentes de Realidade Virtual em

Infraestrutura de Compartilhamento de Componentes

em Nuvem

Em decorrência do avanço da RV e dos recursos computacionais relacionados, AV com

cenários de RV mais realistas podem ser desenvolvidos. Entretanto, durante o processo de

criação destes ambientes, muitas vezes existe a limitação das soluções desenvolvidas para a

plataforma em que foi concebida, inviabilizando o compartilhamento de artefatos que

poderiam ser utilizados, ou ainda possivelmente aprimorados, em outras plataformas.

De forma a contribuir para solucionar esta limitação, é apresentado neste capítulo

detalhes de um framework intitulado AvComponent, que busca promover o reuso de

componentes de RV, que podem ser componentes de Software ou de ambientes

tridimensionais.

Basicamente, este framework cria uma estrutura para definição de componentes na

qual podem-se ser disponibilizados pelo repositório em uma infraestrutura de banco de

dados nas nuvens. Desta forma, os usuários podem obter componentes de terceiros, assim

como compartilhar os seus componentes.

Este capítulo está organizado da seguinte forma. A Seção 3.1 apresenta a

metodologia adotada para o desenvolvimento da aplicação. Na Seção 3.2 são apresentados

detalhes sobre a arquitetura da ferramenta, enquanto na Seção 3.3, é descrito como foi

realizada a fase de testes durante o desenvolvimento da ferramenta. Por fim, a Seção 3.4

aborda as considerações finais.

3.1 Metodologia de Desenvolvimento

A adoção de uma metodologia é fundamental para guiar o processo de desenvolvimento de

software, permitindo não somente definir quais etapas serão realizados no projeto, assim

como controlar todas as atividades, pessoal e artefatos gerados durante a construção do

sistema de software.

Page 49: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

48

Neste sentido, a metodologia de desenvolvimento utilizada para a criação desta

ferramenta foi a Scrum (Rubin, 2012), que é um processo de desenvolvimento ágil baseado

em ciclos de aproximadamente trinta dias, conhecidos por Sprints.

Este processo relaciona três papéis (roles): Equipe (Team), Product Owner e o

Scrum Master (Sutherland et al., 2007), cujas responsabilidades são apresentadas no

Quadro 6.

Quadro 6: Relação dos Papéis e Responsabilidades no Processo Scrum

Role (Papel) Responsabilidade

Equipe (Team) Disponibilizar as soluções.

Product Owner Assegurar se a Team está desenvolvendo o

solicitado. Geralmente, isto é realizado pelo

cliente ou alguém que possua a perspectiva do

negócio.

Scrum Master Assegurar que as práticas do Scrum estão

realmente sendo executadas

Fonte: Sutherland et al. (2007)

Para o alcançe desta metodologia, são definidas as etapas apresentadas na Figura 16.

Inicialmente o Product Owner indica quais as funcionalidades desejadas por meio do

Product Backlog, que é um documento que descreve todos os objetivos daquele Sprint.

Posteriormente, as funcionalidades que serão implementadas no Sprint, tornam-se o

chamado Sprint Backlog, que reflete as necessidades do cliente naquele Sprint.

Por fim, este Sprint Backlog deve ser implementado pela Equipe (Team) dentro de

um Sprint, que possui variante de duas a quatro semanas. Durante este período, o Scrum

Master fará reuniões diárias (chamadas de Daily Scrum Meeting) sempre no mesmo horário

com a equipe, visando o conhecimento do andamento do projeto, assim como as

necessidades envolvidas e as atividades planejadas.

Além disto, o papel Scrum Master também supervisionará as atividades para

assegurar se as práticas deste processo estão sendo colocadas em sequência.

Page 50: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

49

Figura 16: Representação do Processo de Desenvolvimento Scrum

Fonte: Adaptado de Rubin (2012)

A metodologia de desenvolvimento descrita anteriormente, utilizado para o

desenvolvimento do framework apresentado, foi usada devido a sua objetividade, com a

associação de apenas três papéis e a imposição de boas práticas no desenvolvimento

(Rubin, 2012).

Após a apresentação da metodologia de desenvolvimento usada para a definição deste

framework, na próxima seção inicia-se o detalhamento técnico sobre a arquitetura de

software para construção do AvComponent.

3.2 Arquitetura de Software

O termo Arquitetura de Software, conforme Garlan e Perry (1994), é a estrutura de

componentes do programa/sistema, suas inter-relações, princípios e diretrizes que regem

sua concepção e evolução ao longo do tempo. Complementarmente, Bass (2007) define

Arquitetura de Software como a(s) estrutura(s) do sistema, que são compostos por

componentes de software, as interfaces destes componentes e suas respectivas relações.

Em uma visão mais recente, Barbosa (2009) descreve Arquitetura de Software como

a organização do sistema, por meio de seus componentes, considerando os princípios de

design e evolução.

Page 51: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

50

A arquitetura do framework é apresentada na Figura 17, e está organizada em dois

módulos, que são o módulo cliente e o módulo servidor, estruturados de maneira que os

componentes sejam reutilizados, seguindo a técnica de reuso de software DBC.

Figura 17: Arquitetura do AvComponent

Fonte: O Autor

Page 52: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

51

O primeiro módulo é o cliente, que representa a diversidade de sistemas que podem

usufruir dos componentes de RV providos pelo servidor, usando este framework. Por outro

lado, os componentes que são consumidos pelos clientes são gerenciados pelo módulo

servidor, que possui o serviço Service Locator (SL), que verifica se o componente de RV

requisitado está na infraestrutura de banco de dados nas nuvens.

Após a apresentação da arquitetura de software, na Seção 3.2.1 serão detalhadas as

tecnologias envolvidas, enquanto os módulos que compõem a arquitetura são detalhados

nas Seções 3.2.2 e 3.2.3.

3.2.1 Tecnologias

Para construção do framework AvComponent, a relação das ferramentas e frameworks

estão descritas na Figura 18.

Figura 18: Relação das Tecnologias e Frameworks envolvidos no Desenvolvimento

Fonte: O Autor

Page 53: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

52

No módulo cliente (browser), foi aplicado o toolkit Xj3d, que permite a importação de

ambientes escritos na X3D (Daly e Brutzman, 2010), que foi construída com base na

linguagem VRML (Carey e Bell, 1997). Esta linguagem dispõe de recursos avançados de

áudio, vídeo, navegação e interação com o usuário, que facilitaram a sua adoção.

Para prover uma infraestrutura de banco de dados nas nuvens, adotou-se a solução

chamada NuoDB (Brynko, 2012), que possui foco em ambientes de dados geo-distribuídos,

sendo considerado um Cloud Database, contando com cache distribuída e durável, baseada

em replicação sob demanda (Lemos, 2014; Brynko, 2012).

Desta maneira, pode-se ter um ambiente como representado na arquitetura (Figura 16),

na qual pode-se ter diversas instâncias públicas e privadas com componentes à disposição

do framework.

Por fim, para realizar o acesso do NuoDB, foi utilizado a Java Persistence API

(JPA), que é uma Application Programming Interface (API) e que atua no mapeamento

objeto-relacional (MOR). Esta API permite a representação de conceitos em Banco de

Dados para conceitos de Orientação a Objetos (OO), facilitando a manipulação dos dados,

na qual as consultas são facilitadas pela API por meio da manipulação de objetos (Keith et

al., 2013).

3.2.2 Módulo Cliente (Browser)

Conforme abordado anteriormente, o cliente (browser) representa a diversidade de sistemas

na área de RV que podem consumir os recursos dos componentes disponibilizados pelo

servidor, na qual tem-se o repositório dos componentes.

No entanto, para que o browser consiga incorporar as funcionalidades dos

componentes, definimos este framework de forma a fornecer uma estrutura padrão para

consumo dos componentes. Apresentada na Figura 19 a arquitetura interna do browser.

Page 54: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

53

Figura 19: Arquitetura Interna do Browser

Fonte: O Autor

As funcionalidades relativas ao gerenciamento dos ambientes tridimensionais estão

presentes no módulo principal, ou seja, representa a implementação dos browsers que

usarão o AvComponent.

Para validar o funcionamento da arquitetura, foi utilizado o toolkit Xj3d (Hudson et

al., 2002), que trabalha com ambientes descritos na linguagem X3D, entretanto quaisquer

outros toolkits para gerenciamento de ambientes tridimensionais escritos na linguagem Java

(Gosling, 2000) podem ser usados.

No módulo Task estão relacionados todos os recursos que permitem a associação

dinâmica de componentes de RV, que durante este trabalho foram nomeados de tasks, que

podem ser componentes de software, assim como de ambientes tridimensionais.

Este módulo é composto pelo componente chamado Task Manager, que após a

leitura de um descritor de implantação (i.e. browser.xml) que é implementado na linguagem

XML, efetuará uma associação adequada das tasks ao browser com base em regras

previamente definidas. Este processo de associação é apresentado na Figura 20.

Page 55: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

54

Figura 20: Processo de Associação de uma Task ao Browser

Fonte: O Autor

Em linhas gerais, após o browser ser iniciado pelo usuário, o módulo Task busca pelo

descritor de implantação, que é o arquivo browser.xml. Caso este descritor seja definido,

este é lido e as tasks são configuradas e associadas com as informações contidas neste

mesmo descritor.

Com o objetivo de associar dinamicamente as tasks ao browser, o descritor de

implantação faz o mapeamento das funcionalidades por meio de touchSensors, que são

regiões interativas para o usuário, para descrever o momento em que um determinado

componente deve ser associado.

Entretanto, não são todos os touchSensors que necessitam possuir tasks associadas.

Desta forma, torna-se necessário realizar a categorização destes touchSensors, permitindo

diferenciar os touchSensors que possuem tasks associadas e quais não possuem. De acordo

com a sua aplicabilidade, o touchSensor pode ser classificado como:

ENVIRONMENT - solicita o carregamento de uma task que representa um novo

ambiente tridimensional, localizado pelo AvComponent na infraestrutura de banco

de dados nas nuvens;

WINDOW - sinaliza ao Task Manager que a ação desempenhada com o

touchSensor associado com este tipo desencadeará a associação de uma task que

representa um componente de software em tempo de execução;

Page 56: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

55

NONE - nenhuma ação é desempenhada. Este é o padrão para todos os

touchSensors que não foram associados no descritor de implantação. Caso o

descritor de implantação não seja definido, este é o padrão para todos os

touchSensors.

O descritor de implantação deste browser é descrito por meio da linguagem XML, cuja

estrutura deste documento está descrita por meio de um Schema (Harold et al., 2004). É

apresentada, na Figura 21, a representação gráfica da estrutura deste documento, enquanto

que, na Quadro 7, há um exemplo válido de um descritor de implantação para o browser.

Figura 21: Representação gráfica da estrutura do descritor de implantação

Fonte: O Autor

De forma a complementar a representação gráfica da estrutura do descritor de

implantação apresentada, as seguintes informações devem ser relacionadas:

a tag browser relaciona todos os touchSensors mapeados por meio da tag

touchSensor que é categorizado, indicado com o atributo type, que pode assumir os

valores ENVIRONMENT, WINDOWS ou NONE;

a tag touchSensor possui as tags name, description, x3d e task, que descrevem

respectivamente o nome do touchSensor, descrição do mesmo, nome do ambiente

tridimensional e o nome qualificado da classe que contém a funcionalidade (task)

que será associada dinamicamente.

Page 57: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

56

a tag x3d é opcional, devendo apenas ser associada às tags touchSensor que

possuam o atributo type configurado com ENVIRONMENT, informado o nome do

arquivo X3D que será localizado pelo framework.

a tag task é opcional, devendo apenas ser associada às tags touchSensor que

possuam o atributo type configurado com WINDOW.

o atributo class da tag task conterá o nome qualificado da classe que provê a

implementação da interface Task. Nesta classe, têm-se todas as funcionalidades da

tarefa que será associada ao browser.

Quadro 7: Exemplo válido de um descritor de implantação para o browser

<browser xmlns="http://www.abella.com.br/schema/browser"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://abella.com.br/schema/browser

http://abella.com.br/schema/browser/browser.xsd">

<touchSensor type="WINDOW">

<name>TouchExecutar</name>

<description>Execute an experiment</description>

<task class="com.abella.browser.TaskImplementation"/>

</touchSensor>

<touchSensor type="ENVIRONMENT">

<name>TestDrivenDevelopmentExperiment</name>

<description>TDDLearning Resources</description>

<x3d>tddLearningEnvironment.x3d</x3d>

</touchSensor>

</browser>

Fonte: O Autor

A forma com que a funcionalidade é adicionada dinamicamente em função do

mapeamento estabelecido pelo descritor de implantação é apresentada na Figura 22 por

meio do emprego de um diagrama de atividades (activity diagram). Para o completo

entendimento destas fases, um exemplo será empregado.

Page 58: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

57

Figura 22: Processo de Associação de uma Task ou Ambiente Tridimensional ao Browser

Fonte: O Autor

Na preparação do ambiente que demonstra a associação dinâmica da Task, deve-se

definir o ambiente que será apresentado, isto é, o descritor de implantação e a classe que

deterá as funcionalidades desta Task. Inicialmente, parte do ambiente que será apresentado

ao usuário é descrita no Quadro 8.

Quadro 8: Parte do Ambiente X3D para o Processo de Associação de uma Task ao Browser

<?xml version="1.0" encoding="UTF-8"?>

<X3D profile="Immersive" version="3.0">

<Scene>

<Transform DEF="NomeSalaTestDrivenDevelopment" rotation="0.0 -1.0 0.0

1.5707964" translation="-10.5 2.3 -1.75">

...

<TouchSensor DEF="InformacoesTestDrivenDevelopment"

description="Iniciar Task com Atividades de Teste"/>

</Transform>

...

</Scene>

</X3D>

Fonte: O Autor

Page 59: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

58

Em destaque tem-se o touchSensor chamado InformacoesTestDrivenDevelopment,

que por sua vez é corretamente mapeado no descritor ao tipo WINDOW, conforme

apresentado no Quadro 9. Note que, a este touchSensor também está associada uma classe

que conterá a funcionalidade da Task, cujo nome totalmente qualificado é

com.abella.browser.TaskImplementation.

Quadro 9: Arquivo browser.xml para Processo de Associação de uma Task ao Browser

<browser xmlns="http://www.abella.com.br/schema/browser"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://abella.com.br/schema/browser

http://abella.com.br/schema/browser/browser.xsd">

<touchSensor type="WINDOW">

<name>InformacoesTestDrivenDevelopment</name>

<description>Task com Atividades de Teste</description>

<task class="com.abella.browser.TaskImplementation"/>

</touchSensor>

</browser>

Fonte: O Autor

A implementação mínima para esta classe, isto é, sem nenhuma funcionalidade, é

apresentada na Figura 23. No método registerTask deve ser inserida toda a

implementação da Task, usando-se das referências à uma instância de JFrame e

BrowserOperations. Estas referências representam respectivamente uma referência à janela

utilizada pelo browser e uma referência a uma classe utilitária que possibilita o manuseio a

partir da Task dos ambientes apresentados.

Figura 23: Implementação Mínima para uma Task

Fonte: O Autor

Page 60: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

59

Após a definição do ambiente do exemplo apresentado, os testes no browser podem

ser realizados. Com a autenticação do usuário, indiferente à definição de descritor de

implantação válido, um ambiente é apresentado ao usuário. Caso o usuário interaja em

algum objeto (i.e., efetue um clique) com um touchSensor mapeado no descritor de

implantação (se definido), a funcionalidade é adiciona. Esta funcionalidade representa uma

instância da classe com.abella.browser.TaskImplementation. O resultado da associação de

uma task é apresentado na Figura 24.

Figura 24: Resultado da associação de uma Task simples

Fonte: O Autor

Esta funcionalidade descrita anteriormente será mostrada em integração com a

ferramenta VEPersonal (Aquino, 2007) no próximo capítulo.

3.2.3 Módulo Servidor

Conforme apresentado anteriormente, o browser atua especificamente na recepção de

eventos realizados, além de exibir os ambientes e os componentes. Em contrapartida, o

servidor atua especificamente na disponibilização das tasks em tempo de execução para os

clientes, contando com um repositório em uma infraestrutura de banco de dados nas

nuvens.

Page 61: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

60

Para compreensão do processo que ocorre no servidor, serão apresentados na Figura

25 os possíveis cenários de recuperação de tasks, contando com uma infraestrutura de

banco de dados nas nuvens com instância local e públicas.

Figura 25: Processo de Solicitação de um Ambiente em Base Interna

Fonte: O Autor

Na próxima seção serão detalhados os testes realizados para validar a qualidade do

framework desenvolvido.

3.3 Testes

De acordo com Pressman (2005), o Teste de Software busca avaliar a qualidade do

software, identificando possíveis problemas e defeitos que possam afetar o funcionamento

Page 62: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

61

deste, contribuindo para o processo de garantia da qualidade durante a construção do

sistema.

Metodologias ágeis como a Extreme Programming e Scrum, popularizam o conceito

de automação de testes. Nesta aplicação, foram realizados testes de unidade e

funcionalidade. Cada tipo de teste é descrito no Quadro 10 (Beust e Suleiman, 2008). Na

sequência, o ferramental utilizado em cada um destes testes é apresentado.

Quadro 10: Descrição dos Testes realizados na Aplicação

Tipo de Teste Descrição

Teste de Unidade Menor unidade do sistema é testada (e.g. classes)

Teste de Stress Determinar o comportamento do sistema em condições anormais de

carga

Fonte: Beust e Suleiman (2008)

Teste de Unidade

Para o desenvolvimento de testes de unidade, a ferramenta JUnit 4.0 (Gamma e

Beck, 1999) foi utilizada. Devido à necessidade de isolar a classe testada, Mocks podem ser

usados em substituição às dependências da unidade testada. Mocks são objetos substitutos

(surrogate objects) que são usados para finalidade de testes, atuando no lugar de outra

classe, que é a dependência da unidade testada (Fowler, 2014).

Com o objetivo de facilitar o desenvolvimento de mocks, diversos frameworks

podem ser empregados. Dentre os frameworks mais conhecidos para esta finalidade,

existem os frameworks EasyMock (EasyMock, 2014) e o JMock (JMock, 2014). A escolha

do framework EasyMock deve-se ao fato da vasta quantidade de documentação encontrada,

como também da facilidade na definição de mocks, uma vez que os métodos são

autoexplicativos.

Page 63: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

62

Teste de Stress

O Teste de Stress possui o objetivo principal de avaliar o desempenho e o

comportamento do Software, quando submetido à condições anormais de carga, permitindo

revelar e antecipar falhas no sistema nestas condições.

No Capítulo 4, será detalhado como os testes supracitados foram realizados em

conjunto com a plataforma, assim como os resultados obtidos.

3.4 Considerações Finais

Com a adoção da técnica de reuso de software chamada Desenvolvimento Baseada em

Componentes, pode-se estruturar uma arquitetura de software que proporcionasse o reuso

de componentes de RV, nomeadas como Tasks neste framework.

Por outro lado, aliar o compartilhamento das Tasks em infraestrutura de banco de

dados nas nuvens, com o uso do NuoDB, possibilitou a definição de um repositório de

componentes em um ambiente escalável, de alta disponibilidade e atuando de maneira geo-

distribuída.

Para avaliar o funcionamento deste ambiente, será apresentado no próximo capítulo

um estudo de caso do framework AvComponent integrado com a ferramenta VEPersonal,

que é um Ambiente Virtual Adaptativo (AVA).

Page 64: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

63

4 Aplicação do Framework para Reuso de Ambientes

na Ferramenta VEPersonal

Inicialmente, na Seção 4.1, serão apresentados detalhes sobre a ferramenta VEPersonal,

seguido pelos detalhes da modelagem do ambiente para um caso de uso na Seção 4.2.

Posteriormente na Seção 4.3 será apresentada a execução e avaliação das duas ferramentas

integradas, enquanto na Seção 4.4 têm-se as considerações finais.

4.1 Ferramenta VEPersonal

O VEPersonal (Personalized Virtual Environment) é responsável pela criação e

manutenção de um ambiente virtual, acessível na Web, para navegação e interação com

objetos dinâmicos. Neste ambiente, é dado suporte ao usuário para explorar o mundo,

visualizando, aproximando ou tocando nos objetos. Como resposta, o ambiente modifica o

mundo em função da evolução do perfil cognitivo do usuário que, por sua vez, são inferidas

a partir das suas ações.

Como benefício do VEPersonal, cuja arquitetura é apresentada na Figura 26, tem-se

a possibilidade de gerar AV compostos de objetos com diversos níveis de complexidade,

devido ao fato que a interação com o ambiente tridimensional é monitorada por um sistema

multi-agentes, que consegue adaptar o ambiente ao nível cognitivo do usuário (Aquino et

al, 2007).

Page 65: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

64

Figura 26: Arquitetura do VEPersonal

Fonte: Aquino (2007)

Complementarmente, no cliente, a interface gráfica é composta por um applet Java

e pelo browser Xj3D, um toolkit open source construído em Java para a linguagem X3D,

que permite aos usuários navegar em ambiente tridimensional (Aquino, 2007).

A justificativa da escolha do VEPersonal como ferramenta a ser integrada, se dá ao

fato de ser uma ferramenta que reúne funções de adaptatividade em tempo real, além de

possuírem internamente um banco de dados relacional com suporte a XML, o que

possibilitaria avaliar o funcionamento do framework nestas condições.

4.2 Processo de Integração com o VEPersonal

A integração entre as duas ferramentas é apresentada na Figura 27, na qual pode-se

verificar que, a arquitetura original do VEPersonal é mantida, ocorrendo integração apenas

com o módulo principal do cliente.

Page 66: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

65

Figura 27: Arquitetura do VEPersonal após integração com o AvComponent

Fonte: O Autor

Basicamente, conforme apresentado na Figura 28, a interação do usuário ocorrerá

com os ambientes tridimensionais disponibilizados pelo VEPersonal, entretanto quando

algum touchSensor mapeado para algum componente (Task), for clicado serão

desencadeadas todas as ações de maneira usual, descritas na Seção 3.2.3.

Page 67: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

66

Figura 28: Processo de Solicitação de uma Task

Fonte: O Autor

Após apresentação da integração do VEPersonal com o AvComponent, será

apresentada na sequência um experimento envolvendo as duas ferramentas.

4.3 Execução do Cenário do Estudo de Caso

Com intuito de avaliar o funcionamento dos sistemas VEPersonal e AvComponent, será

apresentado um experimento, na qual inicialmente a aplicação VEPersonal é inicializada

com apresentação de um ambiente tridimensional de um corredor (hall de entrada) com

diversas portas, conforme ilustrado na Figura 29.

Page 68: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

67

Figura 29: Apresentação de um Ambiente pelo VEPersonal

Fonte: O Autor

Em cada uma destas portas é garantido acesso a outra sala. Neste sentido, foi

mapeado o touchSensor de cada uma destas portas para um componente gerenciado pelo

AvComponent nas nuvens, de maneira que o ambiente da Figura 30 é carregado.

Figura 30: Ambiente Apresentado pelo VEPersonal com TouchSensor Mapeado pelo AvComponent

Fonte: O Autor

Page 69: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

68

A consequência de um clique sobre o computador apresentado anteriormente,

desencadeia o carregamento de uma Task apresentado na Figura 31. Neste componente, é

aberto uma tela complementar na qual sugere ao usuário criar um código de unidade para

um determinado código fonte, ou seja, fornece uma simples interface de desenvolvimento

dentro do VEPersonal.

Figura 31: Apresentação de uma Task do AvComponent no VEPersonal

Fonte: O Autor

4.4 Avaliação do Cenário do Estudo de Caso

Para avaliar o AvComponent em integração com a ferramenta do estudo de caso, o

VEPersonal, foram realizados dois tipos de testes, que são o de unidade e de stress,

descritos na Seção 3.3.

Page 70: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

69

a) Testes de Unidade

Para a realização dos Testes de Unidade, foi utilizado o framework JUnit (Tahchiev,

2010), que possibilita a realização de testes de maneira automatizada para cada uma das

unidades (i.e., classes), além de verificar se o comportamento dos métodos está de maneira

esperada, exibindo possíveis erros ou falhas.

Após a utilização do JUnit, foi aplicado o JUnitPerf (JUnitPerf, 2014), que

possibilitou a análise da performance dos testes realizados na fase anterior, o que permitiu

aprimorar este requisito durante o desenvolvimento do AvComponent.

Como resultado da aplicação dos frameworks JUnit e JUnitPerf, foram realizadas

testes de unidade em todas as clases do sistema, de maneira a antecipar eventuais

problemas durante a sua utilização.

b) Testes de Stress

Nos Testes de Stress, é considerado condições anormais de carga, visando antecipar

falhas antes da sua implantação. Para a discriminação e execução destes testes, foi utilizada

a ferramenta JMeter (Halili, 2008), que possibilitou submeter o NuoDB em condições

adversas, verificando que em condições extremas, este possui capacidade de resposta em

relação à demanda dos recursos exigidos.

Como o objetivo deste testes era inicialmente avaliar a capacidade do

AvComponent disponibilizar componentes a ferramenta integrada, neste caso o

VEPersonal, foram submetidos cinquenta solicitações simultâneas de 150 componentes,

totalizando 7500 requisições simultâneas.

Devido ao fato do AvComponent utilizar uma Infraestrutura de Banco de Dados nas

Nuvens, a escalabilidade é possibilitada através da associação de mais instâncias ao

NuoDB, de acordo com a demanda naquele momento.

Page 71: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

70

4.5 Considerações Finais

Neste capítulo foi abordada a ferramenta VEPersonal, que possibilita a criação de

ambientes virtuais adaptáveis baseado em um ambiente com tecnologia X3D com banco de

dados relacional com suporte XML. Devido a este motivo, esta ferramenta foi escolhida

como estudo de caso.

O processo de integração da ferramenta VEPersonal com o AvComponent,

conforme relatado na Seção 4.2 mostrou que este processo é bem simplificado pelo

AvComponent, uma vez que não há mudanças na arquitetura da ferramenta a ser integrada,

neste estudo de caso, o VEPersonal.

Por fim, com intuito de avaliar o funcionamento prático das duas ferramentas, foi

apresentado um experimento na Seção 4.3, que o framework AvComponent pode amparar o

desenvolvimento e aprimoramento de diversas ferramentas, como é o caso do VEPersonal,

que pode incorporar diversos componentes desenvolvidos em outros sistemas e

compartilhar os desenvolvidos pela ferramenta.

Page 72: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

71

5 Conclusões e Trabalhos Futuros

Neste trabalho foi apresentado um framework que disponibiliza uma infraestrutura de reuso

de componentes para Ambientes Virtuais, em especial ambientes tridimensionais e

componentes de software.

Este trabalho viabilizou técnicas que possibilitaram a disponibilização de repositórios

públicos com a inserção de ambientes tridimensionais e componentes de software a serem

reutilizados pela comunidade, contribuindo para o desenvolvimento de AV ainda melhores.

Na Seção 5.1 serão apresentadas as contribuições deste trabalho, enquanto a Seção

5.2 relata as suas respectivas limitações. Por fim, têm-se na Seção 5.3 os trabalhos futuros,

seguido pela produção acadêmica resultante deste trabalho.

5.1 Contribuições

As propostas existentes para reuso de componentes em AV, até o momento, não se

preocupam com independência de plataforma, assim como não se preocupam com ambiente

de escalabilidade e disponibilidade para os repositórios destes componentes. A estrutura do

AVComponent foi desenvolvida considerando a necessidade de se realizar o

desenvolvimento de componentes reutilizáveis entre plataformas diferentes, implantada em

um ambiente nas nuvens, que possibilita escalabilidade e disponibilidade.

Para atingir esse objetivo, algumas soluções foram utilizadas a fim de realizar a

implantação do AvComponent, como:

Criação de uma infraestrutura para desenvolvimento baseada em componentes

de RV que possam ser reutilizáveis entre plataformas;

O uso de uma infraestrutura de Banco de Dados nas Nuvens que possibilitou o

desenvolvimento de um repositório de componentes de RV de forma geo-

distribuída; e

Definição de arquitetura extensível, de forma que novas funcionalidades

possam ser desenvolvidas e integradas em tempo de execução.

Page 73: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

72

5.2 Limitações

O AvComponent foi desenvolvido para se integrar com qualquer tecnologia na área de RV,

porém a integração desenvolvida foi realizada inicialmente com o framework Xj3d, que

atua em ambientes descritos na linguagem X3D. Neste sentido, há a necessidade de integrar

com diversas outras tecnologias para analisar os resultados.

Como outra limitação, tem-se que o framework desenvolvido não possui integração

com sistemas de Realidade Aumentada (RA), como acontece no sistema NRVA, abordado

na Seção 2.5.1.

5.3 Trabalhos Futuros

Embora a especificação e a implementação do AvComponent apresente resultados

satisfatórios em relação a ferramenta VEPersonal, novos trabalhos podem ser explorados,

possibilitando a geração de novas pesquisas, como é o caso dos trabalhos relacionados nas

Seções 5.3.1 e 5.3.2.

5.3.1 Modelagem Visual de Agentes Inteligentes

Agentes Inteligentes estão sendo integrados a ambientes de EAD (Soula et al., 2001;

Aquino et al., 2007), especialmente em aplicações de e-Learning, visando tornar o processo

de aprendizado mais adaptável. Neste sentido, os agentes podem ser aplicados para realizar

uma avaliação contínua do usuário.

Segundo Agarwal et al. (2004), por meio da utilização de agentes inteligentes em

aplicações de e-Learning e RV, torna-se possível a adaptação do conteúdo apresentado ao

usuário, baseado no seu conhecimento e em suas respectivas habilidades. Além disto, o

mesmo autor indica que isto atuará como um fator revolucionário no mundo educacional,

tornando o processo de aprendizado mais dinâmico.

Page 74: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

73

Entre os frameworks que facilitam o desenvolvimento de sistemas com agentes, o

framework open source Java Agent Development Framework (JADE) (Bellifemine et al.,

2001), que adere às especificações da Foundation for Intelligent Physical Agents, possui

ampla utilização.

O framework JADE facilita o desenvolvimento de sistemas multi-agente, pois o

ambiente de execução e comunicação já estão disponíveis, deixando a cargo do

desenvolvedor apenas a implementação da funcionalidade dos agentes.

De maneira a abstrair a complexidade no desenvolvimento, tem-se a aplicação da

técnica de reuso Domain-Specific Visual Language (DSVL), que é uma variante da DSL

descrita neste trabalho que permite o rápido desenvolvimento do comportamento e/ou

estrutura das aplicações em domínios bem definidos (Sprinkle e Karsabai, 2004). No

contexto de desenvolvimento de sistemas multi-agentes, a aplicação de DSVL possibilitará

a definição dos agentes, assim como as suas interações de maneira visual.

Atuando neste sentido, propõe-se o aprimoramento do framework AvComponent por

meio da inclusão de uma ferramenta para modelagem visual dos Agentes Inteligentes, de

maneira a compor um Sistema Multi-Agentes, que são utilizados em aplicações que usam

AV.

A proposta de aprimoramento está em desenvolvimento, apresentando uma versão

preliminar disponibilizada, conforme se pode verificar na Figura 32. Esta ferramenta teve

as atividades iniciadas na disciplina de Tópicos Avançados em Reuso de Software, da

Universidade Federal de Pernambuco, contando com a parceria de projetos de pesquisa e de

iniciação científica realizados por alunos do curso superior em Análise e Desenvolvimento

de Sistemas da Faculdade iDEZ (Estácio de Sá) em João Pessoa, Paraíba.

Page 75: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

74

Figura 32: Demonstração do Módulo de Modelagem Visual de Agentes com o AvComponent

Fonte: O Autor

5.3.2 Ferramenta Web de Gerenciamento de Componentes

Com intuito de facilitar o gerenciamento dos componentes desenvolvidos e/ou

disponibilizados, propõe-se o desenvolvimento de uma ferramenta web, que possibilitaria

ao desenvolvedor:

Identificar repositórios disponíveis para determinado componente;

Compartilhar documentação sobre os componentes; e

Gerar uma base de conhecimento sobre o AvComponent.

5.4 Produção Científica

A produção científica desenvolvida durante esta dissertação pode ser aferida com

publicações de artigos em eventos científicos, tais como:

Page 76: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

75

Título: Uma Infraestrutura para Reutilização de Ambientes Virtuais de

Aprendizagem com Banco de Dados em Cloud Computing

o Artigo publicado no evento Workshop de Realidade Virtual e Aumentada

(WRVA), no ano de 2013 (Anexo A).

Título: Desenvolvendo Ambientes Virtuais de Aprendizagem Aplicados à

Engenharia de Software

o Artigo publicado no evento Workshop de Ambientes Virtuais Aplicados a

Educação (WAVE), que é um evento satélite do Congresso Brasileiro de

Informática na Educação (CBIE), no ano de 2013.

Page 77: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

76

Apêndice A: Artigo Aprovado no WRVA 2013

Page 78: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

77

Page 79: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

78

Page 80: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

79

Page 81: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

80

Page 82: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

81

Referências

Abadi, D. J. Data Management in the Cloud: Limitations and Opportunities. IEEE Data

Eng. Bull., pp. 3-12, 2009.

Ames, A. L., Nadeau, D. R., & Moreland, J. VRML 2.0 sourcebook. Wiley, 1997.

Aquino, M. S. VEPersonal – Uma Infraestrutura para Geração e Manutenção de Ambientes

Virtuais Adaptativos. Tese (Tese de Doutorado) Recife: Pós-Graduação em Ciência da

Computação do CIn/UFPE, 2007.

Aquino, M. S. et al. Supporting Adaptive Virtual Environments with Intelligent Agents.

7th International Conference on Intelligent Systems Design and Applications, ISDA’07,

Publisher: IEEE Computer Society, Washington, DC, USA. Rio de Janeiro-RJ, Brazil,

October, 22-24, pp.217-222, 2007.

Agarwal, Rakesh, Amrita Deo, and Swati Das. Intelligent agents in E-learning. ACM

SIGSOFT Software Engineering Notes 29, no. 2, pp.1-1, 2004.

Armbrust, M.; Fox, A.; Griffith, R.; Joseph, D. A., Katz, R. A view of cloud computing.

Communications of the ACM 53, no. 4, pp.50-58, 2010.

Barbosa, G. M.G. Um Livro-texto para o Ensino de Projeto de Arquitetura de Software.

(Dissertação de Mestrado) Campina Grande: Pós-Graduação em Ciência da Computação da

UFCG, 2009.

Barrilleaux, J. 3D user interfaces with Java 3D. Manning Publications, 2000.

Bass, L. Software architecture in practice. Pearson Education India, 2007.

Beck, K. Extreme programming explained: embrace change. Addison-Wesley Professional,

2000.

Bellifemine, F.; Poggi, A.; Rimassa, G. Developing multi-agent systems with a FIPA-

compliant agent framework. Software-Practice and Experience, pp.103-128, 2001.

Beust, C; Suleiman, H. Next Generation Java Testing – TestNG and Advanced Concepts,

Addison-Wesley, 2008.

Braga, M. Realidade Virtual e Educação. Revista de Biologia e Ciências da Terra, nº 1,

2001.

Braga, M. Realidade Virtual e Educação. Disponível em <

http://eduep.uepb.edu.br/rbct/seminarios/pdf/realidadevirtual.pdf >. Acessado em agosto de

2014.

Brutzman, D.; Daly, L. X3D: extensible 3D graphics for Web authors. Morgan Kaufmann,

2010.

Page 83: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

82

Brynko, B. NuoDB: Reinventing the Database, Information Today, pp. 9-9, 2012.

Camargo, V. V.; Masiero, P. C. Frameworks orientados a aspectos. Anais do 19º Simpósio

Brasileiro de Engenharia de Software (SBES2005), pp. 200-215, 2005.

Carey, R.; Bell, G. The annotated VRML 2.0 reference manual. Addison-Wesley Longman

Ltd, 1997.

Codd, E. F. A relational model of data for large shared data banks. Communications of the

ACM, pp. 377-387, 1970.

Curino, C. et al. Relational cloud: The case for a database servisse, New England Database

Summit, 2010.

Daly, L.; Brutzman, D. X3D: extensible 3D graphics standard, 2007.

Fowler, M. Mocks aren’t Stubs. Disponível em <

http://www.martinfowler.com/articles/mocksArentStubs.html >. Acesso em janeiro de

2014.

Fowler, M. Domain-specific languages. Pearson Education, 2010.

Freeman, P., & Prieto-Diaz, R. Classifying software for reusability.Software, IEEE, pp. 6-

16, 1987.

JMocl, Disponível em < http://jmock.org/ >. Acesso em fevereiro de 2014.

EasyMock 0.8, Disponível em < www.easymock.org >. Acesso em fevereiro de 2014.

Gamma, E.; Beck, K. JUnit: A cook’s tour. Java Report, 4(5), pp. 27-38, 1999.

Gamma, E. et al. Design patterns: elements of reusable object-oriented software. Pearson

Education, 1994.

Garlan, D., & Perry, D. Software architecture: practice, potential, and pitfalls. In Software

Engineering, 1994. Proceedings. ICSE-16., 16th International Conference on, pp. 363-364,

IEEE, 1994.

Gosling, J. The Java language specification. Addison-Wesley Professional, 2000.

Guo, J.; Luqi, A. A survey of software reuse repositories. In: Proceedings of the 7th IEEE

International Conference and Workshop on the Engineering of Computer Based

Systems. Edinburgh, Scotland, UK, pp. 92-100, 2000.

Halili, E. H. Apache JMeter: A practical beginner's guide to automated testing and

performance measurement for your websites. Packt Publishing Ltd, 2008.

Harold, E. R.; Means, W. S.; Udemadu, K. XML in a Nutshell, Editora O'reilly, 2004.

Henninger, S. An Evolutionary Approach to Construction Effective Software Reuse

Repositories. ACM Transactions on Software Engineering and Methodologies, v.16, n.2,

pp. 111-138, 1997.

Page 84: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

83

Heuser, Carlos Alberto. Projeto de banco de dados. Sagra Luzzatto, 2011.

Hudson, A. D., Couch, J., & Matsuba, S. N. The Xj3D browser: community-based 3D

software development. Em: ACM SIGGRAPH 2002 conference abstracts and applications,

pp. 327-327, ACM, 2002.

Jacobson, I.; Lindström, F. Reengineering of old systems to an object-oriented architecture.

In ACM Sigplan Notices,Vol. 26, No. 11, pp. 340-350, ACM, 1991.

Jadeja, Y.; Modi, K. Cloud computing-concepts, architecture and challenges.

In Computing, Electronics and Electrical Technologies (ICCEET), 2012 International

Conference on (pp. 877-880). IEEE, 2012.

Java Language. Disponível em < http://java.oracle.com/developer/ >. Acesso em janeiro de

2014.

Jansen, W.; Grande, T. Guidelines on security and privacy in public cloud computing. NIST

special publication, pp. 800-144, 2011.

Johnson, R. E. Frameworks=(components+ patterns). Communications of the ACM,

40(10), 39-42, 1997.

JUnitPerf. Disponível em < http://www.clarkware.com/software/JUnitPerf.html >. Acesso

em abril de 2014.

Kido, K.; Amagasa, T.; Kitagawa, H. Processing XPath queries in PC-clusters using XML

data partitioning. In Data Engineering Workshops, 2006. Proceedings. 22nd International

Conference on (pp. x114-x114). IEEE, 2006.

Kirner, Claudio. "Sistemas de realidade virtual. Apostila do ciclo de palestras de realidade

virtual, UFSCar, 1996.

Kirner, C.; Siscoutto, R. Fundamentos de Realidade Virtual e Aumentada. In: Realidade

Virtual e Aumentada: Conceitos, Projeto e Aplicações. Eds. Cláudio Kirner e Robson

Siscoutto. Livro do Pré-Simpósio, IX Symposium on Virtual And Augmented Reality,

Petrópolis – RJ, 2007.

Krueger, C. W. Software reuse. ACM Computing Surveys (CSUR), pp.131-183, 1992.

Lemos, P.H.S. Uma Análise dos Novos Sistemas de Bancos de Dados Relacionais

Escaláveis. Tese (Tese de Doutorado) Rio de Janeiro: Pós-Graduação em Ciência da

Computação da Universidade Federal do Rio de Janeiro – UFRJ, 2014.

Li, M.; Wang, S.; He, T. A transformer substation simulation engine based on virtual

reality. In Computer, Mechatronics, Control and Electronic Engineering (CMCE), 2010

International Conference on, vol. 2, pp. 41-44, 2010.

Page 85: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

84

Lima, G. D. O. ARQDEP: arquitetura de computação em nuvem com dependabilidade,

Dissertação (Dissertação de mestrado) Uberlândia: Pós-Graduação em Ciência da

Computação da Universidade Federal de Minas Gerais – UFMG, 2014.

Machado, L. S. A Realidade Virtual no Modelamento e Simulação de Procedimentos

Invasivos em Oncologia Pediátrica: Um Estudo de Caso no Transplante de Medula Óssea.

Tese (Tese de Doutorado) São Carlos: Pós-Graduação em Ciência da Computação da

Escola Politécnica da Universidade de São Paulo – USP, 2003.

Mahoney, M. S. Finding a history for software engineering. Annals of the History of

Computing, IEEE, pp. 8-19, 2004.

Martin, R. C. Agile software development: principles, patterns, and practices. Prentice Hall

PTR, 2003.

Mell, P.; Grance, T. The NIST definition of cloud computing. NIST Special Publication,

2011.

Mello, R. S. Uma Abordagem Bottom-Up para a Integracao Semanticade Esquemas XML,

Tese (Tese de doutorado) Porto Alegre: Pós-Graduação em Ciência da Computação da

Universidade Federal do Rio Grande do Sul - UFRS, 2002.

Mernik, M.; Heering, J.; Sloane, A. M. When and how to develop domain-specific

languages. ACM computing surveys, pp. 316-344, 2005.

Musa, J. D. A theory of software reliability and its application. Software Engineering, IEEE

Transactions, pp.312-327, 1975.

MySQL Documentation. Disponível em < http://dev.mysql.com/doc/ >. Último acesso em

janeiro de 2014.

Nunes, F. D. L., “Building a open source framework for virtual medical training.” Journal

of digital imaging : the official journal of the Society for Computer Applications in

Radiology, vol. 23, no. 6, pp. 706-7020, 2010.

Olan, M. Unit testing: test early, test often. Journal of Computing Sciences in Colleges,

19(2), 319-328, 2003.

Olson, M. A. et al. InUSENIX Annual Technical Conference, FREENIX Track, pp. 183-

191, 1999.

Oliveira, M.; Crowcroft, J.; Slater, M. An innovative design approach to build virtual

environment systems. In Proceedings of the workshop on Virtual environments 2003, pp.

143-151, 2003.

Oliveira, M. J.; Sabbadini, F.; Chamovitz, I. Uma plataforma de simulação visual em 3D

orientada para o ciclo de vida das entidades. Revista Produção Online, 9(2), 2009.

Page 86: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

85

Oracle. Disponível em < https://docs.oracle.com/cd/B28359_01/index.htm >. Último

acesso em fevereiro de 2014.

PostgreSQL. Disponível em < http://www.postgresql.org/ >. Último acesso em janeiro de

2014.

Pressman, R.S. Software engineering: a practitioner’s approach. McGrow-Hill International

Edition, 2005.

Rubin, K. S. Essential scrum: a practical guide to the most popular agile process. Addison-

Wesley, 2012.

Sametinger, J. Software engineering with reusable components. Springer, 1997.

Segrini, B. M. Definição de processos baseados em componentes. Dissertação (Dissertação

de Mestrado) Vitória: Pós-Graduação em Ciência da Computação da Universidade Federal

do Espírito Santo – UFES, 2009.

Singhal, S; Zyda, M. Networked Virtual Environment: Design and Implementation. ACM

Press, pp.331, Siggraph Series, New York, 1999.

Sommerville, I. Engenharia de software. Vol. 6. Addison Wesley, 2003.

Soula, G.; Pagesy et al. An adaptive medical e-learning environment: the MEDIDACTE

project. Studies in health technology and informatics, (2), 1076-1080, 2001.

Sousa, F. R. et al. Gerenciamento de dados em nuvem: Conceitos, sistemas e

desafios. Topicos em sistemas colaborativos, interativos, multimidia, web e bancos de

dados, Sociedade Brasileira de Computacao, pp.101-130, 2010.

Souza, D. A. C. M. et al. Um Ambiente Virtual Baseado em Agentes para Apoiar o Ensino

de Engenharia de Software. XIX Simpósio Brasileiro de Informática na Educação, 2008.

Sowizral, K., Rushforth, K.;Sowizral, H. The Java 3D API Specification. Addison-Wesley

Longman Publishing Co., Inc., 1997.

Sprinkle, J.; Karsai, G. A domain-specific visual language for domain model

evolution. Journal of Visual Languages & Computing, pp.291-307, 2004.

Survey of Cloud Computing 2013. Disponivel em < http://www.northbridge.com/2013-

cloud-computing-survey >. Último acesso em abril de 2014.

Sutherland, J. et al. The scrum papers: Nuts, bolts, and origins of an agile process, 2007.

Tahchiev, P. et al. JUnit in action. Manning Publications Co, 2010.

The Future of Cloud Computing. Disponível em < http://perspecsys.com/future-cloud-

computing/ >. Último acesso em janeiro de 2014.

Torreão, P. G. B. C. Project Management Knowledge Learning Environment: Ambiente

Inteligente de Aprendizado para Educação em Gerenciamento de Projetos. Dissertação

Page 87: “AvComponent: Um Framework para … Virtual Private Network VRML: Virtual Reality Model Language X3D: Extensible 3d XML: eXtensible Markup Language XP: Extreme Programming SUMÁRIO

86

(Dissertação de Mestrado) Recife: Pós-Graduação em Ciência da Computação do

CIn/UFPE, 2005.

Weinhardt, C. et al. Cloud computing–a classification, business models, and research

directions. Business & Information Systems Engineering, 1(5), pp.391-399, 2009.

Werner, C. M. L.; Braga, R. M. M. Desenvolvimento Baseado em componentes. Anais do

XIV Simpósio Brasileiro de Engenharia de Software, pp.35-44, 2000.

XPath. XML Functions. Disponível em <

http://www.postgresql.org/docs/9.1/static/functions-xml.html >. Último acesso em

fevereiro de 2014.

XQuery. Oracle: Using XQuery with Oracle XML DB. Disponível em <

http://docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb_xquery.htm >. Último

acesso em fevereiro de 2014.

X3D. Disponível em < http://www.web3d.org/x3d/specifications/x3d_specification.html >.

Último acesso em janeiro de 2014.