Skip to content

06 - Levantamento de Requisitos e Caso de Uso

Sistema: XXXX*)


1. Identificação dos Stakeholders

  • Clientes: Pessoas que....
  • Restaurantes: Estabelecimentos...
  • Entregadores: Responsáveis...
  • Administrador: Gerencia....

2. Requisitos Funcionais

ID Descrição Prioridade
RF01 O cliente... Alta
RF02 O restaurante... Média
RF03 O entregador... Alta

3. Requisitos Não Funcionais

  • Performance: O app...
  • Segurança: Dados....
  • Usabilidade: Interface...

4. Exemplo de Caso de Uso (Exemplo)

UC01 - Realizar Pedido

  • Atores: Cliente, Sistema.
  • Pré-condição: Cliente está logado e com localização ativa.
  • Fluxo Principal:
  • Cliente seleciona um restaurante.
  • Cliente adiciona itens ao carrinho.
  • Cliente escolhe a forma de pagamento (cartão/PIX).
  • Sistema confirma o pedido e notifica o restaurante.
  • Fluxos Alternativos:
  • FA1: Pagamento recusado → Sistema sugere nova tentativa ou outro método.
  • FA2: Restaurante indisponível → Sistema recomenda opções similares.
  • Pós-condição: Pedido é registrado e entra na fila de preparo.

5. Protótipo (Exemplo Simplificado)

  • Tela de Busca: Barra de pesquisa + filtros (vegan, rápido, etc.).
  • Carrinho: Resumo dos itens + botão "Finalizar Pedido".

6. Validação

  • XXXXX XXX: Confirmar se o fluxo de atualização é viável.
  • Teste A/B com Clientes: Comparar duas versões...

--

Diagrama de Casos de Uso (Exemplo)

Aqui está o diagrama de Caso de Uso (UML) para o cenário de "Realizar Pedido" no aplicativo de delivery, usando PlantUML:

Código PlantUML:

ClienteRestaurante (Sistema)EntregadorUC01: Realizar PedidoSelecionar RestauranteAdicionar Itens ao CarrinhoEscolher PagamentoConfirmar PedidoNotificar RestauranteNotificar EntregadorPagamento RecusadoRestaurante IndisponívelPré-condição: Cliente logado.Pós-condição: Pedido registrado.«include»«extend»«extend»«extend»
ClienteRestaurante (Sistema)EntregadorUC01: Realizar PedidoSelecionar RestauranteAdicionar Itens ao CarrinhoEscolher PagamentoConfirmar PedidoNotificar RestauranteNotificar EntregadorPagamento RecusadoRestaurante IndisponívelPré-condição: Cliente logado.Pós-condição: Pedido registrado.«include»«extend»«extend»«extend»

Explicação:

  1. Atores:
  2. Cliente: Interage com o sistema para fazer pedidos.
  3. Restaurante (Sistema): Recebe notificações de pedidos.
  4. Entregador: Recebe alertas para coleta/entrega.

  5. Fluxo Principal (dentro do caso de uso UC01):

  6. Selecionar Restaurante → Adicionar Itens → Escolher Pagamento → Confirmar Pedido.

  7. Relacionamentos:

  8. <<include>>: "Confirmar Pedido" requer "Notificar Restaurante".
  9. <<extend>>: Fluxos alternativos (pagamento recusado/restaurante indisponível).

  10. Notas: Condições do cenário.


Protótipo

Aqui está o protótipo de telas do aplicativo de delivery usando Salt (PlantUML), alinhado ao caso de uso anterior:


Código PlantUML (Salt)

Pedido Confirmado!! Pedido #1234 recebido!"Tempo estimado:" 30-40 min.Acompanhar PedidoVoltar ao Início
Pedido Confirmado!! Pedido #1234 recebido!"Tempo estimado:" 30-40 min.Acompanhar PedidoVoltar ao Início

Telas Prototipadas (Fluxo do Caso de Uso)

  1. Buscar Restaurantes:
  2. Barra de busca + filtros.
  3. Lista de restaurantes com seleção (radio buttons).

  4. Cardápio do Restaurante:

  5. Itens selecionáveis com preços.
  6. Botão para adicionar ao carrinho.

  7. Carrinho:

  8. Resumo dos itens + valor total.
  9. Ação para prosseguir ao pagamento.

  10. Pagamento:

  11. Opções de pagamento (cartão, PIX, dinheiro).
  12. Confirmação do pedido.

  13. Confirmação:

  14. Feedback de sucesso + tempo de entrega.

Como Visualizar

  • Cole o código em ferramentas como:
  • PlantText (suporte a Salt).
  • VS Code com extensão PlantUML.

Exemplo de Saída (Estilizada)

+------------------------------+
| FastDelivery - Buscar Restaur.|
+------------------------------+
| [🔍 Buscar...] | [Filtros ▼]  |
+------------------------------+
| (X) Restaurante A | ⭐ 4.5    |
| () Restaurante B  | ⭐ 4.2    |
+------------------------------+
| [Ver Cardápio] | [Voltar]    |
+------------------------------+

Personalização

  • Para adicionar mais telas (ex.: login, acompanhamento de entrega):

    Login"E-mail:" [ ]"Senha:" [ ]EntrarCriar Conta
    Login"E-mail:" [ ]"Senha:" [ ]EntrarCriar Conta

### Diagrama de Classe

Aqui está o diagrama de classes conceitual para o sistema de delivery, representando os principais conceitos e seus relacionamentos:

Diagrama de Classes (PlantUML)

Clienteid: Stringnome: Stringemail: Stringlocalizacao: StringbuscarRestaurantes()fazerPedido()Restauranteid: Stringnome: Stringcardapio: List<Item>localizacao: StringatualizarCardapio()confirmarPedido()Pedidoid: Stringitens: List<Item>status: StringvalorTotal: DoublecalcularTotal()atualizarStatus()Itemid: Stringnome: Stringpreco: Doublecategoria: StringEntregadorid: Stringnome: Stringveiculo: StringaceitarPedido()atualizarLocalizacao()Pagamentoid: Stringmetodo: Stringvalor: Doublestatus: StringprocessarPagamento()10..*10..*11..*1110..110..*
Clienteid: Stringnome: Stringemail: Stringlocalizacao: StringbuscarRestaurantes()fazerPedido()Restauranteid: Stringnome: Stringcardapio: List<Item>localizacao: StringatualizarCardapio()confirmarPedido()Pedidoid: Stringitens: List<Item>status: StringvalorTotal: DoublecalcularTotal()atualizarStatus()Itemid: Stringnome: Stringpreco: Doublecategoria: StringEntregadorid: Stringnome: Stringveiculo: StringaceitarPedido()atualizarLocalizacao()Pagamentoid: Stringmetodo: Stringvalor: Doublestatus: StringprocessarPagamento()10..*10..*11..*1110..110..*

Explicação:

  1. Classes Principais:
  2. Cliente: Realiza pedidos e busca restaurantes.
  3. Restaurante: Oferece itens do cardápio e confirma pedidos.
  4. Pedido: Agrupa itens, calcula total e rastreia status.
  5. Item: Produtos individuais do cardápio.
  6. Entregador: Responsável pela entrega.
  7. Pagamento: Processa transações.

  8. Relacionamentos:

  9. Um cliente faz 0 ou N pedidos.
  10. Um pedido contém 1 ou N itens.
  11. Um restaurante tem 0 ou N itens no cardápio.
  12. Cada pedido tem exatamente 1 pagamento.
  13. Um pedido pode estar associado a 0 ou 1 entregador.

  14. Atributos e Métodos:

  15. Atributos privados (indicados por -) e métodos públicos (+).
  16. Exemplo: Pedido.calcularTotal() soma os preços dos itens.


Adaptações Possíveis:

  1. Adicionar Herança:

    Usuarioid: Stringnome: StringClientelocalizacao: StringEntregadorveiculo: String
    Usuarioid: Stringnome: StringClientelocalizacao: StringEntregadorveiculo: String

  2. Incluir Enums (ex.: status do pedido):

    StatusPedidoEM_PREPAROEM_TRANSITOENTREGUEPedidostatus: StatusPedido
    StatusPedidoEM_PREPAROEM_TRANSITOENTREGUEPedidostatus: StatusPedido