Два полюса - прототип и ТЗ с детальной спецификацией.
Посередине болтаются user story, но они ближе к прототипированию, хотя можно как первым этапом со спецификацией соединять.
Другое измерение - это частота, чем больше тем лучше.
Могут сильно помочь сценарии тестирования (те же user stories, по факту): детальные шаги как будем проверять разработку, что должно быть на выходе, как будет проверять пользователь. Этим по идее снимаем большую часть рисков.