A Linguagem Formal de Especificação VDM-SL Aluna: Cibele Brunetto RA: 012107 1 Tópicos O que é VDM Estrutura da Linguagem Abordagem para Construção de Especificações usando VDM 1. 2. 3. 4. 5. 2 Criação de um Estado do Sistema Construção de “Invariant” de Tipos de Dados Modelagem das Operações do Sistema Prova Refinamento da Especificação Bibliografia Maio 2003 O QUE É VDM-SL = Vienna Development Method – Specification Language Tipo de especificação construída por VDM: baseada em modelo – 3 Requisitos de um sistema são melhor capturados criando-se um modelo do sistema e definindo como um estado típico do modelo muda sob o efeito de operações Maio 2003 O QUE É VDM suporta 2 tipos de abstração: – Representacional – Operacional 4 Abstração de dados dos detalhes representacionais das estruturas de dados a serem usadas na implementação final do sistema Abstração das manipulações algorítmicas dos dados introduzidos na abstração representacional Maio 2003 O QUE É Uma especificação VDM para um problema consiste de um estado, que inclui 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. – 5 O estado é um modelo do problema e as operações no estado descrevem o comportamento do modelo Maio 2003 Estrutura da Linguagem VDM está estruturado em blocos: types <definição dos tipos> values <definição de valores> functions <definição das funções> operations <definição das operações> state <nome do estado> of <definição do estado> end 6 Maio 2003 Abordagem para Construção de Especificações usando VDM Podemos separar a construção de uma especificação em VDM em 5 fases: 1. 2. 3. 4. 5. Criação de um Estado do Sistema Construção de “Invariant” de Tipos de Dados Modelagem das Operações do Sistema Prova Refinamento da Especificação Abstração Representacional: 1 e 2 Abstração Operacional: 3 7 Maio 2003 1 – Criação do Estado do Sistema 8 É construído um modelo de dados do sistema, usando tipos primitivos e estruturas de dados construídas Maio 2003 1 – Criação do Estado do Sistema Tipos Primitivos (definidos na sintaxe da linguagem): – 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: – 9 Z - Inteiro, N - Natural, R - Real, Q - Racional, B Booleano, char - Caracter, token – Token União, Conjunto, Seqüência, “Map”, Registro, Produto Cartesiano (principais) Maio 2003 1 – Criação do Estado do Sistema: Representação de Variáveis Globais 10 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 Maio 2003 1 – Criação do Estado do Sistema: Representação de Variáveis Globais state nome_do_estado of nome_do_componente: tipo1_componente ... ... nome_do_componente: tipon_componente end 11 Maio 2003 2 – Construção de Invariantes de Tipos de Dados Uma invariante de uma entidade é uma asserção restringindo o comportamento daquela entidade. Existem 2 tipos: – – 12 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. Propriedades impostas por invariantes devem ser preservadas antes e depois de cada operação realizada naquela entidade. Maio 2003 2 – Construção de Invariantes de Tipos de Dados Exemplo de invariante de estado: state Person_age of n: N inv n n 130 end 13 Maio 2003 3 – Modelagem das Operações do Sistema 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 – – 14 Funções Operações Maio 2003 3 – Modelagem das Operações do Sistema Diferenças entre funções e operações: – – 15 Funções não acessam variáveis globais Operações não somente acessam variáveis globais como podem modificá-las Maio 2003 3 – Modelagem das Operações do Sistema Definição de funções: fun (p1: t1, p2: t2, ..., pn: tn) p: t pre B post B’ 16 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’ Maio 2003 4 – Prova 17 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 qq 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óscondição verdadeira Ferramenta disponível: SpecBox Maio 2003 5 – Refinamento da Especificação 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: 18 Refinamento de dados Decomposição de operações Maio 2003 5 – Refinamento da Especificação Refinamento de dados: Decomposição de operações: 19 Um tipo abstrato de dados é refinado em 1 ou mais tipos concretos de dados Refina uma operação abstrata numa operação concreta com detalhes computacionais (uso de “statements” como em Pascal, C) Maio 2003 Bibliografia 20 “The Construction of Formal Specifications: An Introduction to the Model-Based and Algebraic Approaches”, J.L. Turner & T.L. McCluskey, 1992 “Specification of Software Systems”, V.S. Alagar & K. Periyasamy, 1998 “VDM-SL Specifications for a Graph Editor”, V.S. Alagar, D. Muthiayen, K. Periyasamy, 1996 Maio 2003