Exercício-Programa 1: Sistema de Bate-Papo Usando CORBA
Sistemas de Middleware - Segundo Semestre de 2007
Descrição
Este exercício-programa consiste no design e na implementação de
um sistema simples de bate-papo utilizando CORBA. Isto compreende
definir as interfaces a serem utilizadas em IDL e implementar o servidor
e cliente.
O trabalho está dividido em duas partes: uma básica e uma extensão. A
nota final está relacionada com as funcionalidades implementadas. Veja
abaixo.
Especificação
Como requisitos básicos, o sistema deve oferecer as seguintes
funcionalidades: (valor: 8,5)
- O usuário informa o seu nome no momento em que ele se registra
como novo participante de uma sala de bate-papo.
- O nome do usuário deve ser único numa sala.
- Usuários do sistema devem ser capazes de enviar mensagens para
todo o grupo de participantes de uma sala.
- Usuários podem enviar mensagens para um único outro participante
selecionado.
- Ao sair de uma sala, todos os outros que ainda permanecem nela são
notificados de sua saída.
- Não há necessidade de autenticação de usuários para entrar numa
sala.
Recursos adicionais (opcional):
- O sistema oferece mais de uma sala de bate-papo.
O número de salas e o nome das salas disponíveis podem ser
especificados no momento em que se executa o servidor. (valor: 1,0)
- O sistema percebe que um usuário não participa mais da sala, isto
é, ele deteta o caso do cliente que pára de responder às
requisições do servidor sem ter antes chamado a operação que
notificaria o servidor da sua saída da sala. (valor: 0,5)
Arquitetura / Implementação
O sistema pode ser desenvolvido baseado em arquitetura cliente/servidor,
com o servidor centralizando todas as operações sobre a(s) sala(s) de
bate-papo.
O design do sistema é parte importante do processo de
desenvolvimento, em particular a interface dos objetos que o compõe. No
entanto, muito tempo gasto nesta parte pode prejudicar a implementação, por
falta de tempo. Em particular, no momento da implementação, costuma-se achar
muitos problemas no design que nos obrigam a refatorá-lo. Assim, o
tempo deve ser devidamente equilibrado entre o design e a
implementação e você deve prever que será obrigado a completar algumas
iterações até que o sistema se comporte da forma que você deseja.
Não é necessário que a interface com o usuário seja complexa. Uma interface
por linha-de-comando é suficiente. Se preferir uma interface gráfica,
tudo bem.
O sistema deve ser implementado em Java, com o JacORB.
Dica
Este enunciado é do Fábio.
Quando propôs este trabalho, ele também deu uma dica.
FAQ
Questão 1: Pode fazer em grupo?
Resposta: Este trabalho deve ser feito em grupos de uma ou duas
pessoas.
Questão 2: Pode haver grupo com mais de duas pessoas?
Resposta: Não.
Questão 3: O que exatamente deve ser entregue?
Resposta: Veja abaixo. Com algum atraso, incluí essas informações sob o
ítem "Entrega".
Entrega
O trabalho deve ser entregue até 19/09 21/09, através
do sistema Paca/Moodle.
Entregue um arquivo tar.gz ou zip que satisfaça os seguintes requisitos:
- O nome do arquivo deve ser da forma
ep1-
<nomes-dos-membros-do-grupo>.tar.gz
ou
ep1-
<nomes-dos-membros-do-grupo>.zip
.
Por exemplo:
ep1-joao-maria.zip
. No nome do arquivo devem ser
omitidos os acentos dos nomes dos
membros do grupo. Além disso, a separação entre
palavras não deve ser feita com espaços. Ou seja,
o arquivo não deve se chamar "ep1-joão-maria.tar.gz
"
nem "ep1 joao maria.tar.gz
".
- O desempacotamento do arquivo tar.gz ou zip deve produzir um
diretório com o mesmo nome do arquivo, menos o sufixo .tar.gz ou
zip. (Exemplo:
ep1-joao-maria
.) Todos os arquivos
desempacotados devem estar dentro desse diretório.
- O diretório desempacotado deve conter:
- Todos os arquivos fonte em Java e IDL escritos por vocês. Não
inclua arquivos fonte Java gerados pelo compilador idl.
- Um arquivo que automatize a geração dos programas cliente
e servidor. Esse arquivo tanto pode ser um
build.xml
para a ferramenta ant
como um Makefile
que funcione com o utilitário
make
do Linux.
- Um arquivo
README
, com as seguintes informações:
- Um "receituário" de como gerar e rodar os programas cliente
e servidor. Caso seja necessário definir variáveis de
ambiente e/ou editar algum arquivo de propriedades
antes de gerar e/ou rodar os programas, esta parte
deve detalhar o que precisa ser feito.
- Uma explicação breve sobre a estrutura dos
programas. (Como é a organização das classes? Foi
utilizado o modelo "push" ou o modelo "pull"?...)
O arquivo README
deve ser de texto puro
(ASCII). Quem preferir, pode colocar num documento separado
a explicação sobre a estrutura dos programas e deixar no
README
só o receituário para geração e
execução. Esse documento separado, se existir, tanto pode
ser um arquivo de texto ASCII como um arquivo pdf. (Não
quero arquivos doc em formato MS-Word.)
Last modified: Fri Oct 5 15:43:25 BRT 2007