200 likes | 457 Views
A Linguagem Formal de Especificação VDM-SL . Aluna: Cibele Brunetto RA: 012107. Tópicos. O que é VDM Estrutura da Linguagem Abordagem para Construção de Especificações usando VDM Criação de um Estado do Sistema Construção de “Invariant” de Tipos de Dados Modelagem das Operações do Sistema
E N D
A Linguagem Formal de Especificação VDM-SL Aluna: Cibele Brunetto RA: 012107
Tópicos • O que é VDM • Estrutura da Linguagem • Abordagem para Construção de Especificações usando VDM • 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 • 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 • Abstração de dados dos detalhes representacionais das estruturas de dados a serem usadas na implementação final do sistema • Operacional • 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. • 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 Maio 2003
Abstração Representacional: 1 e 2 Abstração Operacional: 3 Abordagem para Construção de Especificações usando VDM • Podemos separar a construção de uma especificação em VDM em 5 fases: • 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 Maio 2003
1 – Criação do Estado do Sistema • É 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): • 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, “Map”, Registro, Produto Cartesiano (principais) Maio 2003
1 – Criação do Estado do Sistema: Representação de Variáveis Globais • 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 statenome_do_estado of nome_do_componente: tipo1_componente ... ... nome_do_componente: tipon_componente end Maio 2003
Propriedades impostas por invariantes devem ser preservadas antes e depois de cada operação realizada naquela entidade. 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: • 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. Maio 2003
2 – Construção de Invariantes de Tipos de Dados • Exemplo de invariante de estado: statePerson_age of n: N inv n n 130 end 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 • Funções • Operações Maio 2003
3 – Modelagem das Operações do Sistema • 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 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’ • 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 • 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ós-condiçã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: • Refinamento de dados • Decomposição de operações Maio 2003
5 – Refinamento da Especificação • Refinamento de dados: • Um tipo abstrato de dados é refinado em 1 ou mais tipos concretos de dados • Decomposição de operações: • Refina uma operação abstrata numa operação concreta com detalhes computacionais (uso de “statements” como em Pascal, C) Maio 2003
Bibliografia • “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