Especificação de Sistemas
Distribuídos
Alexandre Mota/Augusto Sampaio
{acm, acas}@cin.ufpe.br
Motivação

Lidar com tarefas simultaneamente
não é simples



Memória compartilhada ou troca de
mensagens
Deadlock, livelock e não-determinismo
Especificação muito longe da
implementação
Objetivo



Modelar sistema concorrente e/ou
distribuído usando uma linguagem de
especificação (CSP)
Analisar propriedades dessa
especificação
Detalhar (refinar) a especificação até
chegar em implementação
(JCSP/UML-RT)
CSP




Notação conveniente para modelar
sistemas concorrentes
Alto nível de abstração
Ferramentas para analisar
propriedades automaticamente
Possui biblioteca para Java (JCSP)
Exemplo de CSP

Considere o problema do jantar dos
filósofos, com 5 filósofos envolvidos
PHIL(0)
FORK(0)
FORK(1)
PHIL(1)
PHIL(4)
FORK(2)
FORK(4)
FORK(3)
PHIL(3)
PHIL(2)
Exemplo de CSP
PHIL(i) = sitdown.i -> pickup.i.inc(i) -> pickup.i.i ->
putdown.i.inc(i) -> putdown.i.i -> getup.i -> PHIL(i)
FORK(i) = pickup.i.i -> putdown.i.i -> FORK(i)
[] pickup.dec(i).i -> putdown.dec(i).i -> FORK(i)
PHILS = || i:{0..4} @ [{|...|}] PHIL(i)
FORKS = || i:{0..4} @ [{|...|}] FORK(i)
COLLEGE = PHILS [ |...| ] FORKS
ProBE



Será que nossa especificação CSP se
comporta como imaginamos?
Para saber isso, podemos animar seu
comportamento através de ProBE
Vamos exercitar o exemplo anterior
(dphil.csp) com o ProBE…
FDR

Será que nossa especificação CSP
obedece a requisitos essenciais sobre
sistemas concorrentes e distribuídos?


Dealock, Livelock e Não-determinismo
Vamos investigar nosso exemplo
usando o verificador de modelos
FDR…
Projeto 1




Escolher sistema concorrente para
ser especificado
A partir da modelagem, estudar as
seguintes propriedades clássicas:
deadlock, livelock e determinismo
Na presença indesejável, ajustar o
modelo
Resultado: modelo e análises básicas
JCSP





Biblioteca para Java que suporta CSP
Programação concorrente elegante
Possível usar memória
compartilhada/passagem de
mensagens
Todos os recursos de Java
Talvez requeira refinamento
Ou UML-RT…
Projeto 2





A partir do modelo em CSP, implementar
em JCSP
Adicionar à implementação requisitos nãofuncionais
Portanto, o projeto deve ser desafiador e
não meramente teórico
Pode usar dos conceitos usados nos
fundamentos
Resultado: documentação de descrição,
programa e análise com o Java PathFinder
Jantar Filósofos em JCSP
Jantar Filósofos em JCSP
Jantar Filósofos em JCSP
Java PathFinder

Java PathFinder (JPF) is a system to verify
executable Java bytecode programs. In its
basic form, it is a Java Virtual Machine
(JVM) that is used as an explicit state
software model checker, systematically
exploring all potential execution paths of a
program to find violations of properties
like deadlocks or unhandled exceptions
(JPF site)
Desenvolvendo o Sistema
ProBE, FDR
FDR
FDR
Análise
Projeto
Projeto
(CSP)
(CSP)
(CSP)
JPF
…
Implementação
(JCSP)
(JCSP)
(UML-RT)
(Java)
(CSP.Net)
(CSP.Net)
Análise automática de propriedades
{deadlock, livelock, determinismo}
Projeto baseado em Refinamento
Avaliação




Projeto CSP (A)
Projeto JCSP (B)
Prova (C)
Nota = ((A+B)/2+C)/2
Presença requisitada
Definir projeto até 03/10/07
Referências







Andrews, G.R. Multithreaded, Parallel, and
Distributed Programming. Addison-Wesley, 2000.
Roscoe, A.W. The Theory and Practice of
Concurrency. Prentice-Hall, 1998.
Hoare, C.A.R. Communicating Sequential Processes.
Prentice-Hall, 1985.
Welch, P. Communicating Sequential Processes for
Java. 2003.
CSP.Net
QuickStone. JCSP Network Edition. 2004.
QuickStone. xCSP Technology. 2004.
Download

CSP