Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação:...

31
Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011

Transcript of Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação:...

Page 1: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Estudo de casoSistema de elevador

Criação: jun/2011

Page 2: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Projeto

Projeto

ProjetoArquitetural

Projeto Intermediário

ProjetoDetalhado

Page 3: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Projeto

Projeto

ProjetoArquitetural

Projeto Intermediário

ProjetoDetalhado

• Definir tarefas e threads

•Definir componentes e sua distribuição

• Aplicar padrões arquiteturais para:

- Tratamento de erros global

- Tratamento de inocuidade (safety)

- Tolerância a falhas

Page 4: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Projeto

Projeto

ProjetoArquitetural

Projeto Intermediário

ProjetoDetalhado

• Definir tarefas e threads

•Definir componentes e sua distribuição

• Aplicar padrões arquiteturais para:

- Tratamento de erros global

- Tratamento de inocuidade (safety)

- Tolerância a falhas

Page 5: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Exemplo de código multithread em Javaclass Controlador{

/*...*/

public void iniciarTrabalho(){

// cria objeto trabalhador para realizar tarefaTrabalhador trab = new Trabalhador(/*...*/);

Thread t = new Thread(trab);// inicia nova thread para realizar tarefat.start();

}}

Page 6: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Exemplo de código multithread em Java

class Trabalhador implements Runnable {/* … */

@Overridepublic void run() {

fazAlgumTrabalho();}

private void fazAlgumTrabalho() {// ...

}}

Page 7: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Exemplo de código multithread em Java

Page 8: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Diagrama de tarefas

Page 9: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Diagrama de atividades: Requisição do andar

Page 10: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Projeto

Projeto

ProjetoArquitetural

Projeto Intermediário

ProjetoDetalhado

• Definir tarefas e threads

•Definir componentes e sua distribuição

• Aplicar padrões arquiteturais para:

- Tratamento de erros global

- Tratamento de inocuidade (safety)

- Tolerância a falhas

Page 11: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Revisão das classes de análise

Interface com motores de elevador e porta Classe para interface com Motor

Informações persistentes sobre o sistema Número de elevadores Número de andares

Classe Prédio

Page 12: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Revisão dos casos de uso

Chamar elevador

Selecionar andar

Pararelevador no

andar

BotãoPainel

LampadaPainel

SensorChegada

BotãoAndar

Operador

LampadaAndar

Controlarelevador

Mover elevador

«include» «include»

Motor

Page 13: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Classes de fronteira (View)

Page 14: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Classes de controle (Control)

Page 15: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Classes de modelo (Model)

Page 16: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Classes de fronteira (View)

Page 17: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Page 18: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Arquitetura de camadas (MVC – Model View Control)

Page 19: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Componentes de interface (View)

Page 20: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Componente de controle (Control)

Page 21: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Componente de modelo (Model)

Page 22: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Diagrama de implementação

Page 23: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Projeto

Projeto

ProjetoArquitetural

Projeto Intermediário

ProjetoDetalhado

• Definir tarefas e threads

•Definir componentes e sua distribuição

• Aplicar padrões arquiteturais para:

- Tratamento de erros global

- Tratamento de inocuidade (safety)

- Tolerância a falhas

Page 24: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Watchdog Pattern Watchdog é implementado como um componente que

recebe sinais periódicos (heartbeats), ou em sequência determinada de outros componentes a serem monitorados

Se o componente monitorado envia os sinais muito cedo, muito tarde ou fora de sequência o watchdog inicia ações de correção (reiniciar o componente, enviar alertas para administradores, ou outros mecanismos mais elaborados de recuperação de erro)

Page 25: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Watchdog Pattern

Page 26: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Watchdog Pattern

Page 27: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Projeto

Projeto

ProjetoArquitetural

Projeto Intermediário

ProjetoDetalhado

• Detalhar as colaborações entre objetos

• Aplicar padrões de projeto

Page 28: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Projeto

Projeto

ProjetoArquitetural

Projeto Intermediário

ProjetoDetalhado

• Detalhar as colaborações entre objetos

• Aplicar padrões de projeto

Page 29: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Projeto

Projeto

ProjetoArquitetural

Projeto Intermediário

ProjetoDetalhado

• Definir implementação das relações entre objetos

• Definir contratos para as operações e para as classes

• Definir modelo de tratamento de exceções para as classes

• Definir precisamente os tipos e domínios de valores de atributos

• Definir algoritmos para operações mais complexas

Page 30: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Tradução

Tradução

• Definir implementação das relações entre objetos

• Definir contratos para as operações e para as classes

• Definir modelo de tratamento de exceções para as classes

• Definir precisamente os tipos e domínios de valores de atributos

• Definir algoritmos para operações mais complexas

• Preparar, projetar e executar os Testes de Unidade

Page 31: Eliane Martins - Instituto de Computação - UNICAMP Estudo de caso Sistema de elevador Criação: jun/2011.

Eliane Martins - Instituto de Computação - UNICAMP

Testes

Testes

• Criar planos de testes:

- Testes de Integração

- Testes Validação

• Projetar, implementar e executar os casos de teste