• EN
  • Facebook
  • Instagram
  • Youtube
  • Linkedin
Você está em: Início > Ensino > Unidades Curriculares > TSPSI008
Autenticação
ATENÇÃO: Este site utiliza cookies. Ao navegar no site estará a consentir a sua utilização.

Engenharia de Software

Código: TSPSI008    Sigla: ES
Área Científica: Ciências Informáticas

Ocorrência: 2023/24 - 2S

Área de Ensino: Informática

Cursos

Sigla Nº de Estudantes Plano de Estudos Ano Curricular Créditos Horas Contacto Horas Totais
TSPSI 44 Aviso n.º 835/2016, de 26 de fevereiro 4

Horas Efetivamente Lecionadas

TTPSI-1-VFX

Teórico-Práticas: 21,00

TTPSI-1-STR

Teórico-Práticas: 24,00

Docência - Horas Semanais

Teórico-Práticas: 3,00

Tipo Docente Turmas Horas
Teórico-Práticas Totais 2 6,00
Bruno Filipe Lazarino Jesus - ESGT   3,00
Pedro Filipe Marques Torrezão - ESGT   3,00

Docência - Responsabilidades

Docente Responsabilidade
João António Marujo Nascimento - ESGT Responsável

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

  1. 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
  2.  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
  3. 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
  4. 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

Effective Java (2018), Joshua Bloch, Addison-Wesley
Version Control with Git: Powerful tools and techniques for collaborative software development (2012), Jon Loeliger, O'Reilly Media 
Pragmatic Unit Testing in Java 8 with Junit(2015), Jeff Langr, Pragmatic Bookshelf