Projeto Usando CORBA

Sistemas de Objetos Distribuídos - Primeiro Semestre de 2003

. Descriçao Geral
. Metas
. Etapas
        
. Requisitos
. 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 devem 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 três 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 duas etapas, que corresponderão aos EPs 1 e 2 de SOD (MAC 440/5759). Ao final da segunda etapa as equipes farão uma demonstração do funcionamento de seus sistemas.

Primeira Etapa (EP1 de SOD)

Segunda Etapa (EP2 de SOD)

Requisitos

Devem ser utilizados os seguintes ORBs:

O projeto deve empregar mais de uma linguagem, isto é, não pode ser inteiramente escrito em C++ ou em Java. Em pelo menos uma das etapas, um dos programas (servidor ou cliente) produzidos deve ter sido escrito numa linguagem diferente do outro.

Registro das Equipes

Este projeto será desenvolvido em equipes de um ou dois alunos. As equipes devem se registrar com o professor, via email, até o dia 27 de março.

. Equipes registradas:
  1. Daniel André Vaquero (daniel at linux.ime.usp.br)
    Daniel de Angelis Cordeiro (danielc at linux.ime.usp.br)

  2. Paulo Silveira (paulo at paulo.com.br)

  3. Renato Lucindo (lucindo at linux.ime.usp.br)
    Thiago Moura Witt (witt at linux.ime.usp.br)

  4. Danilo Toshiaki Sato (dtsato at linux.ime.usp.br)
    Fernando Kasten Peinado (fernandopeinado at uol.com.br)

  5. Eduardo Leal Guerra (eguerra at linux.ime.usp.br)
    Vladimir Emiliano Moreira Rocha (vmoreira at linux.ime.usp.br)

  6. Leonardo Miyagi (lmiyagi at abril.com.br)
    David Paulo Pereira (email?)

  7. Camila Correa Moraes (cacm at ime.usp.br)
    Wagner César Bruna (wbruna at ipt.br)

  8. Edgar Szilagyi (edgar at cecm.usp.br)
    Yen Chin Schem (email?)

  9. Fábio Pará D' Incecco (incecco at ime.usp.br)

  10. Eric Soares Costa (elbarto at ig.com.br)

  11. Igor Ribeiro Sucupira (igorrs at linux.ime.usp.br)
    Andrew Gan King Yuan (andrew.yuan@attglobal.net)

  12. Carlos Alberto Guimarães (carlos.guimaraes at compatibile.com.br)

  13. Luiza Pagliari (lufp82 at yahoo.com.br)
    Fernando Alberto de Sousa (email?)

  14. Adriano Nagelschmidt Rodrigues (anr at ime.usp.br)

  15. Fábio Henrique Nishihara (fhn at linux.ime.usp.br)
    Marcos Roberto Yukio Koga (marcos at linux.ime.usp.br)

  16. Bruno Pera (pera at linux.ime.usp.br)
    Leo Watanabe (leowww at linux.ime.usp.br)

  17. Carolina Siequeroli (c.siq at terra.com.br)
    Fabio Braga de Oliveira (email?)

  18. Denis Ferreira Lima (dflima at yahoo.com.br)

  19. Thiago S. Barcelos (barcelos at ime.usp.br)
    Rodrigo M. Barbosa (rodbar at ime.usp.br)

  20. Antonio Wagner Martins Filho (awmf at ime.usp.br)

  21. Peter Kreslins Junior (pkj at linux.ime.usp.br)
    Marcos Eduardo Bolelli Broinizi (email?)

  22. Alfredo Roberto Junior (alfredo at linux.ime.usp.br)
    Thiago Faria Marzano (marzano at linux.ime.usp.br)

  23. Fábio Levy Siqueira (levy.siqueira at poli.usp.br)
    Ricardo Pinto Giorgi (ricardo.giorgi at poli.usp.br)

  24. Flávia Rainone (flaviarnn at yahoo.com)
    Stefan Neusatz Guilhen (sngim at linux.ime.usp.br)

  25. Gustavo Rodrigues Silva (gustavor at linux.ime.usp.br)
    Pedro Vasconcellos (vascon at linux.ime.usp.br)

  26. Leandro Esteves Barion (lebarion at uol.com.br)
    Rodrigo Dombrowski (rodrigod at linux.ime.usp.br)

  27. André Casado Castaño (casades at uol.com.br)

  28. Maíra de Assis Ramos (mairaramos at hotmail.com)
    Marcus Machado Sampaio Moyses (mmoyses at linux.ime.usp.br)


Valid CSS! Valid XHTML 1.0! Last modified: Thu Apr 24 18:29:57 EST 2003
Francisco Reverbel
reverbel at ime.usp.br