+ All Categories
Home > Documents > New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção,...

New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção,...

Date post: 25-Oct-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
18
Notação Z para Especificação de Software Embarcado 1 Cleide Luzia Bonfim Possamai, 2 Fernando Cesar Kloss Universidade Federal do Paraná (UFPR) – Departamento de Informática Caixa Postal 19.081 – 81.531-980 – Curitiba – PR – Brasil 1 [email protected] , 2 [email protected] Abstract. This article presents an overview of the Z notation, used for system formal specification. It presents features of the language, its essential syntax, available tools for software specification, verification and validation. It is also presented some examples of usage for real-time systems and embedded software. Resumo. Este artigo apresenta uma visão geral da notação Z, utilizada para especificação formal de sistemas. São abordados aspectos referentes às características da linguagem, sua sintaxe essencial e ferramentas disponíveis para especificação, verificação e validação. São apresentados também alguns exemplos de utilização para especificação de sistemas de tempo real e software embarcado. 1 Introdução O modelo formal Z foi criado na Universidade de Oxford no fim da década de 70, com o objetivo de servir como notação para a especificação formal de sistemas. A notação gerada pela linguagem Z está baseada em princípios de matemática discreta e Lógica de Primeira Ordem [11]. Ela utiliza uma variedade de estruturas matemáticas como conjuntos, relações e funções para descrever o comportamento do sistema através da construção de modelos, estados de um sistema e suas transições, baseados em pré e pós-condições, além de também representar invariantes que são as regras. Esta linguagem possui também uma sintaxe e semântica precisa além de possibilitar provas lógicas e de raciocínio resultando em notações completas, coerentes, concisas, corretas e claras [11]. A notação Z descreve o estado, comportamento, propriedades de um sistema e também certas operações correspondentes a essa estrutura na forma de pré e pós- condições. Essas operações correspondem a interações do sistema com o meio externo [11]. Quando operações são aplicadas aos componentes da estrutura lógica, o estado do sistema se altera, refletindo o efeito da interação no novo estado assumido pelo sistema. Isso permite que certas propriedades de sistemas, especificados em Z, possam ser validados de maneira simbólica, usando apenas o texto das especificações, sem necessidade de testes sobre algum código compilado [12]. A especificação em Z é formada por um número de esquemas que são decomposições da especificação em partes menores. Estes esquemas podem ser combinados e usados em outros esquemas [2]. Outra característica da notação Z é a utilização de tipos para cada objeto definido, sendo que existem ferramentas para checagem de tipos em Z [1]. A utilização da notação matemática é uma característica
Transcript
Page 1: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

Notação Z para Especificação de Software Embarcado

1Cleide Luzia Bonfim Possamai, 2Fernando Cesar Kloss

Universidade Federal do Paraná (UFPR) – Departamento de Informática Caixa Postal 19.081 – 81.531-980 – Curitiba – PR – [email protected], [email protected]

Abstract. This article presents an overview of the Z notation, used for system formal specification. It presents features of the language, its essential syntax, available tools for software specification, verification and validation. It is also presented some examples of usage for real-time systems and embedded software.

Resumo. Este artigo apresenta uma visão geral da notação Z, utilizada para especificação formal de sistemas. São abordados aspectos referentes às características da linguagem, sua sintaxe essencial e ferramentas disponíveis para especificação, verificação e validação. São apresentados também alguns exemplos de utilização para especificação de sistemas de tempo real e software embarcado.

1 Introdução

O modelo formal Z foi criado na Universidade de Oxford no fim da década de 70, com o objetivo de servir como notação para a especificação formal de sistemas. A notação gerada pela linguagem Z está baseada em princípios de matemática discreta e Lógica de Primeira Ordem [11]. Ela utiliza uma variedade de estruturas matemáticas como conjuntos, relações e funções para descrever o comportamento do sistema através da construção de modelos, estados de um sistema e suas transições, baseados em pré e pós-condições, além de também representar invariantes que são as regras. Esta linguagem possui também uma sintaxe e semântica precisa além de possibilitar provas lógicas e de raciocínio resultando em notações completas, coerentes, concisas, corretas e claras [11].

A notação Z descreve o estado, comportamento, propriedades de um sistema e também certas operações correspondentes a essa estrutura na forma de pré e pós-condições. Essas operações correspondem a interações do sistema com o meio externo [11]. Quando operações são aplicadas aos componentes da estrutura lógica, o estado do sistema se altera, refletindo o efeito da interação no novo estado assumido pelo sistema. Isso permite que certas propriedades de sistemas, especificados em Z, possam ser validados de maneira simbólica, usando apenas o texto das especificações, sem necessidade de testes sobre algum código compilado [12].

A especificação em Z é formada por um número de esquemas que são decomposições da especificação em partes menores. Estes esquemas podem ser combinados e usados em outros esquemas [2]. Outra característica da notação Z é a utilização de tipos para cada objeto definido, sendo que existem ferramentas para checagem de tipos em Z [1]. A utilização da notação matemática é uma característica

Page 2: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

forte no Z, tendo como conseqüência herdar propriedades e formalidades existentes na matemática. Sendo assim, como na matemática, a linguagem Z possui um apanhado de símbolos usados para construção das especificações [11].

2 Sintaxe e Semântica

A especificação de um documento em notação Z consiste na declaração de tipos primitivos, iniciais, enumerados, potência, definições axiomáticas, predicados e esquemas [11]. Os tipos primitivos são conjuntos dos números inteiros, denotado por Z. As definições axiomáticas possuem uma parte declarativa e outra predicativa. Os esquemas são considerados a espinha dorsal de uma especificação em notação Z, pois possibilitam estruturar, descrever estados, tipos, operações, teoremas e predicados. Ainda, estes esquemas podem ser combinados e usados em outros esquemas [11].

Dentre os aspectos estáticos inclui-se:Os estados que o sistema pode ocupar;Os relacionamentos invariantes que são mantidos conforme o sistema muda de estado.

Dentre os aspectos dinâmicos inclui-se:As operações possíveis;A relação entre as variáveis de entrada e as variáveis de saída;As mudanças de estado que acontecem.

Figura 1 - Padrão de símbolos e operadores, de [2].

Page 3: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

- Definições importantes da notação Z, tais como declarações, abreviações, abreviações genéricas, definições axiomáticas, definições genéricas e tuplas.

Figura 2 - Definições importantes da Notação Z, de [2].

Figura 3 - Exemplo de Axioma.

- Descrevendo como conjuntos são utilizados na notação Z, considerando conceitos como pertinência, compreensão, conjunto potência, produto cartesiano, união, intersecção, diferença, união generalizada e intersecção generalizada.

Figura 4 - Conjuntos, de [2].

- Dedicado às relações em Z, tais como, relações binárias, domínio, imagem, imagem relacional, relação inversa, relação de composição e fechos.

Page 4: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

Figura 5 - relações, domínios e imagem, de [2].

- Funções na notação Z, descrevendo funções parciais, funções totais, funções injetoras, funções sobrejetoras, funções bijetoras e sobrecarga.

Figura 6 - funções, de [2].

- Definição de como as seqüências são representadas em Z. Alguns dos conceitos definidos são: seqüência vazia, concatenação de seqüências, filtros, operador head, operador tail, recursão em seqüências e bag.

Figura 7 - Seqüências, de [2].

Page 5: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

Figura 8 - Bags, de [2].

- Conceitos de lógica proposicional, tais como, conjunção, disjunção, implicação, equivalência, negação, tautologia e contradição.

Figura 9 - Lógica proposicional.

- Conceitos importantes da lógica de predicados como: quantificador universal, quantificador existencial e substituição.

Figura 10 - Lógica de predicados, de [2].

- Mostra como esquemas são definidos, além de algumas operações importantes, como por exemplo: renomear, conjunção, decoração, disjunção, negação, quantificadores, hiding, composição, projeção e pré-condição.

Figura 11- Operadores importantes, de [2].

Page 6: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

2.1 Representação de pré-condições, pós-condições e invariantes

Figura 12 - Exemplo de pré-condição, de [2].

A parte do esquema abaixo da primeira linha de todos dá uma pré-condição para o sucesso da operação: o nome a ser adicionado não deve ser um dos conhecidos para o sistema. Isso é razoável, já que cada pessoa só pode ter uma data de aniversário. Se a pré-condição é satisfeita, no entanto, a segunda linha diz que a função de aniversário se estende para mapear o novo nome para da data prevista.

Figura 13 - Exemplo invariante, de [2].

known é o conjunto de nomes com aniversários registrados;birthday é uma função que, quando aplicado a certos nomes, dá o dia de nascimentoa eles associados.

Um estado possível do sistema tem três pessoas na known, com seus aniversários registrados pela função birthday:

Figura 14 - Possíveis valores para o domínio, de [2].

Page 7: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

Figura 15 - Exemplo pós-condição, de [2].

Esta pós-condição indica que se o valor da data de aniversário não mudar após a operação, o valor não será atualizado.

2.2 Representação de componentes de Software e HardwareNão existe um elemento específico da linguagem que represente o hardware ou o

software, são utilizados esquemas para especificar.

2.3 Representação de conexões (elementos de interface)Não existe um elemento específico da linguagem que represente as conexões,

são utilizados esquemas para especificar.

.2.4 Representação de fluxos (dados/informações)A Notação Z é seqüencial e não fornece meios para especificar concorrência.

2.5 Representação de comportamento (alteração de estados devido a eventos)

Figura 16 - Exemplo mudança de estado, de [2].

A declaração BirthdayBook nos alerta para o fato de que o esquema está descrevendo uma mudança de estado: ele introduz quatro variáveis known, birthday, known' e birthday'. Os dois primeiros são observações do estado antes da mudança, e os dois últimos são observações do estado após a mudança. Cada par de variáveis é implicitamente obrigada a satisfazer as invariantes, por isso deve manter, tanto antes como depois da operação. Em seguida, vêm as declarações das duas entradas para a operação.Por convenção, os nomes dos inputs finais têm um ponto de interrogação.

Page 8: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

Figura 17 - Quadro geral de Símbolos da Notação Z.

3 Validação e Verificação

Por ser um modelo formal, existem ferramentas (softwares) que auxiliam na validação de uma especificação em Z. Esta validação em geral consiste da checagem sintática e semântica e da prova de determinados teoremas.

A especificação de um sistema usando um modelo formal não garante que ela está correta ou completa. Podem existir vários tipos de erros na especificação [4]. Porém, especificações formais podem ser analisadas e checadas em relação a algumas propriedades. Mais ainda, estas checagens podem ser feitas com o auxílio de ferramentas automatizadas.

A checagem da consistência de uma especificação em Z é baseada em técnicas de análise estática [4]. A validação consiste em checar a correção sintática e semântica (de tipos) da especificação, garantir que as operações respeitam o modelo de estados do sistema, checar se a especificação contém as funcionalidades e propriedades desejadas e analisar se há informações inconsistentes ou faltosas na mesma.

Page 9: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

3.1 Checagem Sintática e Semântica

Dado que o modelo Z possui uma linguagem com sintaxe e semântica precisas, é possível checar se a especificação inteira está sintática e semanticamente correta [4]. A checagem sintática verifica se todas as construções estão no “formato” correto, Enquanto que a checagem semântica verifica se os dados operados e os operadores são de tipos compatíveis [4].

3.2 Checagem de Domínio

Uma construção escrita em Z pode estar sintática e semanticamente correta, mas não ter seu significado completamente definido. Por exemplo, quando uma função ou um operador são aplicados a valores fora de seu domínio, há um erro de domínio na especificação. Isto é, não há valores definidos para o resultado da função ou do operador [4].

3.3 Checagem de Consistência

A consistência da especificação é estabelecida em duas etapas. Inicialmente, temos a validação do estado inicial. É necessário mostrar que existe um estado inicial válido que satisfaz a invariante de estado do sistema. Para isso, cabe ao especificador escrever um teorema apropriado [4].

Em uma segunda etapa temos a validação de cada operação. Isto é, precisamos provar que cada operação respeita a invariante de estado do sistema. Mais uma vez, o especificador precisa escrever um teorema apropriado e utilizar uma ferramenta que possua um provador de teoremas para fazer a prova do mesmo [4].

4 Ferramentas

Uma notação precisa e fundamentada na matemática possibilita a criação de ferramentas automatizadas de auxílio à criação e validação de documentos que sigam esta notação. Com a popularidade crescente do Z muitas destas ferramentas foram desenvolvidas para a notação enriquecendo a gama de opções para aqueles que utilizam este modelo [4]. Diversas dessas ferramentas estão catalogadas no site, disponibilizado pela Universidade de Oxford. De uma forma genérica, ferramentas para checagens sintática, semântica (de tipos), de domínio e provadores de teoremas estão disponíveis, assim como simples visualizadores da notação. O formato do documento de especificação aceito por estas ferramentas é baseado em LATEX markup, uma extensão do LATEX [4]. Não é preciso, entretanto, compilar o código. Desde que suas marcações estejam corretas, as ferramentas conseguem interpretar o arquivo ASCII contendo a especificação.

O Z/EVES é uma ferramentas versátil o suficiente para aglutinar todas as características supracitadas. Disponibilizada gratuitamente pela ORA Canadá, sua versão 2.1 apresenta dois modos de operação (linha de comando – prompt – e interface gráfica – GUI). A portabilidade é outro fator interessante nesta ferramenta, que pode ser utilizada nas plataformas Solaris, Linux e MSWindows [4].

Page 10: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

O CADiZ foi desenvolvido pela Universidade de York e também contempla todas as características gerais de uma ferramenta para Z. Adicionalmente um sistema de navegação hypertexto entre os parágrafos foi disponibilizado. As mensagens de erro de sintaxe e semântica são amigáveis, apontando exatamente onde se encontram os problemas e também permitem navegação. O CADiZ 3.13 está disponível para Linux, IRIX e Solaris, mas o seu processo de instalação exige um certo grau de experiência do usuário. Seu arquivo de entrada padrão tem extensão .z embora seja exatamente igual ao .tex do Z/EVES. A saída padrão pode ser feita em LATEX e troff [4].

O ZBrowser é uma ferramenta apenas de visualização, mas apresenta características didaticamente interessantes como coloração da especificação de acordo com a sintaxe, navegação entre parágrafos e um sistema de ajuda em dois níveis (hints e help) acionados a partir dos parágrafos. Um simples passar do mouse sobre um operador válido em Z aciona o hint (pequena dica de uso) e se clicarmos sobre o mesmo o help é ativado com uma descrição completa e exemplo de uso. Uma outra característica importante é que o ZBrowser suporta comandos DDE (um sistema de troca de mensagens entre aplicações do MSWindows), permitindo integração com ferramentas que não possuem visualizador gráfico, como o Z/EVES–prompt [4].

A ferramenta Fuzz é apenas um checador de sintaxe e semântica, mas chama a atenção por suas mensagens que apresentam exatamente onde se encontra o erro, inclusive sugerindo como corrigi-lo. Infelizmente, não possui interface gráfica. Uma restrição importante é que não é permitida a checagem dos parágrafos fora de ordem. Ou seja, para checar um parágrafo precisamos checar todos os anteriores [4].

CZT (Comunity Z Tools) é um projeto de código livre em Java para construção de ferramentas para trabalhar com Z e alguns de seus dialetos. O projeto inclui ferramentas para parse, checagem de tipos, transformações, animação e impressão da notação Z padrão da ISO, conforme especificações em LATEX, Unicode e formatos XML. O projeto baseia-se em uma proposta formulada por Andrew Martin almejando estabelecer um projeto comunitário na internet para construir um arcabouço para integração de ferramentas para Z, com numerosas ferramentas plug-in [13]. Como CZT é uma iniciativa comunitária, muitas das ferramentas construídas são produtos de estudos acadêmicos feitos por estudantes, sendo poucos integrados uns com os outros e poucos dão suporte à última especificação ISO da notação Z. Outro fato decorrente é que muitos protótipos são feitos, porém são abandonados devido a mudanças no rumo de pesquisa dos desenvolvedores envolvidos [13].

Finalmente, apresentamos uma ferramenta que ajuda desenvolvedores de extensões para Z, principalmente se desejam conhecer como se escreve um analisador sintático para o modelo. O ZAST mostra apenas a árvore de sintaxe de uma especificação, não recaindo no modelo comum de ferramentas de auxílio a especificadores [4].

Page 11: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

O quadro a seguir contém um resumo das principais características das ferramentas supracitadas, mostrando um comparativo entre elas e destacando suas melhores características do ponto de vista do usuário do software.

Figura 18 - Quadro comparativo das ferramentas, de [4].

Page 12: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

Figura 19 - Tela da Ferramenta Z-EVES

Page 13: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

Figura 20 - Especificação em Z usando o editor jEdit (CZT).

5 Notação Z no contexto de software embarcado e de tempo real

Figura 21 - Exemplo de uma especificação de hardware em Z, de [10].

Formal Refinement for Operating System Kernels, este livro apresenta a especificação de dois kernels usando a notação Z: o primeiro é um kernel simples empregado em um grande número de sistemas embarcados; o segundo é um microkernel para aplicações com requisitos específicos de segurança, como aplicações criptográficas.

Page 14: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

Figura 22 - Exemplo da especificação de um Caixa Automático em Z, de [6].

A importância de métodos formais tem sido demonstrado por aplicá-las na desenvolvimento de software de sistemas críticos de segurança, tais como sistema caixas automáticos, para garantir a correção, confiabilidade e consistência na análise e fase de projeto, antes de começar a implementação real do sistema de software. Um modelo formal a nível abstrato foi desenvolvido em linguagem de especificação Z. Este modelo é finalmente verificado com o conjunto de ferramentas Z/EVES.

Figura 23 - Exemplo de segurança de trens em notação Z, de [9].

Sistema de sinalização ferroviária é um sistema de segurança crítica. Seu mau funcionamento pode causar a perda da vidas e ferimentos graves. Para eliminar as dificuldades deste tipo de sistema melhores metodologias e avanças são obrigatórios. Towards the Formalization of Railway Interlocking System using Z-Notations este

Page 15: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

artigo apresenta o uso de notação Z para especificar as propriedades de segurança de um sistema de trem.

Figura 24 - Especificação em Z para uma maquina de radioterapia, de [8].

Este artigo relata o desenvolvimento de um programa para controle de uma máquina radioterapia, com o uso de métodos formais com a notação Z. O programa é de segurança crítica, que pode contribuir para um tratamento que difere da prevista, irradiando o volume errado dentro do paciente ou entregar a dose errada.

6 Exemplo da aplicação da Notação Z no Controlador de Trem

Tendo como base os conceitos e premissas adquiridos com o estudo da Notação Z fizemos uma tentativa de modelar o caso de Uso da parada de emergência para o controlador de trens. Primeiramente foram modeladas as estruturas em forma de axiomas com seus respectivos comportamentos, em seguida o evento para a parada emergencial juntamente com as pré-condições, pós-condições e invariantes conforme mostra a figura 24.

Page 16: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

Figura 25 - Exemplo do Controlador de trem modelado em Notação Z.

Page 17: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

7 conclusão

A notação Z é precisa, mas não é de fácil entendimento sem a fundamentação matemática envolvida. Um bom processo de adequação ao modelo pode ser demorado dependendo do grau de formação matemática da equipe de especificadores e também dos desenvolvedores que serão usuários do modelo validado. Uma boa ferramenta pode ajudar a diminuir esta dificuldade inicial.

O modelo Z mostrou-se versátil na modelagem de sistemas contando com um conjunto sofisticado de construções capaz de representar boa parte dos requisitos de sistemas. Entretanto, comportamentos concorrentes e temporização de ações nãosão tratados pelo modelo, bem como requisitos não funcionais (facilidade de uso, desempenho, etc.).

Existem diversas ferramentas de auxílio à criação e validação da especificação, mas ainda há muito trabalho intelectual, inclusive na criação dos teoremas, onde, embora seguindo diretrizes, o especificador deve interagir com a ferramenta. Muito do trabalho de especificação depende do grau de abstração requerido, mas o próprio modelo Z oferece suporte para refinamentos sucessivos.

Especificação formal de sistemas de tempo real e sistemas embarcados é viável e experiências com a notação Z voltadas para esse segmento têm sido extremamente positivas.

Referências

[1] Woodcock, J. & Davies, J., Using Z: Specification, Refinement, and Proof.

[2] Spivey, J.M., The Z Notation: A Reference Manual, 2nd edition, 1998.

[3] Jonathan Bowen, Formal Specification and Documentation using Z: A Case Study Approach. [S.l.]: International Thomson Computer Press, 1996.

[4] Netto, Eduardo B. W. & Moreano, Nahri Balesdent, O Modelo Z, UNICAMP, 2001.

[5] Wolfgang Grieskamp, Maritta Heisel & Heiko Dorr, Specifying Embedded Systems with Statecharts and Z: An Agenda for Cyclic Software Components, Science of Computer Programming (1998).

[6] Sofia Kanwal, Nazir A. Zafar, Formal Model of Automated Teller Machine System Using Z notation, International Islamic University, Department of Computer and Information Sciences,2007.

[7] Sofia Kanwal, Nazir A. Zafar, Towards the Formalization of Railway Interlocking System using Z-Notations, International Islamic University, Department of Computer and Information Sciences,2009.

[8] Jonathan Jacky, Jonathan Unger, Michael Patrick, David Reid and Ruedi Risler, Experience with Z Developing a Control Program for a Radiation Therapy Machine, Radiation Oncology, University of Washington, 1997.

Page 18: New Notação Z para Especificação de Software Embarcado · 2011. 12. 6. · intersecção, diferença, união generalizada e intersecção generalizada. Figura 4 - Conjuntos, de

[9] Nazir Ahmad Zafar, Modeling and Formal Specification of Automated Train Control System using Z Notation. Department of Computer and Information Sciences, 2007.

[10] Iain D. Craig, Formal Refinement for Operating System Kernels, Springer, 2007.

[11] Késia Vanessa Vieira, Um Modelo Formal para a Composição de ServiçosWeb usando a Linguagem SAWSDL, UDESC, 2010.

[12] Moura, A. V. Especificações em Z: uma introdução. Campinas - São Paulo: UNICAMP, 2001. ISBN 85-268-0575-4.

[13] Paulo Fernando Kikuchi Negrão, Geração de Código a partir de Especificação Formal em Z, USP, 2010.


Recommended