Кому: Graham,
#100
> Если ТЗ будет делать одна компания, а работы по ТЗ выполнять другая, то в результате, в большинстве случаев, это выльется в написание нового ТЗ, бо каждый разработчик пишет ТЗ под себя.
Ну вот как раз поэтому более правильно, когда ТЗ диктует заказчик. При этом ТЗ перечисляет что должно быть сделано (возможно с указанием почему так), какие требования предъявляются, в какие сроки желательно было бы уложиться. Но в ТЗ не закладываются конкретные способы реализации. Это дает возможность использовать нормально написанное ТЗ для конструктивного общения с разными исполнителями.
Правда, практически никогда не приходилось видеть, чтобы в разработке софта кто-то всерьез придерживался ГОСТовской последовательности этапов: техническое задание, эскизный проект, технический проект и т.д. Сейчас все по более гибким схемам происходит -- заказчик озвучивает список своих функциональных требований, под них исполнитель быстренько формирует т.н. vision (т.е. описание того, как решение в принципе могло бы выглядеть), если заказчика устраивает vision и коммерческое предложение, то начинается проект, на начальной стадии которого формулируется и подписывается ТЗ. Однако, с некоторыми заказчиками ТЗ может формулироваться чуть ли не на протяжении всего времени выполнения проекта и, фактически, подписываться ТЗ может одновременно с актами приемо-сдаточных испытаний :)
Ну и, кстати говоря, переход к модным нонче гибким методологиям и итерационной разработке с выдачей промежуточных версий раз в месяц (или раз в 1.5-2 месяца) так же не способствует тщательному написанию подробного ТЗ до начала разработки.