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

Post on 07-Apr-2016

217 views 2 download

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

Eliane Martins - Instituto de Computação - UNICAMP

Estudo de casoSistema de elevador

Criação: jun/2011

Eliane Martins - Instituto de Computação - UNICAMP

Projeto

Projeto

ProjetoArquitetural

Projeto Intermediário

ProjetoDetalhado

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

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

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();

}}

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() {// ...

}}

Eliane Martins - Instituto de Computação - UNICAMP

Exemplo de código multithread em Java

Eliane Martins - Instituto de Computação - UNICAMP

Diagrama de tarefas

Eliane Martins - Instituto de Computação - UNICAMP

Diagrama de atividades: Requisição do andar

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

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

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

Eliane Martins - Instituto de Computação - UNICAMP

Classes de fronteira (View)

Eliane Martins - Instituto de Computação - UNICAMP

Classes de controle (Control)

Eliane Martins - Instituto de Computação - UNICAMP

Classes de modelo (Model)

Eliane Martins - Instituto de Computação - UNICAMP

Classes de fronteira (View)

Eliane Martins - Instituto de Computação - UNICAMP

Eliane Martins - Instituto de Computação - UNICAMP

Arquitetura de camadas (MVC – Model View Control)

Eliane Martins - Instituto de Computação - UNICAMP

Componentes de interface (View)

Eliane Martins - Instituto de Computação - UNICAMP

Componente de controle (Control)

Eliane Martins - Instituto de Computação - UNICAMP

Componente de modelo (Model)

Eliane Martins - Instituto de Computação - UNICAMP

Diagrama de implementação

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

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)

Eliane Martins - Instituto de Computação - UNICAMP

Watchdog Pattern

Eliane Martins - Instituto de Computação - UNICAMP

Watchdog Pattern

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

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

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

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

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