Sistemas Distribuídos e Móveis
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Ciência de Computadores |
Ocorrência: 2011/2012 - 1S
Ciclos de Estudo/Cursos
Língua de trabalho
Português
Objetivos
Possibilitar aos alunos um conhecimento aprofundado sobre sistemas
distribuídos, com ênfase nos fundamentos, técnicas e prática relevante
no desenho e implementação destes sistemas. Ao
completarem esta unidade curricular, os alunos deverão ser capazes de:
(a) explicar o que é um sistema distribuído e quais as vantagens e propriedades
desejáveis de tais sistemas; (b) descrever os princípios subjacentes
ao funcionamento de sistemas distribuídos, os problemas e desafios
associados, e avaliar a eficácia e limitações das suas soluções; (c)
construir sistemas funcionais utilizando mecanismos de comunicação
como sockets, RPC, RMI e middleware existente.
Programa
Introdução aos sistemas distribuídos e móveis. Conceitos fundamentais
de sistemas distribuídos: modelos arquitecturais; comunicação entre
processos; algoritmos distribuídos; mobilidade de recursos e
computações. Processos e comunicação: descriptores e streams;
processos e threads; virtualização; clientes; servidores; migração de
código; invocação remota de procedimentos, comunicação por mensagens,
comunicação por streams, comunicação multicast. Aplicações
cliente-servidor: Java sockets TCP ou UDP/IP, streams, servidores
multithreaded, conexões cifradas. Coordenação e sincronização: tempo e
estados globais; relógios e noção de tempo; ordenação de eventos;
sincronização: modelos de exclusão mútua - centralizado,
descentralizado, distribuído, e troca de "tokens" em anel; algoritmos
de eleição de líder (consensos). Middleware: remote procedure call;
object request brokers (ORBs); invocação remota de métodos; modelos
distribuídos de objectos; CORBA; Java RMI. Sistemas de nomes: nomes,
identificadores e endereços; abordagens baseadas em "home",
"distributed hash tables" e hierárquicas; espaços de nomes, resolução
de nomes e implementação de um espaço de nomes; o DNS e
LDAP. Consistência e replicação: modelos de consistência centrados nos
dados; modelos de consistência centrados no cliente; gestão de
réplicas; protocolos de consistência. Tolerância a falhas: modelos de
falha, falhas bizantinas, redundância para obviar a falha,
resiliência de processos, comunicação cliente-servidor fiável;
comunicação de grupos fiável; "commit" distribuído;
recuperação. Mobilidade de recursos e de computações; paradigma dos
agentes móveis.
Bibliografia Obrigatória
Andrew S. Tanenbaum, Maarten van Steen; Distributed Systems: Principles and Paradigms, Prentice-Hall, 2nd ed., 2007
G. Coulouris, J. Dollimore, T. Kindberg; Distributed Systems: Concepts and Design, Addison-Wesley 4ed., 2005
Elliotte Rusty Harold; ava Network Programming, O'Reilly & Associates.
G. Brose, A. Vogel, K. Duddy; Java Programming with CORBA, Wiley, 3rd ed., 2001
William Grosso; Java RMI, O'Reilly & Associates
G. Vigna; Mobile Code Technologies, Paradigms, and Applications, PhD Thesis Politecnico di Milano, Italy, 1998 ((only some chapters))
G. Vigna; Mobile Agents: Ten Reasons For Failure, Proceedings of MDM 2004, pp. 298-299., 2004
A. Fuggetta, G.P. Picco, and G. Vigna.; Understanding Code Mobility, IEEE Transactions on Software Engineering 24(5), pp. 342-361., 1998
Métodos de ensino e atividades de aprendizagem
Aulas Teóricas: exposição e discussão dos conceitos sobre sistemas distribuídos e móveis.
Aulas Teórico-Práticas: para apoio aos alunos no desenho e implementação de sistemas e aplicações distribuídos.
Tipo de avaliação
Avaliação distribuída com exame final
Obtenção de frequência
Perdem frequência os alunos que não obtenham uma classificação superior ou igual à nota mínima exigida na componente prática.
Fórmula de cálculo da classificação final
Ficam aprovados os alunos que satisfaçam simultaneamente as duas condições seguintes:
1. Nota mínima na componente prática: 50% de (P1+P2)
2. Nota final superior ou igual a 9.5 valores em que
NotaFinal = T1 + T2 + P1 + P2
ou
NotaFinal = T + P1 + P2
Provas e trabalhos especiais
A avaliação tem em conta duas componentes:
1. PRÁTICA com 2 elementos de avaliação:
P1: Trabalho prático envolvendo programação: 4 valores
P2: Trabalho prático envolvendo programação: 4 valores
2. TEÓRICA com dois elementos de avaliação:
T1. Teste a meio do semestre: 6 valores
T2. Teste no final do semestre: 6 valores
ou
T. exame final: 12 valores
Os alunos que tendo passado à disciplina por testes quiserem ainda assim ir a exame, ficarão com a nota do exame na componente teórica, e não a melhor das duas.
Melhoria de classificação
Os alunos que pretendam melhorar a sua classificação no ano lectivo seguinte podem optar por melhorar as duas componentes, voltando a realizá-las, ou então melhorar apenas a componente teórica.