Conhecimentos de Base Recomendados
NA
Métodos de Ensino
Nesta unidade curricular são utilizadas as seguintes metodologias de ensino:
1 – Método expositivo: método explicativo onde factos, conceitos, princípios e generalizações são definidos e apresentados pelo professor e discutidos com a turma, seguido de exemplos demonstrativos;
2 – Método experimental: método activo onde o aluno desenvolve o conhecimento através de diversas fichas práticas individuais e o desenvolvimento de um projecto final em grupo.
Resultados de Aprendizagem
Espera-se que no final da unidade curricular o aluno esteja habilitado a:
1. Caracterizar sistemas distribuídos e descrever os seus principais conceitos, arquitecturas, problemas e desafios.
2. Implementar sistemas distribuídos pela utilização de primitivas básicas de comunicação, de mecanismos de invocação remota de objectos e de serviços web.
Programa
1. Introdução aos Sistemas Distribuídos (Caracterização de sistemas distribuídos; Objectivos: conectividade, transparência, escalabilidade; Conceitos de hardware distribuído; Exemplos de sistemas distribuídos; Middleware; Arquitecturas de sistemas distribuídos).
2. Comunicação (Camadas de protocolos; Remote Procedure Call (RPC); Acesso remoto a objectos; Comunicação orientada a mensagens; Persistência e sincronismo; Comunicação orientada a streams).
3. Problemas em Sistemas Distribuídos (Sincronização de relógios; Consistência e replicação; Tolerância a falhas).
4. Sockets (Protocolos TCP e UDP; Programação com sockets em Java; Multicast e Broadcast).
5. Java RMI (Arquitectura do Java RMI; Serviços; API; Segurança).
6. REST Web Services (O protocolo HTTP; Arquitectura REST; Implementação com JAX-RS).
Docente(s) responsável(eis)
Métodos de Avaliação
- - uma prova escrita (50%) - 50.0%
- - um projecto final (50%) - 50.0%
- - trabalhos práticos individuais (30%) - 30.0%
- - um projecto final em grupo (30%); - 30.0%
- - uma prova escrita (40%) - 40.0%
Estágio(s)
NAO
Bibliografia
Bill Burke, “RESTFUL Java with JAX-RS 2.0”, 2nd ed., O´Reilly, 2013, ISBN: 978-1-449-36134-1.
David Reilly e Michael Reilly, “Java Network Programming and Distributed Computing”, Addison-Wesley, 2002, ISBN: 978-020-171-037-3
Jean Dollimore, Tim Kindberg, George Coulouris, “Distributed Systems: Concepts and Design”, 4th Edition, Addison Wesley, 2005, ISBN: 978-032-126-354-4.
Jorge Cardoso,” Programação de Sistemas Distribuídos em Java”, FCA, 2008, ISBN: 978-972-722-601-6.