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
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
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
Pernambuco. CIn, Ciência da computação, 2014.
Inclui referências.
Federal
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
de
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.
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.
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
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
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
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
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
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
VRML: Virtual Reality Model Language
X3D: Extensible 3d
XML: eXtensible Markup Language
XP: Extreme Programming
SUMÁRIO
1
Introdução ................................................................................................. 14
1.1
1.2
1.3
2
Motivação ............................................................................................................. 15
Objetivos............................................................................................................... 16
Organização do Trabalho...................................................................................... 16
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
4.2
4.3
4.4
4.5
Ferramenta VEPersonal ........................................................................................ 63
Processo de Integração com o VEPersonal .......................................................... 64
Execução do Cenário do Estudo de Caso ............................................................. 66
Avaliação do Cenário do Estudo de Caso ............................................................ 68
Considerações Finais ............................................................................................ 70
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
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.
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.
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
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.
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).
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).
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.
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
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).
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).
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.
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.
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.
27
Figura 4: Características Essenciais de Cloud Computing
Fonte: Adaptado de http://engineeringmentor.com/cloud-computing-characteristics-the-essential-five-tounderstand/
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).
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.
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.
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
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.
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).
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
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 .
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.
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.
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
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)
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.
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)
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.
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
suporte
ao
desenvolvimento de aplicações na área de RV;

Plataformas/Aplicações/Frameworks
que
possuem
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).
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.
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).
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.
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.
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.
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.
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.
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
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
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.
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.
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;
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.
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.
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
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
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.
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
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.
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 geodistribuí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).
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).
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.
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.
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.
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
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.
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.
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.
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 geodistribuída; e

Definição de arquitetura extensível, de forma que novas funcionalidades
possam ser desenvolvidas e integradas em tempo de execução.
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.
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.
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:
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.
76
Apêndice A: Artigo Aprovado no WRVA 2013
77
78
79
80
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 FIPAcompliant 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.
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. 616, 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.
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.
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. 183191, 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.
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. AddisonWesley, 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/2013cloud-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-cloudcomputing/ >. Ú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
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
http://www.postgresql.org/docs/9.1/static/functions-xml.html >.
fevereiro de 2014.
em
Último acesso
XQuery. Oracle: Using XQuery with Oracle XML DB. Disponível
http://docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb_xquery.htm
>.
acesso em fevereiro de 2014.
<
em
em <
Último
X3D. Disponível em < http://www.web3d.org/x3d/specifications/x3d_specification.html >.
Último acesso em janeiro de 2014.
Download

DISSERTAÇÃO Daniel Abella Cavalcante Mendonça de Souza