У меня есть непопулярное мнение, но оно имеет смысл, для любого крупного продукта, невозможно предугадать заранее что с ним будет. Если цикл разработки у вас годы, платит вам крупных заказчик или государство, и техническое задание это часть вашей разработки (обычно это напрямую связано), делите этап на части, запускайте пилотный проект как получится, отлаживайте на нем все нюансы и тонкости, но главное будьте готовы что этот продукт через 1-2 года ДОЛЖЕН быть сброшен в утиль и заменен новым, ТЗ которого создано в процессе разработки и эксплуатации этого первого прототипа.
Это так или иначе происходит, но если не готовиться к этому заранее, то тратится больше времени, сил и денег заказчика.
Если заказчик - вы сами, и вы сами занимаетесь реализацией, то... какие нафиг правильные способы разработки, обычно тут либо вы успеваете либо вылетаете с рынка. А если вы единственный в нише, то.. все равно, ваш трон будет таковым не долго, если вы станете успешным. Скорость разработки к сожалению ценится выше чем ее 'правильная' поддержка.. главное помните что все что вы разработаете сейчас будет заменено (не рефакторинг а именно новый продукт), психологически будет проще.