Bem-vindo à página do perfil de especialização em Métodos Formais de Programação do Mestrado em Engenharia Informática da Universidade do Minho que, antes do corrente ano lectivo de 2021/22, se designou Métodos Formais em Engenharia de Software.
Toda a informação relativa à edição corrente do perfil pode ser encontrada neste link: MFP/2122.
A informação relativa aos anos anteriores encontra-se abaixo.
Anos anteriores: 2020/21 (vídeo de apresentação: ver http://www.di.uminho.pt/~jno/media/mfes/mfes20.m4v), 2019/20, 2018/19, 2017/18, 2016/17, 2015/16, 2014/15, 2013/14, 2012/13, 2011/12, 2010/11, 2009/10, 2008/09, 2007/08, 2006/07 ou anterior.
Métodos Formais em Engenharia de Software (MFES) passou a ser, a partir de 2014/15, um perfil de especialização proposto por investigadores do HASLab (High Assurance Software Lab). Este perfil consolida uma experiência de três décadas no ensino de métodos formais para o desenvolvimento de aplicações de software.
As disciplinas que compõem o perfil,
- Análise e Teste de Software (1º semestre, 5 ECTS, Opção Complementar) [2017/18: J.A. Saraiva]
- Cálculo de Sistemas de Informação (1º semestre, 5 ECTS) [2017/18: J.N. Oliveira]
- Especificação e Modelação (1º semestre, 5 ECTS) [2017/18: M.A. Cunha]
- Arquitectura e Cálculo (2º semestre, 5 ECTS) [2017/18: L.S. Barbosa]
- Verificação Formal (2º semestre, 5 ECTS) [2017/18: J.S. Pinto]
corporizam as dimensões principais de que depende a engenharia de aplicações confiável à escala industrial. O perfil partilha ainda a disciplina de Laboratório de Engenharia Informática (2º semestre, 10 ECTS: (Wiki)) onde se aplicam os conhecimentos adquiridos em projectos propostos por parceiros da indústria.
Na sua componente teórica, a visão é a de abordar problemas de software segundo uma autêntica perspetiva de engenharia, criando modelos matemáticos sobre os quais é possível raciocinar e calcular. Na sua componente prática, este perfil de especialização ensina a conceber e animar modelos de problemas, testando-os atempada e exaustivamente antes de se proceder à fase de cálculo e implementação, por forma a evitar erros de perspetiva ou infantilidades de conceção. Em suma: ensina-se a saber modelar e calcular, sim, mas também a saber testar e avaliar.
No seu conjunto, os conteúdos deste perfil pretendem realizar o desígnio de que é possível afixar, nos artefactos de software desenvolvidos segundo os seus princípios, o carimbo

Corpo Docente
- Alcino Cunha
- Maria João Frade
- Jorge Sousa Pinto
- João A. Saraiva
- José N. Oliveira (coord.)
- Luís S. Barbosa
Classificação ACM
Número de ECTS por área de conhecimento, segundo as IEEE/ACM Curriculum Guidelines for Software Engineering:
- Software / Software Engineering / Metrics --- 2
- Software / Software Engineering / Requirements/Specifications --- 6
- Software / Software Engineering / Software Architectures --- 6
- Software / Software Engineering / Software/Program Verification --- 6
- Software / Software Engineering / Testing and Debugging --- 4
- Theory of Computation / Logics and Meanings of Porgrams / Specifying and Verifying and Reasoning about Programs --- 6
Resultados de Aprendizagem
- Criar, rever, analisar, classificar, animar, testar e transformar modelos abstratos de problemas e sistemas em Engenharia de Software.
- Transformar especificações de sistemas de informação complexos em implementações sobre diversos tipos de tecnologias.
- Modelar, analisar, classificar e transformar diferentes padrões de interacção, estratégias de modularização (componentes, objetos, serviços) e esquemas de organização arquitetural do software.
- Seleccionar técnicas de análise, planear e executar projetos de teste de software.
- Planear, executar e avaliar a qualidade de projetos de modelação e desenvolvimento de software, recorrendo a métodos rigorosos e diferentes tecnologias de aplicação.
- Desenvolver de forma integrada a função de conceção e projeto em Engenharia.