Análise e Projeto Orientados a Objeto com UML e Padrões
description
Transcript of Análise e Projeto Orientados a Objeto com UML e Padrões
![Page 1: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/1.jpg)
1
Análise e Projeto Orientados a Objetocom UML e Padrões
Parte I
Análise, Projeto e Processo
![Page 2: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/2.jpg)
2
Aplicando UML, Padrões e APOO
Objetivo – Desenvolver habilidades práticas na utilização da
Tecnologia Objeto para a criação de sistemas de software bem projetados, robustos e modificáveis.
Linguagens OO são um primeiro passo necessário mas insuficiente
Outros recursos importantes – processo de desenvolvimento– padrões– UML
![Page 3: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/3.jpg)
3
Atribuindo Responsabilidades
Saber a maneira adequada de atribuir responsabilidades a componentes de software é a habilidade mais importante na APOO– Mais difícil de dominar
– Afeta com mais profundidade a robustez, modificabilidade e reusabilidade do sistema
Padrões GRASP descrevem princípios fundamentais para auxiliar na atribuição de responsabilidades
Saber identificar objetos ou abstrações adequados é a segunda habilidade mais importante
![Page 4: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/4.jpg)
4
O que é Análise e Projeto?
Análise — o quê
Investigação do problema e dos requisitos
Requisitos
Casos de uso
Restrições
Vocabulário
Projeto — como
Descrição de uma solução lógica
Objetos
Arquitetura
Instalação & Operação
Interface do usuário
“Fazer a coisa certa” “Fazer certa a coisa”
![Page 5: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/5.jpg)
5
Termos “Análise” e “Projeto” não são fixos, mas usados ao longo de um contínuo.
Significados variam de metodologia para metodologia.
Distinção é útil na prática, mas debater definições rígidas não é construtivo.
Conflito de Terminologias
Mais orientadoa análise
Mais orientado a projeto
![Page 6: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/6.jpg)
6
O que é APOO?
Na essência, É CONSIDERAR um problema e uma solução dentro da perspectiva de objetos, coisas ou conceitos.
O que é AOO?– Investigação dos objetos de domínio e seus
relacionamentos.
Descritos no Modelo de Objetos de Domínio
O que é POO?– Elaboração de uma solução lógica em termos de
componentes de software e suas colaborações e responsabilidades.
Descritos em Diagramas de Classes e Diagramas de Interação
![Page 7: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/7.jpg)
7
Representação de um Conceito na APOO
Ex.: O conceito “Livro” em um sistema de biblioteca
Representaçãono código
Conceitode domínio
public class Livro{public void imprimir();
private String titulo;}
Livro
título
Representaçãona análise
Livro
título
Representaçãono projeto
imprimir()
![Page 8: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/8.jpg)
8
Uma Analogia:Organizando os Negócios de uma Empresa
Documentos Associados
APOOAnalogia
Casos de usoAnálise de requisitosQuais são os processos de negócio?
Modelo conceitualAnálise do domínioQuais são os papeis dos empregados?
Diagramas de classes de projeto, diagramas de colaboração / interação
Atribuição de responsabilidades, projeto das interações
Quem é responsável por o quê? Como eles interagem?
![Page 9: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/9.jpg)
9
Modelagem na APOO: um exemplo
Um jogo de dados no qual um jogador lança dois dados. Se o total for sete, ele vence; caso contrário, perde.
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
Exemplo: jogo de dados
![Page 10: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/10.jpg)
10
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
Um Exemplo — Jogo de Dados
Casos de uso: são descrições narrativas de processos do domínio no formato de prosa estruturada.
Caso de uso: JogarAtores: JogadorDescrição: Este caso de uso começa quando um jogador pega e lança
os dados. Se a soma do valor das faces dos dados totalizar sete, ele vence; caso contrário, perde.
![Page 11: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/11.jpg)
11
Um modelo conceitual descreve conceitos do mundo real, não componentes de software!
Um Exemplo — Jogo de Dados
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
Modelo conceitual: Conceitos, atributos, e associações que são considerados importantes no domínio da aplicação.
![Page 12: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/12.jpg)
12
Um Exemplo — Jogo de Dados
Alocação de responsabilidades para objetos ilustrando como eles interagem via mensagens.
Mostram o fluxo de mensagens entre instâncias e a invocação de métodos.
pedro:Jogador dado1 : Dado
dado2 : Dado
joga() 1: r1 := lança()
2: r2 := lança()
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
instância
Diagrama de Colaboração
![Page 13: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/13.jpg)
13
Um Exemplo — Jogo de Dados
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
Diagrama Interação
Barra de Interação –
Linha de Vida
![Page 14: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/14.jpg)
14
Como os objetos (de software) se conectam? Quais são os métodos de uma classe?
Um Exemplo — Jogo de Dados
Definir diagramasde interação
Definir diagramasde classesde projeto
Definir modelode domínio
Definir casosde usos
![Page 15: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/15.jpg)
15
APOO X APE
Sistema deBiblioteca
Sistema
A&P Orientados a ObjetoDecomposição por objetos ou
conceitos
A&P EstruturadosDecomposição por funções ou
processos
RegistraEmpréstim
os
AdicionaRecursos
ReportaMultas
Catálogo
Livro
Bibliotecário
Biblioteca
Metodologias mais antigas, como Análise e Projeto Estruturados, baseiam-se em outras dimensões de decomposição.
![Page 16: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/16.jpg)
16
A UML é a linguagem padrão de diagramação para visualizar os resultados da análise e projeto
A notação (a própria UML) é relativamente trivial Muito mais importante: habilidade para modelar
com objetos– Só aprender a notação UML não ajuda
A UML não é– um processo ou metodologia
– APOO
– regras de projeto
A Linguagem de Modelagem Unificada
![Page 17: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/17.jpg)
17
Origem e Evolução da UML
Unified Method 0.8 Unificação I(Out’95)
Booch’93 OMT-2
Outros métodos Booch’91 OMT-1 OOSE Fragmentação
UML 1.0
Parceirosda UML
Padronização(Jan’97)
UML 1.1 Industrialização(Set’97)
UML 0.9 & 0.91 Unificação II(Out’96)
![Page 18: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/18.jpg)
18
Processo de Desenvolvimento
Organização das atividades relacionas à produção e manutenção de sistemas de software
Útil, mas um fator de segunda ordem– O principal: equipe qualificada
Boa equipe + bom processo = menor risco
O processo racional unificado (RUP), baseado no modelo iterativo, é o processo padrão na indústria
![Page 19: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/19.jpg)
19
Simplificação do processo iterativo unificado
Fácil extensão e customização Não inclui atividades importantes como
– Verificação & validação
– Divisão do trabalho
– Gerência de projeto
– Documentação
Um Processo Iterativo Simplificado
Planejamento &Elaboração
Construção Implantação
![Page 20: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/20.jpg)
20
Fases
Planejamento e Elaboração– Concepção inicial, investigação de alternativas,
definição de requisitos, etc. Construção
– Construção do sistema através de múltiplos ciclos de análise, projeto, implementação e teste
Implantação– Instalação e operação do sistema
![Page 21: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/21.jpg)
21
Modelos e Artefatos
Um modelo descreve e abstrai aspectos essenciais de um sistema– Modelo estático (estrutura)
– Modelo dinâmico (comportamento) Modelos são compostos por artefatos —
diagramas e documentos que descrevem os elementos do modelo
Na APOO, a UML é usada para descrever e visualizar os modelos e artefatos produzidos em cada fase do processo de desenvolvimento
![Page 22: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/22.jpg)
22
Fase de Planejamento e Elaboração
2. Criar Rel. Prel. de Investigação
3. Definir Requisitos
9. Refinar Plano7. Definir Mod. Conc. Inicial c
4. Reg. Termos no Glossário a
6. Definir Casos de Uso
1. Definir PlanoInicial
5. ImplementarProtótipo
b, d
a. contínuab. opcionalc. adiáveld. ordem variada
8. Definir Arquit.Inicial a, c, d
Notas
Planejamento &Elaboração
Construção Implantação
![Page 23: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/23.jpg)
23
Fase de Planejamento e Elaboração
Atividades:
1. Definir plano inicial
Prazos, recursos, orçamento
2. Criar relatório preliminar de investigação
Motivação, alternativas, necessidades de negócio
3. Definir requisitos
Especificação declarativa dos requisitos
4. Registrar termos no glossário
Dicionário de termos, regras, restrições
5. Implementar protótipo
Protótipo do sistema para ajudar na definição dos requisitos
![Page 24: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/24.jpg)
24
Fase de Planejamento e Elaboração
Atividades:
6. Definir casos de uso
Descrição em prosa estruturada dos processos de negócio
7. Definir modelo conceitual inicial
Objetos de domínio e seus relacionamentos
8. Definir arquitetura inicial
Principais subsistemas e suas dependências
9. Refinar plano
Atividades não lineares – Ex.: 7, 4, 6 em paralelo
![Page 25: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/25.jpg)
25
Fase de Construção
Ciclo deDesenv. 1
Sinc.Artefatos Análise Projeto Teste
Refin.Plano Impl.
Ciclo deDesenv. 2
...
Planejamento &Elaboração
Construção Implantação
![Page 26: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/26.jpg)
26
Fase de Construção
Repetição de ciclos de desenvolvimento– Construção progressiva do sistema até atingir uma
versão que satisfaça corretamente os requisitos Atividades típicas de cada ciclo:
1. Refinar plano
2. Sincronizar artefatos
3. Análise
4. Projeto
5. Implementação
6. Teste
![Page 27: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/27.jpg)
27
Ciclos de Desenvolvimento
Cada ciclo implementa um conjunto reduzido de requisitos, adicionando novas funções ao sistema – Crescimento incremental, através de expansões e
refinamentos sucessivos Ciclos com tempo fixo de duas a oito semanas Vantagens:
– Evita complexidade excessiva
– Antecipa feedback dos usuários
![Page 28: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/28.jpg)
28
Ciclos de Desenvolvimento e Casos de Uso
Um ciclo deve atacar um ou mais casos de uso ou versões simplificadas de casos de uso.
Casos de uso mais relevantes devem ser atacados nos primeiros ciclos.– Prioridade para serviços com grande influência na
arquitetura do sistema ou de alto risco.
Ciclo de Desenv. 1
Caso de uso AVersãoSimplificada
Ciclo de Desenv. 2
Caso de uso AVersãoCompleta
Ciclo de Desenv. 3
Caso de uso B
Caso de uso C
![Page 29: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/29.jpg)
29
Análise
a. se ainda não feitob. contínuoc. opcional
2. Refinar Diag. Casos de Uso
3. Refinar ModeloConceitual
4. Refinar Glossário b
6. Definir Contrat.de Operação
1. Definir Casos de Uso Essenciais a
5. Definir Diag.Seq.
7. Definir Diag.Estado c
Notas
...Ciclo deDesenv. 1
Sinc.Artefatos Análise Projeto TesteRefin.
Plano Impl.
Ciclo deDesenv. 2
![Page 30: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/30.jpg)
30
Análise
Sub-atividades:
1. Definir casos de uso essenciais
2. Refinar diagramas de casos de uso
3. Refinar modelo conceitual
4. Refinar glossário
5. Definir diagramas de seqüência do sistema
6. Definir contratos de operação
7. Definir diagramas de estado
![Page 31: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/31.jpg)
31
Projeto
2. Definir Relatórios, Interface Usuário
4. Definir Diag.Interação
5. Definir Diag.Classes a
6. Definir Esquemado BD
1. Definir Casos deUso Reais
3. Refinar Arquitetura b
Notas
a. em paralelo com diag. interaçãob. ordem variada
...Ciclo deDesenv. 1
Sinc.Artefatos Análise Projeto TesteRefin.
Plano Impl.
Ciclo deDesenv. 2
![Page 32: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/32.jpg)
32
Projeto
Sub-atividades:
1. Definir casos de uso reais
2. Definir relatórios e interfaces com o usuário
3. Refinar arquitetura do sistema
4. Definir diagramas de interação
5. Definir diagramas de classes de projeto
6. Definir esquema do banco de dados
![Page 33: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/33.jpg)
33
Padrões de Projeto(introdução)
1. Objetivos de Projeto e
2. Vantagens no uso de Padrões de Projeto
![Page 34: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/34.jpg)
34
Padrão de Projeto
Descrição de um problema recorrente, de forma genérica.
Descrição de uma solução também genérica, que deve ser adaptada de acordo com o contexto em que o problema se manifesta.
![Page 35: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/35.jpg)
35
Objetivos de projeto Reusabilidade, flexibilidade e manutenibilidade
– reutilize projetos flexíveis
– mantenha o código em um nível geral
– minimize dependência de outras classes
Robustez
– reutilize projetos seguros
– reutilize partes robustas
Suficiência e correção
– modularize o projeto
– reutilize partes confiáveis
![Page 36: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/36.jpg)
36
Vantagens no uso de Padrões de Projeto
Evita a redescoberta de soluções Propicia o uso de soluções corretas Melhora a qualidade do software Melhora a confiabilidade do software Provê uma linguagem comum entre desenvolvedores Reduz o volume de documentação Economiza esforço e tempo de desenvolvimento e
manutenção Conduz ao bom uso de orientação a objetos
![Page 37: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/37.jpg)
37
Exemplo de Problema Recorrente : Composição
Em um sistema de arquivos, existem arquivos e pastas (diretórios), sendo que todo arquivo está contido em uma pasta e toda pasta pode conter arquivos e também outras pastas.
Em um documento, existem caracteres e imagens como elementos básicos, e páginas, colunas, frames e linhas de texto como elementos compostos, sendo que todo elemento básico está contido em um elemento composto e todo elemento composto pode conter elementos básicos e também outros elementos compostos.
![Page 38: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/38.jpg)
38
Composição em Sistema de Arquivos
ComponenteSistemaArquivos
Arquivo Pasta
listar ( ) {abstract}
listar ( )listar ( )
tamanho
tipo
0..*
![Page 39: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/39.jpg)
39
Composição em Documento
ElementoDocumento
Caráter Imagem ElementoCompostoDocumento
Documento Página Coluna Frame LinhaTexto
0..*
![Page 40: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/40.jpg)
40
Referências Bibliográficas Design Patterns: Elements of Reusable Object-Oriented
Software. Erich Gamma e outros (GoF), Addison-Wesley, 1995.
Patterns in Java: a catalog of reusable design patterns illustraded in UML, Volume 1. Mark Grand, John Wiley & Sons, 1998.
Projeto de Software: da programação à arquitetura (Software design: from programming to architecture). Eric Braude, John Wiley & Sons, 2004.
![Page 41: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/41.jpg)
41
Caso de Uso(Detalhamento)
1. Um exemplo: Processar Venda
![Page 42: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/42.jpg)
42
Um exemplo: Processar VendaAtor Principal: Caixa
Interessados e Interesses: Caixa: deseja entrada rápida, precisa e sem erros, de pagamento, pois a falta de dinheiro na
gaveta do caixa será deduzida do seu salário. Vendedor: deseja comissões sobre vendas atualizadas. Cliente: deseja comprar, receber um serviço rápido e com mínimo esforço. Deseja um
comprovante da compra, necessário no caso de devoluções de mercadorias. Empresa: deseja registrar precisamente as transações e satisfazer aos interesses do cliente.
Quer garantir que os pagamentos a receber do Serviço de autorização de Pagamentos sejam registrados. Deseja algum tipo de proteção contra falhas para permitir que as vendas sejam capturadas mesmo se os componentes do servidor (por exemplo, validação remota de crédito) se encontrarem indisponíveis. Deseja uma atualização automática e rápida da contabilidade e do estoque.
Órgãos fiscais governamentais: desejam cobrar os impostos de cada venda. Podem estar envolvidos vários órgãos, como por exemplo, federais, estaduais e municipais.
Serviço de autorização de pagamentos: deseja receber solicitações de autorização digital no formato e protocolo corretos. Deseja contabilizar com precisão seus débitos a pagar para a loja.
Pré-Condições: o Caixa é identificado e autenticado.
Pós-Condições: a Venda é salva. Os impostos são corretamente calculados. A Contabilidade e o Estoque são atualizados. As Comissões são registradas. O Recibo é gerado. As aprovações de pagamento são registradas.
![Page 43: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/43.jpg)
43
Um exemplo: Processar Venda (continuação)
Fluxo Básico1. O Cliente chega à saída do PDV com bens ou serviços para adquirir.
2. O Caixa começa uma nova venda.
3. O Caixa digita o identificador do item.
4. O Sistema registra a linha de item da venda e apresenta uma descrição do item, o seu preço e o total parcial da venda. O preço é calculado segundo um conjunto de regras de preços.
O Caixa repete os passos 3 e 4 até que indique ter terminado.
5. O Sistema apresenta o total com impostos calculados.
6. O Caixa diz ao Cliente o total e solicita o pagamento.
7. O Cliente paga e o Sistema trata o pagamento.
8. O Sistema registra a venda completada e envia as informações de venda e pagamento para o Sistema externo de contabilidade (para contabilidade e comissões) e o Sistema de Estoque (para atualizar o estoque).
9. O Sistema emite recibo.
10. O Cliente sai com recibo e bens (se houver).
![Page 44: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/44.jpg)
44
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos
*a. A qualquer momento, o Sistema falha:
Para fornecer suporte para a recuperação e a correta contabilização, garanta que todas as informações de estado sensíveis das transações e de todos os eventos possam ser recuperadas a partir de qualquer passo do cenário.
1. O Caixa reinicia o Sistema, registra-se e solicita arecuperação do estado anterior.
2. O Sistema restaura o estado anterior.
2a. O Sistema detecta anomalias que impedem arestauração:
1. O Sistema avisa ao Caixa sobre o erro, registra o erro e, então, entra em um novo estado consistente:
2. O Caixa começa uma nova venda.
![Page 45: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/45.jpg)
45
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos (continuação)
3a. Identificador inválido:1. O Sistema informa o erro e rejeita a entrada.
3b. Existem vários itens do mesmo tipo e rastrear o item físico individual não é importante (p. ex: 5 pacotes de sanduíches naturais).1. O Caixa pode digitar o identificador do tipo do item e a
quantidade.
3-6a. O Cliente pede ao Caixa para remover um item da compra:1. O Caixa digita o identificador do item a ser removido da venda.
2. O Sistema exibe o total parcial atualizado.
3-6b. O Cliente diz ao Caixa para cancelar a venda:1. O Caixa cancela a venda no Sistema.
3-6c. O Caixa suspende a venda:1. O Sistema registra a venda de forma que ela fique disponível para
acesso a partir de qualquer terminal PDV.
![Page 46: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/46.jpg)
46
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos (continuação)
4a. O preço do item gerado pelo Sistema não é desejado (por exemplo, o Cliente se queixa de que algo está sendo oferecido a um preço mais baixo):
1. O Caixa digita o preço que prevalecerá.
2. O Sistema apresenta o novo preço.
5a. O Sistema detecta uma falha na comunicação com o serviço externo de cálculo de impostos:
1. O Sistema reinicia esse serviço no nó PDV e continua.
1a. O Sistema detecta que o serviço não reinicia.1. O Sistema sinaliza o erro.2. O Caixa pode calcular manualmente e digitar o imposto ou cancelar a venda.
5b. O Cliente diz que tem direito a um desconto (por exemplo, empregado, cliente preferencial):
1. O Caixa sinaliza uma solicitação de desconto.
2. O Caixa entra com a identificação do Cliente.
3. O Sistema apresenta o total do desconto com base nas regras para descontos.
5c. O Cliente diz que tem um crédito na sua conta que pode ser usado para pagar a compra:
1. O Caixa sinaliza uma solicitação de crédito.
2. O Caixa digita a identificação do Cliente.
3. O Sistema aplica o crédito até que o preço=0 e deduz do pagamento remanescente.
![Page 47: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/47.jpg)
47
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos (continuação)
6a. O Cliente diz que pretendia pagar com dinheiro, mas não tem dinheiro suficiente:
1a. O Cliente usa um método de pagamento alternativo.
1b. O Cliente diz ao Caixa para cancelar a venda. O Caixa cancela a venda no Sistema.
7a. Pagamento com dinheiro:
1. O Caixa digita a quantia de dinheiro fornecida.
2. O Sistema apresenta o valor do troco e libera a gaveta de dinheiro.
3. O Caixa deposita o dinheiro fornecido e entrega o troco para o Cliente.
4. O Sistema registra o pagamento em dinheiro.
![Page 48: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/48.jpg)
48
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos (continuação)
7b. Pagamento a crédito:
1. O Cliente digita as informações de sua conta de crédito.
2. O Sistema envia a solicitação de autorização de pagamento para um serviço externo de Autorização de Pagamento e solicita sua aprovação.
2a. O Sistema detecta uma falha ao tentar colaborar com o sistema externo:
1. O Sistema sinaliza erro ao Caixa.
2. O Caixa pede ao Cliente uma forma de pagamento alternativa.
3. O Sistema recebe aprovação do pagamento e sinaliza a aprovação ao Caixa
3a. O Sistema recebe rejeição do pagamento:1. O Sistema sinaliza rejeição ao Caixa.2. O Caixa solicita ao Cliente uma forma alternativa de pagamento.
4. O Sistema registra o pagamento a crédito, que inclui a aprovação do pagamento.
5. O Sistema apresenta o mecanismo para entrada da assinatura do pagamento a crédito.
6. O Caixa solicita ao Cliente uma assinatura para pagamento a crédito. O Cliente fornece a assinatura.
![Page 49: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/49.jpg)
49
Um exemplo: Processar Venda (continuação)
Fluxos Alternativos (continuação)
7c. Pagamento com cheque...
7d. Pagamento com débito em contra...
7e. O Cliente apresenta cupons:
1. Antes de tratar o pagamento, o Caixa registra cada cupom e o Sistema reduz o preço conforme estabelecido. O Sistema registra os cupons usados por razões contábeis.
1a. O Cupom digitado não serve para quaisquer dos itens comprados:1. O Sistema sinaliza erro ao Caixa.
9a. Existem descontos específicos para certos produtos:
1. O Sistema apresenta os formulários de descontos e os recibos de descontos para cada item ao qual se aplica um desconto.
9b. O Cliente solicita o recibo para presente e o Sistema apresenta o mesmo.
![Page 50: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/50.jpg)
50
Um exemplo: Processar Venda (continuação)
Requisitos Especiais Interface de Usuário (IU) por tela sensível ao toque
em um monitor de painel plano grande. O texto deve ser visível a uma distância de um metro.
Resposta de autorização de crédito dentro de 30 segundos em 90% do tempo.
De alguma forma, queremos uma recuperação robusta quando o acesso aos serviços remotos, tal como o sistema de estoque, estiver falhando.
Internacionalização de linguagem no texto exibido. Regras de negócio “plugáveis” que podem ser
inseridas nos passos 2 e 6. ...
![Page 51: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/51.jpg)
51
Um exemplo: Processar Venda (continuação)
Lista de Variações Tecnológicas e de Dados:
3a. Identificador de item inserido por leitor a laser de código de barras (quando o item tiver código de barras) ou pelo teclado.
3b. Identificador de item pode ser qualquer um dos seguintes esquemas de codificação: CUP, NAE, NAJ ou SKU.
7a. Informação sobre a conta de crédito inserida por leitora de cartão ou pelo teclado.
7b. Assinatura de pagamento a crédito capturada em recibo de papel. NO entanto, prevemos que, dentro de dois anos, muitos clientes desejarão captura de assinatura digital.
Freqüência de Ocorrência: Poderia ser quase continuo.
![Page 52: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/52.jpg)
52
Um exemplo: Processar Venda (continuação)
Problemas em Aberto: Quais são as variações das leis de impostos? Deve-se explorar o problema de recuperação de serviço
remoto. Qual personalização é necessária para diferentes negócios? Um Caixa deve levar sua gaveta de dinheiro quando ele sai do
Sistema? O Cliente pode usar diretamente a leitora de cartão ou é o
Caixa que deve fazê-lo?
![Page 53: Análise e Projeto Orientados a Objeto com UML e Padrões](https://reader035.fdocumentos.tips/reader035/viewer/2022062500/56814fac550346895dbd68c2/html5/thumbnails/53.jpg)
53
APOO
1. Exercício