Sistemas de Objetos Distribuídos - Projeto

Segundo Semestre de 1999

. Descriçao Geral
. Metas
. Etapas
        
. Prazos
. Registro das equipes
[at work icon] Em construção...

Descrição Geral

Vamos construir uma "versão enxuta" de um sistema de informações sobre "peças" ou "componentes" (parts). O sistema será distribuído por múltiplos servidores CORBA, cada qual implementando um repositório de informações sobre peças. Cada peça será representada por um objeto cuja interface é Part. Cada servidor implementará um objeto PartRepository, que é essencialmente uma coleção de Parts.

As definições (em IDL) das interfaces Part e PartRepository encontram-se neste arquivo. Use-o sem fazer alteração nenhuma. Para que os programas escritos pelas diferentes equipes funcionem em conjunto, é crucial que todos se baseiem nas mesmas definições de interfaces.

Cada objeto Part encapsula as seguintes informações:

Uma peça pode ser uma agregação de sub-componentes ou pode ser uma peça primitiva (não composta por sub-peças). Sua lista de sub-componentes contém pares (subPart, quant), onde subPart referencia um sub-componente da peça, e quant indica quantas unidades do sub-componente aparecem na peça. Uma peça primitiva tem lista de componentes vazia.

Os sub-componentes de um objeto Part agregado são também objetos Part. Esses objetos não são necessariamente implementados pelo servidor CORBA que implementa a peça agregada. Eles podem estar distribuídos por múltiplos servidores. Tais servidores podem inclusive ter sido escritos por diferentes equipes de projeto.

Metas

Cada equipe de projeto escreverá um "programa servidor" e um "programa cliente".

O Servidor

O programa servidor implementará as interfaces PartRepository e Part. Escreva-o tendo em mente que poderão ocorrer várias execuções simultâneas do programa servidor: cada "processo servidor" (uma execução do programa servidor) implementará um objeto PartRepository, mais a correspondente coleção de objetos Part. Isto significa que o programa servidor deve receber como argumentos, na linha de comando, certos parametros que tem de variar de um processo servidor para outro (o nome do servidor, por exemplo).

O Cliente

O programa cliente será usado para exercitar o sistema. Ele deve permitir que o usuário:

Fique à vontade para definir como seu programa cliente vai interfacear com os usuários. O único requisito é que a interface com o usuário permita que o sistema seja exercitado da forma descrita acima. Em particular, o programa cliente deve possibilitar que um usuário crie (de modo razoavelmente conveniente) peças agregadas cujas sub-peças estejam distribuídas por vários repositórios. Provavelmente o mais fácil é escrever um cliente com uma interface tipo linha de comando. Uma possibilidade é um cliente "linha de comando" que mantenha tres variáveis: Tal cliente apresentaria um prompt e ficaria esperando comandos do usuário. Ele aceitaria comandos como:

bind Faz o cliente se conectar a outro servidor e muda o repositório corrente. Este comando recebe o nome de um repositório e obtém do serviço de nomes uma referência para esse repositório, que passa a ser o repositório corrente.
listp Lista as peças do repositório corrente.
getp Busca uma peça por código. A busca é efetuada no repositório corrente. Se encontrada, a peça passa a ser a nova peça corrente.
showp Mostra atributos da peça corrente.
clearlist Esvazia a lista de sub-peças corrente.
addsubpart Adiciona à lista de sub-peças corrente n unidades da peça corrente.
addp Adiciona uma peça ao repositório corrente. A lista de sub-peças corrente é usada como como lista de sub-componentes diretos da nova peça. (É só para isto que existe a lista de sub-peças corrente.)
quit Encerra a execuçao do cliente.

A lista acima tem a finalidade de ilustrar como um cliente "linha de comando" poderia funcionar. Tome-a como uma sugestão (incompleta, por sinal), que pode ser seguida ou não. Se você tiver gás para escrever um cliente com uma interface com o usuário mais elaborada e amigável (GUI), vá em frente!

Etapas

O projeto será dividido em 3 etapas. Ao final da terceira etapa as equipes farão uma demonstração do funcionamento de seus sistemas.

Primeira Etapa

Segunda Etapa

Terceira Etapa

Prazos

. Etapa 1: 18 de outubro
. Etapa 2: 16 de novembro
. Etapa 3: 29 de novembro

Registro das Equipes

O projeto será desenvolvido em equipes de um ou dois alunos. As equipes devem se registrar com o professor, via email, até o dia 4 de outubro.

. Equipes registradas:
  1. Paulo Teodoro Simardi (simardi@ime.usp.br)

  2. Bruno Fernandes Degani (bfdegani@linux.ime.usp.br)
    Fabio Luiz Ide (fli@linux.ime.usp.br)

  3. Alexandre Ricardo Nardi(nardi@ime.usp.br)

  4. Hamilton Nishimura (guido@linux.ime.usp.br)
    Telmo Dias de Souza Carlos (telmo@linux.ime.usp.br)

  5. Débora dos Santos Botta (debora@linux.ime.usp.br)
    Wagner Dias (dias@ansp.br)

  6. Leonardo Rochael Almeida (rochael@ime.usp.br)
    Fernando Antônio Mac Cracken Cezar (cracken@ime.usp.br)

  7. Jorge Bittencourt (jorgeb@ime.usp.br)
    Marcelo Camacho de Souza (mcsouza@ime.usp.br)

  8. Marcelo Brito dos Santos (brito@ime.usp.br)
    Marcos Paulo Januário de Sousa (mpjs@ime.usp.br)

  9. Alencar Yukio Shibayama (ays@linux.ime.usp.br)
    Daniel Müller (muller@ime.usp.br)

  10. Bruno Martins Moutinho (bruno@ime.usp.br)

  11. José Kazuo Ikai (jikai@linux.ime.usp.br)

  12. João Luiz Cury Silvestre (jlcs@linux.ime.usp.br)

  13. Roberto Toscano Costa (rtoscano@ime.usp.br)

  14. Clóvis Seragiotto Júnior (junior@ime.usp.br)

  15. João Dubeux Kawamura (joaodk@linux.ime.usp.br)
    Alexandre Sussumu Hirohashi (lau@linux.ime.usp.br)

  16. Ariane Machado Lima de Oliveira (ariane@ime.usp.br)
    Regina Rocha de Morais Gonçalves (regi@ime.usp.br)

  17. Rodrigo Vargas Crozato (vargas@linux.ime.usp.br)

  18. Andrés Camacho
    Marcelo Poeta Blasco (mblasco@linux.ime.usp.br)

  19. Gabriel De Munno Francisco (gmunno@linux.ime.usp.br)
    Raquel de Paula (rpaula@linux.ime.usp.br)

  20. Cristina Ferreira Freitas Assunção (cristina@linux.ime.usp.br)

  21. Alexandre Mello (alex_mello@yahoo.com)
    Aldebaran Perseke (aldeba@ime.usp.br)

  22. Francisco José da Silva e Silva (fssilva@ime.usp.br)
    Huang Kuo Tching (huangkt@ime.usp.br)

  23. Jeferson Roberto Marques (jmarques@linux.ime.usp.br)
    Rogério César Iamamoto (iamamoto@linux.ime.usp.br)

  24. Jishu Ashimine (jishu@ime.usp.br)


Valid HTML 4.0! Last modified: Fri Nov 12 16:03:34 EDT 1999
Francisco Reverbel
reverbel at ime.usp.br