Engenharia de Software

Conhecimentos de Base Recomendados

Conhecimentos de programação necessários para a escrita de testes unitários.

Métodos de Ensino

Nesta unidade curricular são utilizadas as seguintes metodologias de ensino:

1. Método expositivo: método explicativo onde fundamentos teóricos e conceitos são apresentados pelo docente e discutidos com a turma. Os conceitos e informações serão apresentados aos estudantes através, por exemplo, de apresentações em slides ou discussões orais. Será utilizado nas aulas para a estruturação e esquematização da informação.

2. Método demonstrativo: baseia-se na exemplificação pelo docente de uma operação técnica ou prática que se deseja aprendida. Centra-se na forma como se executa uma dada operação, destacando as técnicas, as ferramentas e os equipamentos mais adequados. Será por exemplo utilizado em aulas práticas e laboratoriais.

3. Método interrogativo: processo que se fundamenta em interações verbais, sob a condução do docente, adotando o formato de questões e respostas. Permite obter maior dinâmica na aula e consolidar a aprendizagem. Será utilizado por exemplo para recordar elementos de aulas anteriores, e em revisões do conteúdo lecionado.

4. Métodos ativos: serão utilizadas técnicas pedagógicas em que o estudante é o centro do processo de aprendizagem, sendo um participante ativo e envolvido na sua própria formação. O docente assume o papel de facilitador, estimulando o pensamento crítico, a colaboração, a criatividade e a autonomia dos estudantes. Serão aplicados nas aulas para alcançar um ambiente de aprendizagem dinâmico e mais duradouro.

Cada aula será composta por dois momentos:

1. Exposição introdutória: No início da aula o docente expõe e discute com os estudantes os novos conteúdos em estudo;

2. Aplicação prática: Após a exposição introdutória, os estudantes desenvolvem fichas de trabalho e resolução de problemas, individualmente e em conjunto, para aplicação prática dos novos conceitos, de forma autónoma e sob a orientação do docente.

Resultados de Aprendizagem

  1. Identificar e descrever os motivos pelos quais a engenharia de software é essencial;
  2. Identificar e descrever os principais processos de desenvolvimento de software;
  3. Identificar os diferentes tipos de requisito e descrever os principais métodos de desenvolvimento dos mesmos;
  4. Criar documentos de especificação de requisitos;
  5. Identificar e descrever os principais padrões de arquitetura de software;
  6. Desenhar a arquitetura de software adequada a um determinado problema;
  7. Criar modelação de software utilizando diagramas UML;
  8. Identificar e descrever processos ágeis de desenvolvimento de software;
  9. Construir testes de software;
  10. Desenvolver software utilizando plataformas low/zero code;
  11. Reconhecer a importância da qualidade de software.

Programa

  1. Conceitos base de Engenharia de software;
  2. Processo de desenvolvimento de software;
  3. Engenharia de requisitos;
  4. Arquitetura e desenho de software (Modelo C4);
  5. Modelação de sistemas com UML (Unified Modeling Language);
  6. Testes de software;
  7. Métodos ágeis de desenvolvimento de software;
  8. Desenvolvimento de software utilizando sistemas Low Code / Zero Code (e.g. OutSystems, Microsoft PowerApps);
  9. Qualidade de software.

Docente(s) responsável(eis)

Estágio(s)

NAO

Bibliografia

Guerreiro, S. (2015). Introdução à engenharia de software. FCA. 

Sommerville, I. (2011). Engenharia de software  (9a edição). Addison Wesley.

Palhoto, T. (2016). Desenvolvimento ágil de software. FCA.

Borges, J. L. M., Cunha, J. F., Dias, T. G. (2015). Modelação de dados em UML – uma abordagem por problemas. FCA. 

Laboon, B. (2016).  A friendly introduction to software testing (1ª edição). CreateSpace Independent Publishing Platform.