Pessoas que não desenvolveram software não sabem o que os desenvolvedores de software precisam saber. Não se pode esperar que eles produzam especificações de requisitos e casos de uso por conta própria. Você precisa aplicar técnicas de obtenção de requisitos para obter as informações que precisa saber. Trabalhe com o cliente (e, com sorte, uma amostra de usuários de várias funções) para determinar o que eles precisam ou desejam. Técnicas comuns para isso são entrevistas e / ou observação de usuários, identificando casos de uso e histórias de usuários e prototipagem.
Eu recomendo a aplicação de técnicas de desenvolvimento iterativo e incremental nesse caso, pois você possui requisitos vagos, incompletos ou pouco compreendidos. Observe as várias metodologias ágeis, juntamente com o Modelo Espiral, para abordar o planejamento do ciclo de vida.
Comece obtendo o objetivo de negócios que impulsiona o desenvolvimento deste software. Entreviste o cliente e os usuários e, se puder, assista-os no trabalho. Tente determinar qual problema eles estão tentando resolver. Veja quais ferramentas eles estão usando atualmente e como eles as utilizam, para que você possa melhorar sua maneira atual de fazer as coisas. Use esta oportunidade para aprender o domínio e seu idioma - será infinitamente mais fácil se comunicar se os desenvolvedores de software e os clientes / usuários falarem o mesmo idioma (e não esperarem que os clientes / usuários falem em termos de software).
Depois de entender quais são os objetivos, você poderá começar a trabalhar com os modelos de design de interface do usuário que possui e "fazer engenharia reversa" dos casos de uso e histórias de usuários a partir deles, com base em como várias telas se encaixam. O formato da história do usuário provavelmente funcionaria bem para lidar com um público não técnico. O formato As a <user type>, I want to <action> so that <reason>
funciona em termos de obter desenvolvedores e clientes / usuários falando o mesmo idioma. Assim que você começar as histórias dos usuários, eu adotaria uma abordagem de prototipagem para o desenvolvimento.
Eu acho que abordaria isso com o uso de prototipagem. Você poderia abordar isso a partir de uma perspectiva de prototipagem evolutiva ou prototipagem descartável , mas eu consideraria uma abordagem de prototipagem evolutiva primeiro. Comece com as histórias de usuário com as quais você se sente mais confortável e validou e comece a implementá-las. Ao implementá-los, obtenha feedback do cliente e desenvolva novas histórias de usuários, casos de uso e resolva mal-entendidos.
Além disso, não pense nisso como "implementar uma interface de usuário com recursos". Em vez disso, pense nisso como fatias verticais finas. Não implemente toda a interface do usuário de uma só vez e depois se preocupe com os recursos. Em vez disso, use as maquetes da interface do usuário para identificar recursos e outros requisitos e, em seguida, implemente uma fatia vertical da interface do usuário até a lógica comercial e o armazenamento de dados. Repita isso para cada fatia vertical. Você também deve fazer sugestões para melhorar a interface do usuário com base nos requisitos e nos princípios de usabilidade.
Eu recomendaria a leitura de dois livros de Karl Wiegers - Requisitos de Software e Mais sobre Requisitos de Software . Penso que estes irão ajudá-lo com a engenharia de requisitos e as melhores práticas nesta área.