Cápsulas, Protocolos, portas e
conexões em UML-RT
Classes Ativas
- Facilitar a introdução de conceitos de
concorrência no projeto
• Abordagens já existentes: ROOM, UML-RT, EDOC
- Abstrair a implementação da comunicação
• Troca de mensagens X chamada de procedimentos
- Fluxo de execução independente do restante do
sistema
Notação utilizada no Curso
- Cápsulas, Protocolos, Portas, Conexões
Qualiti Software Processes
Projetar cápsulas | 2
Copyright © 2005 Qualiti. Todos os direitos reservados.
Motivação
Identificando Cápsulas
- Representa uma thread lógica do sistema
- Fluxo de controle independente no sistema
Qualiti Software Processes
Projetar cápsulas | 3
Copyright © 2005 Qualiti. Todos os direitos reservados.
Cápsula
Cápsulas
Copyright © 2005 Qualiti. Todos os direitos reservados.
Nome
Atributos
Métodos
Portas
Atributos e métodos: privados
Portas: públicas ou protegidas
Comportamento: diagrama de estados
Qualiti Software Processes
Análise e Projeto OO com UML para Sistemas RT| 4
Exemplo: Produtor-Consumidor
produz(): Q
#/ timer
+/ porta
Consumidor
consome(q: Q)
Comunicacao
incoming
+/ porta~
outgoing
envia(Q )
Produtor
transicão inicial
Produzindo
timeout/
produz();
porta.envia.send(q);
Consumidor
transicão inicial
Esperando
envia/
consome(q);
Qualiti Software Processes
Projetar cápsulas | 5
Copyright © 2005 Qualiti. Todos os direitos reservados.
Produtor
Comprar Ações
(from transacoes)
Cliente
(from atores)
Vender Ações
(from transacoes)
Operadora Mercado de Ações
(from atores)
Consultar Cotações
(from consultas)
Relógio
(from atores)
Atualizar Cotações
(from transacoes)
Qualiti Software Processes
Projetar cápsulas | 6
Copyright © 2005 Qualiti. Todos os direitos reservados.
Caso de uso – Atualizar Cotações
Gráfico de interações entre cápsulas
Caso de Uso: Atualizar Cotação
interrupcao
<<Capsule>>
ControladorAtualizacaoCotacoes
dadosCotacoes
Copyright © 2005 Qualiti. Todos os direitos reservados.
<<Capsule>>
InterfaceRelogio
consultarCotacoes
<<Capsule>>
ComunicacaoOperadoraMercadoAcoes
consultarCotacoesNasdaq
consultarCotacoesBovespa
dadosNasdaq
dadosBovespa
<<Capsule>>
ComunicacaoNasdaq
<<Capsule>>
ComunicacaoBovespa
Qualiti Software Processes
Projetar cápsulas | 7
Identificando
Protocolos das Cápsulas
- Identificam o ‘contrato’ entre cápsulas, definindo
um conjunto de sinais usados para comunicação
entre diferentes threads, bem como a sequência
válida de troca de sinais entre as cápsulas.
Passos
- Para cada interação entre cápsulas, criar um
-
protocolo
Identificar similaridades entre protocolos e
promover reuso
Associar protocolos a cápsulas
Qualiti Software Processes
Projetar cápsulas | 8
Copyright © 2005 Qualiti. Todos os direitos reservados.
Protocolos
Identificando Protocolos
Escolha uma das duas cápsulas como
referência para definir os sinais de entrada e
os de saída
Insira os sinais de entrada e de saída da
cápsula no protocolo criado
Qualiti Software Processes
Projetar cápsulas | 9
Copyright © 2005 Qualiti. Todos os direitos reservados.
Criar os protocolos
Identificando Protocolos
Criar os protocolos
interrupcao
<<Capsule>>
ControladorAtualizacaoCotacoes
dadosCotacoes
Copyright © 2005 Qualiti. Todos os direitos reservados.
<<Capsule>>
InterfaceRelogio
consultarCotacoes
<<Protocol>>
AtivacaoPeriodica
interrupcao ()
<<Capsule>>
ComunicacaoOperadoraMercadoAcoes
consultarCotacoesNasdaq
consultarCotacoesBovespa
dadosNasdaq
dadosBovespa
<<Capsule>>
ComunicacaoNasdaq
<<Capsule>>
ComunicacaoBovespa
Qualiti Software Processes
Projetar cápsulas | 10
Identificando Protocolos
Criar os protocolos
interrupcao
<<Capsule>>
ControladorAtualizacaoCotacoes
dadosCotacoes
<<Protocol>>
ConsultaCotacoes
consultarCotacoes
dadosCotacoes ()
consultarCotacoes ()
<<Protocol>>
AtivacaoPeriodica
interrupcao ()
<<Capsule>>
ComunicacaoOperadoraMercadoAcoes
consultarCotacoesNasdaq
consultarCotacoesBovespa
dadosNasdaq
dadosBovespa
<<Capsule>>
ComunicacaoNasdaq
<<Capsule>>
ComunicacaoBovespa
Qualiti Software Processes
Projetar cápsulas | 11
Copyright © 2005 Qualiti. Todos os direitos reservados.
<<Capsule>>
InterfaceRelogio
Identificando Protocolos
Criar os protocolos
interrupcao
<<Capsule>>
ControladorAtualizacaoCotacoes
dadosCotacoes
<<Protocol>>
ConsultaCotacoes
dadosCotacoes ()
consultarCotacoes
consultarCotacoes ()
<<Protocol>>
AtivacaoPeriodica
interrupcao ()
<<Capsule>>
ComunicacaoOperadoraMercadoAcoes
<<Protocol>>
InteracaoBovespa
consultarCotacoesNasdaq
consultarCotacoesBovespa
consultarCotacoesBovespa (void)
dadosCotacoesBovespa (void)
dadosNasdaq
<<Capsule>>
ComunicacaoNasdaq
<<Capsule>>
ComunicacaoBovespa
Qualiti Software Processes
Projetar cápsulas | 12
Copyright © 2005 Qualiti. Todos os direitos reservados.
<<Capsule>>
InterfaceRelogio
Identificando Protocolos
Criar os protocolos
interrupcao
<<Capsule>>
ControladorAtualizacaoCotacoes
dadosCotacoes
<<Protocol>>
ConsultaCotacoes
dadosCotacoes ()
consultarCotacoes
consultarCotacoes ()
<<Protocol>>
AtivacaoPeriodica
<<Capsule>>
ComunicacaoOperadoraMercadoAcoes
interrupcao ()
<<Protocol>>
InteracaoBovespa
<<Protocol>>
InteracaoNasdaq
consultarCotacoesNasdaq
consultarCotacoesBovespa
consultarCotacoesBovespa (void)
ack
consultarConexaoNasdaq (void)
dadosCotacoesBovespa (void)
dadosNasdaq
dadosCotacoesNasdaq (void)
<<Capsule>>
ComunicacaoNasdaq
<<Capsule>>
ComunicacaoBovespa
Qualiti Software Processes
Projetar cápsulas | 13
Copyright © 2005 Qualiti. Todos os direitos reservados.
<<Capsule>>
InterfaceRelogio
Identificando Protocolos
Identificar similaridades entre protocolos
<<Protocol>>
AtivacaoPeriodica
<<Protocol>>
InteracaoNasdaq
consultarConexaoNasdaq (void)
dadosCotacoesNasdaq (void)
<<Protocol>>
ConsultaCotacoes
dadosCotacoes ()
<<Protocol>>
InteracaoBovespa
consultarCotacoes ()
consultarCotacoesBovespa (void)
dadosCotacoesBovespa (void)
Qualiti Software Processes
Projetar cápsulas | 14
Copyright © 2005 Qualiti. Todos os direitos reservados.
interrupcao ()
Identificando Protocolos
Protocolos identificados
<<Protocol>>
AtivacaoPeriodica
<<Protocol>>
ConsultaCotacoes
dadosCotacoes ()
interrupcao ()
consultarCotacoes ()
Qualiti Software Processes
Projetar cápsulas | 15
Copyright © 2005 Qualiti. Todos os direitos reservados.
Finalmente...
Identificando Protocolos
Associar protocolos a cápsulas
<<Capsule>>
InterfaceRelogio
<<Capsule>>
ControladorAtualizacaoCotacoes
<<Protocol>>
ConsultaCotacoes
<<Protocol>>
AtivacaoPeriodica
interrupcao ()
<<Capsule>>
ComunicacaoOperadoraMercadoAcoes
<<Capsule>>
ComuicacaoBOVESPA
consultarCotacoes ()
dadosCotacoes ()
<<Capsule>>
ComuncacaoNASDAQ
Qualiti Software Processes
Projetar cápsulas | 16
Copyright © 2005 Qualiti. Todos os direitos reservados.
Associações entre protocolos e cápsulas
Criar o conjunto inicial de portas, considerando as
responsabilidades da cápsula
Passo-a-passo:
-
-
Criar uma porta para cada interação cápsula-protocolocápsula
Nomear a porta com o nome do protocolo ou com o papel
da cápsula na realização do protocolo
Se as direções dos sinais no protocolo estiverem invertidos
(entrada está como saída e vice-versa), a porta deve ser
definida como conjugada (conjugated)
O mesmo protocolo pode ser utilizado em diferentes
portas
Qualiti Software Processes
Projetar cápsulas | 17
Copyright © 2005 Qualiti. Todos os direitos reservados.
Criando portas e
associando portas a protocolos
Exemplo – Diagrama de classes
de Atualizar Cotação
<<Protocol>>
ack (void)
dadosCotacoes (void)
<<Capsule>>
ComunicacaoOperadoraCotacao
+ / consultaCotacoes~
<<Port>>
iniciaConexao (void)
consultaCotacoes (void)
/ consultaBovespa
<<Protocol>>
AtivacaoPeriodica
+ / interrupcao~
interrupcao (void) <<Port>>
+ / cosultaCotacoes
<<Port>>
+ / interrupcao
<<Capsule>>
<<Port>>
ControladorAtualizacaoCotacoes
<<Capsule>>
InterfaceRelogio
+ / interrupcao
+ / interrupcao~
+ / cosultaCotacoes
+ / consultaCotacoes~
+ / consultaMercados
Copyright © 2005 Qualiti. Todos os direitos reservados.
ConsultaCotacoes
/ consultaNasdaq
<<Capsule>>
<<Capsule>>
ComunicacaoBovespa
ComunicacaoNasdaq
+ / consultaBovespa~
1
+ / consultaNasdaq~
1
1
1
ISubsistemaComunicacaoOperadoraMercadoAcoe
FachadaComunicacaoOperadoraMercadoAcoes
Qualiti Software Processes
Projetar cápsulas | 18
Exemplo- Relacionamento
entre cápsula e subcápsulas
+/ ConsultarCotacoes ~
<<Capsule>>
ComunicacaoOperadoraCotacao
<<Protocol>>
ConsultaCotacoes
consultarCotacoes ()
+ / consultarCotacoes~
+ / consultarMercados
dadosCotacoes ()
<<Capsule>>
ComuicacaoNASDAQ
+/ ConsultarCotacoes ~
Qualiti Software Processes
Projetar cápsulas | 19
Copyright © 2005 Qualiti. Todos os direitos reservados.
<<Capsule>>
ComuicacaoBOVESPA
Projeto Interno de Cápsulas
Passos para Projetar Cápsulas
•
Definir diagrama de estados
Definir diagrama de estrutura
Copyright © 2005 Qualiti. Todos os direitos reservados.
•
Qualiti Software Processes
Projetar cápsulas | 21
Máquina de Estados
- Indicar qual será o comportamento dos objetos
-
de acordo com o seu estado
Indicar seqüência de ações válidas
construtor
Máquina de estados
ilustrando o ciclo de
vida de um objeto Conta
Saldo = 0
crédito
debito
Saldo > 0
crédito
debito
Qualiti Software Processes
Projetar cápsulas | 22
Copyright © 2005 Qualiti. Todos os direitos reservados.
Máquinas de estados são utilizadas para:
Diagrama de Estados InterfaceRelogio
Initial
InterfaceRelogio
AguardandoInterrupcao
#/ timer
+/ porta
timeout / porta.gerarInterrupcao
Qualiti Software Processes
Projetar cápsulas | 23
Copyright © 2005 Qualiti. Todos os direitos reservados.
Cápsula: InterfaceRelogio
Forma geral de uma transição
Copyright © 2005 Qualiti. Todos os direitos reservados.
e [g] / a
e = evento
g = guarda
a = ação
Qualiti Software Processes
Projetar cápsulas | 24
Diagrama de Estados –
ComunicacaoOperadora
Initial
EsperandoSolicitacao
dadosCotacoes[count == 1] /
controlador.dadosCotacoes.send();
consultarCotacoes/
dadoCotacao = rtGetMsgData();
mercados.consultarCotacoes.send();
buffer.add(dadoCotacao);
Count = 0;
count = count + 1;
AguardandoDados
Comunicacao
dadosCotacoes[count < 1]
OperadoraMA
/ dadoCotacao = rtGetMsgData();
- buffer : Buffer
buffer.add(dadoCotacao);
- count : int
count = count + 1;
+/ mercados
+/ controlador
Qualiti Software Processes
Projetar cápsulas | 25
Copyright © 2005 Qualiti. Todos os direitos reservados.
Cápsula: ComunicacaoOperadoraMercadoAcoes
Diagrama de Estados –
ComunicacaoBovespa
Initial
AguardandoPeriodo
Comunicacao
Bovespa
consultarCotacoes
+/ dadosCotacoes~
dadosCotacoes /
dadosCotacoes.send();
AguardandoDados
Qualiti Software Processes
Projetar cápsulas | 26
Copyright © 2005 Qualiti. Todos os direitos reservados.
Cápsula: ComunicacaoBovespa
Exemplo: Produtor-Consumidor
produz(): Q
#/ timer
+/ porta
Consumidor
consome(q: Q)
Comunicacao
incoming
+/ porta~
outgoing
envia(Q )
Produtor
transicão inicial
Produzindo
timeout/
produz();
porta.envia.send(q);
Consumidor
transicão inicial
Esperando
envia/
consome(q);
Qualiti Software Processes
Projetar cápsulas | 27
Copyright © 2005 Qualiti. Todos os direitos reservados.
Produtor
Diagrama de Estados
Estado é uma condição de um objeto no qual
este realiza alguma atividade ou espera por
determinado evento.
É composto de:
- Nome
- Ação de entrada (Entry action)
- Ação de saída (Exit action)
- Máquina de estados interna (super estados)
Qualiti Software Processes
Projetar cápsulas | 28
Copyright © 2005 Qualiti. Todos os direitos reservados.
Estados
A
B
x/ execute();
y/ execute();
A
x
C
A
x/ execute();
B
B
y/ execute();
x
C
B
y
C
EntryAction:
Execute();
A
ExitAction:
Execute();
y
C
Qualiti Software Processes
Projetar cápsulas | 29
Copyright © 2005 Qualiti. Todos os direitos reservados.
Entry/Exit action
Diagrama de Estados –
ComunicacaoOperadora
Initial
EsperandoSolicitacao
dadosCotacoes[count == 1] /
controlador.dadosCotacoes.send();
consultarCotacoes/
dadoCotacao = rtGetMsgData();
mercados.consultarCotacoes.send();
buffer.add(dadoCotacao);
Count = 0;
count = count + 1;
AguardandoDados
dadosCotacoes[count < 1] /
dadoCotacao = rtGetMsgData();
buffer.add(dadoCotacao);
count = count + 1;
Código em comum
Qualiti Software Processes
Projetar cápsulas | 30
Copyright © 2005 Qualiti. Todos os direitos reservados.
Cápsula: ComunicacaoOperadoraMercadoAcoes
Diagrama de Estados –
ComunicacaoOperadora
Initial
EsperandoSolicitacao
consultarCotacoes/
mercados.consultarCotacoes.send();
Count = 0;
Exit Action
buffer.add(dadoCotacao);
count = count + 1;
dadosCotacoes[count == 1] /
controlador.dadosCotacoes.send();
AguardandoDados
dadosCotacoes[count < 1]
dadoCotacao = rtGetMsgData();
Qualiti Software Processes
Projetar cápsulas | 31
Copyright © 2005 Qualiti. Todos os direitos reservados.
Cápsula: ComunicacaoOperadoraMercadoAcoes
Usando Exit Action
Diagrama de Estados
Transição é um relacionamento direcionado
entre dois estados (origem e destino)
É composta de:
- Nome
- Estado origem
- Evento de disparo
- Condição de guarda
- Ação
- Estado destino
Qualiti Software Processes
Projetar cápsulas | 32
Copyright © 2005 Qualiti. Todos os direitos reservados.
Transições
Definir a conexão entre as instâncias das
cápsulas
É considerado também um diagrama de
colaboração
Quando utilizar?
- Para representar a configuração de execução do
-
sistema
Para indicar que portas de cada instância estão
conectadas entre si.
Qualiti Software Processes
Projetar cápsulas | 33
Copyright © 2005 Qualiti. Todos os direitos reservados.
Passo 2. Definir diagrama de
estrutura
Diagrama de Estrutura
Notação
Elementos
Instancia_A
Porta
Porta
Copyright © 2005 Qualiti. Todos os direitos reservados.
- Instâncias de Cápsulas
- Portas
- Conexões
Instancia_B
conexão
Qualiti Software Processes
Projetar cápsulas | 34
Diagrama de Estrutura
Produtor
timer
porta
Consumidor
porta~
timer
Qualiti Software Processes
Projetar cápsulas | 35
Copyright © 2005 Qualiti. Todos os direitos reservados.
Exemplo: Produtor Consumidor
Diagrama de Estrutura
Exemplo: QIB Mercado de Ações
OperadoraBovespa
ComunicaçãoOperadora
+/ dadosCotacoes~
#/ cotacaoBovespa
#/ cotacaoNadasq
OperadoraNasdaq
+/ cotacaoNasdaq+
ControladorAtualizacao
dadosCotacoes~
ComunicacaoOperadora
Interrupcao~
dadosCotacoes
OperadoraBovespa
OperadoraNasdaq
interrupcao
Relogio
timer
Qualiti Software Processes
Projetar cápsulas | 36
Copyright © 2005 Qualiti. Todos os direitos reservados.
+/ cotacaoBovespa+
Cápsulas, Protocolos, portas e
conexões em UML-RT
Download

Aula10-1-Capsulas