Como chegar
|
Contactos

Sistemas Distribuídos 2017/2018

  • 6 ECTS
  • Lecionada em Português
  • Avaliação Contínua

Objetivos

Permitir ao estudante capacidades para:
• Conhecer e compreender os princípios de conceção de aplicações distribuídas, bem como alguns algoritmos distribuídos fundamentais;
• Analisar as arquiteturas e as tecnologias que permitam conceber e implementar aplicações distribuídas relativamente simples e que possam garantir requisitos tais como a reconfigurabilidade, a escalabilidade, a replicação e consistência de troca de informação,a tolerância a falhas e a segurança;
• Avaliar a adequação de soluções distribuídas para diversos problemas, nomeadamente através de Serviços Web, com base em arquiteturas standard orientadas aos serviços.

Pré-Requisitos Recomendados

Como pré-requisitos que possibilitem o sucesso no aproveitamento da UC, espera-se que os estudantes tenham:
• Conhecimentos e experiência de programação em Java e XML;
• Conhecimentos básicos arquiteturas de computadores e sistemas operativos e comunicação de dados e redes de computadores.

Método de Ensino

Nas aulas teórico-práticas recorrer-se-á ao método expositivo, a relatórios e exposição orais dos estudantes para apresentar os diferentes conceitos teórico-práticos. Apelar-se-á à participação ativa de todos os estudantes.
Elementos de avaliação:
Período de Avaliação Normal
• Estudantes ordinários: Dois testes intermédios (T1, T2)e dois trabalho em grupo (TG1, TG2).

Nota Final = ((T1 + T2)/2)* 50% + TG1 * 20% + TG2 * 30%

• Estudantes com outro estatuto: Dois testes intermédios (T1, T2); Trabalho Individual (TI) e dois trabalhos em grupo.

• Nota Final = ((T1 + T2)/2)* 50% + TG1 * 20% + TG2 * 20% + TI * 10%
A média dos dois testes intermédios tem de ser pelo manos 10 valores e nenhum deles pode ter uma nota inferior a 7 valores.

Período de Avaliação de Recurso e Especial
• Nota Final = Exame * 50% + Trabalho * 50%

Conteúdos Programáticos

1. Introdução e Arquiteturas SDs.
2. Processos e Comunicação distribuída: Threads, Modelos e interfaces de comunicação; Cliente/Server, RPC e Comunicação Orientada às Mensagens (CoM);
3. Nomes: DNS, identificação e localização.
4. Sockets em Java.
5. Réplica e Consistência: Modelos de Consistência, Gestão de Réplica e Recuperação.
6. Tolerância a falhas: fiabilidade, disponibilidade. Políticas para tolerância a Faltas. Recuperação e processamento.
7. Serviços Web e Arquitetura SOA – normas e protocolos: XML, UDDI e WSDL;
o Tipos (Estilos) de Serviços Web: SOAP e REST;
o Implementação de Serviços Web básicos;
o Segurança Web

Bibliografia e Webgrafia Recomendada

• Couloris, G., Dollimore, J., Kindberg, T., (2012) Distributed Systems: Concepts and Design, 5th Ed, Addison-Wesley
• Tanenbaum, A., S., Steen, M., (2006). Distributed Systems: Principles and Paradigms, 2ª Ed, Prentice Hall, ISBN: 0132392275.
• Cardoso, Jorge (2008). Programação de Sistemas Distribuídos em Java, FCA Editores, ISBN 9789727226016.
Disponibilizada no decorrer das aulas.

Bibliografia Complementar

Marques, J.A., Guedes. P., (1999). Tecnologia de Sistemas Distribuídos, 2ª edição, FCA Editores, ISBN: 978-972-722-128-8

Planificação Semanal

Semana Conteúdos
1
• Introdução
• Apresentação e Funcionamento da UC; Programa; Regras de funcionamento das aulas teóricas e teórico-práticas; Avaliação.
• Sistemas Distribuídos – o que são e o que justifica a sua relevância:
o Definições e Condicionantes no desenvolvimento dos SDs;
o Características e propriedades – Transparências, Escalabilidade, Flexibilidade e Disponibilidade.
• Processos e Comunicação Distribuída
• Processos: Características e propriedades – Threads, Virtualização, Client/Server;
• Modelos e Arquiteturas de referência (OSI, TCP/IP, …).
2
• Processos e Comunicação Distribuída (cont)
• Interfaces de Comunicação – Nível de Transporte e API´s correspondentes:
o Semântica das funções de envio e recepção;
o Modelo Client/Server;
o Nomes: DNS, identificação e localização
o Sockets em C e em Java.
3
• Processos e Comunicação Distribuída (cont)
• Interfaces de Comunicação – Nível de Transporte e API´s correspondentes:
o Trabalho laboratorial – desenvolvimento de Sockets em Java

4
• Processos e Comunicação Distribuída (cont)
• Interfaces de Comunicação – Nível de Transporte e API´s correspondentes:
o Trabalho laboratorial – desenvolvimento de Sockets em Java

5
• Processos e Comunicação Distribuída (cont)
• Interfaces de Comunicação – Nível de Transporte e API´s correspondentes:
o Trabalho laboratorial – desenvolvimento de Sockets em Java

6
• Processos e Comunicação Distribuída (cont)
• Interfaces de Comunicação – Nível de Transporte e API´s correspondentes:
o Trabalho laboratorial – desenvolvimento de Sockets em Java

7
• Nomes
• Nomes: Serviço e Espaço de Nomes;
• Propriedades dos nomes. Arquitetura do Sistema de Gestão de Nomes (DNS);
• Normalização na Gestão de Nomes (Serviço de diretório - X.500).

8
• Teste escrito
• Tolerância a Falhas e Segurança
• Tolerância a Falhas e Resiliência de Processos – Modelos de Falhas, fiabilidade, disponibilidade. Políticas para tolerância a Falhas. Recuperação e processamento;
• Políticas e mecanismos de Segurança em sistemas distribuídos. Base de computação de confiança. Canais de Comunicação seguros.

9
• Tolerância a Falhas e Segurança (cont)
• Introdução à criptografia. Chave simétrica e assimétrica. Distribuição de chaves. Autenticação. Autorização. Integridade e assinatura digital;
• Gestão de Segurança.

10

• Consistência e Réplica
• Modelos de Consistência – Data-Centric e Client Centric;
• Protocolos de Consistência.

11

• Consistência e Réplica (cont)
• Réplica – Arquitetura e protocolos. Arquitetura dos Sistemas Transacionais em ambiente distribuído;
• Gestão de Réplica e Recuperação

12

• Serviços Web
• Arquiteturas e protocolos (SOA e SOAP);
• Serviços Web baseados em SOAP e REST;
• Segurança nos Serviços Web – DNS Sec

13

• Serviços Web (cont)
• Trabalho laboratorial – desenvolvimento básico de Serviços Web

14

• Teste escrito
• Trabalho laboratorial – desenvolvimento básico de Serviços Web

15

• Apresentação dos trabalhos

Coerência do programa para com os objetivos

Para conhecer e compreender os princípios de conceção de aplicações distribuídas, bem como alguns algoritmos distribuídos fundamentais são lecionadas as temáticas relacionadas com as arquiteturas de Sistemas Distribuídos, bem como os processos, modelos e interfaces de comunicação. Para analisar as arquiteturas e as tecnologias que permitem conceber e implementar aplicações distribuídas relativamente simples e que possam garantir requisitos tais como a reconfigurabilidade, a escalabilidade, a replicação e consistência de troca de informação, a tolerância a falhas e a segurança são lecionadas as temáticas relacionadas com o DNS, identificação e localização, bem como programação de middleware com sockets em Java. Para avaliar a adequação de soluções distribuídas para diversos problemas, nomeadamente em ambiente Web são lecionadas as normas e protocolos XML, SOAP, UDDI e WSDL, e REST através da implementação de Serviços Web com realização de alguns testes básicos.

Coerência dos métodos de ensino para com os objetivos

Para conhecer e compreender os princípios de conceção de aplicações distribuídas, bem como alguns algoritmos distribuídos fundamentais recorrer-se-á aulas teórico-práticas, onde são apresentados os conceitos base acompanhados da resolução de exercícios e estudo de aplicações práticas. Para conceber e implementar aplicações distribuídas relativamente simples e que possam garantir requisitos tais como a reconfigurabilidade, a escalabilidade, a replicação e consistência de troca de informação, a tolerância a falhas e a segurança serão desenvolvidos, nas aulas teórico-práticas, exercícios práticos e posterior discussão e partilha de ideias entre estudantes.

competência genérica relevantedesenvolvida?avaliada?
Aptidão para aplicação na prática dos conhecimentos teóricosSimSim
Capacidade crítica e de avaliaçãoSim 
Capacidade de auto-critica e de auto-avaliaçãoSim 
Competência em informática e uso de novas tecnologiasSimSim
Comportamento ético e responsávelSimSim
Preocupação com a eficáciaSimSim
Preocupação com a qualidadeSimSim
Resolução de problemasSimSim
Saber organizar, planear e gerirSimSim
Trabalho em equipaSimSim
Este website usa cookies para funcionar melhor e medir a performance (Diretiva da União Europeia 2009/136/EC)
Por favor dispense alguns minutos para responder a umas perguntas rápidas sobre o nosso website.