Guia de Cursos

Queres conhecer a oferta de cursos da NOVA, nas áreas das licenciaturas, mestrados e doutoramentos?
No nosso Guia de Cursos encontras informação útil sobre Faculdades, Institutos e Escolas.
Podes ainda aceder a informações complementares necessárias a uma completa integração.

saber mais Guia de Cursos

Faculdade de Ciências e Tecnologia

Construção e Análise de Sistemas de Software

Código

8279

Unidade Orgânica

Faculdade de Ciências e Tecnologia

Departamento

Departamento de Informática

Créditos

6.0

Professor responsável

Luís Manuel Marques da Costa Caires

Horas semanais

4

Total de horas

56

Língua de ensino

Português

Objectivos

Saber:

• Construção de desenvolvimento de software confiável tendo em conta concorrência e segurança

• integração da verificação com os processos de construção de software

• Raciocínio baseado na lógica na verificação e análise de sistemas de software

• Análise estática e de verificação de modelos

• Princípios e técnicas de teste de software

Saber Fazer:

• Especificar, verificar e raciocinar sobre correcção de programas através de asserções lógicas

• Definir especificações comportamentais (invariantes, pre-condições e pós-condições) para implementação de módulos e suas interfaces.

• Conceber e implementar planos de teste.

• Usar métodos de programação rigorosos e técnicas de verificação em programas concorrentes

• Conceber políticas de fluxo de informação e sua verificar com asserções e ferramentas.

• Desenvolver em grupo uma aplicação de média dimensão, estaticamente verificada e testada com um grau de cobertura razoável.

Conteúdo

1. Verificação de Software

Métodos baseados em Asserções e Lógicas de Hoare, Dijkstra, Owicky-Gries e Separação.Inferência de Asserções. Tipos comportamentais. Análise de fluxo de dados, de controle e de sinonímia; Interpretação Abstracta. Verificação de Modelos. Ferramentas associadas.

2. Teste de Software

Testes baseado em Modelos e Falhas. Selecção e Geração de Testes. Execução Simbólica. Ferramentas associadas.

3. Programação Concorrente

Partilha, Confinamento, Posse. Controle de Interferência. Verificação de código com monitores e semáforos usando invariantes de recursos. Controle de concorrência a partir de especificações comportamentais.

4. Programação Segura

Segurança de fluxos de informação e não-interferência. Segurança baseada nas linguagens. Modelos de programação para controle de acessos. Certificação de código. Ferramentas associadas.

5. Exercícios de Desenvolvimento e Projecto Final

Sequência de desafios de programação. Uso de ferramentas (Dafny, JBoss, Verifast, SPIN; Jif)

Método de avaliação

Teste intermédio 30%

Teste Final 30%

4 pequenos trabalhos práticos 10% cada

Cursos