RELATÓRIO DE INTRODUÇÃO AO PROJETO

Propaganda
UNIVERSIDADE FEDERAL DE SANTA CATARINA
BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO
RELATÓRIO DE INTRODUÇÃO AO PROJETO
ALUNO: LEONARDO DE S. BRASIL
MATRICULA: 04132513
ORIENTADOR: RICARDO PEREIRA E SILVA
PROFESSOR: RENATO CISLAGHI
UNIVERSIDADE FEDERAL DE SANTA CATARINA
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSCTICA
CURSO DE BACHAREL EM CIÊNCIA DA COMPUTAÇÃO
PROJETO DE PESQUISA
Sumário
TÍTULO............................................................................................................................................. 3
PROPONENTE................................................................................................................................. 3
JUSTIFICATIVA................................................................................................................................ 3
1 OBJETIVOS.................................................................................................................................... 5
1.1 OBJETIVO GERAL.................................................................................................................................. 5
1.2 OBJETIVO ESPECÍFICO......................................................................................................... 5
METODOLOGIAS............................................................................................................................. 6
CRONOGRAMA............................................................................................................................... 6
TECNOLOGIAS QUE SERÃO EMPREGADAS............................................................................... 7
1.3 COMUNICAÇÃO CLIENTE/SERVIDOR (RMI).......................................................................................... 7
CONCLUSÂO................................................................................................................................. 11
REFERÊNCIAS BIBLIOGRÁFICAS............................................................................................... 12
2
UNIVERSIDADE FEDERAL DE SANTA CATARINA
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSCTICA
CURSO DE BACHAREL EM CIÊNCIA DA COMPUTAÇÃO
PROJETO DE PESQUISA
TÍTULO
Servidor multi-jogos.
PROPONENTE
Leonardo de Souza Brasil
JUSTIFICATIVA
Os jogos estão presentes na história da humanidade desde o seus
primórdios. Com a evolução dos computadores e a criação das primeiras redes,
com destaque para a internet, foi possível simular os jogos através de
computadores
em
ambientes
virtuais
onde
jogadores
mesmo
distantes
fisicamente, compartilham do mesmo tempo e espaço “virtuais”. Surge nesse
momento o conceito de jogos distribuídos ou jogos multi-jogadores.
Jogos multi-jogadores são jogos de computador que permitem a
participação simultânea de vários jogadores em uma mesma partida. Com a
computação distribuída os jogos começaram a ser jogados por diversas pessoas
ao mesmo tempo, estando elas em qualquer parte do mundo.
Nesses jogos multi-jogadores, o procedimento normalmente realizado é o
seguinte: O usuário (jogador) inicia seu jogo com o intuito de jogar via redes, ele
então localiza um servidor onde seu jogo esteja rodando e solicita uma conexão
nesse servidor, o jogador é então autorizado e pode iniciar partidas com outras
pessoas que também estejam conectadas. O jogador realiza operações que são
enviadas para os outros jogadores de forma que seus jogos sempre possuam o
estado atual do jogo. O servidor simula o jogo, sincroniza os estados dos
3
jogadores e sinaliza quando o jogo termina, normalmente com a vitória de um dos
jogadores.
Essa
conexão
também
envolve
aspectos
de
segurança
de
comunicação via redes e de controles de trapaças, etc...
Dentro desse procedimento é possível identificar aspectos que são comuns
para diversos jogos. O único aspecto diferente é a forma como cada jogo é
implementado, com suas regras e operações específicas.
Seguindo as melhores práticas de Engenharia de Software, a proposta desse
trabalho é desenvolver um servidor multi-jogos, levando em conta o reuso dos
aspectos acima citados. Esse servidor será abstrato no sentido de poder realizar a
comunicação via rede entre jogos de diferentes desenvolvedores. Através dele
será possível gerenciar as partidas de cada jogo de modo que ele controle o
estado de cada partida e seus jogadores.
Para que um jogo qualquer possa se conectar ao servidor e para facilitar o
desenvolvimento de jogos para esse servidor a proposta é desenvolver um
framework orientado a objetos que deve ser utilizado pelo desenvolvedor do jogo.
4
1
OBJETIVOS
1.1 OBJETIVO GERAL
Desenvolver um servidor multi-jogos e um framework orientado a
objetos que possibilite o uso do servidor por desenvolvedores de jogos.
1.2 OBJETIVO ESPECÍFICO
•
Analisar tecnologias de computação distribuída em java.
•
Escolher a tecnologia que melhor se encaixe para o projeto proposto
•
Desenvolver o servidor multi-jogos;
•
Desenvolver o framework cliente.
•
Validar o projeto desenvolvendo uma aplicação cliente que utilize o
framework desenvolvido e o servidor implementado.
5
METODOLOGIAS
Primeiro, decidiu-se realizar um estudo sobre tecnologias de computação
distribuída em Java que melhor se adaptem ao projeto.
Em seguida, estudar profundamente a tecnologia escolhida e montar o
projeto na fase de Análise e Projeto.
Após isso, desenvolver o servidor e o cliente paralelamente.
A última fase consiste em desenvolver um jogo exemplo que servirá para
mostrar o funcionamento da arquitetura proposta.
CRONOGRAMA
ETAPA
Estudo RMI
Análise e Projeto
Implementar Servidor
Implementar Cliente
ETAPA
Implementar Servidor
Implementar Cliente
Desenvolver aplicação teste
Março
x
Agosto
X
x
x
Abril
x
x
Setembro
x
Maio
Junho
Julho
x
x
x
Outubro
x
x
Novembro
x
x
Dezembro
X
6
TECNOLOGIAS QUE SERÃO EMPREGADAS
1.3 Comunicação Cliente/Servidor (RMI)
Considerando que o aplicativo servidor será implementado em linguagem
Java, assim como os futuros jogos que utilizarão a arquitetura, foi realizada uma
pesquisa sobre tecnologias Java que possibilitavam essa implementação levando
em conta requisitos não funcionais, como facilidade de desenvolvimento, menor
tempo de resposta, menor uso de banda, segurança e facilidade de uso.
Após uma pesquisa sobre possíveis tecnologias cliente/servidor em Java,
decidiu-se pelo uso de RMI.
O que é.
RMI (Remote Method Invocation) é uma das abordagens da tecnologia Java
para prover as funcionalidades de uma plataforma de objetos distribuídos. Esse
sistema de objetos distribuídos faz parte do núcleo básico de Java desde a versão
JDK 1.1, com sua API sendo especificada através do pacote java.rmi.
Através do RMI é possível realizar a comunicação entre objetos que estão
em diferentes Máquinas Virtuais Java (JVM). Sendo possível, inclusive, transferir
objetos serializados através da rede.
7
Como funciona
O RMI é baseado em uma arquitetura cliente/servidor, ou seja, existe o
programa cliente que deseja realizar chamadas a um aplicativo remoto que se
comporta como o servidor.
Para que essa comunicação se realize o RMI fornece objetos “auxiliares” que
facilitam a comunicação entre cliente e servidor, liberando o desenvolvedor de se
preocupar com todo o código envolvido nessa troca de informações.
Do lado do cliente existe um auxiliar que captura a chamada realizada pelo
cliente e envia essa chamada para o servidor, esse auxiliar é chamado de Stub. O
servidor por sua vez, também possui um auxiliar, chamado Skeleton, que captura
a chamada passada por um Stub e chama o método no servidor.
Com esse esquema de objetos “auxiliares” o RMI realiza a chamada a
objetos remotos simulando-os na máquina do cliente.
Outro aspecto importante no RMI é a interface remota.
Existe entre cliente e servidor uma interface remota de métodos. Essa
interface permite que o cliente conheça as funções pré-estabelecidas que ele tem
acesso no servidor. Essa interface define essas funções junto com seus
parâmetros e retornos. Caso ocorra algo de errado na comunicação é lançada
uma exceção do tipo RemoteException que deve sempre ser capturada e tratada
pelo cliente. Tanto o Stub, do lado do cliente, quanto o Skeleton, do lado do
servidor, são criados a partir dessa interface remota.
No lado do servidor existe uma ou mais classes que implementam realmente
essa interface remota. Para que o cliente decida para qual implementação da
interface remota deseja se comunicar é necessário que o servidor registre seu
serviço remoto. Isso é feito através de um cadastro no registro RMI.
O registro RMI é similar a uma página de cadastro telefônico, ela possui um
nome para o serviço e o local de sua implementação no servidor. Esse registro
8
RMI deve ser sempre iniciado pelo servidor e chamado pelo cliente quando deseja
utilizar um dos métodos da interface remota.
Vantagens do uso do RMI
Orientação a Objetos – Além dos tipos primitivos java, como por exemplo int,
boolean,char. É possível, usando RMI, passar objetos como parâmetros de
funções e obter objetos java como retorno de funções, além de tipo primitivos.
Devido a isso, não é necessário nenhum código extra para “montar” e “desmontar”
objetos no cliente.
“Mover o comportamento” – Usando-se do fato de ser possível mover objetos
através de JVM’s, com RMI é possível trabalhar com interfaces e passar objetos
que implementam essas interfaces em tempo de execução. Dessa forma é
possível “mover o comportamento” para o outro lado da comunicação.
Padrões de Projeto – O fato de ser possível passar objetos serializados do
cliente para o servidor garante o uso de todo o poder do paradigma de orientação
a objetos na computação distribuída. Como é possível “mover o comportamento”
com o uso de interfaces java é possível usar padrões de projeto orientado a
objetos facilmente.
Segurança – Por fazer parte da API do java, RMI usa todo o mecanismo de
segurança de Java, já bastante maduro.
Facilidade para usar – RMI possui uma estrutura simples (como vista a
anteriormente).
Portabilidade – Essa característica é herdada pelo fato de RMI ser 100%
Java. Se utilizado com JNI (Java Native Interface) é possível construir aplicativos
java que se comuniquem com outro sistemas já existentes.
Programação Paralela – RMI é multi-thread, garantindo que as requisições
dos clientes sejam atendidas sem necessidade código extra.
9
Foi visando essas vantagens e aliando as necessidades do projeto que se
decidiu pelo uso de RMI neste trabalho. Ele se adapta perfeitamente as
necessidades do servidor, principalmente no que se refere a segurança e
concorrência.
10
CONCLUSÂO
Esse relatório apresenta um primeiro resultado visando o Trabalho de
Conclusão de Curso. Foram apresentados: o tema proposto, metodogias, um
cronograma preliminar e a solução tecnológica RMI que foi adotada após a
comparação com outras alternativas tecnológicas.
11
REFERÊNCIAS BIBLIOGRÁFICAS
1.SIERRA, Kate; SIERRA, Bert. Head First Java, 2ª ed. Alta Books Ltda, 2005.
2.
Remote
Method
Invocation
(RMI).
Disponível
em
:
<http://java.sun.com/javase/technologies/core/basic/rmi/whitepaper/index.jsp#10>.
Acesso em 19 fev. 2007
3.
Java
RMI.
Disponível
em:
<http://www.dca.fee.unicamp.br/cursos/PooJava/objdist/javarmi.html> Acesso em 20 fev.
2007
Orientador: Ricardo Pereira e Silva
Assinatura: ____________________________
12
Download