Confiabilidade de Sistemas Distribuídos | NOVA Guia de Cursos
A unidade curricular visa desenvolver e especializar conhecimentos na área dos Sistemas Distribuídos Confiáveis, tendo em vista a compreensão aprofundada de técnicas avançadas usadas na concepção de sistemas críticos complexos, com propriedades de tolerância a falhas, processamento seguro e confiável, tolerância a intrusões e preservação de privacidade dos dados e computações. Objectiva-se o domínio dos fundamentos para construção e desenvolvimento de sistemas confiáveis e distribuídos em grande escala bem como das técnicas que permitem suportar a combinação daquelas propriedades.
Conceitos de base para a análise e síntese de mecanismos e serviços de confiabilidade para distribuídos, do ponto de vista da sua concepção e suporte de operação;
Abstrações fundamentais para a construção dos mecanismos, técnicas e algoritmos para sistemas distribuídos confiáveis e sua realização;
Técnicas para combinação de propriedades de segurança, privacudade, fiabilidade, tolerância a falhas e tolerância a intrusões para sistema distribuídos confiáveis e seus componentes e serviços de software;
Domínio de soluções para suporte de computação confiável em plataformas e dispositivos hardware.
Construção de mecanismos e serviços para suporte de sistemas distribuídos confiáveis para suporte de aplicações e sistemas críticos;
Análise e avaliação experimental de mecanismos e serviços de confiabilidade de um sistema distribuído;
Programação e desenvolvimento prático de sistemas distribuídos com propriedades de confiabilidade, envolvendo plataformas blockchain, plataformas confiáveis em núvens de computação e armazenamento de dados, mecanismos de confiabilidade para sistemas de cpmputação móvel e plataformas IoT.
Não existe um sistema de precedências formal ou obrigatório no cursp de Mestrado Integrado em Engenharia Informática, para além do que resulta da estrutura curricular e adequabilidade de matérias relacionadas no plano curricular, como requisitos para os objetivos da cadeira de Confiabilidade de Sisemas Distribuídos, enquanto cadeira de especialziação no curso. Apontam-se os seguintes requisitos como aspectos a serem considerados pelos alunos que pretendam frequentar a unidade curricular de CSD:
Conhecimentos prévios associados à frequência das disciplinas de Redes de Computadores, Sistemas Distribuídos e Segurança de Redes e Sistemas de Computadores e Fundamentos de Sistemas Operativos
Podem ser particularmente interessantes o domínio de conhecimentos em Algorimos de SIstemas Distribuídos e Programação de Algoritmos para Sistemas Distribuídos, incluindo conhecmentos de concorrência, com prática de programação de sistemas multi-thread em linguagens de programação anteriormente utilizadas (ex., Java)
Muito implortante ter conhecimentos prévios de criptografia aplicada e programação com métodos e algoritmos criptográficos (ex., Java / Java JCE), programação com canais TLS (Java JSSE), desenvolvimento de serviços e endpoints REST/HTTPS)
Conhecimentos de Redes de Computadores e domínio de protocolos da pilha TCP/IP (ex., HTTP, DNS, TCP, UDP, IP, IEEE802.1/802.11)
Competências práticas anteriores em programação (ex., linguagens Java, Go or C#), e domínio de ambientes de desenvolvimento para programação nessas linguagems (ex., Eclipse IDE ou outro), bem como ferramentas associadas ao desenvolvimento de projetos Java, C#, Maven e interação com repsositórios de gestão de projetos, como por exemplo GitHub e respetivas ferramentas
É bastante recomendável que os alunos possuam boa autonomia e bons conhecimentos em sistemas operativos de base UNIX (ex., Distribuições Linux ou Mac OS X), prática e autonomia para trabalhar em ambienet shell / consola, bem como prática de instalação e uso de ambientes para virtualização (ex., plataformas VMWare, VirtualBox e instalação/setup de máquinas virtuais) ou prática inicial com contentorização de serviços e aplciações (ex., Docker, Docker Compose)
R. Anderson, A Guide to Building Dependable Distributed Systems, Wiley, 2020
C. Cachin, R. Guerraoui, L. Rodrigues, Introduction to Reliable and Secure Distributed Programming, 2nd Ed - Springer, 2011.
W. Stallings, Information Privacy Engineeirng and Privacy by Design, Pearson, 2020
W. Stallings, Cryptography and Network Security 8th Ed. Pearson, 2020
M. Correia, P. Sousa, Segurança no Software, FCA Ed. 2017
Obs) Nas aulas são enquadradas as leitiras especificas para estudo na bibliografia indicada, bem como artigos complementares. Materias de orientação para atividades em laboratório e para suporte de trabalhos práticos serão disponibilizados durante as aulas
As aulas e materiais estão preparados para serem leccionadas em língua inglesa.
No funcionamento da unidade curricular as aulas teóricas são enquadradas para transmissão e discussão de conceitos fundamentais e leituras sugeridas, abrangendo os tópicos do programa. As aulas práticas são desenvolvidas em ambiente laboratorial para realização de exercícios "hands-on" e trabalhos práticos com respetiva análise e avaliação experimental, incluindo o desenvolvimento ou demonstrações de trabalhos de avaliação obrigatória.
Nas aulas práticas decorrem também apresentações tutoriais, com enquadramento teórico-prático ou de demonstração de técnicas, ferramentas e operação de algoritmos, podendo estes serem motivados por exercícios de verificação e correção. Na fase de desenvolvimento de trabalhos práticos de avaliação a realizar pelos alunos as aulas práticas enquadram ainda o esclarecimento de dúvidas ou suporte ao desenvolvimento desses trabalhos.
Testes de frequência: 2 testes de frequência (T1, T2)
Os testes avaliam os conhecimentos teóricos cobrindo os tópicos do programa (de acordo com as aulas teóricas
Dados os constrangimentos (Covid 19) os testes são feitos à distância com plataforma própria, contendo parte de questões com resposta rápida mas cronometrada e parte de questões abertas de desenvolvimento. Os testes são individuais e as questões são dispersas por um leque alargado de questões que evitam sobreposição em diferentes enunciados personalizados
- Avaliação prática e experimental
A avaliação é composta por avaliação de trabalhos desenvolvidos em grupo (3 alunos no máximo), com base na desmonstração remota a partir da plataforma GitHub e ambientes de desenvolvimento que podem incluir o uso de ferramentas (Plataforma Jupyter/Notes, servidores dedicados em ambiente Cloud e ambientes de teste disponibilizados para uso e demonstração por parte dos alunos através de videoconferência)
Avaliação contínua: 5 trabalhos (WA1-WA5) desenvolvidos evolutivamente nos primeiros 6 laboratórios (6 semanas)
Avaliação final: projeto final
Condições de Aprovação e Critérios de Avaliação
As condições de obtenção de frequência bem como as condições de aprovação e critérios de avaliação estão detalhadamenet definidos na secção "Métodos de Avaliação".
Dois testes de frequência presenciais (T1 T2)
Avaliação individual de conhecimentos teóricos
Cada teste cobrirá partes do programa com base nas aulas, materiais de aulas e bibliografia indicada.
Cada teste tem duas partes: uma parte sem consulta e uma parte com consulta.
Parte sem consulta: não pode ser usado qualquer elemento de consulta
Parte com conculta: os estudantes podem utilizar informação pessoal impressa (não sendo permitido utilizar computadores ou quaisquer dispositivos computorizados ou de comunicação)
Dois trabalhos práticos (TP1, TP2)
Trabalhos desenvolvidos como mini-projetos, em grupos de 2 alunos
A avaliação dos trabalhos envolve a sua realização, entrega nos prazos estabelecidos e de acordo com regras de penalizaçao estabelecidas, tendo dois componentes de avaliação:
Componente de avaliação em grupo (que pode envolver apersentação/demonstração e discussão): 75% da nota do trabalho
Componente de avaliação individualizada por teste de demonstração do domínio da prática de realização do trabalho: 25% da nota do trabalho.
Regras de obtenção de frequência (F)
Calculada da seguinte forma: F = 40% (TP1) + 60% (TP2)
Condição de frequência individual: F maior ou igual a 9,5/20
Condições de aprovação com frequência (AF)
Cumprimento da condição de obtenção de frequência (F)
Condições para aprovação com avaliação de frequência (AF):
AF = 20% (T1) + 30% (T2) + 50% F
T1 e T2 maiores ou iguais a 7,5/20 e AF maior ou igual a 9,5/20
Condições de aprovação com exame de recurso (AER)
Realização de exame de recurso presencial (ER)
Condições para aprovação com exame de recurso (AER):
AER = 50% (ER) + 50% (F)
Condição de aprovação: ER maior ou igual a 7,5/20 e AER maior ou igual a 9,5/20
A obtenção de frequência em 2021/2022 é válida aplicando-se as regras de avaliação desse ano letivo
Todas as notas de compnentes de avaliação são avaliadas na escala de 0-20 valores, com arredondamento com uma casa decimal
Todos os testes e exames são presenciais
Discussões e demonstrações de trabalhos serão escalonadas como atividades presenciais.
Modelos, técnicas, mecanismos e serviços para Sistemas Distribuidos Confiáveis
Canais para comunicação segura e confiável
Prevenção, detecção, recuperação e tolerância a intrusões
Tolerância a falhas bizantinas e tolerância a intrusões
Plataformas Blockchain: planos de serviços, mecanismos e estudo de casos
Computação confiável e computação confidencial
Programa mais detalhado:
Sistemas distribuídos confiáveis: conceitos, modelos, propriedades, tipologias e técnicas de concepção e implementação.