next up previous contents
Next: Exercícios Up: Especificação de propriedades temporais Previous: Classes e exemplos de

  
Pequeno caso de estudo

Considere agora a especificação SPL apresentada na figura 2.2. Este programa é uma possível solução para o exercício 7 do capítulo anterior.


  
Figure 2.2: Possível solução para o controlador de um cruzamento

local aprox_carro, aprox_comboio : bool where 
      (aprox_carro, aprox_comboio ) = (false, false);
local cancela_aberta, sinal_verde : bool where 
      (cancela_aberta, sinal_verde) = (false, false);

Estrada :: [
        e0: loop forever do [
                e1: noncritical;
                e2: aprox_carro := true;
                e3: await cancela_aberta;
                e4: critical;
                e5: aprox_carro := false
        ]
]
||
Carril :: [
        c0: loop forever do [
                c1: noncritical;
                c2: aprox_comboio := true;
                c3: await sinal_verde;
                c4: critical;
                c5: aprox_comboio := false
        ]
]
||
Controlador :: [
        s0 : loop forever do [
                s1: when (aprox_carro) do [
                        s2:cancela_aberta := true; 
                        s3: await (!aprox_carro); 
                        s4: cancela_aberta := false
                ]
                or 
                s5: when (aprox_comboio) do [
                        s6:sinal_verde := true; 
                        s7: await (!aprox_comboio); 
                        s8: sinal_verde := false
                ]
        ]
]




Algumas das propriedades, e respectivas fórmulas temporais, que seria possível definir sobre esse programa são2.2:


next up previous contents
Next: Exercícios Up: Especificação de propriedades temporais Previous: Classes e exemplos de

1999-05-25