Métodos Formais em Engenharia de Software

Mestrado de [Engenharia] Informática (13/14)

Tópicos

Avisos

23 Jul - Lançadas as classificações finais da UCE: ver Funcionamento.

14 Jul - Correcção do teste de CSI: ver enunciado no material pedagógico.

24 Jun - Sessão de correcção do teste de CSI: será dia 26-Jun, 17h, sala DI 1.08.

22 Jun - Classificações do teste de CSI: ver Funcionamento.

18 Jun - Chama-se a atenção dos alunos para a realização das JOIN'14 - XII Jornadas de Informática da Universidade do Minho

18 Jun - A data da última 'milestone' do Projecto Integrado foi adiada para 3-Jul, ver sumários.

22 Mai - A pedido da organização, divulga-se e sugere-se a participação dos alunos no TIUP 2014

25 Abr - AMT: finalmente foram publicadas as notas do teste de Alloy! Em princípio as próximas notas serão lançadas durante a próxima semana.

22 Fev - Publicado oFormulário de CSI em material pedagógico.

05 Fev - CSI: colectados num único PDF todos os exercícios de CSI no material pedagógico.

17 Dez Já estão definidos os tutores de cada grupo, cf. Projecto. Cada grupo deverá entrar em contacto com o seu tutor para definirem horário conveniente para o PI e arrancarem com os trabalhos.

6 Dez - Sugestão de leitura para alunos de MFES... e não só!

12 Nov - Foi criada uma mailing list para a edição 13/14 de MFES. Recomenda-se a subscrição a todos os alunos.

12 Nov - AMT: exemplos do barqueiro adicionados na secção de material pedagógico.

04 Nov - CSI: o módulo Alloy RelCalc.als que se adicionou ao Material pedagógico deve ser estudado como preparação para a próxima aula.

31 Out - CSI: O sumário da TP1 de hoje (11h30) inclui o código Alloy que deve ser usado como ponto de partida para o problema de programação sugerido na aula.

24 Out - FAQs de CSI: ver Material pedagógico (no fim).

07 Out - O código de activação de pré-inscrição nesta UC no e-Learning pode ser obtido carregando aqui.

23 Set - As aulas iniciam-se no próximo dia 3 de Outubro. Ver detalhes em: Calendário

11 Set - Criação do site.

Material disponível ou a disponibilizar:

Bibliografia

  • C.B. Jones. Systematic Software Development Using VDM. Series in Computer Science. Prentice-Hall International, 1986 (first edition). (345 pages)

(A completar ao longo do curso)

Acetatos

  • J.N. Oliveira. Data type invariants: starting where (static) type checking stops (32 slides) (last update: Oct-2013)

  • J.N. Oliveira. Pre / post-conditions -- starting where (pure) functions stop (35 slides) (last update: Oct-2013)

  • J.N. Oliveira. PF transform: when everything becomes a relation (66 slides) (last update: Oct-2013)

  • J.N. Oliveira. PF transform: conditions, coreflexives and design by contract (35 slides) (last update: Nov-2013)

  • J.N. Oliveira. Alloy meets the AoP — “Relational thinking” at work (70 slides) (last update: Nov-2013)

  • J.N. Oliveira. “Theorems for free”: a (calculational) introduction (34 slides) (last update: Dec-2013)

  • J.N. Oliveira. PF-transform: using Galois connections to structure relational algebra (79 slides)

  • L. S. Barbosa. Software architecture for reactive systems (introduction) (30 slides)

  • L. S. Barbosa. _Models and logics for reactive systems _ (46 slides)

  • L. S. Barbosa. Introduction to process algebra and the Mu-calculus (54 slides)

  • L. S. Barbosa. Time-critical reactive systems 1 (23 slides)

  • L. S. Barbosa. Time-critical reactive systems 2 (47 slides)

  • L. S. Barbosa. Time-critical reactive systems 3 (32 slides)

  • Three papers on Reo (zip) and modelling exercise Reo (pdf) tinynew.gif

(A completar ao longo do curso)

Outros textos

  • J.N. Oliveira. Program Design by Calculation. Departamento de Informática, Universidade do Minho. Capítulo segundo deste livro em preparação.

(A completar ao longo do curso)

Exercícios e formulários

Trabalhos práticos e avaliações de VFS

Exemplos

(A completar ao longo do curso)

Enunciados de provas de avaliação individual

Divulgação

  • Eric Bouwers, Joost Visser, Arie van Deursen. Getting What You measure. Communications of the ACM (CACM) 55(7):54-59, July 2012.

Ferramentas

Repositórios

Atendimento electrónico (FAQs) tinynew.gif

(Esta secção será actualizada regularmente com as dúvidas mais frequentes que forem colocadas à equipa docente.)

Q1 - (CSI) Não percebi bem a parte final da resolução do exercício 29 feito hoje na aula: para mim, o "sinal maior ou igual" deveria ser "menor ou igual".

R: Vejamos - ter-se-á:

(∀ s,n : s (S . ≤º) n : s (T . S) n)

== { 2 x (41) }

(∀ s,n : (∃ n':: s S n' ∧ n' ≤º n) : (∃ s':: s T s' ∧ s' S n))

== { ≥º = ≤ ; s T s' = true }

(∀ s,n : (∃ n':: s S n' ∧ n' ≥ n) : (∃ s':: s' S n))

O que quer dizer: Se s é o aluno com número n' e n' é maior do que n, então há um aluno s' com o número n (isto é: a alocação de números a alunos é sequencial).


Q2 - (CSI) Tenho dificuldade em decorar a diferença entre núcleo e imagem de uma relação. Há alguma mnemónica que possa ajudar?

R: Haverá concerteza muitas, por exemplo: decore o nome feminino "NEIDE" e leia-o como o acrónimo de "Núcleo, Esquerda, Imagem, Direita, Etc", isto abreviatura de "num núcleo Rº.R o converso está à esqerda, numa imagem R.Rº está à direita, etc". Haverá melhores, mas este já pode ajudar.


Q3 - (CSI) A definição de ordem linear na wikipedia é que são relações transitivas, anti-simétricas e "connected" mas pelo gráfico que nos deu nas aulas são também reflexivas. Qual das duas é a definição correcta?

R: Sendo R "connected" tem-se R ∪ Rº = ⊤ e portanto id ⊆ R ∪ Rº pois id ⊆ ⊤ e ⊤ ⊆ R ∪ Rº.

Ora id ⊆ R ∪ Rº é a mesma coisa que id ∩ (R ∪ Rº) = id e que (por distributividade e conversos) id ∩ R = id, o mesmo que id ⊆ R; logo R é reflexiva.

Em suma, "connected" implica "reflexive", logo não é necessário dizer que é reflexiva.

Usa-se muitas vezes o símbolo ≤ para designar uma ordem linear e o símbolo < para designar ≤ - id, a que se chama a (sub)ordem linear estrita de ≤.


Q4 - Se eu tiver <∀ a,b : a X b : a=b> posso trocar para <∀ a,b : a=b : aXb> e depois aplicar 'one point', correcto?

R: Não (!) Isso é se o quantificador for o existencial (∃). No caso do universal, a troca possível é de <∀ a,b : a X b : a=b> para <∀ a,b :: a X b => a=b>, cf. a regra (7) dos slides para R = true


Q5 - (CSI) A preencher.

R: A preencher.


-- JoseNunoOliveira - 11 Sep 2013

r50 - 14 Jul 2014 - 17:54:48 - JoseNunoOliveira
This site is powered by the TWiki collaboration platform Copyright © by the contributing authors. Ideas, requests, problems? Send feedback.
Syndicate this site RSSATOM