You are on page 1of 8

Especificação em Z: Utilizando o conceito de esquemas

Nataline Silva da Cunha Universidade Estadual do Rio Grande do Norte (UERN) Campus de Natal/ Núcleo de Nova Cruz Curso de Ciências da Computação
naty-ncruz@hotmail.com

Resumo: Esse trabalho tem o intuído de mostrar os benefícios e a praticidade dos esquemas em Z, mostrando seu conceito e também um exemplo de sua aplicação em relação a uma especificação para que possamos perceber quanto é proveito o uso do mesmo em especificações mais complexas.

Introdução

A especificação de um software é uma receita que descreve o que ele deve fazer, e para sua especificação é necessário uma notação ou linguagem, pois a linguagem coloquial que usamos no dia a dia é inadequada para descrever com exatidão a estrutura lógica dos objetos especificados e dos operadores por falta de precisão em muitos casos. Com o uso de um método formal para a construção de programas podemos conhecer e analisar o seu comportamento sem que seja preciso executar o código fonte, prevendo também atribuição de significado às fórmulas que compõem a especificação, além de abrigar leis de transformação para simplificar e combinar essas fórmulas. Com essas características é formado um cálculo de programa que distinguem métodos formais de outros métodos que não atribuem um significado preciso e passível de cálculo. O uso do formalismo e do cálculo subjacente ajuda em muito a evitar a persistência de falhas em módulos de software finalizado, além de limitar atrasos no processo de desenvolvimento de software. Algumas especificações complexas precisam de mecanismos notacionais para a busca de economia e de modularização, e isso só se consegue em Z através da noção de esquemas que vamos ver detalhadamente neste artigo.

E no processo de transformação da especificação em Z para o código na linguagem de programação que os vários detalhes de organização e funcionamento da máquina hospedeira começam a ser considerados. agrupá-las em conjuntos à parte e designar esse grupo nos vários pontos em que desejássemos enxertar seu conteúdo. usualmente ela é transformada para código. Atualmente. desde que seja usado com habilidade. descrevendo também certas operações que podem ser aplicadas à componentes dessa estrutura. Uma primeira parte declarativa. Mesmo em especificações simples. deveríamos organizar partes comuns que ocorrem nessas especificações. expresso em uma linguagem de programação Esse código depois de compilado. 2. dentre os métodos de especificação que usam algum formalismo para agregar precisão e rigor às especificações construídas. Uma segunda parte predicativa. origina um programa objeto passível de execução. Esquemas em Z Em linhas gerais. vale salientar que Z não é uma linguagem de programação. fazendo uso de noções de conjuntos e princípios básicos de lógica matemática. Com isso seria substituído o nome do conjunto pela linhas que o compõem. e sim uma notação que facilita a descrição de sistemas de computação. Estando estabelecida a ponto de contar com uma padronização internacional. uma boa parte do volume delas é formada por linhas que se repetem nas várias descrições axiomáticas. . Em linguagem de programação quando isso ocorre sugere-se imediatamente a ideia de macros. onde as variáveis de estado são declaradas. no ponto do texto onde se gerou a invocação. Esse tipo de mecanismo proporcionar considerável clareza e economia em especificações mais complexas. onde construímos predicados que exprimem a relação exta que deve vigorar entre as variáveis de estado. Essa notação descreve a estrutura lógica de um sistema de software. a especificação de transformações pressupõe duas partes bem definida: 1. As especificações em Z não precisam ser executadas. Nessa parte indicamos as restrições que devem ser satisfeitas pelos valores iniciais das variáveis envolvidas na operação. nem existe a noção de armazenar valores em posição de memória associadas às variáveis definidas numa especificação escrita em Z.Formalismo em Z Desde já. talvez a notação em Z esteja entre as mais desenvolvidas e consolidadas. Uma vez terminada uma especificação em Z. Seguindo essa linha de raciocínio. e indicadas as variáveis de entrada e saída.

essa ideia é comparada com o conceito de esquema. que nada mais é que uma descrição axiomática à qual associamos um nome. H. Decls é sua parte declarativa e Preds é predicativa. Resultando em um novo esquema. Em geral. especificado de duas formas: . esquemas em Z. A operação de incluir S em M é indicada simplesmente listando-se o nome S entre as declarações de M. se Decls representa um conjunto de declarações e Preds denota uma família de cláusulas predicativas. então um esquema M também poderá ser especificado através de uma declaração na forma: onde o símbolo que está depois da letra M.Em Z. Inclusão A inclusão é uma das operações mais básicas que podemos realizar com esquema em Z. em qualquer posição relativa. Sejam e . Sua apresentação é feita dessa forma: onde M é o nome associado ao esquema. é usado para introduzir o novo nome atribuído ao esquema.

De novo. Estudo de Caso O exemplo envolvendo o uso do esquema foi utilizado em uma especificação para um sistema simples que visa controlar as operações de uma videolocadora. Toda parte declarativa de S é enxertada na parte declarativa de M. Todas as linhas que compõem a parte predicativa de S são listadas na parte predicativa de M. não há restrição de ordem entre as cláusulas presentes em M e em S. Para esse exemplo foi utilizado apenas uma parte da especificação que se encarrega em fazer uma locação de fita que não tenha sucesso. sendo essas na parte declarativa. depois temos variáveis fortemente tipadas. Já na parte predicativa ficou a restrição que resultaria em uma locação sem sucesso. Na inclusão de esquemas devemos ter alguns cuidados. e a variável resp! de saída. Um deles é evitar os conflitos de tipos entre variáveis declaradas em S e em M. onde foram agrupadas as mensagens que deverão ser emitidas pelo sistema. a variável de saída retornara “LocacaoNOK”. correspondem a variáveis de entrada. portanto: 1. .3. 2. Na primeira linha foram introduzidos três tipos iniciais. Vemos que há repetição de algumas variáveis. e isso acontece se a pessoa que for locar não estiver cadastrada e também se a fita pedida pelo cliente não estiver contida no acervo. O programa utilizado para implementar essas especificações foi o Z-eves. e finalmente foram introduzidas as variáveis do sistema. sem distinção de ordem ou precedência entre as várias declarações. Vale salientar que as variáveis c? e Sel?. fazendo com que a especificação fique repetitiva e longa ao mesmo tempo.O efeito da inclusão de S em M é duplo.1 utilizando a plataforma Windows 7. A Figura 1 mostra a implementação dessa especificação sem o uso do esquema. versão 2.

que mostra a mesma especificação com o uso do conceito de esquemas em Z. Foi preciso criar três esquemas para que a especificação pudesse atender a restrição desejada. dando maior praticidade e fazendo com que a especificação seja mais fácil de entender.Figura 1: Locação sem sucesso Em seguida temos a Figura 2. Vemos que ao invés de repetição de variáveis. . temos blocos específicos que servem para serem requisitados pelo nome quando preciso.

Figura 2: Especificação utilizando esquemas .

Utilizando-se sempre de mecanismos que ajudam na sua melhor produtividade e clareza. evitando também erros e aumentando assim as garantias de sucesso do produto final e consequentemente em toda sua vida útil. ele tenta apenas mostrar com maior clareza os requisitos para a especificação de um sistema. . para que os software de computadores sejam melhores implementados. não é simplesmente a tradução de um texto em prosa para fórmulas matemáticas.CONCLUSÃO Como vimos uma especificação em Z.

Arnaldo Vieira: Especificações em Z: Uma introdução – Campinas.BIBLIOGRAFIA MOURA. . 2001. SP: Editora da Unicamp.