CIn.ufpe.br CSP-Z Disciplina: Especificação de Sistemas Distribuídos Mestrado em Ciências da Computação Aleciano Jr. Leonilson Barbosa Renata Braga
CIn.ufpe.br Agenda x Y Model-checking de CSP-Z
CIn.ufpe.br Z - O que é? x Y z
CIn.ufpe.br Z - Características x Y z
CIn.ufpe.br Z – Tipos e Variáveis x Y z
CIn.ufpe.br Z – Predicados x Y z
CIn.ufpe.br Z – Esquemas x Y z
CIn.ufpe.br Z – Operações x Y z
CIn.ufpe.br Z – Exemplo x Y z
CIn.ufpe.br CSP-Z – O que é? x Y z
CIn.ufpe.br CSP-Z – Sintaxe e Semânticas x Y z
CIn.ufpe.br CSP-Z Como verificar o comportamento das especificações CSP-Z e também as suas propriedades?
CIn.ufpe.br CSP-Z – Model-checking
CIn.ufpe.br CSP-Z – Model-checking Como caracterizar a parte de Z em CSP? Como será o comportamento do CSP baseado nesses estados de Z? Como combinar e sincronizar as duas partes? Exemplo com um buffer finito.
CIn.ufpe.br CSP-Z – Model-checking
CIn.ufpe.br CSP-Z – Model-checking Forma comum de representar um estado em CSP é pela parametrização Buffer(State) = in?x -> Buffer(State') Para representar o estado de espaços em Z usa-se um conjunto de tuplas: Para o exemplo do Buffer, se torna: State = {s | s <- FSeq(T, n) } E o estado inicial: Init = { s'| s' }
CIn.ufpe.br CSP-Z – Model-checking Restringindo o comportamento de CSP como função do espaço de estados: s != <> & out!y -> Buffer(State') >> Tomando o exemplo do canal out As partes de Z se tornam processos
CIn.ufpe.br CSP-Z – Model-checking com(s, In.t) = {s' | s' } com(s, Out.t) = {s' | s', t==head(s), s'==tail(s) } Como dito antes, CSP e Z se combinam através de uma composição paralela, então define-se a Interface: Channels = {|in,out|} lChannels = {} Interface = union(Channels, lChannels)
CIn.ufpe.br CSP-Z – Model-checking Então, a parte de Z como um processo, sem a inicialização, fica: Z(State) = ( [] (States,Comm) <-{ (com(State, c), c) | c<-Interface States != {} & |~| State': Comm -> Z(State') ) [] terminate -> SKIP Então, a parte de Z incluindo a inicialização, fica: Z_CSP = let Z(state) = ( como definido acima ) within |~| iState: Z(iState)
CIn.ufpe.br CSP-Z – Model-checking Combinando a parte de Z (em CSP) e a própria parte de CSP, finalmente, temos:... within (main [|Interface|] Z_CSP ) \lChannels A composição paralela por meio dos eventos em Interface une as partes de Z e CSP. O hidding é necessário pois em CSP não existe forma de modularizar da mesma forma que com especificações CSP-Z.
CIn.ufpe.br CSP-Z – Model-checking P = let -- The Interface Channels = {|...|} lChannels = {|...|} Interface = union(Channels, lChannels) -- The CSP Part main = The Z Part State = {...} Init = {...} com(sTuple, Comm) = {...}... Z_CSP =... within (main [|Interface|] Z_CSP)\lChannels
CIn.ufpe.br CSP-Z – Model-checking Executando no ProBE Ferramenta de conversão de CSP-Z para CSP-M –Autores: Adalberto Farias, Alexandre Mota e Augusto Sampaio (2001) –Desenvolvida na linguagem Java
CIn.ufpe.br CSP-Z – Considerações Finais x Y z
BOA TARDE!