Sistemas Distribuídos

Ano
3
Ano lectivo
2021-2022
Código
01000241
Área Científica
Informática
Língua de Ensino
Português
Modo de Ensino
Presencial
Duração
Semestral
Créditos ECTS
6.0
Tipo
Obrigatória
Nível
1º Ciclo - Licenciatura

Conhecimentos de Base Recomendados

Programação Orientada a Objetos, Sistemas Operativos, Redes de Computadores

Métodos de Ensino

Nesta disciplina são lecionadas aulas teóricas com exposição detalhada, recorrendo a meios audiovisuais, dos conceitos, princípios e técnicas fundamentais dos Sistemas Distribuídos, acompanhada de exemplos concebidos para despertar o interesse dos alunos pela teoria e que demonstrem a sua aplicação prática. Leciona-se também aulas práticas em que os alunos, com a orientação do docente, resolvem exercícios que exigem a conjugação de conceitos teóricos e promovem o raciocínio crítico face a questões mais complexas. As aulas práticas são ainda dedicadas a acompanhar os trabalhos práticos.

Resultados de Aprendizagem

A disciplina de Sistemas Distribuídos proporciona aos alunos uma abordagem abrangente sobre programação concorrente, algoritmos, protocolos e fundamentos dos sistemas distribuídos modernos. Os alunos deverão adquirir competências no desenvolvimento de aplicações concorrentes e distribuídas usando várias tecnologias e deverão ser capazes de perceber e interligar conhecimentos sobre técnicas fundamentais para o desenho de aplicações concorrentes e distribuídas em ambiente empresarial e para a Internet. A disciplina pretende promover a aquisição de competências em análise e síntese, conhecimentos de informática relativos ao âmbito do estudo, competência para resolver problemas, competência em aprendizagem autónoma e competência em aplicar na prática os conhecimentos.

Estágio(s)

Não

Programa

- Concorrência
* Organização de um computador
* Hierarquia de memória
* Funções de um Sistema Operativo
* Processos e Threads
* Programação concorrente e sincronização
* Bibliotecas de suporte à concorrência

- Conceção de Aplicações Distribuídas
* Introdução aos Sistemas Distribuídos
* Desafios no desenvolvimento de aplicações distribuídas
* Modelo cliente/servidor
* Programação multi-threaded com Sockets TCP e UDP

- Middleware e Web
* Visão geral sobre Middleware
* O modelo de RPCs
* Tratamento de falhas no modelo de RPCs e semânticas dos RPCs
* Programação distribuída usando Java RMI
* O protocolo HTTP
* Aplicações distribuídas para a Internet
* Programação para a Web
* Web Services

- Serviços Distribuídos
* Segurança em Sistemas Distribuídos
* Servidores de Nomes e de Diretoria
* Sistemas de Ficheiros Distribuídos
* Sincronização de relógios
* Ordem causal e total
* Replicação de servidores e soluções de alta disponibilidade
* Sistemas Peer-to-Peer

Docente(s) responsável(eis)

Filipe João Boavida Mendonça Machado de Araújo

Métodos de Avaliação

Avaliação
Projecto: 40.0%
Exame: 60.0%

Bibliografia

Bibliografia necessária | Required bibliography:

- Distributed Systems: Concepts and Design, 5th edition, G. Coulouris, J. Dollimore, T. Kindberg, G. Blair, Pearson Education, 2011.

Bibliografia suplementar | Supplemental bibliography:

- Operating System Concepts: 8th Edition, by Abraham Silberschatz, Peter Baer Galvin, Greg Gagne. John Wiley & Sons, ISBN 9780470233993

- Distributed Systems: Principles and Paradigms, A. S. Tanenbaum, M. van Steen, Prentice Hall, 2001..