Conhecimentos de Base Recomendados
Recomenda-se a conclusão anterior das seguintes unidades curriculares:
– Programação III
– Programação IV
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 do projecto fina de 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 inovação remota de objectos e de serviços web.
Programa
1. Introdução aso Sistemas Distribuídos (Caracterização de Sistemas Distribuídos; Objectivos: conectividade, transparência, escalabilidade; Conceitos de hardware distribuídos; Exemplos de sistemas distribuídos; Middeware; 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 sinconismo; 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. Sockts (Protocolos TCP e UDP; Programação com stockets 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)
Estágio(s)
NAO
Bibliografia
Cardoso, J. (2008). Programação de Sistemas Distribuídos em Java. FCA.
Burke, B. (2013). RESTful Java with JAX-RS 2.0: Designing and Developing Distributed Web Services (Second ed.). O’Reilly Media.
Coulouris, G., Dollimore, J., Kindberg, T., & Blair, G. (2011). Distributed Systems: Concepts and Design (5th ed.). Pearson.
Reilly, D., & Reilly, M. (2002). Java Network Programming and Distributed Computing (1st ed.). Addison-Wesley Professional.