Levantamento de requisitos

Atores, casos de uso e histórias de utilizador a partir de um enunciado, com o exemplo da Loja de Bilhetes.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

“Um site para vender bilhetes” ainda não diz quem compra, como recebe confirmação ou o que acontece quando os lugares esgotam. O levantamento de requisitos fixa essas capacidades e condições antes de escolher tabelas ou código.

Atores e objetivos

Um ator é quem interage com o sistema: uma pessoa com um papel ou outro sistema. Um objetivo é o que esse ator quer conseguir. Na Loja de Bilhetes há dois atores humanos:

  • Visitante: explora eventos e sessões sem conta. Quer descobrir o que há e decidir se compra.
  • Comprador: está autenticado, compra bilhetes e consulta as suas compras. Quer garantir o lugar com o mínimo de passos.

Fixa os atores antes de escrever qualquer funcionalidade e liga cada funcionalidade ao objetivo de um ator: a pesquisa de eventos serve o Visitante que decide se compra, e a compra serve o Comprador que garante o lugar. Outras condições, como disponibilidade ou compatibilidade, aplicam-se ao sistema inteiro e ficam nos requisitos suplementares.

O desenho resume três interações deste exemplo. Não é um inventário completo: o registo descrito abaixo também pertence ao Visitante. Uma nova interação pode usar um ator existente; só criamos outro ator quando há um papel diferente.

Casos de uso

Um caso de uso descreve uma interação completa entre um ator e o sistema, do início ao resultado. Tem nome, ator, pré-condições e um fluxo numerado de passos que inclui o que acontece quando algo corre mal. No exemplo de comprar bilhete, a pré-condição é ter sessão iniciada. No fim de uma compra bem-sucedida, o bilhete e a reserva de capacidade ficam registados juntos.

  1. O comprador escolhe uma sessão com lugares livres.
  2. O sistema mostra o preço e os lugares disponíveis.
  3. O comprador confirma a compra.
  4. O sistema reserva os bilhetes, regista a compra e mostra a confirmação.

Exceção no passo 3: se os lugares esgotarem entre a escolha e a confirmação, o sistema avisa e devolve o comprador à lista de sessões. A exceção faz parte do caso de uso, pois uma compra sem este ramo parece completa no papel e falha na primeira sessão esgotada.

Caso de uso 2, registar conta:

  1. O visitante indica nome, email e palavra-passe.
  2. O sistema verifica que o email ainda não está registado.
  3. O sistema cria a conta e inicia a sessão do novo comprador.

Exceção no passo 2: se o email já existir, o sistema sugere iniciar sessão em vez de criar uma conta duplicada.

Histórias de utilizador

Uma história de utilizador resume uma capacidade desejada em três partes: quem, o quê e para quê. Ajuda a ordenar o trabalho e a discutir necessidades. Não descreve por si só todo o fluxo e as exceções de um caso de uso.

  • Como comprador, quero ver os lugares livres de cada sessão para escolher sem adivinhar.
  • Como comprador, quero receber confirmação da compra para ter prova do que paguei.
  • Como visitante, quero pesquisar eventos por data para planear a semana.

Cada história deve ter uma capacidade concreta e critérios que permitam verificar o resultado. “Como comprador, quero uma boa experiência” não identifica uma operação nem um resultado observável; precisa de ser desenvolvida antes de orientar a implementação.

ArtefactoO que acrescenta à compra
HistóriaPapel, capacidade e benefício: comprar um bilhete para garantir lugar.
Caso de usoSequência da escolha à confirmação, incluindo o ramo de sessão esgotada.
Critérios de aceitaçãoCondições e resultados observáveis que permitem testar sucesso e falhas.

Requisitos e prioridades

Junta tudo numa tabela com identificador, descrição, ator e prioridade, porque a tabela regista o âmbito acordado. Se surgir uma necessidade nova, discute-a e atualiza os requisitos e os artefactos que dependem dela.

IdRequisitoAtorPrioridade
R1Comprar bilhetes para uma sessão com lugares livresCompradorAlta
R2Registar conta com email únicoVisitanteAlta
R3Pesquisar eventos por dataVisitanteMédia
R4Consultar o histórico de comprasCompradorMédia

O requisito “o sistema deve ser rápido” parece razoável, mas não diz quanto é rápido, a medir onde nem em que condições. Rejeita-o na forma atual e substitui-o por algo verificável, por exemplo “a pesquisa de eventos responde em menos de 2 segundos com 1000 eventos na base de dados”; sem uma medida e condições definidas, duas pessoas podem discordar sobre se o requisito foi cumprido.

Funcionalidade, qualidade e regra de negócio

As histórias de utilizador descrevem interações. Os requisitos suplementares registam outras condições que o sistema deve cumprir:

TipoExemplo verificável
FuncionalO comprador consulta os seus bilhetes pagos.
Qualidade95% das pesquisas respondem em menos de 2 segundos, com a carga e o volume de dados definidos no teste.
Restrição técnicaA aplicação usa o servidor PostgreSQL indicado para a entrega.
Regra de negócioA soma dos bilhetes ativos não ultrapassa a lotação da sessão.

Uma regra pode exigir verificações em várias camadas. A interface explica «esgotado»; o servidor coordena a compra; a base de dados aplica restrições e bloqueios. Uma regra de negócio não é apenas uma mensagem no formulário.

Um ator é externo ao sistema e representa um papel, não necessariamente uma pessoa diferente; a mesma pessoa pode agir como comprador e administrador, e um serviço de pagamentos também pode ser ator. A base de dados interna da aplicação não é um ator externo só porque participa na implementação.

Critérios de aceitação e rastreabilidade

Para a história «como comprador, quero cancelar uma reserva para libertar o lugar», escreve critérios observáveis:

  1. Dada uma reserva minha ainda cancelável, quando confirmo, fica cancelada e deixa de ocupar lugar.
  2. Dada uma reserva de outra pessoa, a operação é recusada e não altera dados.
  3. Dada uma reserva já cancelada, repetir o pedido não liberta um segundo lugar.

Os critérios incluem sucesso, autorização e repetição. Uma frase do tipo «o botão funciona» não cobre estes casos. Liga cada requisito às regras do modelo, às operações e ao teste que o demonstra. Esta rastreabilidade permite perceber o impacto de mudar uma regra.

As prioridades de entrega distinguem o obrigatório do opcional:

  • prototype: funcionalidade obrigatória na entrega do protótipo.
  • product: funcionalidade obrigatória no produto final, mas não no protótipo.
  • innovation: proposta opcional do grupo, sem obrigatoriedade.

Uma prioridade alta de negócio não equivale a uma marca de entrega: uma história pode ser importante e mesmo assim ficar marcada para o produto em vez do protótipo. Não inventes obrigações a partir de uma ideia complementar.

Processo de desenvolvimento

O processo estruturado organiza fases com resultados definidos: requisitos, especificação da base de dados, arquitetura e produto. Um processo ágil usa iterações e feedback frequente; prototipagem serve para experimentar e reduzir incerteza. LBAW usa fases estruturadas por razões pedagógicas e de calendário. Isso não torna requisitos imutáveis, mas uma alteração tem de ser propagada aos artefactos e à implementação.

Exercícios

Tornar o requisito verificável

Reescreve «a pesquisa deve ser rápida» como um requisito de qualidade testável.

Pista

Qual operação e que medida de tempo?

Mais uma pista

Um percentil distingue a maioria de uma cauda lenta.

Solução

Por exemplo: com 100 mil eventos, 30 pessoas concorrentes e a rede de teste definida, pelo menos 95% das pesquisas respondem em menos de 2 s. Mede do envio do pedido até à apresentação dos resultados, sobre uma amostra de 1000 pesquisas após aquecimento, com a mistura de consultas documentada. Estes valores são uma proposta de teste, não uma regra docente; outros limites são possíveis se estiverem justificados.

Confere a tua resposta:

  • Defino uma medida e limite.
  • Defino volume de dados e carga.
  • Indico condições e método de teste.

Erros frequentes

Um número sem carga, dados e ambiente não permite reproduzir a medida.

Voltar à explicação
História e critérios de cancelamento

A loja permite cancelar um bilhete reservado, mas não um bilhete pago. Um bilhete reservado ocupa um lugar. Escreve a história do comprador e critérios para cancelar a sua reserva, tentar cancelar a reserva alheia e repetir um cancelamento já concluído.

Pista

Escreve cada critério com estado inicial, identidade, ação e resultado.

Solução

História: “Como comprador, quero cancelar uma reserva para libertar um lugar que já não vou usar.”

  1. Dado um bilhete meu reservado, confirmar o cancelamento muda-o para cancelado e liberta exatamente um lugar na mesma transação.
  2. Dado um bilhete reservado de outra pessoa, o pedido é recusado sem alterar bilhete nem capacidade.
  3. Dado um bilhete meu já cancelado, repetir conserva o estado e não liberta outro lugar.

Um bilhete pago não satisfaz a pré-condição do primeiro critério. O teste precisa de comparar o estado e a capacidade antes e depois, não apenas a mensagem apresentada.

Confere a tua resposta:

  • Escrevo papel, capacidade e benefício.
  • Defino condições e resultados dos três casos.
  • Liberto capacidade uma única vez.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.