• 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: 2018/19 - 2S

Área de Ensino: Informática

Cursos

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

Horas Efetivamente Lecionadas

TTPSI_1

Teórico-Práticas: 42,00

Docência - Horas Semanais

Teórico-Práticas: 3,00

Tipo Docente Turmas Horas
Teórico-Práticas Totais 1 3,00
Antonio Manuel Ferreira Santos Roberto - ESGT   3,00

Docência - Responsabilidades

Docente Responsabilidade
Antonio Manuel Ferreira Santos Roberto - ESGT Responsável

Objetivos de aprendizagem e a sua compatibilidade com o método de ensino (conhecimentos, aptidões e competências a desenvolver pelos estudantes)

Espera-se do aluno aprovado:
  • A capacidade de entender e de aplicar boas práticas na construção de software;
  • A capacidade de estruturar o desenvolvimento de sistemas de software utilizando a abstração e a decomposição;
  • A capacidade de documentar APIs de forma a serem entendíveis pelos seus utilizadores;
  • A aptidão de desenvolver software em equipa e controlar e harmonizar diferentes versões; 
  • 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.

Metodologias de ensino e de aprendizagem específicas da unidade curricular articuladas com o modelo pedagógico

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 e avaliação com os objetivos de aprendizagem da unidade curricular

Tendo em conta que as boas práticas seguem conceitos teóricos de base, 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 a interação em grupo, fundamental no desenvolvimento de software. 

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