Faculdade de Ciências e Tecnologia

Sistemas Distribuídos

Código

8153

Unidade Orgânica

Faculdade de Ciências e Tecnologia

Departamento

Departamento de Informática

Créditos

6.0

Professor responsável

Nuno Manuel Ribeiro Preguiça

Horas semanais

5

Total de horas

52

Língua de ensino

Português

Objectivos

Esta é uma UC de consolidação, opcional, em sistemas distribuídos. Esta UC introduz  os modelos, métodos e técnicas básicas para o desenvolvimento de sistemas distribuídos. Como pré-requisito, os estudantes devem possuir conhecimentos de algoritmos, programação e redes de computadores.

 Conhecimentos

  • Problemas e desafios para o desenho de sistemas distribuídos;
  • Modelos arquitecturais para a construção de sistemas distribuídos;
  • Modelos e sistemas de comunicação directa e indirecta;
  • Alternativas para a nomeação, incluindo serviços de nomes e directório;
  • Soluções fundamentais de ordenação e registo de causalidade de eventos;
  • Modelos de consistência básicos e soluções de caching e replicação.

Aptidões e competências

  • Desenhar um sistema distribuídos para um problema não trivial;
  • Utilização de subsistemas de comunicação standard para a programação de sistemas distribuídos;
  • Implementação de sistemas distribuídos não triviais.

Pré-requisitos

Para seguir esta cadeira os estudantes devem possuir conhecimentos de algoritmos, programação e redes de computadores.

Bons conhecimentos de Programação em Java são essenciais.

Conteúdo

1 Introdução

1.1 exemplo;características; desafios

2 Arquitecturas e modelos

2.1 Arquitecturas: cliente/servidor; p2p; proxy

2.2 Modelos de falhas, interacção, segurança

3 Comunicação directa

3.1 Com. ponto-a-ponto

3.2 Multicast

4 Invocação remota

4.1 Modelo

4.2 Interfaces e representação de dados

4.3 Protocolos e semântica na presença de falhas

4.4 Ligação (binding) e concorrência no servidor

5 Invocação remota na Internet

5.1 Web-services

5.2 REST

5.3 Invocação assíncrona (AJAX) e modelos “push”

6 Comunicação indirecta

6.1 Com. em grupo

6.2 Sistemas produtor/subscritor

6.3 Sistemas de filas de mensagens

7 Sistemas de Nomes

7.1 Problemática e conceitos

7.2 Serviços de nomes

7.3 Serviços de directório

8 Tempo

8.1 Relógios físicos

8.2 Relógios lógicos

8.3 Relógios vectorias

8.4 Vectores versão

9 Introdução à replicação e consistência

9.1 Caching

9.2 Replicação primário/secundário

Bibliografia

Distributed Systems: Concepts and Design

George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair

Publisher: Addison Wesley; 5th edition

ISBN-13: 978-0132143011

Método de ensino

São ministradas aulas teóricas onde são transmitidos e discutidos os conceitos fundamentais.

Nas aulas práticas é feita uma apresentação de algumas técnicas básicas de sistemas distribuídos (ver programa das aulas práticas) e realizados alguns exercícios básicos relacionados. Algumas aulas práticas são dedicadas exclusivamente aos trabalhos práticos a realizar pelos alunos, incluindo a apresentação e discussão de possíveis soluções.

Método de avaliação

Método de avaliação dos alunos

Componentes da avaliação

  • Dois mini-testes, com o peso na nota final de 35% cada um.
  • Dois trabalhos práticos, com peso na nota final de 15% cada um.

Notas a ter em atenção

  • A nota final é aproximada ao valor, as notas intermédias à décima de valor.
  • Os mini-testes são realizados sem consulta.
  • Ter êxito na frequência é condição necessária para aceder ao exame de recurso.

Avaliação da frequência

Têm frequência os alunos cuja nota de frequência seja igual ou superior a 8 valoes. A nota de frequência é calculada da seguinte forma:

  • Nota de frequência = 50% * trab 1 + 50% * trab 2

A nota do trabalho prático será obtido pela avaliação do trabalho efectuado, a qual pode incluir uma discussão sobre o mesmo.

Nota final

Para os alunos com frequência, a nota final será calculada da seguinte forma:

  • Nota final = 35% * teste 1 + 35% * teste 2 + 15% * trab 1 + 15% * trab 2

Para os alunos que vão a exame, a nota final será calculada da seguinte forma:

  • Nota final = 70% * exame + 15% * trab 1 + 15% * trab 2
Para os alunos que pretendem fazer melhoria, a nota final será calculada da seguinte forma:
  • Nota final = MAX( 35% * teste 1 + 35% * teste 2, 70% * exame) + 15% * trab 1 + 15% * trab 2

Condições de aprovação na cadeira

1. Trabalho prático válido;

2. Avaliação de frequência superior ou igual a 8,0 valores;

3. Nota final superior ou igual a 9,5 valores.

Cursos