29
Alunos : Cleverson Luiz Ferreira Eduardo Rachid Fábio César Schuartz Linguagem de Especificação VDM-SL

Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

  • Upload
    trananh

  • View
    220

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

Alunos:

Cleverson Luiz Ferreira

Eduardo Rachid

Fábio César Schuartz

Linguagem de Especificação VDM-SL

Page 2: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• Histórico• Definição: O que é VDM?• Estrutura da Linguagem de Especificação• Fases para a construção de especificações• Estudo de Caso: Agenda de Reuniões• Testes com VDM• Ferramentas de Suporte• Considerações Finais• Referências

Tópicos da Apresentação:

Page 3: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• Início em 1970, no laboratório da IBM, em Vienna

• Grupo liderado por Heinz Zemanek

• Meta Linguagem VDL (Vienna Definition Language): semântica

operacional

• Meta-IV: semântica denotacional

– Dines Bjørner - Lyngby, Dinamarca

– Cliff B. Jones - Manchester, Inglaterra

• Padrão BSI, iniciado em 1986

• Padrão ISO, entre 1991 e 1996, por ISO/IEC JTC1

• Uso nas linguagens PL/I, BASIC, FORTRAN, APL, ALGOL-60, ADA e

PASCAL

Histórico

Page 4: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

types

Person = token;Workers = set of Person;

state AWCCS ofpres: Workers

end

operations

INIT()ext wr pres: Workerspost pres = {};

ENTER(p : Person)ext wr pres : Workerspre p not in set prespost pres = pres~ union {p};

EXIT(p : Person)ext wr pres : Workerspre p in set prespost pres = pres~\{p};

ISPRESENT(p : Person) r : boolext rd pres : Workerspost r <=> p in set pres~

Definição: O que é VDM?

Page 5: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• VDM (Vienna Development Method): coleção de técnicas para a especificação formal e desenvolvimento de sistemas de computação– VDM-SL;– regras para refino de dados e operações;– método teórico de prova.

• Método formal orientado a modelo baseado numa estrutura de semântica denotacional para suportar refinamento passo a passo

Definição: O que é VDM?

Page 6: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• VDM suporta 2 tipos de abstração:– Representacional

• Abstração fornecida pela modelagem de dados (especificação de dados matemáticos: conjuntos, seqüências, mapeamentos, objetos compostos, produtos cartesianos e uniões)

– Operacional• Abstração das manipulações algorítmicas dos

dados, suportada pela abstração funcional (especificação de funções) e abstração relacional (especificação de operações)

Definição: O que é VDM?

Page 7: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• Uma especificação VDM para um problema consiste de uma descrição de estado, utilizando representações de tipos de dados, e de operações, que expressam mudanças às variáveis de estado consistentes com os requisitos do problema.– O estado é um modelo do problema e as operações no estado descrevem o comportamento do modelo

Definição: O que é VDM?

Page 8: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

•  VDM é estruturada em vários blocos, identificados por uma palavra-chave:

types< definição de tipos >

values< definição de valores >

functions< definição de funções >

operations< definição de operações >

state < nome do estado > of < definição do estado >end

Estrutura da Linguagem de Especificação

Page 9: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• O VDM suporta dois tipos de estruturas:– Abstração Representacional

• Tipos Simples• Tipos Compostos• Estados• Invariantes

– Abstração Operacional• Definição de Funções• Definição de Operações• Definição de Declarações

Estrutura da Linguagem de Especificação

Page 10: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• Podemos separar a construção de uma especificação em VDM em 5 fases:1. Criação de um Estado do Sistema2. Construção de Invariantes de Tipos de Dados3. Modelagem das Operações do Sistema4. Prova5. Refinamento da Especificação

Fases para a construção de especificações

Abstração Representacional: 1 e 2Abstração Operacional: 3

Page 11: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• É construído um modelo de dados do sistema, usando tipos primitivos e estruturas de dados construídas:– Tipos Primitivos (definidos na sintaxe da linguagem):

• Z - Inteiro, N - Natural, R - Real, Q - Racional, B - Booleano, char - Caracter, token – Token

– Tipos “Quote”: representação definida por uma string de letras maiúsculas distintas

– Tipos Compostos: construídos a partir de tipos já introduzidos na especificação, usando os construtores:

• União, Conjunto, Seqüência, Mapeamento, Registro, Produto Cartesiano e Tipos de Funções

1 – Criação do Estado do Sistema

Page 12: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• Modelo pode ser visto como um tipo de dado definido pelo usuário e define o universo de possíveis estados que o sistema pode estar durante a execução

• Cada estado corresponde a um valor do modelo de dados

• Se o estado tem muitas componentes que as operações podem acessar separadamente, então declaramos variáveis globais para representar essas partes do estado que as operações podem acessar referenciando diretamente o nome da variável

1 – Criação do Estado do Sistema: Representação de Variáveis Globais

Page 13: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

state nome_do_estado of

nome_do_componente: tipo1_componente

...

...

nome_do_componente: tipon_componente

end

1 – Criação do Estado do Sistema: Representação de Variáveis Globais

Page 14: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• Uma invariante é uma propriedade que restringe o comportamento daquela entidade. Existem 2 tipos:– Invariante de Tipo: similar a restrições de

integridade de bases de dados– Invariante de Estado: restringe o

comportamento do sistema quando ele é sujeito a modificações por operações especificadas naquele estado.

2 – Construção de Invariantes de Tipos de Dados

Propriedades impostas por invariantes devem ser preservadas antes e depois de cada operação realizada naquela entidade.

Page 15: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• Exemplo de invariante de tipo:

inv mk-Student (nome, id, cursoconcluido, cursomatriculado) Δ cursoconcluido ∧ cursomatriculado = {}

• Exemplo de invariante de estado:

state Person_age ofn: Ninv n ∆ n ≤ 130

end

2 – Construção de Invariantes de Tipos de Dados

Page 16: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

Uma vez descritos os objetos do sistema através da abstração representacional (fases anteriores), podemos definir agora o comportamento do modelo através da abstração operacional

A abstração operacional é definida por– Funções– Operações– Declarações

3 – Modelagem das Operações do Sistema

Page 17: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• Diferenças entre funções e operações:

– Funções não acessam variáveis globais

– Operações não somente acessam variáveis globais

como podem modificá-las

• Declarações têm semântica similar aos

comandos utilizados em linguagens de

programação e são utilizadas para detalhar

melhor a especificação

3 – Modelagem das Operações do Sistema

Page 18: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

Definição de funções:fun (p1: t1, p2: t2, ..., pn: tn) p: t

pre B

post B’

Definição de operações:oper (p1: t11, p2: t12, ..., pn: t1n) p: t

ext <modo> g1: t21

...

<modo> gk: t2k

pre B

post B’

• err expr1 : B1 → B1’

3 – Modelagem das Operações do Sistema

Page 19: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

O intuito de se provar que uma especificação formal está correta é eliminar erros lógicos ou semânticos

Existem ferramentas para checar se a sintaxe do modelo especificado está de acordo com a sintaxe de VDM

A especificação de uma operação está correta se é possível encontrar uma implementação (algoritmo) que satisfaça a operação

Um algoritmo satisfaz a operação se para qualquer estado do sistema e/ou valor de parâmetro de entrada que torna a pré-condição verdadeira, o algoritmo produz um estado de saída e/ou valor de parâmetro de saída que torna a pós-condição verdadeira

Ferramenta disponível: SpecBox

4 – Prova

Page 20: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

Uma especificação em VDM pode ter camadas de

modelos, cada modelo sendo uma versão

refinada do modelo anterior. O último nível de

refinamento é bem próximo à implementação

Existem 2 modos de refinar uma especificação

VDM:

Refinamento de dados

Decomposição de operações

5 – Refinamento da Especificação

Page 21: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

types

comp::

s: N

d: dia

h: hora

sala::

numero: N

sf: flag

Estudo de Caso: Agenda de ReuniõesDefinição de tipos

Page 22: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

state agente of

compromissos: comp-set

inv mk-agente( ) Δ ∀ x, y ∈ compromissos

• x ≠ y ∧ {x.d ≠ y.d ∨ x.h ≠ y.h}

init mk-agente( ) Δ compromissos = { }

end

Estudo de Caso: Agenda de ReuniõesDefinição do estado agente

Page 23: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

state agente_marcador of

salas: sala-set

compromisso: comp

agentes: agente-set

init mk-agente marcador(s: sala-set, c: comp, a: agente-set)

Δ salas := s

compromisso := c

agentes := a

end

Estudo de Caso: Agenda de ReuniõesDefinição do estado agente marcador

Page 24: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

operation agendar_compromisso( )ext rd compromisso: comp

rd agentes: agente-setrd salas: sala-setrd compromissos: comp-setwr compromissos: comp-setwr agentes: agente-set

pre∀ sl ∈ salas • compromisso.s == sl.numero ∧ sl.sf == livre∀ ag ∈ agentes • verica(ag) == OK

poscompromissos.s := compromisso.s∀ ag ∈ agentes • marcar( ) ∧ report = SUCESSO∀ sl ∈ salas • sl.sf := ocupado

Estudo de Caso: Agenda de ReuniõesDefinição da operação de

agendamento

Page 25: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

operation verica(ag: agente)

ext rd compromisso: comp

if compromisso.d ∉ ag.d ∨ compromisso.h ∉ ag.h

then return OK

else return Invalido

operation marcar( )

ext rd compromissos: comp-set

ext wr compromissos: comp-set

compromissos = compromissos ∪ {mk-comp(s, d, h)}

Estudo de Caso: Agenda de ReuniõesOperações de verificação e marcar

reunião

Page 26: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• Utilizada pela NASA no projeto SAFER usando o VDM-SL e o

conjunto de ferramentas IFAD VDM-SL

• Facilidade de ligação dinâmica constante na ferramenta,

permitindo uma rápida prototipação do sistema

• SAFER: mochila com sistemas de propulsão para prover a

movimentação no espaço durante uma EVA (Extravehicular

Activity)

• Suporta técnicas de validação, efetuando o teste de cobertura

para as propriedades dos propulsores e de outros subsistemas

Testes com VDM

Page 27: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• VDMTools: ferramenta comercial líder para VDM e VDM++, desenvolvida por

CSK Systems. Inclui geração de código automático para Java e C++, biblioteca

de links dinâmicos e suporte a CORBA

• Overture: iniciativa comunitária de código aberto destinada a suprir uma

ferramenta gratuita de suporte ao VDM++ em cima da plataforma Eclipse

• SpecBox: contém correção de sintaxe, algum mecanismo simples de correção

semântica e geração de um arquivo LaTeX permitindo que especificações

sejam impressas em notação matemática

• Macros para LaTeX e LaTeX2: disponíveis para suportar a apresentação de

modelos VDM na sintaxe matemática da Linguagem Padrão ISSO

Ferramentas de Suporte

Page 28: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• Especificações de hipóteses e propriedades são descritas diretamente no modelo que está sendo construído

• Clareza e o fácil entendimento com o qual os requisitos são especificados• Baixo custo necessário nas revisões de projeto, devido a eliminação de

inconsistências e ambigüidades que possam existir no projeto• Facilidade e rapidez de prototipação de sistemas fornecida através do modelo VDM• Permitem a reutilização de módulos compilados, para comporem a especificação sem

comprometer o processo de modelagem• Podem ser utilizadas de forma altamente abstratas até um nível muito baixo de

abstração• Padronização de sua linguagem de especificação, o que facilita a portabilidade de

especificações• Aumenta-se a qualidade e confiabilidade dos produtos desenvolvidos. O formalismo

diminui os erros de projeto devido a precisão matemática utilizada

• Fraco suporte a modelagem de tempo em suas especificações, como os de tempo real, onde o fator tempo deve ser avaliado precisamente

• Não suportam emissões relacionadas a evento, ou seja, sincronismo de eventos

Considerações Finais

Page 29: Linguagem de Especificação VDM-SLadolfo/Disciplinas/LogicaParaComputacao... · • Utilizada pela NASA no projeto SAFER usando o VDM-SL e o conjunto de ferramentas IFAD VDM-SL

• [1] Adilson Luiz Bonifácio e Rodrigo Bonacin. Modelagem e Especificação de Sistemas Utilizando VDM: Um Survey. Engenharia de Software, Instituto de Computação - Unicamp, 2000.

• [2] Vienna Development Method. Wikipedia, página criada em 2002. Disponível em: < http://en.wikipedia.org/wiki/Vienna_Development_Method>, acessado dia 08/05/2009.

• [3] Adilson Luiz Bonifácio. Verificação e síntese de sistemas híbridos. Tese de Mestrado, Universidade Estadual de Campinas - IC/UNICAMP, abril de 2000.

• [4] Sten Agerhom e Peter Gorm Larsen. Modeling and validating safer in vdm-sl. Em Procededings of the Fourth NASA Langley Formal Methods Workshop (Lfm97), setembro de 1997.

• [5] Dines Bjorner. The vdm specication & implementation methodology, 1989. IFIP TC2/WG2.2, Department of Computer Science, Technical University of Denmark.

Referências