Você está na página 1de 4

A preencher pelos Serviços Académicos

Código do curso:___________________
Código da UC:___________________

ESCOLA SUPERIOR DE TECNOLOGIA DE


CASTELO BRANCO

PROGRAMA DA UNIDADE CURRICULAR

Curso
Licenciatura em Engenharia Informática

Unidade Curricular
Aplicações Distribuídas

Ano Semestre Carga horária total Duração ECTS


3.º 5.º TP:30; PL:45 Semestral 5

Professor responsável
Alexandre José Pereira Duro da Fonte (Professor Adjunto)

Corpo docente
Alexandre José Pereira Duro da Fonte (Professor Adjunto)
Orlando Pereira (Assistente Convidado)

Objectivos
Esta unidade curricular tem como objectivo estratégico dotar os alunos dos
fundamentos e ferramentas para modelar e implementar aplicações distribuídas. Os
conceitos abordados permitem o acompanhamento da evolução tecnológica e o
desenvolvimento de capacidades de abstracção na concepção de aplicações
distribuídas suportadas na Internet.

Competências
As principais capacidades e competências a adquirir são:
1. Saber
a. Perceber toda a envolvente de uma aplicação distribuída
b. Arquitecturas representativas para desenvolver aplicações
distribuídas
2. Fazer
a. Modelar e implementar aplicações distribuídas utilizando as
tecnologias existentes
b. Desenvolver componentes distribuídos de forma modular
c. Integrar componentes distribuídos para formar uma aplicação
distribuída
3. Soft Skills
a. Capacidade de trabalhar em grupo
b. Comunicar questões técnicas das aplicações distribuídas a
especialistas e não especialistas

www. ipcb.pt
Mod.IPCB.SA.34.01
Conteúdos Programáticos

1 Introdução e Conceitos Fundamentais


1.1 Sistemas Distribuídos e Aplicações Distribuídas
1.2 Características Chave
1.3 Desafios

2 Modelos de Sistemas/Aplicações Distribuídas


2.1 Modelos Arquitecturais
2.1.1 Conceito de Middleware
2.1.2 Modelo Cliente-Servidor (C/S)
2.1.3 Modelo Peer-to-Peer (P2P)
2.1.4 Combinação C/S e P2P
2.2 Modelos Fundamentais
2.2.1 Modelos de Interacção, Falhas e Segurança

3 Comunicação entre Processos


3.1 Passagem mensagens: Pipes, FIFOs, Message queueing, e Sockets.
3.2 Memória partilhada
3.3 Memória partilhada vs. passagem de mensagens
3.4 Representação Externa and marshalling

4 Sockets em Java
4.1 Programação concorrente usando Java Threads
4.2 Programação distribuída usando Java Sockets
4.3 Desenvolvimento de servidores multithreaded
4.3.1 Threads em Java
4.3.2 Servidores multithreaded

5 Invocação Remota e Objectos Distribuídos


5.1 Modelos de Programação Distribuída
5.2 Invocação remota de procedimentos (RPC)
5.3 Comunicação entre Objectos Distribuídos
5.3.1 Modelo de Objecto Distribuído
5.3.2 Invocação remota de métodos (RMI)
5.3.3 Exemplos de sistemas de objectos distribuídos

6 Programação Distribuída em Java RMI


6.1 Modelo de objectos distribuídos do Java
6.2 Interfaces; classes; objectos remotos

www. ipcb.pt
Mod.IPCB.SA.34.01
6.3 Passagem de parâmetros, serialização, excepções e localização de
objectos
6.4 Segurança
6.5 Implementação de aplicações Java RMI
6.6 Exemplo de uma Aplicação Java RMI

7 Programação Distribuída em Microsoft .NET Remoting


7.1 Conceitos fundamentais
7.2 Arquitectura .Net Remoting
7.3 Canais de comunicação
7.4 Tipos de activação
7.5 Exemplo de uma Aplicação com .Net Remoting

8 A tecnologia de Web Services


8.1 O uso de Web Services
8.2 Orientação ao serviço
8.3 Arquitectura dos Web Services
8.4 Linguagem WSDL
8.5 Protocolo SOAP
8.6 Execução de um Web Service

Metodologias de Ensino
• Exposição dos conceitos fundamentais relacionados aplicações distribuídas;
• Estimulação da auto-aprendizagem através da realização de trabalhos com
actividades de pesquisa;
• Contacto prático com as tecnologias fundamentais que suportam o
desenvolvimento de aplicações distribuídas;
• Elaboração de trabalhos práticos em ambiente de laboratório;
• Estimulação das competências de comunicação, através da realização de
apresentações orais de trabalhos.

Metodologias de Avaliação
A Avaliação desdobra-se nas seguintes componentes:

Avaliação de competências:
• 20% Módulos de aprendizagem, baseados na realização de um conjunto de
trabalhos/desafios práticos individuais com relatório breve;
• 5% Avaliação de desempenho contínuo (desempenho e atitude demonstrados;
assiduidade);
• 25% Trabalho de desenvolvimento aplicacional (grupos até três alunos):
o Entrega Intermédia (5%);
o Entrega Final (20%).
• Mínimo de 9,5 valores para aprovação (somatório das componentes anteriores).

www. ipcb.pt
Mod.IPCB.SA.34.01
• Estas componentes de avaliação podem ser substituídas nas Épocas de Exame
pela entrega dos Módulos de aprendizagem (20%) e do Trabalho de
desenvolvimento aplicacional (30%), a entregar na data do exame.

Avaliação de conhecimentos:
• Prova escrita global, sem consulta (50% da nota final);
• Mínimo de 9,5 valores para aprovação.

Bibliografia
• Livros Principais
o A.S.Tanenbaum – “Distributed Operating System”, Prentice Hall, 1995
o Jorge Cardoso, “Programação de Sistemas Distribuídos em Java”,
ISBN: 978-972-722-601-6, FCA, 2008
o .Net Remoting, MatthewMacDonald, “Microsoft® .NET Distributed
Applications: Integrating XML Web Services and .NET Remoting”,
Microsoft Press, 2003
o G.Coulouris, J.Dollimore, T.Kindberg – “Distributed Systems Concepts &
Design”, Addison-Wesley, 4th edition, 2005
o Arno Puder, Kay Römer, Frank Pilhofer; "Distributed Systems Architecture -
A Middleware Approach"; Morgan Kauffman; 2006

• Geral
o J.A.Marques, P.Guedes – “Tecnologia de Sistemas Distribuídos”, 2ª edição
revista, FCA – Editora de Informática, 1999
o S.Mullender – “Distributed Systems”, Addison-Wesley, 2nd edition, 1993
o M.Singhal, N.G.Shivaratri – “Advanced Concepts in Operative Systems –
Distributed, Database and Multiprocessor Operating Systems”, McGraw-Hill,
1994
o William Green , John D. Olson, "PowerBuilder: 9 Internet and Distributed
Application Development", SAMS
o David Conger, "Remoting with C# and .NET: Remote Objects for Distributed
Applications", Gearhead Press--In the Trenches
o M.Singhal, N.G.Shivaratri; “Advanced Concepts in Operative Systems –
Distributed, Database and Multiprocessor Operating Systems”; McGraw-Hill;
1994
• Java
o C.S. Horstmann, G. Cornell – “Core Java”, volumes 1 & 2, Sun
Microsystems Press, 7th edition, 2005
o B. Eckel – “Thinking in Java”, 3rd edition, 2003, Prentice Hall, disponível p/
download em www.bruceeckel.com

• Network programming (Unix)


o Stevens – “UNIX Network Programming – Networking APIs”, 1999, Prentice
Hall
o Stevens – “UNIX Network Programming – Interprocess Communications”,
1999, Prentice Hall

Fixado pelo Conselho Técnico-científico em ____/_____/____

Assinatura ___________________________________________

www. ipcb.pt
Mod.IPCB.SA.34.01

Você também pode gostar