Especificação de
Sistemas Distribuídos
Paulo Borba e Augusto Sampaio
Centro de Informática
Universidade Federal de Pernambuco
Detalhes sobre o curso
• http://www.cin.ufpe.br/~phmb/CSPZ
Especificação
• O que o sistema
faz? Que serviços o
sistema oferece?
• Que objetos são
manipulados pelo
sistema?
• Abstrair detalhes
irrelevantes
• Análise e Projeto
Implementação
class Conta {
private double saldo;
private String numero;
Conta (String n) {numero = n; saldo = 0;}
void credito(double valor) {saldo = saldo + valor;}
void debito(double valor) {saldo = saldo - valor;}
String numero() {return numero;}
double saldo() {return saldo;}
}
Operações
• Tanto na especificação quanto na
implementação de um sistema
temos que considerar não só
– as operações que são oferecidas pelo
sistema, mas também
– quando tais operações podem ser
executadas (a ordem em que as
operações podem ser executadas)
Especificação
credito, debito, saldo, numero
EmOperacao
• Quando cada
operação pode
ser executada?
• Em que estados
ou situações
uma operação
pode ser
executada?
• Máquina de
estados
Especificação
• Uma máquina de estados real:
– http://www.cin.ufpe.br/~phmb/CSPZ/Mater
ialDeEnsino/Apresentacao/MaquinaDeEsta
dosDoPDV.doc
• Especificação da ordem de
execução das operações:
– útil para sistemas sequenciais
– essencial para sistemas concorrentes e
distribuídos
Implementação
class Conta {
private double saldo; ...
synchronized void credito(double valor) {
saldo = saldo + valor’;
}
synchronized void debito(double valor) {
saldo = saldo - valor;
}
synchronized String numero() {return numero;}
synchronized double saldo() {return saldo;}
}
Sincronização
• Necessário para
– evitar interferências indesejadas na
execução dos métodos de um objeto
– controlar acesso a recursos compartilhados
• Um objeto só pode executar um método
synchronized por vez
– Um objeto pode executar vários métodos
não sincronizados ao mesmo tempo que
está executando um método synchronized
Implementação
class Conta {
private double saldo; ...
synchronized void credito(double valor) {
saldo = saldo + valor; notifyAll();
}
synchronized void debito(double valor) {
while (saldo < valor) wait();
saldo = saldo - valor;
}
...
}
Monitores
• O comando notifyAll acorda todos os
processos esperando para executar um
método do objeto que executou o notifyAll
– O comando notify só acorda um dos
processos (escolha arbitrária)
• O comado wait só pode ser usado dentro
de um método synchronized; o processo
executando o comando é posto para
esperar e a restrição de sincronização é
liberada
Sincronização e
Monitores
• Devem ser usados com muito
cuidado:
– é fácil introduzir erros e levar o sistema
a deadlock ou livelock
• A especificação do sistema é
essencial para guiar a introdução de
sincronização ou operações de
monitores
Sincronização e
Monitores
class File {
private String text;
private File otherPart;...
void print(String message) {
System.out.println(text+" by thread "+message);
}
void printAll(String message) {
this.print(message);
otherPart.printAll(message);
}
}
Sistemas Distribuídos
• Sistemas cliente-servidor (2, 3, n
camadas)
– Sistemas de informação tradicionais
• Sistemas distribuídos
– Sistema de automação de loja
– Aplicações para ensino à distância
Sistemas Distribuídos
Sistemas Distribuídos
Sistemas Distribuídos
• Concorrência é inerente aos sistemas
cliente-servidor e distribuídos:
– recursos sendo compartilhado,
execuções simultâneas
• É essencial considerar a ordem em
que as operações são executadas
para evitar interferência, deadlock, e
livelock
Sistemas Distribuídos
• Devido a concorrência, têm um alto
grau de não-determinismo
• A realização de testes não é efetiva
para garantir a corretude dos sistemas
• É necessário utilizar métodos formais
para especificação dos sistemas:
– garantia de que a implementação
corresponde à especificação
– abstrair detalhes irrelevantes
Especificação Formal
• Z
• Especificação dos
aspectos sequencias
• Quais são as
operações e o que
elas fazem?
• Implementação
detalha como a
operação é realizada
• CSP
• Especificação dos
aspectos concorrentes
• Quando as operações
podem ser executadas
e em que ordem?
• Implementação
garante que a ordem
de execução é
satisfeita
CSP
• Foco inicial na ordem em que as
operações podem ser executadas
– depois considera-se o que cada operação
deve fazer
• Outras aplicações para CSP:
– projeto de interface com o usuário
– fluxo de eventos dos use cases
Download

Apresentacao