Ficha Programática da unidade curricular

Unidade curricular:

SISTEMAS DISTRIBUÍDOS

 

 

 

 

Docente:

RUI SILVA MOREIRA

Grau académico:

DOUTOR

Categoria Funcional:

PROFESSOR AUXILIAR

 

 

 

 

 

 

Ciclo de Estudos:

2º CICLO

Curso:

ENGENHARIA INFORMÁTICA

Semestre curricular:

2º SEMESTRE

Ano lectivo:

2009-2010

N.º total de ECTS:

8

 

 

N.º ECTS de Contacto:

2,5

 

 

Tipologia das aulas:

As aulas terão natureza Teórico-Prática (TP) e Prática Não-Laboratorial (PNL)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Avaliação:

 

1 - Avaliação contínua

 

O método de avaliação da disciplina baseia-se no modelo da avaliação contínua e compreende duas componentes: uma componente Teórico-Prática e uma componente Prática Não-Laboratorial resultante de trabalhos realizados com recurso ao computador ou em laboratório de informática.

 

Componente Teórico-Prática

A componente teórico-prática tem um peso de 50% na classificação final da disciplina. A avaliação da componente teórico-prática realiza-se de forma contínua durante as aulas teórico-práticas, e inclui os seguintes elementos de avaliação:

 

·          Dois testes de avaliação individual: incidem sobre os conhecimentos leccionados até ao momento em que são realizados. Cada teste possui um peso de 45% na classificação final da componente teórico-prática. Um teste realiza-se a meio do semestre e o outro no fim do semestre (em datas a combinar com os alunos). Estas avaliações incluirão uma parte de índole mais prática (com a duração de 60 minutos) na qual se pedirá aos alunos para desenvolverem determinados serviços distribuídos – vale 50% da nota do teste. Esta componente será complementada por uma parte de índole mais teórico-prática (com a duração de 30 minutos) englobando um conjunto de perguntas de escolha múltipla (havendo desconto de 25% por cada resposta errada), de verdadeiros/falso (aplicando-se um desconto de 50% por cada resposta errada) e também perguntas de desenvolvimento sobre os problemas e soluções técnicas utilizadas em sistemas distribuídos – vale 50% da nota do teste.

 

·          Desempenho do aluno durante as aulas TP: esta componente procurará avaliar a assiduidade (medida por folhas de presença), a participação, o empenho nas aulas teórico-práticas e também a capacidade para a realização de apresentações sobre temas propostos. Estas apresentações serão atribuídas durante o semestre e serão contabilizadas equitativamente. Este elemento possui um peso de 10% na classificação final da componente teórico-prática.

 

Exige-se uma nota mínima de oito (8) valores nesta componente para que se possa ponderar com a classificação da componente prática não-laboratorial para efeitos de cálculo da classificação final na disciplina.

 

A falta aos momentos de avaliação será convertida numa nota 0 (zero) para efeitos de cálculo da classificação. Caso o aluno não fique aprovado, será remetido para exame de recurso ou especial (seja trabalhador-estudante ou finalista), desde que o aluno tenha obtido a aprovação na componente prática da disciplina e cumprido o regime de assistência às aulas. Nas aulas teórico-práticas a assiduidade obrigatória é de 50%, de acordo com o regulamento pedagógico da UFP.

 

A classificação obtida na componente teórico-prática será, pois, obtida através da seguinte expressão:

 

Nota da componente Teórico-Prática = 45% Teste 1 + 45% Teste 2 + 10% Desempenho Aluno Aulas TP

 

Componente Prática Não-Laboratorial

A componente prática não-laboratorial tem um peso de 50% na classificação final da disciplina. A avaliação da componente prática não-laboratorial realiza-se igualmente de modo contínuo durante as aulas práticas não-laboratoriais e também pela realização de um projecto de maior envergadura. O projecto será realizado em grupo (no máximo com 2 ou 3 alunos) e implicará a especificação e desenvolvimento de serviços e/ou algoritmos distribuídos sobre um tema proposto no início do semestre.

 

A avaliação da componente prática não-laboratorial inclui os seguintes elementos de avaliação:

 

·          Relatório da análise de requisitos: os alunos deverão entregar uma relatório a meio do semestre (em data a especificar) com o resultado da análise de requisitos e respectivos diagramas UML que virão a ser implementadas para a solução do projecto de desenvolvimento de serviços distribuídos proposto (cf. item seguinte). Este relatório preliminar possui um peso de 20% da nota da componente prática não-laboratorial.

 

·          Serviços distribuídos desenvolvidos no projecto: no final do semestre (em data a especificar) os alunos deverão fazer, em sala de aula, uma apresentação e uma demonstração dos serviços distribuídos desenvolvidos durante o projecto. Os alunos terão que marcar presença em sessões de discussão/análise dos trabalhos durante as horas de atendimento para acompanhamento do projecto e/ou esclarecimento de dúvidas. Devem ainda entregar um relatório final com a análise de requisitos e diagramas UML definitivos bem como uma descrição pormenorizada da funcionalidade dos serviços e de todos os algoritmos desenvolvidos. Esta componente possui um peso de 70% da nota da componente prática não-laboratorial, divididos em 10% para a apresentação/demonstração e 60% para a aplicação e respectivo relatório.

 

·          Desempenho do aluno durante as aulas PNL: esta componente procurará avaliar a assiduidade (medida por folhas de presença), a participação e o empenho nas aulas práticas não-laboratoriais e também a capacidade para a realização de pequenos trabalhos práticos, atribuídos durante as aulas, para serem realizados/concluídos em casa até à aula seguinte. Estes trabalhos serão atribuídos durante todo o semestre e serão contabilizados equitativamente. Este elemento possui um peso de 10% na classificação final da componente teórico-prática.

 

Nas aulas práticas não-laboratoriais a assiduidade mínima obrigatória é de 70%. Não há possibilidade de recurso ou época especial para a componente prática não-laboratorial. A classificação obtida na componente prática obtém-se através da seguinte expressão:

 

Nota da componente Prática Não-Laboratorial = 20% Relatório Análise Requisitos + 10% Apresentação/Demonstração Projecto + 60% Aplicação/Relatório Projecto + 10% Desempenho Aluno Aulas PNL

 

Classificação final

A classificação final da disciplina obtém-se através da seguinte expressão:

 

Nota final = 50% Nota da Componente Teórico-Prática + 50% Nota da Componente Prática Não-Laboratorial

 

Ao aluno, só será contabilizada a classificação obtida na componente teórico-prática da disciplina se o aluno tiver obtido uma classificação igual ou superior a dez (10) valores na componente prática. Caso contrário lança-se a nota negativa (da componente prática) em pauta. De igual modo, exige-se uma nota mínima de oito (8) valores na componente teórico-prática para que se possa ponderar com a classificação da componente prática não-laboratorial. Caso contrário lança-se a nota negativa (da componente teórica) em pauta.

 

2 - Exame de Recurso/Época Especial:

 

O exame de recurso/época especial é uma prova excepcional que ocorre apenas no final do ano lectivo, no período previsto no cronograma, e que apenas abrange a componente teórico-prática da disciplina, incidindo sobre a totalidade da matéria teórico-prática incluída no programa da disciplina, com a duração máxima, incluindo tolerância, de 90 minutos. O aluno só se poderá submeter a este exame se tiver sido aprovado na componente prática desta disciplina e tenha cumprido as assiduidades mínimas estabelecidas no regulamento pedagógico. É exigida uma nota mínima que seja, pelo menos, igual ao valor inferior da classificação, que num exame, dá acesso à oral, nesta componente teórica da avaliação para que se possa ponderar com a nota da componente prática para efeitos do cálculo da nota final. Esta prova destina-se aos alunos que não obtiveram aprovação na componente teórico-prática da disciplina, ou alunos em regimes especiais. Não existe qualquer possibilidade de recurso à componente prática da disciplina.

 

A classificação final do aluno será calculada utilizando a equação indicada acima na secção classificação final. A classificação obtida no exame de recurso ou especial corresponderá à classificação da componente teórica.

 

Este procedimento também se aplica às Épocas de Trabalhador-Estudante e Finalista.

 

No caso de alunos com o estatuto de trabalhador-estudante, com impossibilidade de presença num número significativo de aulas teórico-práticas, a avaliação do desempenho em sala de aula será substituída por uma prova oral em que o aluno deverá resolver um conjunto de problemas teórico-práticos relacionados com o programa da disciplina. Sempre que se julgar necessário, o docente poderá solicitar o desenvolvimento de trabalhos complementares (sob o modo de apresentação oral ou escrita) de modo a melhor aferir o nível de conhecimentos e de competências alcançado pelo aluno.

 

Objectivos da unidade curricular e competências a atingir:

 

Ao longo dos últimos anos temos assistido a um crescimento exponencial na utilização de micro-computadores e redes de telecomunicações em todas as áreas da sociedade. O grande poder de processamento desses micro-computadores aliado ao seu baixo custo e à generalização das redes de computadores abriu novas possibilidades na organização dos sistemas informáticos. A necessidade de partilhar e gerir dados, periféricos e o processamento em várias máquinas ligadas por rede, de forma coordenada, fiável, escalável e segura, levou ao aparecimento da disciplina de Sistemas Distribuídos.

Neste contexto, o objectivo principal desta unidade curricular é apresentar aos alunos as arquitecturas, os modelos e os protocolos de gestão de sistemas distribuídos mais utilizados. Por outro lado, pretende-se também introduzir algumas das ferramentas actualmente utilizadas para o desenvolvimento de aplicações distribuídas (cf. RMI/EJB, CORBA/CCM, COM+/DCOM/.NET) uma vez que consideramos importante que uma formação superior na área de informática inclua  este assunto no seu currículo. Assim, pretende-se que os alunos consigam definir e caracterizar os sistemas distribuídos, nomeadamente os seus objectivos, os conceitos de hardware, software e middleware envolvidos e o modelo base de arquitectura  mais utilizado (cf. Cliente-Servidor). Pretende-se ainda que os alunos, consigam caracterizar as técnicas e os modelos de comunicação mais utilizados em sistemas distribuídos, e.g., invocação remota de procedimentos, invocação de métodos em objectos remotos, comunicação assíncrona (baseada em mensagens) e comunicação síncrona (multimédia).

Os alunos deverão ainda ser capazes de perceber os modelos mais importantes na identificação, localização e gestão de recursos em sistemas distribuídos, e conseguir descrever os algoritmos de sincronização e controlo de concorrência mais utilizados em sistemas distribuídos. Outro objectivo importante será a capacidade para compreender e aplicar os modelos e protocolos mais utilizados na replicação de recursos e na gestão da consistência como forma de aumentar a tolerância a falhas, e conseguir descrever e utilizar os algoritmos mais utilizados no controlo de transacções distribuídas. Devem ainda identificar os problemas e usar as soluções correntemente utilizadas na protecção de recursos.

Por outro lado, os alunos deverão conseguir identificar e caracterizar as aplicações mais relevantes de sistemas distribuídos que foram sendo utilizados nos últimos anos (e.g., sistemas de ficheiros distribuídos, sistemas de documentos distribuídos, sistemas de coordenação e multimédia distribuídos) e também conseguirem identificar, caracterizar e comparar os modelos de objectos e componentes (cf. CORBA/CCM, RMI/EJB, COM+/DCOM/.NET) existentes no mercado de middleware.

Finalmente, devem os alunos ser capazes de perceber e aplicar os conceitos e mecanismos de implementação de sistemas distribuídos recorrendo à tecnologia de rede disponível em Java, i.e., invocação de métodos em objectos remotos Remote Method Invocation (RMI) e Java networking.


 

Conteúdos por unidade lectiva e sua forma de execução pedagógica:

 

 

Conteúdos

Horas Contacto

Estudo Individual

ECTS

Bibliografia

(T+TP+P+L+TC+OT)

1. Introdução aos Sistemas Distribuídos

 

 

 

 

1.1. Definição

4

8

0,5

[1], [2]

1.2. Objectivos e características dos sistemas distribuídos

1.3. Middleware

1.4. Modelo cliente - servidor

2. Comunicação em Sistemas Distribuídos

 

 

 

 

2.1. Protocolos por camadas

4

8

0,5

[1], [2]

2.2. Tipos de comunicação entre processos

2.3. Comunicação por procedimentos remotos (RPC)

2.4. Comunicação por objectos remotos (RMI/CORBA/DCOM)

2.5. Comunicação assíncrona (MOM)

2.6. Comunicação síncrona (fluxos de dados)

3. Localização e Sincronização de Recursos

 

 

 

 

3.1. Identificação de entidades

12

26

1,5

[1], [2]

3.2. Localização de recursos e entidades móveis

3.3. Cooperação e sincronização temporal

3.4. Coordenação e gestão de recursos/estados

3.5. Gestão da concorrência com regiões críticas

3.6. Gestão da concorrência com transacções

4. Replicação de Recursos e Tolerância a Falhas

 

 

 

 

4.1. Modelos de consistência

12

26

1,5

[1], [2]

4.2. Protocolos de replicação/actualização de recursos

4.3. Protocolos de gestão de consistência

4.4. Gestão de grupos e mascaramento de falhas

4.5. Protocolos de coordenação de transacções (2PC/3PC)

4.6. Protecção e segurança

5. Sistemas de componentes distribuídos - Middleware

 

 

 

 

5.1. Modelos de componentes distribuídos

8

20

1

[1], [2], [3], [5]

5.1.1. CORBA & CCM

5.1.2. RMI & EJB

5.1.3. COM/DCOM & .NET

5.2. Comparação entre modelos de componentes

5.3. Aplicações de sistemas distribuídos (ficheiros, coordenação)

6. Ferramentas e Serviços Remotos

 

 

 

 

6.1. Estudo do Java RMI

24

56

3

[1], [2], [3], [4], [5]

6.1.1. Introdução e instalação das ferramentas de desenvolvimento

6.1.2. Arquitectura das camadas RMI

6.1.3. Descrição das entidades/recursos RMI

6.1.4. Localização e referência de objectos remotos

6.1.5. Aspectos de segurança

6.1.6. Passagem de parâmetros e serialização

6.1.7. Distribuição e instalação de classes/objectos RMI

6.1.8. Servidores e clientes multi-thread

6.1.9. Ferramentas Java para networking (sockets, multicast)

6.2. Comparação entre o Java RMI vs .NET Remoting

6.2.1. Arquitectura e implementação

6.2.2. Protocolos/canais de comunicação e interoperabilidade

6.2.3. Passagem de parâmetros por valor vs referência

6.2.4. Registos/Serviço de nomes

6.2.5. Ciclo de desenvolvimento e activação

6.3. Implementação de sistemas/serviços distribuídos

6.4. Introdução aos serviços Web

TOTAL

64

144

      8

 

208

 

Nota: Nº de ECTS = horas/26

 

Conteúdos-Horas-Contacto-Estudo Individual–ECTS-Bibliografia

1. Introdução aos Sistemas Distribuídos-4-8-0,5-[1], [2]

2. Comunicação em Sistemas Distribuídos-4-8-0,5-[1], [2]

3. Localização e Sincronização de Recursos-12-26-1,5-[1], [2]

4. Replicação de Recursos e Tolerância a Falhas-12-26-1,5-[1], [2]

5. Sistemas de componentes distribuídos – Middleware-8-20-1-[1], [2], [3], [5]

6. Ferramentas e Serviços Remotos-24-56-3-[1], [2], [3], [4], [5]

 

Bibliografia:

Principal

[1] Tanenbaum, A., Steen, M., Distributed Systems, Principles and Paradigms, Prentice Hall 2002.

[2] Coulouris G., Dollimore J., Kindberg T., Distributed Systems Concepts and Design, 3rd Ed., Addison-Wesley 2001.

[3] Moreira, R., FORMAware: Framework Of Reflective components for Managing architecture Adaptation, PhD Thesis, Lancaster University, October 2003.

[4] Sun Developers Services, URL: http://developer.java.sun.com/developer/ (2004).

[5] Jian, Chen, Java RMI vs .Net Remoting, White Paper, 2003, http://students.cs.tamu.edu/jchen/cpsc689-608/comparison/l0c0607-framework_comp_lichen.pdf (2007).

Complementar

[6] Orfali, R., Harkey, D. Client/Server Programming with Java and CORBA, 2nd Edition, Wiley Computer Publishing, 1998.

 

Recursos informáticos de apoio - Ambiente de desenvolvimento

[1] JBuider – Borland, http://www.borland.com/downloads/download_jbuilder.html

[2] Netbeans IDE, http://www.netbeans.org/downloads

[3] Eclipse IDE, http://www.eclipse.org/downloads; Eclipse RMI Plugin, http://rmi-eclipse.sourceforge.net/

 

Requisitos a serem cumpridos para registo total dos ECTS:

 

A aprovação (nota final igual ou superior a dez valores) é condição necessária, mas não suficiente, para creditar esta unidade curricular. Para obter a creditação desta unidade curricular o aluno terá de garantir a obtenção de todos os ECTS previstos para a unidade curricular. A atribuição dos ECTS ao aluno não é dependente exclusivamente da assiduidade em sala de aula (obrigatoriamente assegurada a, pelo menos, a 70% das aulas práticas laboratoriais e 50% das aulas teórico-práticas leccionadas); ela é também decidida em função da assiduidade aos actos pedagógicos programados pelo professor e da participação em seminários, eventos culturais e científicos a definir pelo docente ou a coordenação da área científica de Informática.

 

Os ECTS previstos para o trabalho e estudo pessoal do aluno só lhe serão integralmente atribuídos em função do desempenho demonstrado, nomeadamente no que respeita à aquisição dos conhecimentos e competências visados por esta unidade curricular: conhecimento efectivo da bibliografia indicada e demonstração do conhecimento sobre os problemas e soluções utilizadas em sistemas distribuídos e da capacidade para compreender e desenvolver serviços distribuídos. O grau de desenvolvimento de conhecimentos bem como de aquisição de competências nas áreas temáticas compreendidas no programa da disciplina será avaliado de modo contínuo ao longo do semestre, quer em termos do domínio dos conceitos teóricos que sustentam a análise e compreensão de sistemas distribuídos, quer em termos do domínio das técnicas e métodos de desenvolvimento de aplicações e serviços distribuídos, quer ainda em termos de comunicação oral e escrita dos temas e conceitos abordados.

 

Resumo: Apresentação dos objectivos, programa e método de avaliação. Introdução aos sistemas distribuídos: definição, . Comunicação em sistemas distribuídos. Localização e sincronização de recursos. Replicação de recursos e tolerância a falhas. Sistemas de objectos e componentes distribuídos – Middleware e aplicações de sistemas distribuídos. Ferramentas e serviços remotos – estudo do Java RMI, comparação entre o Java RMI vs .NET Remoting, introdução aos serviços web.

 

Abstract: Presentation of the goals, syllabus and evaluation methods. Introduction to distributed systems. Communication issues in distributed systems. Locating and sinchronising resources. Resource replication and fault tolerance. Distributed objects and components systems – Middleware and application of distributed systems. Remote services and frameworks – Java RMI case study, comparison between Java RMI vs .NET Remoting, introduction to web services.