Le persone che non hanno sviluppato software non sanno cosa devono sapere gli sviluppatori di software. Non ci si può aspettare che producano specifiche dei requisiti e casi d'uso da soli. È necessario applicare le tecniche di elicitazione dei requisiti per ottenere le informazioni che è necessario conoscere. Lavora con il cliente (e, si spera, un campione di utenti di vari ruoli) per determinare ciò di cui hanno bisogno o che desiderano. Tecniche comuni per questo sono interviste e / o osservazioni dell'utente, identificazione di casi d'uso e storie utente e prototipazione.
Consiglio vivamente di applicare tecniche di sviluppo iterativo e incrementale in questo caso, poiché hai requisiti vaghi, incompleti o poco compresi. Guarda le varie metodologie agili insieme al modello a spirale per affrontare la pianificazione del ciclo di vita.
Inizia ottenendo l'obiettivo aziendale che guida lo sviluppo di questo software. Intervista al client e agli utenti e, se possibile, guardali al lavoro. Prova a determinare quale problema stanno cercando di risolvere. Scopri quali strumenti stanno attualmente utilizzando e come li usano in modo da poter migliorare il loro modo attuale di fare le cose. Sfrutta questa opportunità per apprendere il dominio e la sua lingua: diventerà infinitamente più semplice comunicare se gli sviluppatori software e il client / gli utenti parlano tutti la stessa lingua (e non si aspettano che il client / gli utenti parlino in termini di software).
Una volta capito quali sono gli obiettivi, puoi iniziare a lavorare con i modelli di progettazione dell'interfaccia utente che hai e "retroingegnerizzare" i casi d'uso e le storie degli utenti da essi in base al modo in cui i vari schermi si adattano insieme. Il formato della storia dell'utente probabilmente funzionerebbe bene per trattare un pubblico non tecnico. Il formato di As a <user type>, I want to <action> so that <reason>
funziona in termini di far parlare sviluppatori e clienti / utenti nella stessa lingua. Una volta che puoi iniziare con le storie degli utenti, adotterò un approccio di prototipazione allo sviluppo.
Penso che mi avvicinerei a questo con l'uso della prototipazione. Potresti affrontarlo da una prospettiva di prototipazione evolutiva o prototipazione usa e getta , ma considererei prima un approccio di prototipazione evolutiva. Inizia con le storie utente con cui ti senti più a tuo agio e che hai convalidato e inizia a implementarle. Man mano che li implementate, ottenete feedback dal cliente e sviluppate nuovi user story, casi d'uso e risolvete incomprensioni.
Inoltre, non pensare a questo come a "implementare un'interfaccia utente con funzionalità sottostanti". Invece, pensalo come sottili fette verticali. Non implementare tutte le interfacce utente contemporaneamente e preoccupati delle funzionalità. Utilizzare invece i mockup dell'interfaccia utente per identificare funzionalità e altri requisiti, quindi implementare una sezione verticale dall'interfaccia utente fino alla logica aziendale e all'archiviazione dei dati. Ripeti l'operazione per ogni fetta verticale. Dovresti anche sentirti libero di dare suggerimenti per migliorare l'interfaccia utente in base ai requisiti e ai principi di usabilità.
Consiglierei di leggere due libri di Karl Wiegers - Requisiti software e altro sui requisiti software . Penso che questi ti aiuteranno con l'ingegneria dei requisiti e le migliori pratiche in questo settore.