Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos.

Slides:



Advertisements
Apresentações semelhantes
Programação orientada a objetos
Advertisements

Recursividade Inhaúma Neves Ferraz
Sistemas Concorrentes com CSP e Java
UML Modelando um sistema.
Chain of Responsibility
Linguagens de Programação Orientadas a Objetos
Recursividade Inhaúma Neves Ferraz
Walfredo Cirne walfredo.dsc.ufpb.br
Walfredo Cirne Threads Walfredo Cirne
Programação Concorrente
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Sincronização de Threads
JAVA: Conceitos Iniciais
Concorrência em Java Threads em Java.
Monitores.
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Infra-Estrutura de Comunicação (IF678)
P ROGRAMAÇÃO ORIENTADA A ASPECTOS Equipe: Leandro Oliveira Anusio Menezes.
Tecnologia para Web Tratamento de Exceções
Chamada Remota de Procedimentos
Introdução à Programação Orientada a Objetos com Java
Sistemas Distribuídos
Concorrência STRD.
Alexandre Mota/Augusto Sampaio {acm,
Um Framework Para Testes
Augusto Sampaio e Paulo Borba Centro de Informática
1 Mobilidade de Código com μcode Projeto Giga Alexandre Lages
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Classes Abstratas e Interfaces.
Introdução à Programação Orientada a Objetos com Java Paulo Borba Centro de Informática Universidade Federal de Pernambuco Conceitos Básicos de Concorrência.
Orientação a Objetos e Java Graduação em Ciência da Computação
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Processos.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Linguagem II Exceções.
Processos.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Capturando Requisitos com Use Cases Disciplina: Estudo do RUP Autor: Tiago Lima Massoni Orientacao: Augusto Sampaio Paulo Borba.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Exceções Profa. Patrícia A. Jaques Alterada por Leandro Tonietto abr-15.
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
Linguagem I Strings.
Herança e Arquitetura em camadas
Aula Prática 5 05/05/2010. //Estrutura do método public int subtrair (int a, int b){ //Calcule a operação desejada. int resultado = a – b; //Retorne o.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Socket em Java.
Sistemas Distribuídos Aula 05 – Programação Multithread/Paralela
Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Operadores De Escolha e Leis Algébricas.
Aula prática de Concorrência Equipe de Monitoria: Bruno Pereira - bpe Davi Pires - dpr Guilherme Barros – gbs2 Thiago Cavalcanti - trc.
Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Composição Paralela Síncrona e Alfabetizada.
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Processo Dirigido Pelos Use Cases Disciplina: Estudo do RUP Autor: Tiago Lima Massoni Orientação: Augusto Sampaio Paulo Borba.
Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Entrelaçamento e Composição Paralela Generalizada.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Exceções.
Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos Parte 2.
Capítulo 8 Threads.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Sistemas Operacionais Distribuídos
Engenharia de Software com o RUP - Workflow de Requisitos
Infra-Estrutura de Comunicação (IF678) Aula Prática 03 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1 Análise e Projeto de Sistemas Modelagem de Requisitos com Casos de Uso.
ProgramaçãoConcorrente Glêdson Elias
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Transcrição da apresentação:

Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos

Detalhes sobre o curso

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 Especificaçã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;} } Implementação

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) Operações

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: – ialDeEnsino/Apresentacao/MaquinaDeEsta dosDoPDV.dochttp:// 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 Especificaçã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;} } Implementaçã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 Sincronizaçã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; }... } Implementação

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 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 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

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 Sistemas Distribuídos

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 Especificação Formal 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

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 CSP