3.Especificação de blocos

3.1 Regras

3.2 Sintaxe gráfica e textual de um bloco

3.3 Definição dos processos

3.4 Definição das rotas de sinais

3.5 Conectando rotas de sinas com canais

3.6 Exemplo


Uma especificação a nível de blocos descreve um conjunto de processos que interagem entre si e com canais do sistema que contém o bloco, tudo isso através de rotas de sinais. Essa interação é alcançada novamente através da troca de sinais. Dentro de uma rota de sinais, diferentemente dos canais, os sinais não sofrem atraso e sua ordem é preservada. As rotas de sinais comunicam processos mas também podem lidar com as bordas de um bloco, onde as rotas são conectadas então aos canais da especificação. Isto distingue a especificação de um bloco da especificação de um sistema.

Como na especificação do sistema aqui novamente a comportamento dinâmico do bloco não é alcançado de forma direta mas sim derivado do comportamento dos processos contidos no bloco.

3.1 Regras

3.2 Sintaxe gráfica e textual de um bloco

Os blocos possuem uma sintaxe gráfica e textual muito similar à sintaxe da especificação.

Sintaxe gráfica:

Sintaxe textual:

block <nome do bloco>;

    <declarações>

    <processos>

endblock [<nome do bloco>];

Figura 3.1 Sintaxe da especificação de um bloco

3.3 Definição dos processos

Na representação gráfica, os processos são apresentados através do símbolo de processo que contém seu nome. A definição dos processos de um bloco, novamente, é muito semelhante a definição dos blocos de um sistema.

Sintaxe gráfica:

Sintaxe textual:

process <nome do processo> referenced;

Figura 3.2 Sintaxe da definição dos processos de um bloco

3.4 Definição das rotas de sinais

Uma rota de sinais pode ser tanto uni quanto bi-direcional. O nome dos sinais que podem passar por determinada rota são apresentados na lista de sinais associadas com cada direção da rota. Desta forma para rotas de sinais bi-direcionais temos duas listas de sinais, uma para cada sentido.

Sintaxe gráfica:

Sintaxe textual:

signalroute <nome da rota>

    from {<nome do processo> | env}

    to {<nome do processo> | env}

      with <lista de sinais>;

    [from {<nome do processo> | env}

    to {<nome do processo> | env}

      with <lista de sinais>;]

Figura 3.3 Sintaxe da especificação de rotas de sinais

Aqui, temos novamente a presença da expressão env. Enquanto que na especificação do sistema env era o meio pelo qual os canais de comunicavam com o ambiente, na definição dos blocos env é o meio pelo qual as rotas de sinais comunicacam-se com os canais da especificação.

3.5 Conectando rotas de sinas com canais

Para definirmos uma conexão rota de sinais/canal temos a seguinte sintaxe gráfica:

connect <nome do canal> and <nome da rota> {,<nome da rota>}*;

Pela sintaxe podemos observar que é possível conectar em um mesmo canal mais de uma rota de sinal. Isso é válido porque dentro de um bloco sinais que provem de um mesmo canal podem ser tratados por processos diferentes. A forma de levar esses sinais aos processos corretos é definindo-se rotas que vão de um mesmo canal aos processos desejados.

A sintaxe gráfica da conexão é novamente semelhante à sintaxe da definição dos canais. Basta conectar uma rota de sinais à borda do bloco. A única diferença reside no fato de que na borda do bloco deve ser indicado também a qual canal está conectada a rota.

3.6 Exemplo

O exemplo a seguir apresenta a definição do bloco Dialogue do sistema apresentado no capítulo anterior.

block Dialogue;

endblock Dialogue;