Oferta Formativa - Sinopse

Programação em Sistemas Distribuídos

Código: 425132
Ano Letivo: 2015/16
Departamento: Informática
ECTS: 6
Carga horária: T: 2:00 h; TP: 1:30 h; OT: 2:00 h;
Área Científica: Informática; 

Objetivos da Unidade Curricular

Obter uma visão de conjunto acerca das arquitecturas e modelos para a construção e programação de sistemas distribuídos, interiorizando conceitos, paradigmas e serviços fundamentais dos SDs, adquirindo capacidades para decidir da aplicabilidade das principais arquitecturas e modelos de SDS e dominando as principais técnicas de programação em SDs.

PSD é uma disciplina de fecho da aprendizagem inicial nas matérias de Organização de Sistemas Computacionais, onde o estudante adquire uma visão holística de projecto de sistemas distribuídos, que lhe permitirá resolver problemas concretos pela aplicação selectiva das noções aprendidas anteriormente.

As competências adquiridas com a disciplina consistem em: a consolidação do conhecimento dos fundamentos, paradigmas principais e serviços de sistemas distribuídos; a capacidade de decidir a aplicabilidade das arquitecturas e modelos disponíveis, a situações diversas; o domínio das diversas técnicas de programação em sistemas distribuídos.


Pré-requisitos

  • Redes de Computadores (26352)
  • Sistemas Distribuídos (26374)
  • Redes de Computadores (26704)
  • Sistemas Distribuídos (26730)
  • Redes de Computadores (28009)
  • Sistemas Distribuídos (28018)

Conteúdos

Introdução à Programação em Sistemas Distribuídos.

Complementos de Paradigmas dos SDs.

Serviços Evoluídos de SDs.

Modelos de programação em ambientes distribuídos.

Sistemas e plataformas distribuídas.

Estudo de caso.

 

Descrição detalhada dos conteúdos programáticos

Componente Teórica

Introdução à Programação em Sistemas Distribuídos: Revisão dos Fundamentos dos SDs; Propriedades não-funcionais dos SDs; Enquadramentos e estratégias para a programação em SDs.

Complementos de Paradigmas dos SDs: Tempo e relógios; Sincronismo; Ordenação; Coerência; Concorrência e Atomicidade.

Serviços Evoluídos de SDs: Sistemas de ficheiros distribuídos; Serviços de tempo; Serviços de directório; Brokers.

Modelos de programação em ambientes distribuídos: Classes de actividades distribuídas; Modelo de cliente-servidor RPC revisto; Modelo orientado para grupos; Modelo baseado em eventos; Modelo de transacções atómicas.

Sistemas e plataformas distribuídas: Plataformas baseadas em RPC e Brokers e plataformas baseadas na Web; Sistemas orientados para grupos e entre-pares; Sistemas de transacções distribuídas.

Estudo de caso.

 

Componente Teórica-Prática

Pormenores adicionais sobre certos paradigmas

 Alguns algoritmos em detalhe

 Detalhes acerca de sistemas e serviços seleccionados

 Introdução aos trabalhos de projecto

 Estudo de caso (tornar o VP’63 distribuído, ver livro de texto)

 Outros estudos de caso

 

Componente Prática

Projecto e concretização de um sistema interactivo de muito grande-escala, distribuído e resiliente.

 

O propósito deste projecto é projector e concretizar um sistema, logicamente centralizado, com acesso distribuído em muito grande escala, por clientes através da Internet. De modo a corresponder a requisitos de desempenho e confiabilidade, a concretização do serviço deverá ser fisicamente distribuída, embora os detalhes relacionados devam ser transparentes aos utilizadores, que vêem um serviço logicamente central.


Fases do Projecto:

 

O projecto será desenvolvido em três fases:

I. Projecto e concretização de toda a lógica da aplicação. Projecto e concretização dos geradores de tráfego e de falhas.

II. Demonstração da capacidade de aguentar cargas de trabalho contínuas muito elevadas, E cargas de trabalho de pico muito elevadas, através do projecto e concretização dos mecanismos necessários.

III. Demonstração da capacidade de aguentar a falha de qualquer servidor individual, através do projecto e concretização dos mecanismos necessários a melhorar o projecto anterior.

 

Bibliografia

Recomendada

P. Veríssimo and L. Rodrigues, Distributed Systems for System Architects, Kluwer Academic Publishers, 2001.
G. Coulouris, J. Dollimore and T. Kindberg, Distributed Systems - Concepts and Design, 3rd Ed., Addison-Wesley, 2002

 

Outros elementos de estudo

A. Tanenbaum, M. Steen. Distributed Systems Principles and Paradigms, Prentice Hall, 2nd ed, 2007.

G. Brose, A. Vogel, K Duddy. Java Programming with CORBA, Wiley, 3rd ed, 2001.

Ciaran McHale. CORBA Explained Simply, http://www.ciaranmchale.com/, 2007.

Reading Modules Module 3 - A. Tanenbaum, M. Steen. Distributed Systems Principles and Paradigms. pp.576-603, "NFS - Network File system"Module 4 - G. Coulouris, J. Dollimore, T. Kindberg. Distributed Systems - Concepts and Design, 5th Ed. pp.548-562, "AFS - Andrew File system"Module 5 - A. Tanenbaum, M. Steen. Distributed Systems Principles and Paradigms. pp.795-802, "CODA File system"Module 6 - G. Coulouris, J. Dollimore, T. Kindberg. Distributed Systems - Concepts and Design, 5th Ed. pp.915-964, "Google Architecture (PageRank, GFS, Chubby, BigTable, MapReduce"Module 7 - Wikipedia, http://en.wikipedia.org/wiki/Ceph. "Ceph File System"Module 8 - WIkipedia, http://en.wikipedia.org/wiki/Network_Time_Protocol. "NTP - Network Time Protocol"Module 9 - G. Coulouris, J. Dollimore, T. Kindberg. Distributed Systems - Concepts and Design, 5th Ed. pp.217-225, "Java RMI"Module 10 - A. Tanenbaum, M. Steen. Distributed Systems Principles and Paradigms. pp.494-525, "CORBA"Module 16 - Wikipedia, http://en.wikipedia.org/wiki/Apache_Hadoop. "Apache Hadoop MapReduce and File System"Module 17 - Wikipedia, http://en.wikipedia.org/wiki/Tuxedo_%28software%29 . "Tuxedo Transactional Middleware Platform"

 

Métodos de Ensino

* Aulas teóricas: exposição dos temas do curso.

* Sessões teórico-práticas: exposição de material com mais detalhes (por exemplo, protocolos ou pacote de interfaces ou internos), e permitir um conhecimento mais profundo e prático sobre esses temas.

* Sessões de laboratório incluídas nas sessões TP: têm por objectivo permitir ao aluno trabalhar nos projectos.

 

Métodos de Avaliação

40% - Projecto e Trabalhos

05% - Participação nas aulas

55% - Exame final

Eliminatório: Exame Final, Projecto e Trabalhos

* Projecto e Trabalhos práticos

   Conjunto de estudos de papel e caneta e um projecto em várias fases, distribuídos ao longo do semestre.

* Participação em classe e regularidade

   Participação activa e a contribuição para os debates estão previstos e serão consideradas.

* Exame Final

  é um exame de 2,5 horas e abrangente.

 

Língua de ensino

Português ou Inglês