área científica
Informática / Arquitetura dos Sistemas Computacionais
escolaridade
ensino teórico (T) - 2 horas/semana
ensino prático e laboratorial (PL) - 2 horas/semana
idioma(s) de lecionação
Português
objectivos
O seu objectivo principal é introduzir os alunos aos princípios e à prática subjacente ao projecto de sistemas distribuídos, apresentando os conceitos mais importantes relativos à sua implementação. São particularmente explorados diferentes paradigmas de comunicação e de sincronização.
Pretende-se especificamente promover
- a compreensão dos problemas principais que envolvem o projecto de sistemas distribuídos;
- a capacidade de desenvolvimento de aplicações distribuídas simples;
- a familiarização com o ambiente de programação distribuída em Java.
competências
promover uma boa compreensão dos problemas principais que envolvem a concepção de sistemas distribuídos;
desenvolver a capacidade de projecto de aplicações distribuídas simples;
familiarizar os alunos com a funcionalidade do ambiente de programação distribuída em Java.
conteúdos
Introdução ao Java
Organização geral da linguagem
Sua caracterização em termos do paradigma orientado por objectos e do modelo de concorrência
Sistemas Distribuídos
Panorâmica geral
Modelos de Sistema
Modelos arquitecturais
Modelos fundamentais
- Comunicação e sincronização entre processos
Comunicação por passagem de mensagens
Invocação de métodos sobre objectos remostos
Modelos cliente-servidor
Sua caracterização
O problema da migração de código
Modelos de comunicação em grupo
Sincronização e exclusão mútua distribuídas
Algoritmos electivos
Transacções distribuídas
- Consistência e replicação
Modelos de consistência centrados nos dados
Modelos de consistência centrados nos clientes
Protocolos
- Segurança
Conceitos introdutórios
Canais seguros
Controlo de acesso
Gestão da segurança
avaliação
-
A classificação final da disciplina é determinada pela média pesada das notas obtidas em dois tipos de avaliação
avaliação teórica: 50%
avaliação prática: 50%.
-
A avaliação teórica é constituída pelo exame escrito final.
-
A avaliação prática é formada por três provas obrigatórias e uma optativa
trabalho 1: 33%
trabalho 2: 33%
trabalho 3: 33%
trabalho 4: valorização para av. prática > 16.
-
O processo de avaliação dos trabalhos práticos supõe uma análise do código submetido para verificação do cumprimento das especificações e um interrogatório aos elementos do grupo sobre questões relativas à sua implementação.
-
A aprovação na disciplina supõe a satisfação em simultâneo das condições seguintes
- avaliação prática >= 8,5
- avaliação teórica >= 8,5
- média pesada das notas das duas avaliações >= 10.
requisitos
Tem os pré-requisitos seguintes
conhecimentos gerais sobre sistemas de operação e ambientes multiprogramados;
noções sobre a aplicação do paradigma orientado por objectos à decomposição de soluções;
domínio da programação sequencial e algumas noções de programação concorrente.
metodologia
O objectivo das aulas teóricas é a apresentação de tópicos específicos da matéria da disciplina. A abordagem seguida pressupõe quase sempre uma metodologia de participação directa dos alunos na discussão, procurando desenvolver competências de raciocínio crítico e de aprendizagem de técnicas gerais de resolução de problemas.
As aulas práticas implementam uma filosofia do saber fazer e estão organizadas em duas partes. Na primeira, constituída pelas quatro primeiras aulas e destinada à familiarização dos alunos com o Java, é proposto um conjunto de problemas cuja resolução é analisada e discutida nas aulas teóricas à medida que os conceitos base da linguagem são introduzidos. Na segunda, constituída pelas aulas restantes, é proposto um problema geral e são efectuadas diferentes implementações que irão constituir os trabalhos sujeitos a avaliação. Os grupos são formados por dois alunos.
Tema geral do trabalho 1: Implementação puramente concorrente por variáveis partilhadas (executada num único sistema computacional).
Tema geral do trabalho 2: Implementação distribuída comunicando por passagem de mensagens (executada numa rede com pelo menos dois sistemas computacionais).
Tema geral do trabalho 3: Implementação distribuída comunicando por variáveis partilhadas (executada numa rede com pelo menos dois sistemas computacionais).
bibliografia base
Distributed Systems – Principles and Paradigms, Tanenbaum A.S. e Steen M.v., Pearson Education Int. / Prentice Hall
Distributed Systems – Concepts and Design, Coulouris G., Dollimore J. e Kindberg T., Addison Wesley / Pearson Education Ltd
The Java Language Specification, Gosling J., Joy B., Steele G. e Bracha G., Addison Wesley, 3rd Editon
bibliografia recomendada
Principal
Distributed Systems - Principles and Paradigms, Tanenbaum A.S. e Steen M.v., Pearson Education International / Prentice Hall, 2002
Distributed Systems - Concepts and Design, Coulouris G., Dollimore J. e Kindberg T., Addison Wesley / Pearson Education Ltd, 2001
The Java Language Specification, Gosling J., Joy B., Steele G. e Bracha G., Addison Wesley, 3rd Editon, 2005
Apoio
Java - How to Program, Deitel H.M. e Deitel P.J., Pearson Education International / Prentice Hall, 6th Editon, 2005
Documentação on-line de apoio ao ambiente de desenvolvimento de programas em Java fornecida pela Sun Microsystems Inc (Java 2 JDK Standard Edition 6)