Departamento de Informática (UM)

Página de Unidade Curricular

DesignaçãoCódigoCursoRegimeRegente

Paradigmas de Sistemas Distribuídos

11608 [ME78ME7800005182]

Mestrado em Engenharia Informática [MEINF]

S2

Paulo Sérgio Soares Almeida

Objetivos

Os conteúdos programáticos estão organizados por diferentes paradigmas utilizados para escrever componentes de um sistema distribuído. Tal permite que os alunos fiquem a conhecer estes paradigmas, e também que cheguem ao fim da UC com capacidade de escolher que paradigma(s) utilizar quando confrontados com determinado problema. Uma das motivações da escolha de alguns destes, como programação baseada em eventos e baseada em atores, é permitir a implementação de serviços que escalem para elevados níveis de concorrência, ao contrário do clássico servidor multi-threaded, tipicamente abordado em UCs de primeiro ciclo. Depois de exercitar diferentes paradigmas, os alunos serão capazes (tendo que o demonstrar no projeto prático em grupo) de implementar sistemas que combinam vários componentes, alguns escritos de raiz pelos alunos, usando o paradigma e linguagem mais apropriada, e outros sobretudo através da delegação de funcionalidade para middleware apropriado.

Programa

1. Sistemas assíncronos, tempo lógico e causalidade
2. Algoritmos em redes assíncronas
3. Relógios lógicos escalares e vetoriais
4. Ordens de entrega de mensagens: FIFO e causal
5. Algoritmos de entrega causal
6. Programação baseada em eventos
7. Máquinas de estado com callbacks
8. Programação com futuros
9. Programação com async/await
10. Programação baseada em atores
11. O modelo de atores (processos isolados, envio assíncrono, receção seletiva de mensagens)
12. Estudo de caso, e.g., programação em Erlang
13. Programação baseada em padrões de mensagens
14. Middleware orientado às mensagens
15. Padrões de mensagens
16. Sistemas de notificação de eventos e o modelo publicador-subscritor
17. Estudo de caso, e.g., ZeroMQ
18. Programação baseada em recursos
19. Padrões arquiteturais em sistemas distribuídos
20. O padrão arquitetural REST
21. REST com HTTP

Bibliografia

Distributed Systems, 3rd ed., M. van Steen and A.S. Tanenbaum, distributed-systems.net, 2017.

Programming Erlang, Joe Armstrong, Pragmatic Bookshelf, 2013.

Distributed Event-Based Systems, Gero Mühl, Ludger Fiege, Peter Pietzuch, Springer, 2006.

RESTful Web Services, Leonard Richardson, Sam Ruby, O´Reilly, 2007.

Resultados da aprendizagem

- Conhecer os principais paradigmas de programação de sistemas distribuídos.
- Escolher o(s) paradigma(s) adequado(s) ao problema a resolver.
- Implementar serviços sujeitos a grande concorrência, originada por elevado número de clientes.
- Implementar serviços envolvendo componentes escritos em diferentes linguagens e paradigmas.
- Planear e implementar sistemas distribuídos através da combinação de componentes de middleware.

Método de avaliação

A avaliação baseia-se num projeto prático em grupo (30% a 50% da nota final) e um exame escrito (50 a 70% da nota final). Em ambas as componentes será exigida uma nota mínima.

Funcionamento

Turno: T 1; Docente: Paulo Sérgio Soares Almeida; Dep.: DI; Horas: 7.5.
Turno: T 1; Docente: José Orlando Roque Nascimento Pereira; Dep.: DI; Horas: 7.5.
Turno: PL 1; Docente: Paulo Sérgio Soares Almeida; Dep.: DI; Horas: 15.
Turno: PL 1; Docente: José Orlando Roque Nascimento Pereira; Dep.: DI; Horas: 15.

[ Outras UCs do Departamento ]