• Nenhum resultado encontrado

AvComponent: um framework para desenvolvimento de componentes de realidade virtual em infraestrutura de compartilhamento de componentes em nuvem

N/A
N/A
Protected

Academic year: 2021

Share "AvComponent: um framework para desenvolvimento de componentes de realidade virtual em infraestrutura de compartilhamento de componentes em nuvem"

Copied!
87
0
0

Texto

(1)

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

(2)

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

(3)

Catalogação na fonte

Bibliotecária Jane Souto Maior, CRB4-571

S729a Souza, Daniel Abella Cavalcante Mendonça de

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

86 f.: il., fig., quadro

Orientador: Fernando da Fonseca de Souza.

Dissertação (Mestrado) – Universidade Federal de Pernambuco. CIn, Ciência da computação, 2014.

Inclui referências.

1. Ciência da computação. 2. Engenharia de software. 3. Computação em nuvem. 4. Realidade virtual. I. Souza, Fernando da Fonseca de (orientador). II. Título.

004 CDD (23. ed.) UFPE- MEI 2015-50

(4)

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.

(5)

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.

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

VRML: Virtual Reality Model Language X3D: Extensible 3d

XML: eXtensible Markup Language XP: Extreme Programming

(13)

SUMÁRIO

1

Introdução ... 14

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

2

Referencial Teórico ... 18

2.1 Realidade Virtual ... 18

2.1.1 Representação de Objetos Tridimensionais ... 21

2.1.2 Armazenamento de Objetos Tridimensionais ... 22

2.2 Computação nas Nuvens (Cloud Computing) ... 24

2.2.1 Características Essenciais ... 26

2.2.2 Modelos de Serviço ... 28

2.2.3 Modelos de Implantação ... 31

2.2.4 Tendências da Cloud Computing ... 33

2.3 Banco de Dados nas Nuvens (Cloud Databases) ... 33

2.3.1 Categorias ... 35

2.4 Engenharia de Software ... 36

2.4.1 Reuso de Software ... 37

2.5 Trabalhos Relacionados ... 41

2.5.1 NRVA ... 42

2.5.2 Java Adaptive Dynamic Environment ... 43

2.5.3 Transformer Substation Simulation (TSS) ... 44

2.5.4 Virtual Medical Training (ViMeT) ... 44

2.6 Conclusões ... 45

3

AvComponent: Um Framework para Desenvolvimento de Componentes

de Realidade Virtual em Infraestrutura de Compartilhamento de Componentes

em Nuvem ... 47

3.1 Metodologia de Desenvolvimento ... 47

3.2 Arquitetura de Software ... 49

3.2.1 Tecnologias ... 51

3.2.2 Módulo Cliente (Browser) ... 52

3.2.3 Módulo Servidor ... 59

3.3 Testes ... 60

3.4 Considerações Finais ... 62

4

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

VEPersonal ... 63

4.1 Ferramenta VEPersonal ... 63

4.2 Processo de Integração com o VEPersonal ... 64

4.3 Execução do Cenário do Estudo de Caso ... 66

4.4 Avaliação do Cenário do Estudo de Caso ... 68

(14)

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

(15)

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.

(16)

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.

(17)

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

(18)

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.

(19)

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

(20)

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

(21)

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.

(22)

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

(23)

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

(24)

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

(25)

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.

(26)

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.

(27)

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.

(28)

Figura 4: Características Essenciais de Cloud Computing

Fonte: Adaptado de

http://engineeringmentor.com/cloud-computing-characteristics-the-essential-five-to-understand/

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

Neste caso, o cliente poderá adquirir recursos computacionais unilateralmente, na medida em que for necessário, sem interação humana. Por exemplo, o cliente possui um servidor nas nuvens de uma empresa e caso o tráfego esteja excedendo a quantidade adquirida, ou o processador ou espaço em disco estiver insuficiente, ou quaisquer outros recursos computacionais na mesma situação, pode-se adquirir mais recursos instantaneamente (Mell e Grance, 2011; Jansen e Grande, 2011; Sousa et al., 2010).

b) Rápida Elasticidade (Rapid Elasticity)

Neste caso, os recursos podem ser adquiridos e removidos com elasticidade, possibilitando escalabilidade de acordo com a demanda e a possibilidade de liberação de recursos quando há uma diminuição da demanda, ou seja, de acordo com o ponto de vista do usuário, os recursos parecem ilimitados (Mell e Grance, 2011; Sousa et al., 2010).

Usando o exemplo descrito anteriormente, em que o cliente tinha necessidade de mais recursos (seja de armazenamento, processamento, tráfego, entre outros), o fator descrito aqui (Rápida Elasticidade) possibilita que os recursos solicitados estejam disponíveis instantaneamente (Sousa et al., 2010).

(29)

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.

(30)

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.

(31)

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)

(32)

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

(33)

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

(34)

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

(35)

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 .

(36)

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.

(37)

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

(38)

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

(39)

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

(40)

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.

(41)

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

(42)

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.

(43)

Neste contexto, para descrever os trabalhos relacionados, foram definidos critérios de inclusão e exclusão, que foram:

- Critérios de Inclusão:

Plataformas/Aplicações/Frameworks que possuem suporte ao desenvolvimento de aplicações na área de RV;

Plataformas/Aplicações/Frameworks que possuem suporte ao desenvolvimento de aplicações na área de RV com base no DBC; e

Plataformas/Aplicações/Frameworks que possuem suporte ao desenvolvimento de aplicações na área de RV com infraestrutura nas Nuvens.

- Critério de Exclusão:

Plataformas/Aplicações/Frameworks que não possuem suporte ao desenvolvimento de aplicações na área de RV.

2.5.1 NRVA

.

Relacionando o conceito de DBC na área de RV e RA em um ambiente na nuvem, o NRVA (Freiberger, 2013) apresenta um modelo arquitetural de uma plataforma de produção, compartilhamento e execução de aplicações de realidade virtual e aumentada, apresentado na Figura 13.

A plataforma NRVA conta com dois níveis de abstração, o módulo Serviços de Plataforma, que são os serviços básicos ofertados aos clientes, enquanto que o módulo Subsistemas de Plataforma concentra os serviços de baixo nível, como controle de acesso e recursos, produção, execução e renderização de mundos 3D (Freiberger, 2013).

(44)

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.

(45)

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

(46)

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.

(47)

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.

(48)

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.

(49)

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.

(50)

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.

(51)

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

(52)

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

(53)

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.

(54)

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.

Referências

Documentos relacionados

Por último, temos o vídeo que está sendo exibido dentro do celular, que é segurado e comentado por alguém, e compartilhado e comentado no perfil de BolsoWoman no Twitter. No

Para esse fim, analisou, além do EVTEA, os Termos de Referência (TR) do EVTEA e do EIA da Ferrogrão, o manual para elaboração de EVTEA da empresa pública Valec –

Requiring a realignment of the EVTEA with its ToR, fine-tuning it to include the most relevant socio-environmental components and robust methodologies for assessing Ferrogrão’s impact

A participação foi observada durante todas as fases do roadmap (Alinhamento, Prova de Conceito, Piloto e Expansão), promovendo a utilização do sistema implementado e a

Para atingir este fim, foram adotados diversos métodos: busca bibliográfica sobre os conceitos envolvidos na relação do desenvolvimento de software com

Objetivo: Garantir estimativas mais realistas e precisas para o projeto, ao considerar nesta estimativa o esforço necessário (em horas ou percentual do projeto) para

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por

Para disciplinar o processo de desenvolvimento, a Engenharia de Usabilidade, também conceituada e descrita neste capítulo, descreve os métodos estruturados, a