2.Especificação do sistema

2.1 Regras

2.2 Declarações

2.3 Especificação de sinais

2.4 Interações entre blocos

2.5 Especificação de canais

2.6 Exemplo


O SDL Básico se refere a porção central da linguagem, o que é suficiente para a especificação da maior parte das especificações SDL. Neste caso será considerado apenas um nível de blocos em uma especificação.

Tudo que for especificado em SDL fará obrigatoriamente parte do sistema. O sistema delimita parte do universo que será a especificação. Nesta seção apenas a parte mais abstrata de uma especificação será apresentada. Neste nível, uma visão bem abstrata do sistema é apresentada.

A especificação de um sistema descreve um conjunto de blocos que intagem entre si e com o ambiente do sistema através de canais. Essa interação é alcançada com o uso de sinais como mecanismo de comunicação. Dentro de um canal os sinais apresentam um atraso não-determinístico. Isso significa que uma especificação não pode influenciar no atraso de um sinal em um canal. Entretanto, é garantido que a ordem dos sinais nos canais é mantida.

Apesar de ser necessário especificar o comportamento dinâmico de uma sistema, isto não é feito neste nível. A especificação deste comportamente é alcançada indiretamente pela especificação dos processos dentro dos blocos. Apesar da descrição dinâmica estar escondida neste estágio da especificação, uma boa especificação é capaz de dar substanciais informações sobre o sistema neste nível.

2.1 Regras

Um sistema possui um nome que o identifica e que faz parte do cabeçalho do sistema na representação gráfica. A seguinte figura apresenta a sintaxe gráfica e textual da especificação no nível de sistema.

Representação gráfica:

Representação textual:

system <nome do sistema>

    <declarações>

    <blocos>

endsystem [<nome do sistema>];

Figura 2.1 Sintaxe da especificação de um sistema

2.2 Declarações

As declarações em SDL são feitas na área de declarações dentro do símbolo de texto. Este pode ser colocado em diferentes localizações dentro do diagrama do sistema. A sintaxe das declarações dentro do símbolo de texto é idêntica à sintaxe da representação textual.

2.3 Especificação de sinais

Sinais de determinado tipo podem ser usados em vários contextos dentro de uma especificação. Por exemplo, tais sinais podem ser enviados por diferentes processos para propósitos diferentes. A seguir temos a sintaxe da definição de sinais.

<signal specification> ::=

signal <signal name> [(<sort name> {,<sort name>}*)]

{ ,<signal name> [(<sort name> {,<sort name>}*)] }*;

Exemplo de especificação de sinais:

signal Coin_10, Coin_50, Coin_100, Choice, Overpay, Empty, Status(Boolean);

2.4 Interações entre blocos

A interação entre os blocos se dá através dos canais do sistema. Para se definir quais blocos interagem no sistema usa-se a seguinte sintaxe dentro da especificação do sistema.

block <nome do bloco> referenced;

A sintaxe indica que o bloco <nome do bloco> pertence ao sistema corrente. A representação gráfica dos blocos pode ser vista na figura 1.3.

2.5 Especificação de canais

Canais em SDL podem ser tanto uni ou bidirecionais. O último caso é semelhante a termos dois canais unidirecionais. Os nomes dos sinais que podem trafegar nos canais ficam dentro da lista de sinais associada com cada direção de transporte. Para canais bidirecionais teremos então duas listas de sinais, uma para uma direção e outro para a direção oposta.

Sintaxe gráfica:

Sintaxe textual:

channel <nome do canal>

    from {<nome do bloco> | env}

    to {<nome do bloco> | env}

      with <lista de sinais>;

    [from {<nome do bloco> | env}

    to {<nome do bloco> | env}

      with <lista de sinais>;]

endchannel [<nome do canal>];

Figura 2.2 Sintaxe da especificação de canais

A expressão env representa o ambiente onde um canal pode estar conectado. Pelo menos umas das pontas de um canal deve estar conectada a um bloco. Se o canal for bidirecional, as duas direções, na sintaxe textual, devem ser complementares (por exemplo, from Dialogue to env; from env to Dialogue).

2.6 Exemplo

O seguinte exemplo mostra a especificação de um sistema em sintaxe tanto textual quanto gráfica. O sistema é uma máquina para venda de balas tofe que aceita certas interações e moedas do ambiente e então oferece ao ambiente como saída algum artigo. A especificação possui dois blocos que se comunicam entre si. Um bloco é de diálogo e outro um gerenciador de estado.

system Toffee_Vendor;

endsystem Toffer_Vendor;