06 - Levantamento de Requisitos e Caso de Uso¶
Sistema: Aplicativo de Delivery de Comida ("FastDelivery")
1. Identificação dos Stakeholders¶
- Clientes: Pessoas que fazem pedidos.
- Restaurantes: Estabelecimentos parceiros.
- Entregadores: Responsáveis pela logística.
- Administrador: Gerencia o sistema.
2. Requisitos Funcionais (Exemplos)¶
| ID | Descrição | Prioridade |
|---|---|---|
| RF01 | O cliente deve poder buscar restaurantes por nome, categoria ou localização. | Alta |
| RF02 | O restaurante deve poder atualizar seu cardápio no sistema. | Média |
| RF03 | O entregador deve receber notificações de novos pedidos. | Alta |
3. Requisitos Não Funcionais¶
- Performance: O app deve carregar em menos de 3 segundos.
- Segurança: Dados de pagamento criptografados (PCI Compliance).
- Usabilidade: Interface intuitiva (testes com usuários reais).
4. Exemplo de Caso de Uso¶
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¶
- Workshop com Restaurantes: Confirmar se o fluxo de atualização de cardápio é viável.
- Teste A/B com Clientes: Comparar duas versões do checkout para melhorar conversão.
--
Diagrama de Casos de Uso¶
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:¶
Explicação:¶
- Atores:
Cliente: Interage com o sistema para fazer pedidos.Restaurante(Sistema): Recebe notificações de pedidos.-
Entregador: Recebe alertas para coleta/entrega. -
Fluxo Principal (dentro do caso de uso
UC01): -
Selecionar Restaurante → Adicionar Itens → Escolher Pagamento → Confirmar Pedido.
-
Relacionamentos:
<<include>>: "Confirmar Pedido" requer "Notificar Restaurante".-
<<extend>>: Fluxos alternativos (pagamento recusado/restaurante indisponível). -
Notas: Condições do cenário.
Visualização do Diagrama:¶
(Se estiver usando uma IDE como VS Code com extensão PlantUML, o código acima gerará um diagrama similar a este:)
+-------------+ +---------------------+
| Cliente | | Restaurante (Sist) |
+-------------+ +---------------------+
| ^
v |
+---------------------+ |
| UC01: Realizar Pedido| |
| 1. Selecionar Rest. | |
| 2. Adicionar Itens | |
| 3. Escolher Pagamento| |
| 4. Confirmar Pedido |----------
+---------------------+ <<include>>
|
v
+---------------------+ +---------------+
| Pagamento Recusado |<<extend| Notificar |
| Rest. Indisponível | | Entregador |
+---------------------+ +---------------+
^
|
+---------------+
| Entregador |
+---------------+
Dica:¶
- Para ver o diagrama visualmente, cole o código em ferramentas como:
- PlantText
- PlantUML Web Server.
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)¶
Telas Prototipadas (Fluxo do Caso de Uso)¶
- Buscar Restaurantes:
- Barra de busca + filtros.
-
Lista de restaurantes com seleção (radio buttons).
-
Cardápio do Restaurante:
- Itens selecionáveis com preços.
-
Botão para adicionar ao carrinho.
-
Carrinho:
- Resumo dos itens + valor total.
-
Ação para prosseguir ao pagamento.
-
Pagamento:
- Opções de pagamento (cartão, PIX, dinheiro).
-
Confirmação do pedido.
-
Confirmação:
- 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)¶
Personalização¶
- Para adicionar mais telas (ex.: login, acompanhamento de entrega):
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)¶
Explicação:¶
- Classes Principais:
- Cliente: Realiza pedidos e busca restaurantes.
- Restaurante: Oferece itens do cardápio e confirma pedidos.
- Pedido: Agrupa itens, calcula total e rastreia status.
- Item: Produtos individuais do cardápio.
- Entregador: Responsável pela entrega.
-
Pagamento: Processa transações.
-
Relacionamentos:
- Um cliente faz 0 ou N pedidos.
- Um pedido contém 1 ou N itens.
- Um restaurante tem 0 ou N itens no cardápio.
- Cada pedido tem exatamente 1 pagamento.
-
Um pedido pode estar associado a 0 ou 1 entregador.
-
Atributos e Métodos:
- Atributos privados (indicados por
-) e métodos públicos (+). - Exemplo:
Pedido.calcularTotal()soma os preços dos itens.
Visualização Esperada:¶
+-------------+ +-------------+ +-------------+
| Cliente | | Restaurante | | Entregador |
+-------------+ +-------------+ +-------------+
| - id | | - id | | - id |
| - nome | | - nome | | - nome |
| - email | | - cardapio | | - veiculo |
| - localizacao| | - localizacao| +------------+
+-------------+ +-------------+ ^
| | |
| 1 1 | | 0..1
v v |
+-------------+ +-------------+ +-------------+
| Pedido | | Item | | Pagamento |
+-------------+ +-------------+ +-------------+
| - id | | - id | | - id |
| - itens | | - nome | | - metodo |
| - status | | - preco | | - valor |
| - valorTotal| | - categoria | | - status |
+-------------+ +-------------+ +-------------+
| 1..* ^ ^ 1
|____________________| |
Adaptações Possíveis:¶
-
Adicionar Herança:
-
Incluir Enums (ex.: status do pedido):