Sistemas Distribuídos

Código

0106026

Créditos ECTS

6

Objetivos

Pretende-se que os formandos adquiram conhecimento sobre o que é um sistema distribuído e quais as principais questões que resultam da sua utilização.  Pretende-se proporcionar os conhecimentos básicos e intermédios para a programação de aplicações distribuídas, nomeadamente as arquiteturas e as tecnologias de comunicação em sistemas distribuídos, usando as competências adquiridas para a programação em Python.

Programa

1. Arquiteturas de sistemas distribuídos: monolíticas, N camadas; Peer-to-Peer; publicador-subscritor; objetos distribuídos; Web Services.
2. Processos: programação com processos e threads de sistemas distribuídos; cloud.
3. Comunicações: fundamentos; RPC; orientada a mensagens; multicast.
4. Sistema de nomes: nomes sem estrutura e estruturados; nomes baseados em atributos; arquiteturas e algoritmos de pesquisa.
5. Coordenação: relógios físicos; relógios lógicos; exclusão mútua; algoritmos de eleição; sistemas de localização.
6. Consistência e Replicação: modelos de consistência baseado em dados.

Métodos de Ensino

As sessões teóricas têm um carater expositivo. Em cada sessão os formandos são inscrevem-se para responder a questões relacionadas com o tema abordado com trabalho para cada (TPC). Na sessão seguinte, a resposta a essas questões é discutida em grupo, ficando registadas as respostas no repositório da UC no moodle.

Nas sessões de laboratório é explorada a construção de um projeto centrado na utilização de sistemas distribuídos. Este projeto serve de esqueleto que apoia os formandos na concretização de um trabalho de projeto em grupo.

Bibliografia

Essencial

Complementar

  • George Coulouris, Jean Dollimore e Tim Kindberg. Distributed Systems: Concepts and Design. 5ª edição. Addison-Wesley. 2012. ISBN-13: 978-0-273-76059-7.
  • Documentação de Python.
  • Documentação de Python específica sobre programação de socket.

Método de Avaliação

  • Componente individual da avaliação com dois testes - 40 %
  • Trabalho Individual e/ou de Grupo - 40 %
  • Trabalhos para casa - 20 %