Especificação de Sistemas
Distribuídos
Modelo CSPm - Estacionamento
Equipe:
Rafael Araújo ([email protected])
Ingridd Brito ([email protected])
Sistema
• Sistema de estacionamento de um local genérico;
• Possui possibilidade de pagamento tanto em um Caixa quanto na Cancela
de Saída (caso o pagamento seja necessário);
• O pagamento pode ser realizado utilizando cartão de crédito ou dinheiro se
realizado no Caixa;
• Se realizado na Cancela de Saída, o único meio aceito é via cartão de
crédito.
Sistema
• Os veículos poderão entrar por uma das Cancelas de Entrada disponíveis;
• Os mesmos poderão realizar o pagamento no caixa, dadas as devidas
sincronizações;
• Ou podem realizar o mesmo na Cancela de Saída;
• O Servidor é responsável por armazenar e gerenciar a sequência de tuplas
(placa, hora) dos carros que entram no estacionamento através da Cancela
de Entrada.
Componentes
• O sistema é composto por:
• Datatypes, conjuntos e sequências;
• Funções.
• Canais e eventos;
• Processos;
Datatypes, Conjuntos e Sequências
• Datatypes:
• datatype
PLACAS = KGC3920 | KHJ2103 | KLA9123 |
KFL1984
• Representam as placas dos veículos;
Datatypes, Conjuntos e Sequências
• Datatypes:
• datatype
MENSAGEM= RetireTicket | PlacaExistente|
BemVindo| TempoEsgotado| Obrigado
• Representam as mensagens que são exibidas para o usuário/veículo durante
algumas das operações;
Datatypes, Conjuntos e Sequências
•
•
•
•
•
Alguns dos conjuntos presentes no sistema:
RANGE = {1..3} //Capacidade de determinados processos.
HORA = {1200, 1300, 1400, 1500} -- Simulam um horário de
entrada de um veículo.
VEICULOS = {1..2} // Quantidade de veículos.
Representam as mensagens que são exibidas para o usuário/veículo durante algumas das
operações;
Datatypes, Conjuntos e Sequências
• Sequência utilizada no Sistema:
• TICKETS
= <>
• Esta sequência armazena pares de placas e horas (i.e. (KGC3920, 1200)) de
modo a representar os horários os quais as placas (veículos) entraram no
estabelecimento.
Funções
•
•
•
•
Funções utilizadas no sistema (assinaturas):
placaJaCadastrada(p, <>)
placaJaCadastrada(p, <(placa, hora)> ^ ticketsRestantes)
Utilizada para determinar se uma placa já existe na sequência para que não haja
veículos com a mesma placa em horários diferentes.
Funções
• Funções utilizadas no sistema (assinaturas):
• GetHora(p,
t) = { h | h <- HORA, elem((p, h), t) }
• Utilizada para retornar um horário de entrada (h) relacionado a uma
determinada placa (representada por p).
Funções
•
•
•
•
Funções utilizadas no sistema (assinaturas):
RemovePlaca(placa, <>) = <>
RemovePlaca(p, <(placa, hora)> ^ placasRestantes)
Utilizada para remover a placa de uma sequência, onde a entrada é dada por uma própria
sequência que é dividida em head e tail através da concatenação de elementos e é analisada
separadamente até que a placa desejada seja encontrada, então, a concatenação dos elementos
previamente analisados e os restantes serão retornados como uma única sequência.
Canais e Eventos
• Alguns dos Canais de Dados e Eventos presentes no sistema:
• channel
levantaCancela, baixaCancela
• Representam ações de um processo que não recebem dados, normalmente
utilizadas como alfabeto de sincronização ou operações únicas;
Canais e Eventos
•
Alguns dos Canais de Dados e Eventos presentes no sistema:
•
channel enviaDados: RANGE.PLACAS.HORA
•
Representam ações de um processo que recebem dados, onde há a comunicação
(output) de um processo X para a entrada (input) de um processo Y. Estas
representam operações que operam sobre dados ou que irão gerar eventos
baseados em valores transientes (calculados) sobre tais dados;
Processos
•
•
•
Exemplo de Processo encontrado no sistema:
CancelaEntrada(n) = recebeDados!n?p -> leHora!n?hora ->
enviaDados!n!p!hora -> entregaTicket.n -> abrirCancela.n
-> display!BemVindo-> fecharCancela.n ->
CancelaEntrada(n)
Representam um conjunto de ações (eventos) com trasmissão de dados ou não,
estes denotam o comportamento do processo de maneira contínua;
Processos
•
•
•
Exemplo de Processo encontrado no sistema:
Servidor(T) = (enviaDados?n?placa?hora -> if (not
placaJaCadastrada(placa, T)) then Servidor(T ^ <(placa,
hora)>) else display!PlacaExistente -> Servidor(T))
Neste caso, faz-se o uso da sequência presente no sistema, estruturas de controle
if-then-else e avaliação de expressões provenientes de funções.
Avaliações
•
•
•
•
•
Para determinar algumas propriedades do sistema são utilizadas algumas asserções, tais como:
assert CancelaEntrada(1) :[deterministic]
assert CancelaEntrada(1) :[deadlock free]
assert CancelaEntrada(1) :[livelock free]
Estas representam, respectivamente, a presença de determinismo em um processo (ou
composições, escolhas, etc. entre eles), a presença de deadlock e livelock, dada a análise unitária
ou em conjunto com outros processos.
Avaliações
•
Exemplo de asserções relativas a interação entre processos:
•
CancelaEntradaANDVeiculo = CancelaEntrada(1) [|{|recebeDados|}|]
Veiculo(1)
•
•
•
assert CancelaEntradaANDVeiculo :[deterministic]
•
assert CancelaEntradaANDVeiculo :[deadlock free]
assert CancelaEntradaANDVeiculo :[livelock free]
Mesmos conceitos presentes na análise de um único processo, a diferença é a avaliação como um todo para
quaisquer processos envolvidos e suas operações, havendo sincronização ou não.
Refinamento
• Para availiar se um processo "melhora" o outro em determinado modelo
(Traces, Falhas, Falhas-Divergências) foram utilizadas as seguintes
asserções:
assert TotalVeiculos_UNREF [T= TotalVeiculos_REF
assert TotalVeiculos_UNREF [F= TotalVeiculos_REF
assert TotalVeiculos_UNREF [FD= TotalVeiculos_REF
Refinamento
•
Para esta avaliação, foram utilizados os seguintes processos:
•
TotalVeiculos_UNREF = |~| x: VEICULOS @ Veiculo(x) -Processo com não-determinismo proposital, proveniente da
escolha interna
•
TotalVeiculos_REF = [] x: VEICULOS @ Veiculo(x) -Processo que refinará o anterior, utilizando escolha
externa
Melhorias no Modelo
• Interação entre Processos da Cancela de Saída e Veículo;
• Utilização do servidor ao sincronizar dados com o Caixa, ao invés de utilizar
uma função como filtro de valores.
Considerações Finais
• Todos os processos foram avaliados nas 3 proposições de asserção;
• Deadlocks esperados estão marcados no modelo (.csp);
• Operações de dados foram realizadas utiizando índices para indicar qual o
evento e qual o processo que originou este evento, durante a sincronização /
paralelismo.
Download

Apresentação do PowerPoint