-
Apresentação
Apresentação
A disciplina de Computação Distribuída foca-se no estudo e desenvolvimento de aplicações distribuídas modernas, combinando fundamentos teóricos com uma forte componente prática. São analisadas as principais características destes sistemas, como escalabilidade, consistência, tolerância a falhas, resiliência e segurança, bem como os desafios arquiteturais e de implementação. Na prática, os estudantes utilizam Java e Spring Boot para criar microsserviços que comunicam através de APIs REST e Apache Kafka, com persistência em bases de dados relacionais (PostgreSQL) e documentais (MongoDB). São explorados conceitos de containerização e deployment com Docker, testes em sistemas distribuídos e padrões avançados de coordenação como SAGAs e consistência eventual. O curso culmina num projeto final agregador de conteúdos, onde os alunos desenvolvem um sistema completo, aplicando os conhecimentos adquiridos e sistematizando as competências técnicas e transversais essenciais para o mercado.
-
Disciplina do curso
Disciplina do curso
-
Grau | Semestres | ECTS
Grau | Semestres | ECTS
Licenciado | Semestral | 5
-
Ano | Natureza | Lingua
Ano | Natureza | Lingua
3 | Obrigatório | Português
-
Código
Código
ULHT2531-7348
-
Pré-requisitos e co-requisitos
Pré-requisitos e co-requisitos
Não aplicável
-
Estágio Profissional
Estágio Profissional
Não
-
Conteúdos Programáticos
Conteúdos Programáticos
1. Introdução. Caracterização, requisitos, arquitectura e funcionalidades 2. Arquitecturas e Modelos de Comunicação Distribuída. Arquitecturas de sistemas, níveis de software 3. Comunicação entre Processos Distribuídos (IPC). Características da comunicação entre processos, Invocação, parâmetros e heterogeneidade de dados 4. Invocação Remota e Objectos Distribuídos. RPC: Modelo de execução. Linguagem de definição de interfaces (IDL). Plataformas de execução: Sun RPC, Java RMI 5. Nomeação e Serviços de Directório. Tipos de Nomes. Espaços de nomeação. Serviços de Directório (Web, X.500, LDAP) 6. Web Services (WS). Modelo de Execução Web Services (WS). O protocolo SOAP. Linguagens de definição de Serviços (WSDL) 7. Segurança. Modelo de segurança. Autenticação. Controlo de acesso 8. Sistemas de Ficheiros Distribuídos. Arquitecturas de SGF distribuídos. Implementações: NFS e AFS 9. Transações. Modelo transaccional. Propriedades ACID das transacções. Transacções distribuídas. Protocolo 2-phase-commit
-
Objetivos
Objetivos
No final da unidade curricular, os estudantes deverão conhecer os conceitos fundamentais e os principais desafios da computação distribuída, com foco em desempenho, fiabilidade, resiliência e segurança. Serão capazes de aplicar técnicas de design e boas práticas para modelar soluções distribuídas adequadas a diferentes contextos, desenvolver microsserviços com comunicação síncrona e assíncrona, integrar persistência de dados e mecanismos de coordenação entre serviços. Além disso, terão oportunidade de experimentar metodologias e ferramentas que suportam o ciclo de vida de sistemas distribuídos, incluindo containerização, monitorização e estratégias de teste. Pretende-se ainda que os estudantes demonstrem competências transversais de trabalho em equipa, comunicação técnica e resolução de problemas em ambientes complexos, consolidando uma preparação sólida para desafios reais de desenvolvimento e arquitetura de software distribuído.
-
Metodologias de ensino e avaliação
Metodologias de ensino e avaliação
A unidade curricular combina metodologias teóricas e práticas de forma integrada. Na vertente teórica, são realizados mini-testes periódicos para garantir o acompanhamento contínuo e um teste final de consolidação de conhecimentos. Na vertente prática, adota-se uma abordagem learning-by-doing, com desenvolvimento progressivo de microsserviços, checkpoints semanais, revisões de código e feedback contínuo, promovendo uma aprendizagem ativa e iterativa. São ainda introduzidas metodologias inovadoras como peer review entre grupos, resolução colaborativa de problemas e utilização de ferramentas de desenvolvimento profissional (GitHub, Docker, CI/CD), aproximando os estudantes das práticas reais da indústria e potenciando competências técnicas e transversais.
-
Bibliografia principal
Bibliografia principal
Coulouris, Dollimore & Kindberg, Distributed Systems: Concepts and Design, 5th Edition, Addison-Wiley, 2011, ISBN 0132143011.
-
Horário de Atendimento
Horário de Atendimento
-
Mobilidade
Mobilidade
Não