Guia de Cursos

Queres conhecer a oferta de cursos da NOVA, nas áreas das licenciaturas, mestrados e doutoramentos?
No nosso Guia de Cursos encontras informação útil sobre Faculdades, Institutos e Escolas.
Podes ainda aceder a informações complementares necessárias a uma completa integração.

saber mais Guia de Cursos

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

José Augusto Legatheaux Martins, Nuno Manuel Ribeiro Preguiça

Horas semanais

5

Total de horas

70

Língua de ensino

Português

Objectivos

Esta é uma cadeira inicial de sistemas distribuídos. O objectivo é fornecer um conhecimento básico das características e modelos de sistemas distribuídos, e os métodos e técnicas para desenhar e desenvolver sistemas distribuídos seguros em ambienetes de Intranet e Internet.

Nas aulas práticas os estudantes colocam em prática as técnicas abordadas na cadeira desenvolvendo um sistema distribuído de média complexidade.

Objectivos
Saber
  • Conhecer os problemas/desafios colocados no denenho dum sistema distribuído.
  • Conhecer os modelos arquitecturais para construir um sistema distribuído e perceber os seus pontos fortes e fracos.
  • Perceber os modelos de comunicação entre processos, com realce para os modelos de invocação remota e web services.
  • Conhecer os problemas de segurança dum sistema distribuídos e saber quais as técnicas básicas usadas para os resolver.
  • Perceber o problema dos nomes num sistema distribuído e conhecer as soluções básicas para solucionar o problema.
Fazer
  • Desenhar um sistema distribuído para resolver um problema não-trivial.
  • Implementar um sistema distribuído que tolere falhas fail-stop usando comunicação entre processos.
  • Implementar um sistema distribuído seguro usando técnicas de autenticação e cifra comuns.
Soft-Skills
  • Desenhar um sistema e ser capaz de defender a solução proposta.
  • Gerir o tempo.
  • Trabalhar em pequenas equipas para resolver problemas 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 aos sistemas distribuídos
  2. Modelos de sistemas distribuídos
    1. Arquitectura
    2. Modelos fundamentais (interacção, falhas, segurança)
  3. Comunicação entre processos
    1. Heterogeneidade na representação dos dados
    2. Modelo cliente/servidor, comunicação em grupo a baseada em redes lógicas
    3. Sistemas de disseminação de eventos
  4. Invocação remota de métodos
    1. Modelo conceptual
    2. Linguagens de definição de interfaces
    3. Nomeação e referências remotas
  5. Web services e modelos alternativos de interacção cliente/servidor na internet
    1. Web services SOAP (descrição de serviços, serviço de directório, orquestração)
    2. Web services REST
    3. Invocações remotas asíncronas
      1. Ajax
      2. GWT
  6. Segurança
    1. Introdução à criptografia
    2. Algoritmos de autenticação e cifra (baseados em criptografia simétrica e assimétrica)
    3. Distribuição de chaves e assinaturas digitais
  7. Sistemas de nomes
    1. O problema dos nomes em sistemas distribuídos
    2. Serviços de nomes e serviços de directório
  8. Sistemas de ficheiros distribuídos
    1. Introdução à gestão de dados replicados

Bibliografia

O livro adoptado cobre a generalidade da matéria abordada na cadeira. Dos livros complementares, o primeiro apresenta programação em rede, podendo ser útil apra as aulas práticas, e o segundo é uma leitura alternativa ao livro adoptado.

Adoptados

  • G. Coulouris, J. Dollimore and T. Kindberg. Distributed Systems - Concepts and Design. Addison-Wesley, 5th Edition, 2011

Complementares

  • Andrew S. Tanenbaum, Maarten van Steen. Distributed Systems: Principles and Paradigms. Prentice Hall, 2nd Edition, 2007.

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