Post on 30-Jun-2020
Modelagem Estatica e Dinamica: Estudo de
Caso - Sistema de Caixa Automatico
Enunciado do Problema (I)O sistema de caixa automatico permite que clientes rea-
lizem saques e verifiquem seus saldos, de acordo com as
seguintes regras de negocios:
1. Quando uma conta e criada no banco, o seu saldo e
maior que zero.
2. Um cliente pode possuir varias contas no banco.
3. O cliente acessa uma conta atraves do terminal de um
caixa eletronico do seu banco.
4. Antes de executar qualquer operacao da conta, o cli-
ente deve fornecer o numero da sua conta e a senha
referente a mesma. reaticada.
Enunciado do Problema (II)
5. Para a realizacao do saque, o cliente utiliza um ter-
minal para solicitar um valor numerico de dinheiro.
6. O cliente pode sacar qualquer quantia do caixa, desde
que a mesma seja igual ou inferior ao saldo disponıvel.
Vale a polıtica do banco de que uma conta nao aceita
uma operacao de saque quando a conta esta com o
saldo zerado. O dinheiro e liberado no dispensador de
notas do caixa e debitado do saldo da conta.
7. Alem de possuir o dinheiro disponıvel na conta, em
uma operacao de saque, a quantidade de dinheiro dis-
ponıvel no caixa eletronico deve ser maior ou igual a
quantia solicitada pelo cliente.
Enunciado do Problema (III)
8. Se o saldo de uma conta e zerado durante uma
operacao de saque, a conta deve se tornar inativa.
9. Os clientes que vao operar o caixa eletronico devem
estar devidamente cadastrados no banco e suas contas
devem estar ativas.
10. Cada conta tem associado um numero e uma senha.
Alem disso, cada conta e associada a um cliente do
banco, que possui informacoes como nome, RG, CPF,
etc.
Enunciado do Problema (IV)
11. As informacoes adicionais sobre as contas e seus cli-
entes estao armazenadas em um Cadastro de Contas
do Banco que interage com o Sistema de Caixa Au-
tomatico.
12. Qualquer cliente cadastrado no banco pode efetuar
depositos em uma conta, quer a conta esteja ativa,
quer ela esteja inativa.
13. Caso a conta esteja inativa e apos o deposito seu saldo
fique maior que zero, a conte deve ser reativada.
Diagrama de Casos de Uso
Cliente
Cadastro de Contas do Banco
Dispensador de Notas
Consultar Saldo
Efetuar Login
Efetuar Saque
Efetuar Depósito
Sistema de Caixa Automático
Descricao dos Casos de Uso
Caso de Uso Consultar Saldo (I)
Breve Descricao : O cliente, ja autenticado, escolhe a
opcao “Consultar Saldo” e o sistema apresenta o seu
saldo.
Atores : Cliente, Cadastro de Contas do Banco.
Pre-condicao : A conta deve estar ativa e o cliente ja
deve ter sido autenticado junto ao sistema, atraves do
caso de uso Efetuar Login.
Pos-condicao : Estado da conta inalterado.
Requisitos Especiais : nenhum.
Caso de Uso Consultar Saldo (II)
Fluxo Basico :
1. O cliente escolhe no menu principal do terminal a
opcao “Consultar Saldo”.
2. O sistema verifica se o login foi efetuado
3. O sistema verifica se a conta esta ativa, atraves do
Cadastro de Contas do Banco.
4. O sistema obtem o saldo da conta do cliente e o
imprime.
Caso de Uso Consultar Saldo (III)
Fluxo Alternativo 1 :
No passo 2 do Fluxo Basico, se o login nao foi
efetuado, o sistema informa isso ao cliente.
Fluxo Alternativo 2 :
No passo 3 do Fluxo Basico, se a conta nao estiver
ativa, o sistema informa isso ao cliente e avisa que
a consulta nao pode ser realizada.
Diagrama de Atividades - Consultar Saldo
Estado Inicial
Selecionar opção "Consultar Saldo"
Verificar Login do usuário
Verificar status da contaExibir "mensagem de erro de login"
Exibir "mensagem de conta inativa" Emitir Saldo
Estado Final
[senão]
[login não efetuado]
[status == ’ativo’]
[senão]
Diag. de Sequencia de Sistema - Consultar Saldo
:Cliente :Sistema :CadastroContasDoBanco
Diagrama de Seqüência de Sistema
1) .consultarSaldo
2) .
.obterNumConta
.obterConta[numConta]
.verificarContaAtiva
.obterSaldo
Mensagem síncrona − com representação de retorno
Mensagem assíncrona − sem representação de retorno
Caso de Uso Efetuar Saque (I)
Breve Descricao : O cliente, ja autenticado, escolhe a
opcao “Efetuar Saque”, informa a quantia desejada e,
caso o saldo da conta seja suficiente e o caixa tenha
o dinheiro necessario, a quantia e liberada.
Atores : Cliente, Cadastro de Contas do Banco, Dispen-
sador de Notas.
Pre-condicao : O cliente deve estar logado no sistema,
atraves do caso de uso Efetuar Login. Alem disso,
a conta deve estar ativa e o valor a debitar deve
ser maior que zero e nao pode ser superior ao saldo
da conta nem a quantidade de dinheiro disponıvel no
caixa.
Caso de Uso Efetuar Saque (II)
Pos-condicao : O valor a ser sacado e subtraıdo do
saldo da conta e do total disponıvel no caixa eletronico
e a quantia solicitada e fornecida ao cliente.
Requisitos Especiais : nenhum.
Fluxo Basico :
1. O cliente escolhe no menu principal do terminal a
opcao “Efetuar Saque”.
2. O sistema verifica se o login foi efetuado.
3. O sistema verifica se a conta esta ativa, atraves do
Cadastro de Contas do Banco.
4. O sistema solicita que o cliente informe a quantia
desejada.
Caso de Uso Efetuar Saque (III)
Fluxo Basico (cont.):
5. O cliente informa a quantia desejada.
6. O sistema verifica se o saldo da conta e suficiente
para realizar a transacao e, em caso afirmativo, se
ha dinheiro em quantidade suficiente no caixa.
7. O sistema subtrai o valor solicitado do saldo da
conta do cliente e do valor disponıvel no caixa e
libera a quantia solicitada, atraves do dispensador
de notas.
Caso de Uso Efetuar Saque (IV)
Fluxo Alternativo 1 :
No passo 2 do Fluxo Basico, se o login nao tiver
sido efetuado, o sistema informa isso ao cliente.
Fluxo Alternativo 2 :
No passo 3 do Fluxo Basico, se a conta nao estiver
ativa, o sistema avisa isso ao cliente e informa que
o saque nao pode ser realizado.
Caso de Uso Efetuar Saque (V)
Fluxo Alternativo 3 :
No passo 6 do Fluxo Basico, se o valor solicitado for menor
que zero ou superior ao saldo da conta ou a quantidade de
dinheiro disponıvel no caixa, o sistema informa que nao e
possıvel realizar o saque e o porque. Em seguida, volta ao
passo 4 do Fluxo Basico.
Fluxo Alternativo 4 :
Apos o passo 7 do Fluxo Basico, se o saldo da conta for
menor ou igual a zero, a conta deve ser desativada.
Fluxo Alternativo 5 :
No passo 5 do Fluxo Basico, o cliente pode cancelar a
operacao.
Diagrama de Atividades - Efetuar Saque
Estado Inicial
Selecionar a opção "Efetuar Saque"
Verificar Login do usuário
Exibir "mensagem de erro de login"
[login não efetuado]
Verificar status da conta
[senão]
Exibir "mensagem de conta inativa"
[senão]
Obter a quantiaa sacar
[status == ’ativo’]
Estado Final
Verificar o saldo da contae a quantia do caixa
[senão]
[cancelaroperação]
Debitar valor na conta
[quantia > 0 E quantia >= saldo E caixa tem dinheiro]
Exibir "mensagem do porquê do saque estar indisponível"
[senão]
Liberar saque
Diag. de Sequencia de Sistema - Efetuar Saque
:CadastroContasDoBanco :Sistema :Cliente
Diagrama de Seqüência de Sistema
1) .efetuarSaque[valor]
2)
.obterNumConta
.obterConta[numConta]
.verificarContaAtiva
.obterSaldo
.obterValorEmCaixa
.debitarValor
Um Metodo para Analise OO Usando UML
Atividades Gerais do Metodo
Estado Inicial
Modelar a estruturaestática do sistema
Modelar a estruturadinâmica do sistema
Diagrama de classes de análise(sem as operações das classes)
Especificação das operaçoesdas classes de análise
Refinar o diagrama de análise compadrões e particularidades da linguagem
Análise OO
Projeto OO
Estado Final
Tecnica de Analise Textual
Enunciado do Problema
e
Especificacao dos casos de uso
Substantivos
Verbos
Objetos/Classes
Atributos
Associações
Operações
Modelagem Estatica
Modelagem Estatica (I)
Estado Inicial
1: Identificar ’substantivos’
2: Identificar as ’classes’ de análise
3: Construir o ’dicionário de dados’ das classes selecionadas
4: Identificar ’relacionamentos’ entre as classes de análise
5: Identificar ’atributos’ das classes de análise
[6: Iterar e ’refinar’]Estado Final
[senão]
A partir do enunciado do paoblemaE da especificaçao dos casos de uso
Modelagem Estatica (II)
Atividades da Modelagem Estática
Início
Fim
1−Criar classes de análise
2−Construir dicionário de dados
3−Criar relacionamentosentre as classes de análise
4−Criar atributos das classes de análise
5−Iterar e refinar
−Identificar classes candidatas−Refinar lista de classes
−Identificar agregações−Identificar associações−Identificar herança
Modelagem Estatica (IV)
• Foco na identificacao das classes de analise, seus atributos e os
relacionamentos entre elas
• Sera utilizada a tecnica de analise textual (Cap.3). A tecnica
sera aplicada para cada um dos quatro casos de uso especifica-
dos:
1. Consultar Saldo
2. Efetuar Saque
Atividade 1: Identificar Classes de Analise
• As especificacoes dos casos de uso fornecem as informacoes
necessarias.
• Primeiro identifica-se os conceitos, dentro do domınio do pro-
blema, que sao relevantes para o sistema que se pretende cons-
truir.
– Esses conceitos se tranformam posteriormente em classes de
analise.
• Em seguida pode-se fazer uma analise textual da descricao do
problema e das especificacoes dos casos de uso para comple-
mentar as classes relevantes para o sistema
• Importante: o diagrama de classes de analise e uma descricao
de coisas no domınio do problema do mundo real, nao no do
projeto de software!
Atividade 1.1: Identificar Classes Candidatas
Caso de Uso Consultar Saldo (I)
Breve Descricao : O cliente, ja autenticado, escolhe a
opcao “Consultar Saldo” e o sistema apresenta o seu
saldo.
Atores : Cliente, Cadastro de Contas do Banco.
Pre-condicao : A conta deve estar ativa e o cliente ja
deve ter sido autenticado junto ao sistema, atraves do
caso de uso Efetuar Login.
Pos-condicao : Estado da conta inalterado.
Requisitos Especiais : nenhum.
Caso de Uso Consultar Saldo (II)
Fluxo Basico :
1. O cliente escolhe no menu principal do terminal a
opcao “Consultar Saldo”.
2. O sistema verifica se o login foi efetuado
3. O sistema verifica se a conta esta ativa, atraves do
Cadastro de Contas do Banco.
4. O sistema obtem o saldo da conta do cliente e o
imprime.
Caso de Uso Consultar Saldo (III)
Fluxo Alternativo 1 :
No passo 2 do Fluxo Basico, se o login nao foi
efetuado, o sistema informa isso ao cliente.
Fluxo Alternativo 2 :
No passo 3 do Fluxo Basico, se a conta nao estiver
ativa, o sistema informa isso ao cliente e avisa que
a consulta nao pode ser realizada.
Caso de Uso Efetuar Saque (I)
Breve Descricao : O cliente, ja autenticado, escolhe a
opcao “Efetuar Saque”, informa a quantia desejada e,
caso o saldo da conta seja suficiente e o caixa tenha
o dinheiro necessario, a quantia e liberada.
Atores : Cliente, Cadastro de Contas do Banco,
Dispensador de Notas.
Pre-condicao : O cliente deve estar logado no
sistema, atraves do caso de uso Efetuar Lo-
gin. Alem disso, a conta deve estar ativa e
o valor a debitar deve ser maior que zero e nao
pode ser superior ao saldo da conta nem a
quantidade de dinheiro disponıvel no caixa.
Caso de Uso Efetuar Saque (II)
Pos-condicao : O valor a ser sacado e subtraıdo do
saldo da conta e do total disponıvel no caixa eletronico
e a quantia solicitada e fornecida ao cliente.
Requisitos Especiais : nenhum.
Fluxo Basico :
1. O cliente escolhe no menu principal do terminal a
opcao “Efetuar Saque”.
2. O sistema verifica se o login foi efetuado.
3. O sistema verifica se a conta esta ativa, atraves do
Cadastro de Contas do Banco.
4. O sistema solicita que o cliente informe a
quantia desejada.
Caso de Uso Efetuar Saque (III)
Fluxo Basico (cont.):
5. O cliente informa a quantia desejada.
6. O sistema verifica se o saldo da conta e suficiente
para realizar a transacao e, em caso afirmativo, se
ha dinheiro em quantidade suficiente no caixa.
7. O sistema subtrai o valor solicitado do
saldo da conta do cliente e do valor disponıvel
no caixa e libera a quantia solicitada, atraves do
dispensador de notas.
Caso de Uso Efetuar Saque (IV)
Fluxo Alternativo 1 :
No passo 2 do Fluxo Basico, se o login nao tiver
sido efetuado, o sistema informa isso ao cliente.
Fluxo Alternativo 2 :
No passo 3 do Fluxo Basico, se a conta nao estiver
ativa, o sistema avisa isso ao cliente e informa que
o saque nao pode ser realizado.
Caso de Uso Efetuar Saque (V)
Fluxo Alternativo 3 :
No passo 36 do Fluxo Basico, se o valor solicitado for
menor que zero ou superior ao saldo da conta ou a
quantidade de dinheiro disponıvel no caixa, o sistema in-
forma que nao e possıvel realizar o saque e o porque. Em
seguida, volta ao passo 4 do Fluxo Basico.
Fluxo Alternativo 4 :
Apos o passo 36 do Fluxo Basico, se o saldo da conta for
menor ou igual a zero, a conta deve ser desativada.
Fluxo Alternativo 5 :
No passo 36 do Fluxo Basico, o cliente pode cancelar a
operacao.
Entidades Candidatas Identificadas
• Caso de uso Efetuar Login:
• Caixa eletronico • Cliente • Numero da
conta
• Senha • Acesso • Sistema
• Cadastro de Contas
do Banco
• Opcao • Menu Principal
• Conta • Banco • Estado da conta
• Criptografia • Operacao • Estado do Caixa
eletronico
Entidades Candidatas Identificadas
• Caso de uso Consultar Saldo:
• Saldo • Terminal • Saldo da conta
• Login • Consulta • Quantia de dinheiro
disponıvel em caixa
• Caso de uso Efetuar Saque:
• Caixa • Dinheiro • Quantia
• Dispensador de
Notas
• Valor a debitar • Quantia de di-
nheiro disponıvel
em caixa
• Valor a ser sacado • Quantia solici-
tada
• Quantia desejada
• Transacao
Entidades Candidatas Identificadas
• Caso de uso Efetuar Deposito:
• Valor a depo-
sitar
• Valor a ser depo-
sitado
• Valor depositado
• Estado da
conta
• Quantia infor-
mada pelo cliente
• Conta destino do
deposito
Atividade 1.2: Refinar a lista de classes
candidatas
Criterios para Eliminacao de Classes
Inapropriadas
• Classes Redundantes: quando duas palavras significam a
mesma coisa, escolha a palavra mais significativa.
• Classes Irrelevantes: aquelas classes que nao estao dire-
tamente relacionadas com o problema.
• Atributos: alguns atributos podem ser descritos por subs-
tantivos.
• Operacoes: alguns substantivos podem ser operacoes.
• Papeis: nomes de papeis sao de fato nomes de processos
dinamicos ao inves de classes propriamente ditas.
• Construcoes de Implementacoes: qualquer coisa que
faca referencia a estruturas de dados, etc.
Classes Candidatas eliminadas (I)Classes Redundantes:
• Valor a ser depositado, Valor depositado e Quantia
informada pelo cliente: equivalentes a Valor a deposi-
tar.
• Caixa: identica a classe Caixa eletronico.
• Valor a ser sacado, Quantia desejada, Quantia solici-
tada, Quantia: equivalentes a Valor a debitar.
• Saldo da conta, Saldo da conta do cliente: equivalen-
tes a Saldo.
• Operacao e Opcao: equivalente a Transacao.
• Conta destino do deposito: equivalente a Numero da
conta.
Classes Candidatas eliminadas (II)Classes Irrelevantes:
• Transacao: o enunciado do problema nao exige que
informacoes sobre as transacoes realizadas sejam ar-
mazenadas.
• Numero da conta: atributo da classe Conta.
• Senha: atributo da classe Conta.
• Estado do caixa: termo generico para os atributos da
classe Caixa eletronico.
• Quantidade de dinheiro disponıvel no caixa: atributo
da classe Caixa eletronico.
• Estado da conta: termo generico para os atributos da
classe Conta.
• Saldo: atributo da classe Conta.
Classes Candidatas eliminadas (III)Classes Vagas:
• Acesso
• Menu Principal
• Criptografia
• Login
• Consulta
• Valor a debitar
• Valor a depositar
Lista Revisada de Classes
• CaixaEletronico
• Cliente ( 6= do ATOR – “dados do cliente”)
• Sistema
• Cadastro de Contas do Banco (ATOR)
• Conta
• Banco
• Terminal
• Dispensador de Notas (ATOR)
Atividade 2: Construir/Atualizar o dicionario
de dados (I)
• Classe Terminal: classe atraves da qual sao transmi-
tidos os valores de entrada e saıda a serem utilizados
pelo caixa eletronico. Esta classe encapsula toda a
interface com o usuario, assim, o tipo de terminal
a ser implementado por um Sistema de Caixa Au-
tomatico pode ser facilmente modificado atraves da
substituicao desta classe.
• Classe DadosCliente: classe cujos objetos encapsu-
lam os dados pessoais dos clientes do banco.
• Classe Conta: classe cujos objetos sao as contas
mantidas pelos clientes do banco.
Atividade 2: Construir/Atualizar o dicionario
de dados (II)
• Classe CaixaEletronico: classe que representa o es-
tado do caixa automatico.
• Classe Banco: classe que representa o estado do
banco ao qual esta vinculada a conta e os clientes.
• Classe Sistema: o Sistema de Caixa Automatico
pode ser visto como uma classe que representa o sis-
tema e engloba todas as classes pertencentes a este.
Esta e uma classe conceitual e nao pertence ao sis-
tema propriamente dito.
Atividade 3: Identificar/Refinar os
Relacionamentos Entre as Classes
• As classes identificadas ate o momento devem ser ana-
lisadas com o intuito de identificar as associacoes e os
relacionamentos de agregacao/decomposicao e de ge-
neralizacao/especializacao entre elas
• A classe Sistema representa o sistema como um todo
e, desta forma, todas as outras classes podem ser con-
sideradas partes dela
• Para simplificar a representacao do modelo, a classe
Sistema pode ser substituıda por um pacote que con-
tenha todas as classes que compoem o sistema
Agregacoes Encontrados (I)
• Um Banco possui uma ou mais Contas
• Um Banco contem varios clientes (DadosCliente)
• Um Banco possui varios Caixas Eletronico
• Um Caixa Eletronico possui um Terminal
• Um cliente (DadosCliente) pode possuir varias Contas
Agregacoes Encontrados (II)
sistema
Terminal
ContaDadosCliente
CaixaEletronico Banco
Atividade 4: Identificar/Refinar Atributos
das Classes (I)
• A partir da especificacao dos casos de uso:
Classes de Entidade Atributos
CaixaEletronico Quantidade de dinheiro disponıvel
Status do Login
Numero da Conta logada
Conta Senha
Numero
Saldo
Status
Banco Codigo
Nome
Atividade 4: Identificar/Refinar Atributos
das Classes (II)
• Alem dessa analise das especificacoes dos casos de uso, pode-se
utilizar o enunciado do problema:
Classes de Entidade Atributos
DadosCliente Nome
RG
CPF
Atividade 4: Identificar/Refinar Atributos
das Classes (III)
sistema
Terminal CaixaEletronico
−quantiaDisponivel :.−statusLogin :.−contaLogin :.
Banco
−cod :.−nome :.
FichaCliente
−nome :.−rg :.−cpf :.
Conta
−senha :.−numero :.−saldo :.−status :.
Diagrama de Classes de Análise com Atributos
Iteracao 2
Atividade 1: Identificar/Refinar Classes
(MVC)
• Classificar as classes em (Fronteira, Controle e
Entidade)
• Identificar novas classes (Fronteira e Controle)
Novas Classes:
• FronteiraCadastroContas (interagir com o ator
Cadastro de contas)
• FronteiraDispensadorNotas (interagir com o ator
Dispensador de notas)
• ControladorCaixa (controla a logica interna do caixa
eletronico)
Classes do Sistema
• CaixaEletronico << entity >>
• Conta << entity >>
• Banco << entity >>
• Terminal << boundary >>
• DadosCliente << entity >>
• FronteiraCadastroContas << boundary >>
• FronteiraDispensadorNotas << boundary >>
• ControladorCaixa << control >>
Atividade 2: Construir/Atualizar o
Dicionario de Dados
• Terminal: classe de fronteira atraves da qual sao trans-
mitidos os valores de entrada e saıda a serem utilizados
pelo caixa eletronico. Esta classe encapsula toda a inter-
face com o usuario, assim, o tipo de terminal a ser imple-
mentado por um Sistema de Caixa Automatico pode ser
facilmente modificado atraves da substituicao desta classe.
• ControladorCaixa: classe de controle que encapsula as
polıticas definidas pela especificacao do sistema e geren-
cia as interacoes entre as classes de fronteira e entidade.
Os objetos da classe ControladorCaixa possuem operacoes
para efetuar login no sistema, consultar o saldo de uma
conta, efetuar um saque e efetuar um deposito.
Atividade 2: Dicionario de Dados (II)
• DadosCliente: classe de entidade cujos objetos en-
capsulam os dados pessoais dos clientes do banco.
• Conta: classe de entidade cujos objetos sao as contas
mantidas pelos clientes do banco.
• CaixaEletronico: classe de entidade que representa
o estado do caixa automatico.
• Banco: classe de entidade que representa o estado do
banco ao qual esta vinculada a conta e os clientes.
Atividade 2: Dicionario de Dados (III)
• Sistema: o Sistema de Caixa Automatico pode ser
visto como uma classe que representa o sistema e en-
globa todas as classes pertencentes a este. Esta e uma
classe conceitual e nao pertence ao sistema propria-
mente dito.
• FronteiraCadastroContas: classe de fronteira que
media as interacoes entre o sistema e o ator Cadastro
de Contas do Banco.
• FronteiraDispensadorNotas: classe de fronteira que
media as interacoes entre o sistema e o ator Dispen-
sador de Notas.
Atividade 3: Identificar/Refinar os
Relacionamentos Entre as Classes
• Adicionar as associacoes com as novas classes do mo-
delo MVC, obedecendo a relacao:
Relacionamento entre classes no MVC
sistema
Fronteira Controle Entidade
Ator
Diagrama de Classes de Analise
(sem operacoes)
Diagrama de Classes de Análise
sistema
Terminal
CaixaEletronico
−quantiaDisponivel :.−statusLogin :.−contaLogin :.
Banco
−cod :.−nome :.
FichaCliente
−nome :.−rg :.−cpf :.
Conta
−senha :.−numero :.−saldo :.−status :.
FronteiraCadastroContas
ControladorCaixa FronteiraDispensadorNotas
Modelagem Dinamica
Atividades Gerais do Metodo
Estado Inicial
Modelar a estruturaestática do sistema
Modelar a estruturadinâmica do sistema
Diagrama de classes de análise(sem as operações das classes)
Especificação das operaçoesdas classes de análise
Refinar o diagrama de análise compadrões e particularidades da linguagem
Análise OO
Projeto OO
Estado Final
Modelagem Dinamica
• Identifica e modela os aspectos do sistema de software
que podem mudar durante a sua execucao, devido a
ocorrencia de eventos.
• Foco no comportamento que o sistema deve apre-
sentar.
• Usa os diagramas dinamicos da UML (sequencia, co-
laboracao, estados).
• Especifica uma versao inicial das interfaces publicas
das classes de analise.
• Sub-etapa de Analise OO - Foco no domınio do
problema!
Eventos
• Ocorrencias dignas de nota relativas ao sistema e en-
volvendo algum tipo de troca de informacao.
• O evento nao e a informacao trocada e sim o fato de
alguma informacao ter sido trocada.
• O tipo de evento mais comum encontrado durante a
analise e a interacao entre um ator e o sistema.
– Outros tipos tambem sao possıveis.
• Modelamos o comportamento do sistema atraves de
eventos e das acoes executadas em resposta a eles.
Tecnica de Analise Textual
Substantivos
Verbos
Objetos/Classes
Atributos
Associações
Operações
Enunciado do Problema OUEspecificação dos Casos de Uso
Atividades da Modelagem Dinamica
Estado Inicial
Identificar eventos do sistema
Construir diagramas de seqüência para os cenários primários dos casos de uso
Construir um único diagrama de colaboração para o sistema, combinando os diagramas de seqüência obtidos na atividade 2
Atualizar interfaces públicas das classes de análise
Construir diagramas de estados
[deseja−se iterarpara refinar]
Estado Final
[senão]
Atividade 1: Identificar Eventos do Sistema
• Deve ser realizada uma nova analise textual nas espe-
cificacoes dos casos de uso, prestando-se atencao aos
pontos nos quais trocas de informacao ocorrem.
• Normalmente, esses pontos estao associados a verbos.
• Informacoes relevantes: verbos e os contextos nos
quais aparecem.
Diagrama de Casos de Uso
Cliente
Cadastro de Contas do Banco
Dispensador de Notas
Consultar Saldo
Efetuar Login
Efetuar Saque
Efetuar Depósito
Sistema de Caixa Automático
Caso de Uso Efetuar Login (I)
Fluxo Basico :
1. O cliente solicita a opcao de “Efetuar Login” no sistema.
2. O sistema pede que o cliente informe o numero da conta.
3. O cliente fornece o numero da conta.
4. O sistema pede que o cliente informe a sua senha.
5. O cliente fornece a senha.
6. O sistema verifica se a conta e valida e
se a senha esta correta, atraves do Cadastro de Con-
tas do Banco. Em caso positivo, o sistema atualiza
o estado do caixa eletronico com as informacoes de login.
7. O sistema exibe no terminal o menu de opcoes que o cliente
pode acessar.
Caso de Uso Efetuar Login (II)
Fluxo Alternativo 1 :
No passo 6 do Fluxo Basico, se a conta fornecida
nao existir ou se a senha estiver errada, o sistema
informa que alguma das informacoes fornecidas esta
incorreta e que nao e possıvel autenticar o cliente.
Em seguida, volta ao passo 2 do Fluxo Basico.
Fluxo Alternativo 2 :
Nos passos 3 e 5 do Fluxo Basico, o cliente
pode cancelar a operacao.
Caso de Uso Consultar Saldo (I)
Fluxo Basico :
1. O cliente escolhe no menu principal do terminal a
opcao “Consultar Saldo”.
2. O sistema verifica se o login foi efetuado.
3. O sistema verifica se a conta esta ativa, atraves
do Cadastro de Contas do Banco.
4. O sistema obtem o saldo da conta do cliente e
o imprime.
Caso de Uso Consultar Saldo (II)
Fluxo Alternativo 1 :
No passo 2 do Fluxo Basico, se o login nao foi
efetuado, o sistema informa isso ao cliente.
Fluxo Alternativo 2 :
No passo 3 do Fluxo Basico, se a conta nao
estiver ativa, o sistema informa isso ao cliente e
avisa que a consulta nao pode ser realizada.
Caso de Uso Efetuar Saque (I)
Fluxo Basico :
1. O cliente escolhe no menu principal do terminal a opcao
“Efetuar Saque”.
2. O sistema verifica se o login foi efetuado.
3. O sistema verifica se a conta esta ativa, atraves do Cadastro
de Contas do Banco.
4. O sistema solicita que o cliente informe a quantia desejada.
5. O cliente informa a quantia desejada.
6. O sistema verifica se o saldo da conta e suficiente para
realizar a transacao e, em caso afirmativo,
se ha dinheiro em quantidade suficiente no caixa.
7. O sistema subtrai o valor solicitado do saldo da conta do cliente
e do valor disponıvel no caixa e libera a quantia solicitada,
atraves do dispensador de notas.
Caso de Uso Efetuar Saque (II)
Fluxo Alternativo 1 :
No passo 2 do Fluxo Basico, se o login nao tiver
sido efetuado, o sistema informa isso ao cliente.
Fluxo Alternativo 2 :
No passo 3 do Fluxo Basico, se a conta nao
estiver ativa, o sistema avisa isso ao cliente e
informa que o saque nao pode ser realizado.
Caso de Uso Efetuar Saque (III)
Fluxo Alternativo 3 :
No passo 6 do Fluxo Basico, se o valor solicitado for
menor que zero ou superior ao saldo da conta ou a
quantidade de dinheiro disponıvel no caixa, o sistema
informa que nao e possıvel realizar o saque e o porque. Em
seguida, volta ao passo 4 do Fluxo Basico.
Fluxo Alternativo 4 :
Apos o passo 7 do Fluxo Basico, se o saldo da conta for
menor ou igual a zero, a conta deve ser desativada.
Fluxo Alternativo 5 :
No passo 5 do Fluxo Basico, o cliente pode
cancelar a operacao.
Caso de Uso Efetuar Deposito (I)
Fluxo Basico :
1. O cliente escolhe no menu principal do terminal a opcao
“Efetuar Deposito”.
2. O sistema solicita que o cliente informe a conta destino
do deposito.
3. O cliente informa a conta destino do deposito.
4. O sistema solicita que o cliente informe a quantia desejada.
5. O cliente informa a quantia desejada.
6. O sistema adiciona o valor depositado ao saldo da conta.
7. O sistema verifica se a conta deve ser reativada (saldo > 0
E conta inativa). Em caso positivo, o sistema
altera o estado da conta para ativo.
Caso de Uso Efetuar Deposito (II)
Fluxo Alternativo 1 :
No passo 3 do Fluxo Basico, se a conta for invalida, o sistema
informa isso ao cliente. Em seguida, volta ao passo 2 do
Fluxo Basico.
Fluxo Alternativo 2 :
No passo 5 do Fluxo Basico, se a quantia infor-
mada pelo cliente for menor que zero, o sistema
deve informar isso ao cliente, explicando o porque. Em se-
guida, volta ao passo 4.
Fluxo Alternativo 3 :
Nos passos 3 e 5 do Fluxo Basico, o cliente
pode cancelar a operacao.
Eventos Identificados (I)
(apenas os de responsabilidade do sistema)
• Verificar se a conta e valida.
• Verificar se a senha esta correta.
• Atualizar o estado do caixa eletronico com as in-
formacoes de login.
• Verificar se o login foi efetuado.
• Verificar se a conta esta ativa.
• Obter o saldo da conta.
• Verificar se o cliente tem saldo suficiente para realizar
a transacao.
Eventos Identificados (II)
(apenas os de responsabilidade do sistema)
• Verificar se ha dinheiro em quantidade suficiente no
caixa.
• Subtrair o valor solicitado do saldo da conta do cliente.
• Desativar a conta.
• Adicionar o valor depositado ao saldo da conta.
• Verificar se a conta deve ser reativada.
• Reativar a conta.
Atividade 2: Construir Diagramas de
sequencia (cenarios primarios)
• Baseado nos eventos encontrados. Cada evento pode
corresponder a u ou mais fluxos no diagrama de
sequencia.
• Deve-se ter em mente as classes descobertas na
analise estatica, pois e a partir da interacao dos seus
objetos que as funcionalidades sao implementadas.
Diagrama de Classes de Analise
(sem operacoes)
Diagrama de Classes de Análise
sistema
Terminal
CaixaEletronico
−quantiaDisponivel :.−statusLogin :.−contaLogin :.
Banco
−cod :.−nome :.
FichaCliente
−nome :.−rg :.−cpf :.
Conta
−senha :.−numero :.−saldo :.−status :.
FronteiraCadastroContas
ControladorCaixa FronteiraDispensadorNotas
Diagrama de Sequencia - Caso de Uso
Consultar Saldo
c:Conta :FronteiraCadastroContas :CaixaEletronico :ControladorCaixa :Terminal :Cliente
Diagrama de Seqüência "Consultar Saldo"
1) .consultarSaldo
4)
2) .consultarSaldo
3)
.numConta = obterNumConta
.c = obterConta[numConta]
.obterStatus
.obterSaldo
Diagrama de Sequencia - Caso de Uso
Efetuar Saque
:FrtDispensadorDeNotasc:Conta :FrtCadastroContas :CaixaEletronico :CtlCaixa :Terminal :Cliente
Diagrama de Seqüência "Efetuar Saque"
1) .efetuarSaque[quant]
4)
2) .efetuarSaque[quant]
3)
.obterValorCaixa
.debitarValor[quant]
.debitarValor[quant]
.liberaDinheiro[quant]
.numConta = obterNumConta
.c = obterConta[numConta]
.obterStatus
.obterSaldo
Diagrama de Colaboracao (I)
• Centraliza a representacao dos eventos dos diagramas
de sequencia
• Explicita as associacoes entre as classes e facilita a
identificacao das operacoes
Diagrama de Colaboracao (II)
:FrtDispensadorNotas :Terminal :FrtCadastroContas
:CaixaEletronico :CtlCaixa c:Conta
liberarDinheiro(quant) :
consiltarSaldo() :
efetuarSaque(quant) :
obterConta(numConta) :
obterStatus() : obterSaldo() :
debitarValor(quant) :
obterNumConta() :
obterValorCaixa() : debitarValor(quant) :
Diagrama de Colaboração
Identificacao das Operacoes
• Cada evento recebido pode ser
– Uma operacao que a classe deve oferecer
– O retorno de uma operacao executada
Diagrama de Classes Final de Analise
sistema
<< boundary >>
Terminal
+ efetuarLogin ():.+ consultarSaldo ():.+ efetuarSaque ():.+ solicitarDeposito ():.
<< boundary >>
FronteiraCadastroContas
+ obterConta (numConta :.):.+ atualizarConta (numConta :.):.
<< boundary >>
FronteiraDispensadorNotas
+ liberarQuantia (quant :.):.
<< entity >>
CaixaEletronico
−quantiaDisponivel :.−statusLogin :.−numContaLogin :.
+ atualizarStatusLoginCaixa (numConta :.):.+ obterNumConta ():.+ obterQuantDisponivel ():.+ debitarValor (quant :.):.
<< control >>
ControladorCaixa
+ efetuarLogin (numConta :.,senha :.):.+ consultarSaldo ():.+ efetuarSaque (quant :.):.+ efetuarDeposito (quant :.):.
<< entity >>
Banco
−cod :.−nome :.
<< entity >>
FichaCliente
−nome :.−rg :.−cpf :.
<< entity >>
Conta
−senha :.−numero :.−saldo :.−status :.
+ verificarSenha (senha :.):.+ obterStatus ():.+ obterSaldo ():.+ debitar (quant :.):.+ desativar ():.+ depositar (quant :.):.+ ativar ():.
Diagrama de Classes de Análise