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: |
[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).
[6] Orfali, R.,
Harkey, D. Client/Server Programming with Java and CORBA, 2nd Edition, Wiley
Computer Publishing, 1998.
[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.