Designação | Código | Curso | Regime | Regente |
---|
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. |