Concentre-se no que é e no porquê e evite o como está ao escrever as histórias dos usuários.
O que você enfrenta é realmente um exercício muito bom para todos os desenvolvedores. Ser capaz de expressar o requisito em termos simples e comerciais é uma habilidade importante.
Você deve se concentrar no requisito geral como "precisa ser capaz de fazer uma única seleção em uma lista suspensa de objetos para que o usuário possa ativar a ação Foo" em vez de especificar usando uma caixa de combinação ou caixa de listagem ou o que desencadeie uma rotina específica .
Outra maneira de abordar isso é fingir que a base / estrutura de código subjacente é uma caixa preta quase completa. Sempre que você estiver dizendo "use o objeto XYZ", poderá verificar automaticamente perguntando se você saberia disso em um sistema de caixa preta.
Atualização:
IMO, não há problema em colocar detalhes em um caso de uso que indique o nível de detalhe necessário para obter informações. Por exemplo, com um sistema de inscrição, é justo especificar
- sobrenome; campo obrigatório
- primeiro nome; campo obrigatório
- ID da conta; sistema gerado sem entrada necessária
- signo astrológico; campo opcional - (sugestão) fornece pesquisa para inserir a data de nascimento?
- etc ....
A chave é que você não está especificando o técnico como para essa informação. Se você estiver dizendo "use uma classe String / matriz de caracteres / ou campo varchar" para o sobrenome, saberá que está especificando demais.
Se você é multilíngue, use dois idiomas diferentes como teste decisivo. Por exemplo, strings em C são geralmente matrizes char (acter), enquanto C ++, Java e C # (ok, e quase todo mundo ...) têm um objeto String como real. Se você achar que sua especificação está invalidada usando um desses idiomas, você saberá que especificou demais.
Vale a pena notar que estou usando especificamente o termo Caso de Uso em oposição à História do Usuário , embora a variante que acabo usando seja um híbrido de ambos. Meu objetivo de um caso de uso é fornecer uma visão geral do que está acontecendo (uma história do usuário no sentido mais estrito), mas depois trabalhar com os atores, sistemas e funcionalidades gerais necessárias. Minha abordagem está mais próxima do que Fowler está sugerindo naquele artigo da Wikipedia, em oposição à abordagem de Cockburn.
Portanto, terei um único caso de uso (ou mais) para o cenário de inscrição ou item de trabalho. Se é realmente complexo, eu o dividiria em múltiplos, mas isso não é grande coisa. O caso de uso pode ser dividido em tarefas individuais, conforme necessário. O que é lançado em um scrum específico depende de muitas variáveis, mas não há nada nessa abordagem que impeça que você tenha um componente demonstrável no final do scrum.