Skip to: site menu | section menu | main content

Prof. Marlos Marques

marlos.uesb@gmail.com

DCET 0755 - Sistemas Distribuídos

Trabalho Prático

Objetivo:

  • Desenvolver pequenas aplicações distribuídos, de modo a compreender melhor o funcionamento deste tipo de sistema.

Regras:

  • Codificação:
    • O arquivo Principal.java deverá conter o método main
    • O trabalho deverá compilar com a linha de comando javac Principal.java

  • Estrutura de arquivos:
    • O diretório com o trabalho deverá ser chamado de sd_trabalhoXX_numeroDeMatricula. Ex. sd_trabalho01_200012345
    • Este diretório deverá conter o arquivo Principal.java na sua raiz
    • A partir deste diretório organize os arquivos conforme conveniência

  • Entrega dos trabalhos via e-mail:
    • O subject/assunto deverá ser [sd][trabalhoXX][numeroDeMatricula]. Ex: [sd][trabalho01][200012345]
    • Compactar (.zip ou .rar) o diretótio redes1_trabalhoXX_numeroDeMatricula (sem os arquivos .class). Ex. sd_trabalho01_200012345.rar
    • Anexar o arquivo compactado ao email e enviar
Observações:

  • Cada trabalho será entregue via email até as 23h59m da data estipulada
  • Os prazos NÃO SERÃO prorrogados
  • Utilizar editores de texto simples (ASCII puro) para a codificação
  • Gerar código através de compiladores padrão (JRE ou GCC/G++ GNU/Linux)
  • Em caso de alguma incompatibilidade, os trabalhos deverão estar executando perfeitamente nos sistemas computacionais (leia-se Linux) do laboratório de redes
  • Os trabalhos deverão estar em conformidade com as especificações do arcabouço (esqueleto dos métodos) pré-definidos em sala de aula
  • Utilize boas técnicas de programação. Sugestões podem ser encontradas aqui ou aqui.
  • Os trabalhos serão desenvolvidos individualmente;
  • Não serão admitidos trabalhos iguais:
    • Ajuda entre alunos/equipes é permitida e saudável ao processo de aprendizado, a cópia pura e simples não
    • Serão DESCONSIDERADOS os trabalhos dos envolvidos em cópia
  • Com relação aos nomes:
    • XX é o número correspondente ao trabalho desenvolvido
    • numeroDeMatricula é o número de matrícula do aluno

Descrição dos Trabalhos

Trabalho #01:
Título: Intreroperabilidade no Programa de Chat/WhatZap Cliente/Servidor
Data da entrega: até o dia 26/08/2025
Nota: parte da nota da III Unidade
Descrição: conforme explicações e exemplos vistos em sala de aula, implementar a interoperabilidade entre os TODOS os clientes e servidores do semestre passado (obviamente de quem está cursando a disciplina). Qualquer um tem que funcionar com qualquer outro. Em QUALQUER cenário de configuração. Exemplos: A) Todos os clientes X com servidor Y. B) 2 clientes X, 1 cliente Y com servidor Z, etc.

Trabalho #02:
Título: Programa de Chat/WhatZap (conexões UDP e TCP) com múltiplos servidores replicados INTEGRALMENTE
Data da entrega: até o dia 26/09/2025 nova data aqui
Nota: parte da nota da III Unidade
Descrição: Implementar redundância no servidor de Chat/WhatZap. O sistema deverá contar agora com N servidores (a solução algoritmica será praticamente a mesma para qualquer valor de N), contudo apenas UM servidor oferecerá o serviço por vez, ficando os outros em standby. A estrutura de dados de controle deverá ser replicada INTEGRALMENTE em todos os servidores. Caso qualquer falha ocorra no acesso a este servidor, um dos outros deverá AUTOMATICAMENTE continuar provendo os serviços aos clientes. O mesmo raciocínio é aplicado, caso este segundo servidor também saia do ar. E assim por diante. Se neste meio tempo, algum servidor voltar a funcionar, ele deverá ficar apto a prover o serviço novamente. Perceba que vários conceitos sobre SD discutidos em aula serão utilizados. Utilizar GUI. Um esboço da etapa a ser desenvolvida poderá ser encontrado aqui.

Trabalho #03:
Título: Programa de Chat/WhatZap (conexões UDP e TCP) com múltiplos servidores replicados PARCIALMENTE
Data da entrega: até o dia 12/11/2025 17/11/2025
Nota: parte da nota da III Unidade
Descrição: Conforme visto em sala de aula, implementar o programa de Chat/WhatZap com múltiplos servidores agora fazendo uma divisão na estrutura de dados para mitigar a desvantagem do único ponto de falha. Para simplificar a implementação, a ED será distribuída em APENAS 3 partes (quase iguais) da forma a seguir: grupos que comecem pela letra: [A..I], [J..R] e [S..Z]. Ou seja, operações no conjunto 1, serão direcionadas aos servidores responsáveis por este conjunto, e assim sucessivamente. Além disso, como os trabalhos são evoluções das versões anteriores, é necessário: 1) manter a interoperabilidade entre as APDUs (conforme padrão definido pelos próprios alunos) como implementada no T#01 e 2) manter a replicação dos servidores para cada um dos 3 conjuntos da ED, como implementada no T#02.

Trabalho #04: (último trabalho do semestre)
Título: Programa de Chat P2P (conexões UDP e TCP)
Data da entrega: até o dia 06/12/2025
Nota: parte da nota da III Unidade
Descrição: conforme explicações e exemplos vistos em sala de aula. Utilizar GUI. Um esboço da etapa a ser desenvolvida poderá ser encontrado aqui