Objetivos de Aprendizagem (conhecimento, aptidões e competências a desenvolver pelos estudantes)
Em geral, espera-se que um aluno aprovado nesta Unidade Curricular tenha a capacidade de entender e de aplicar boas práticas na construção de software.
em particular, espera-se do aluno aprovado:
1 - A capacidade de estruturar o desenvolvimento de sistemas de software utilizando a abstração e a decomposição;
2 - A capacidade de documentar APIs de forma a serem entendíveis pelos seus utilizadores;
3 - A aptidão de desenvolver software em equipa e controlar e harmonizar diferentes versões;
4 - A capacidade de conceber e implementar testes unitários de forma a validar a obediência aos requisitos
Conteúdos programáticos
Boas práticas de construção de software
Alto Nível
Decomposição e Abstracção
Generalização
Encobrimento da Informação
Baixo Nível
Convenções de Codificação
Programação Defensiva
Validação dos Parâmetros e disparo de Exceções
Application Programming Interfaces (APIs)
Utilização e Construção de Java Packages
Criação de Documentação com JavaDocs
Normas a obedecer na escrita de JavaDocs
Controle de Versões e Colaboração em Equipa
Git e Github
Repositórios Locais e Remotos
Melhoramentos contínuos e gestão das versões
Branch e Merge
Sincronização de repositórios locais com repositórios remotos
Testes Unitários
Testes sistemáticos
Testes automatizados com JUnit
Concepção e implementação de Casos de Teste
Demonstração da Coerência dos Conteúdos Programáticos com os Objetivos de Aprendizagem da Unidade Curricular
Cada um dos objetivos enumerados para a Unidade Curricular (UC) é atingido por cada um dos tópicos principais dos conteúdos programáticos da UC. O objetivo geral é obtido pela acumulação dos objetivos enumerados, constituindo um macro objetivo.
Os 4 objetivos enumerados, do 1 a 4, são conseguidos pelo trabalho desenvolvido em cada um dos pontos do plano curricular.
Metodologia de Ensino (Avaliação incluída)
Metodologia de ensino: Aulas teórico-práticas de exposição da matéria, de demonstração de conceitos e de software, de resolução de exercícios e de apresentação e discussão da solução dos exercícios. Aulas práticas dedicadas à realização do projeto da disciplina e aulas de apresentação e discussão dos projetos dos alunos.
Avaliação: Realização de um teste prático com um peso de 50% na nota final
Conceção, desenho e implementação de um projeto em sala de aula (50% da nota final).
Demonstração da Coerência das Metodologias de Ensino com os Objetivos de Aprendizagem da Unidade Curricular
Tendo em conta que as boas práticas seguem conceitos teóricos que são essenciais para se conseguir os objetivos e resultados propostos, as metodologias seguidas, apesar de previligiarem o trabalho prático, incluem também uma componente teórica que dá sentido ao conjunto de conhecimento que depois se aplicará na prática.
A avaliação contempla estas duas facetas dos conteúdos incluídos nesta UC. O teste prático permitirá aferir da conjugação entre teoria e prática. O trabalho de grupo favorece a aprendizagem e simultaneamente permite aferir do progresso do estudante ao longo do semestre.
Bibliografia de consulta (existência obrigatória)
Beginning Software Engineering (2015), Rod Stephens, Wrox