Sistemas de Objetos Distribuídos - Projeto

Segundo Semestre de 1998

. Descrição Geral
. Metas
. Prazos
. Registro das Equipes


Descrição Geral

Vamos construir um "versão enxuta" de um sistema de informatização de bibliotecas. O sistema será distribuído por múltiplos servidores CORBA, cada qual gerenciando uma biblioteca. Cada servidor de gerenciamento de biblioteca implementará dois "objetos principais": um objeto Biblioteca e um objeto BibAdmin. Interagindo com o primeiro desses objetos, os usuários terão acesso a serviços rotineiros da biblioteca: consultas, empréstimos e devoluções. Interagindo com o segundo, o pessoal da biblioteca efetuará operações administrativas: cadastramento de um novo livro, adicão de mais exemplares de um livro ao acervo da biblioteca, etc.

Além dos objetos Biblioteca e BibAdmin, o servidor implementará uma coleção de objetos Livro. A cada Livro, por sua vez, estará associada uma coleção de objetos ExemplarDeLivro. Podemos pensar que um objeto Biblioteca possui um conjunto de Livros, e que cada Livro possiu um conjunto de objetos ExemplarDeLivro. Quaisquer alterações nesses conjuntos, entretanto, tem de ser efetuadas através do objeto BibAdmin.

A funcionalidade de nosso sistema de informatização de bibliotecas irá crescendo ao longo do semestre.

. Etapa 1: servidores isolados, objetos não persistentes

Os servidores que gerenciam as várias bibliotecas não se comunicam uns com os outros. Cada biblioteca fica portanto isolada das demais. Além disso, os objetos implementados pelos servidores não são persistentes. Isto significa que todas as informações mantidas por um servidor se perderão quando o servidor parar de rodar.

Nesta etapa você usará este arquivo, que contém uma primeira versão das definições (em IDL) das interfaces Biblioteca, Livro, ExemplarDeLivro e BibAdmin. Use-o sem fazer alteração nenhuma. Dessa maneira o programa servidor escrito por uma equipe funcionará com o programa cliente escrito por outra equipe. Para que os programas das diferentes equipes funcionem em conjunto, é crucial que todas se baseiem nas mesmas definições de interfaces.

. Etapa 2: servidores isolados, objetos persistentes

Agora o estado de cada objeto é mantido em disco. A queda de um servidor não mais implica a "destruição virtual" do acervo de sua biblioteca. O acervo de uma biblioteca pode ser grande a ponto de não caber mais na memória do servidor.

Nesta etapa aproveitaremos também para refinar as definições das interfaces entre o servidor e seus clientes. Será publicada aqui uma segunda versão do arquivo IDL contendo essas definições.

. Atualização do arquivo IDL para as etapas 2 e 3 do projeto

. SQL e JDBC

. Etapa 3: servidores interligados, objetos persistentes

Os servidores das várias bibliotecas deixam de ser isolados. O usuário que roda um programa cliente e se conecta ao servidor de uma biblioteca B (possivelmente a mais próxima da sua casa) tem acesso não só ao acervo da biblioteca B, mas também aos acervos das demais bibliotecas. A idéia é fazer isso com um mínimo de alterações no programa cliente. Mesmo estando conectado ao servidor da biblioteca mais próxima, o cliente verá uma "biblioteca virtual", cujo acervo é a união dos acervos de todas as bibliotecas da cidade. Ou do estado. É desejável que o cliente possa especificar o "alcance" da biblioteca virtual.

Para atender a uma consulta de um cliente, o servidor da biblioteca B poderá fazer consultas a servidores de outras bibliotecas. Nesse caso o processo servidor da biblioteca B assumirá o duplo papel de servidor (perante o seu cliente) e de cliente (perante os servidores das outras bibliotecas). Note que o cliente e os servidores envolvidos podem ter sido escritos por diferentes equipes de projeto!

Mais detalhes, incluindo a versão do arquivo IDL que você utilizará nesta etapa, serão publicados aqui.

. O arquivo IDL será o mesmo da segunda etapa. Eis as instruções específicas para a etapa 3.


Metas

Para cada uma das três etapas, cada equipe de projeto escreverá um "programa servidor" e um ou dois "programas clientes".

. O Servidor

Em cada etapa o programa servidor implementará as interfaces definidas no arquivo IDL fornecido pelo professor especificamente para essa etapa. Escreva-o tendo em mente que poderão ocorrer várias execuções simultâneas do mesmo programa servidor. Cada "processo servidor" (uma execucão do programa servidor) corresponde a uma biblioteca. Portanto o programa servidor precisa receber como argumentos os parâmetros que variam de uma biblioteca para outra. Na primeira etapa, esses parâmetros devem especificar os nomes dos "objetos principais" do servidor, além do nome, cidade e estado da biblioteca. Para não ter que passar ao seu programa servidor uma longa lista de argumentos na linha de comando, você pode passar na linha de comando o nome de um arquivo contendo as definições dos parâmetros específicos de uma biblioteca.

. O(s) Cliente(s)

Os programas clientes serão usados para exercitar o sistema. Fica a critério de cada equipe decidir se escreve dois clientes, um para os serviços rotineiros (cliente da Biblioteca) e outro para as operações administrativas (cliente do objeto BibAdmin), ou se escreve um só cliente, que funcione tanto para os serviços rotineiros como para as operações administrativas. De qualquer modo, o(s) cliente(s) devem permitir que o usuário:

  • estabeleça uma conexão com o objeto Biblioteca implementado por um (processo) servidor;
  • interaja com esse objeto,
    • examinando o nome, cidade e estado da biblioteca,
    • buscando um livro (por isbn) na biblioteca,
  • tendo uma referência a um livro, referência essa previamente obtida como resultado de uma busca numa biblioteca, interaja com o livro,
    • examinando o nome e lista de autores do livro,
    • obtendo a lista de exemplares desse livro,
    • buscando um exemplar por id,
  • tendo uma referência a um exemplar de um livro, referência essa previamente obtida interagindo com um livro, interaja com o exemplar,
    • obtendo os dados do livro correspondente,
    • obtendo os dados da biblioteca que possui o exemplar,
    • verificando se o exemplar está emprestado ou não, e, em caso afirmativo, obtendo a identidade do tomador e a data de devolução,
    • efetuando operações de empréstimo e devolução do exemplar.
O(s) cliente(s) devem também permitir que o usuário:
  • estabeleça uma conexão com o objeto BibAdmin implementado por um (processo) servidor;
  • interaja com esse objeto,
    • adicionando livros e/ou exemplares de livros,
    • removendo livros e/ou exemplares de livros.
Fiquem à vontade para definir como seu(s) programa(s) cliente(s) vai(ão) 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.


Prazos

. Etapa 1: 28 de setembro
. Etapa 2: 12 de novembro
. Etapa 3: 07 de dezembro

Ao final da terceira etapa as equipes de projeto farão uma demonstração do funcionamento de seus sistemas.


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 14 de setembro.

. Equipes registradas:
  1. Ricardo Couto Antunes da Rocha (rcarocha@ime.usp.br)
    Uirá Kulesza (uira@ime.usp.br)

  2. Eduardo Tengan (tengan@ime.usp.br)

  3. Jorge Euler Vieira (euler@ime.usp.br)
    Maria do Carmo Garcia Noronha (carmo@ime.usp.br)

  4. Eduardo Bernstein (eduardo@ime.usp.br)
    Rodrigo de Moraes Albuquerque (rodrigoa@ime.usp.br)

  5. Gustavo Scalco Isquierdo (scalco@ime.usp.br)

  6. Marcos Dobay Amaral Martins (marcos.martins@netcomp.com.br)
    Alexandre Moron Bernardoni (alex.mb@originet.com.b)

  7. Marcos Aurelio Mendes de Moura (mmoura@ime.usp.br)

  8. Helves Humberto Domingues (helves@ime.usp.br)
    Isvi Correa Junior (isvi@ime.usp.br)

  9. Emerson Yoshiteru Hosokawa (eyh@ime.usp.br)
    Vera Nagamuta (nagamuta@ime.usp.br)

  10. Julio de Lima do Rego Monteiro(monteiro@altavista.net, juliolrm@ime.usp.br)
    Sebastiao Alessandro L. Santos(sasantos@ime.usp.br)

  11. José Eugênio de Assis Gonçalves (eugenio@ime.usp.br)

  12. Christiane Leite Arietti (arietti@ime.usp.br)
    Hugo Koji Kobayashi (koji@ime.usp.br)

  13. Paulo Tadeu Repullo da Cruz (tadeu@repullo.com.br)

  14. Lilian Tiemi Takada (lilian@ime.usp.br)

  15. Ricardo Skubs (skubs@ime.usp.br)
    Cristiano Ruiz Mazzon (mazzon@ime.usp.br)

  16. Alexandrino Lucas dos Santos (als@ime.usp.br)
    Sílvio Renato Hohne (srhohne@ime.usp.br)

  17. Fábio José Fioretti(fioretti@ime.usp.br)
    Ronney Rodger Sales de Castro (ronney@ime.usp.br)

  18. Elisa Yurika Kobayashi (elisak@ime.usp.br)
    Tiago Cerdoura Garjaka (tcg@ime.usp.br)

  19. Humberto Francisco Soares (hfsoares@ime.usp.br)


Last modified: Tue Dec 1 11:11:00 EDT 1998
Francisco Reverbel
reverbel at ime.usp.br