A sqeuipes já podem ser verificadas no final da página!
Não é a Nasdaq.
É a
A Ceasdaq é um ambiente em que feirantes podem trocar insumos entre si. Eles tem a chance de comprar e vender uns dos outros, de forma que a aquisição de alimentos e bens de consumo se tornam bem mais baratas.
As operações são controladas num ambiente distribuído, mais um servidor central. O seu trabalho é implementar esta arquitetura.
Uma operação de compra é feita ao se invocar o método purchaseItem(String seller, String item, int amount) de um cliente. Note que a operação é sempre iniciada pelo cliente que comprou.
Há um servidor central que permite que os clientes executem suas transações, e controla todo o histórico de operações feitas. Cada uma dessas operações está implementada em um processo diferente, e remoto.
O sistema funciona de maneira extremamente simples: há os clientes, que possuem diferentes quantidades de diferentes itens (por exemplo batata, tomate, cenoura, etc.). Para simplificar, assumimos que cada item tem uma unidade de armazenamento própria, de forma que cada cliente possui uma certa quantidade (possivelmente zero) de cada item. Naturalmente, nenhum cliente pode possuir quantidade negativa de nenhum item.
Quando uma operação de compra é feita, o cliente que adquiriu o produto informa ao servidor que houve uma compra. Para isso ele invoca remotamente o método registerSelling(String purchaser, String seller, String item, int amount) que executa no servidor. Ao receber esta mensagem, o servidor vai registrar a compra e determinar que o vendedor (seller) decremente o saldo disponível do item que foi comprado (executando remotamente o método decreaseAmount(String item, int amount)). Note que caso o seller não possa executar a operação, então todo o processo deve ser cancelado.Além disso, note que múltiplas operações podem acontecer ao mesmo tempo, de forma que inconsistências podem surgir caso não sejam tomadas as devidas precauções.
Por exemplo, supondo que um cliente A compra 10 unidades de tomates de um cliente B, e ao mesmo tempo um cliente C compra 15 unidades de tomates do cliente B. Caso o cliente B possua apenas 20 unidades de tomate, então não é possível que se completem ambas as operações. Caso isso aconteça, o cliente B ficaria com -5 unidades de tomate, o que é totalmente inconsistente.
Um pequeno esboço das classes Client e Server podem ser obtidos como ponto de partida aqui.
O Projeto.
Teremos equipes de no mínimo 1 e no máximo 3 pessoas.
A ideia é implementar remotamente o sistema inteiro. Basicamente teremos as opções de implementação em RMI ou em Socket.
Equipes
Equipes formadas espontaneamente
CAIO SUZART ARGOLO LAVINSKY
ELENILDO JOAO DE JESUS FILHO
MATHEUS HENRIK NOGUEIRA DE SANTANA
CLAUDIO MOISES VALIENSE DE ANDRADE
MARIANNA NOVAES MARTINS
STEFANO AZEVEDO DA SILVA
Equipes formadas compulsoriamente
ANA CAROLINA MENDES FIGUEREDO
ARON SEBASTIAN DOS SANTOS SILVA
SABINA DOS SANTOS MORENO
STEFHANY EMILLY OLIVEIRA DOS SANTO