Теперь я всё делаю только с ТЗ)
Да часто ето убивает время, да ето многим заказчикам не нравиться, но был интереснейший случай:
появился человечег со словами я хочу СRM'ку, мы ему ОК давай ТЗ. Принесли стопочку нам листов едак под сто с различными видами интерфейса его пронумерованными елементами и несколькими строчками текста к каждому из номеров. И закипела работа) С виду всё понятно всё ясно что куда и как при нажатии чего достаеться аль выводиться но механизм взаимодействия модулей был очень расплывчат.
Ето было начало и не понравилось заказчику решение, и сели мы вместе с ним да пошли по всем модулям и страничкам написали ориентировочное ТЗ и закипела работа...
А теперь некоторые цифры:
Изучение первоначального ТЗ - 4 часа
Разработка проекта по первоначальному ТЗ - 3 недели
Выяснение всех рабочих моментов по проекту с детализацией алгоритмов и их взаимодействия с выездом в офис заказчика на такси и просиживанием там по 6-7 часов - 7 месяцев (с паралельным вставлением всех костылей в первоначальную реализацию)
Что интересно так как выясненные моменты ни коим образом не противоречили первоначальному ТЗ и в нём не было строчки о "доработке" нас жестоко поимели.
ИТОГ:
1.время разработки до удовлетворения - 1 год, а денег получено как за 2 месяца.
2.Если бы в первоначальном ТЗ даже по "несовместимым с веб-приложениями" ГОСТАМ были указаны алгоритмы - на разработку ТЗ - две недели, на систему 1 месяц.
3. Заказчик считает нас педерастами, мы - его. (хоть виноваты обе стороны)
После етого я всегда все проекты (даже сайты-визиточки) делаю с ТЗ.
Стандарт ТЗ штука расплывчатая, но ТЗ есть документ который в подписанном виде способен указать кто таки педераст, а кто -нет.
Сейчас мы поступаем так - приходит человек без ТЗ, мы ему вежливо - либо на йух лиюо с ТЗ либо мы его делаем за деньгу.
Приходит с ТЗ - мы смотрим ето ТЗ, если что-то расплывчато добавляем и всегда теперь ВСЕГДА там есть строчка регламентирующая поведение и сексуальную ориентацию заказчика в случае отклонений от требований в подписанном ТЗ.
Главное в ТЗ ето выяснить у заказчика что он хочет.
Причём так чтобы ето было понятно програмисту, а не только заказчику.
Пора уже понять что люди работающие по определённым алгоритмам впитали их как встать-умыться, а вот описать они ето могут - "я встал как обычно".
Главное в ТЗ (ИМХО):
1. Описание модулей
2. Алгоритм работы каждого из модулей (если - то)
3. Связи между модулями (если там - то, тогда здесь - так)
4. Требование к системе как целостному объекту - безопасность, авторизация ограничение прав доступа к определённым модулям.
5. (необязательно, но часто лучше прописать, предварительно дав варианты) Интерфейс.
6. Самое главное - "любые изменения системы отличные от указанных в данном ТЗ описаниях (нас не е...)(нам п....) выполняються в отдельно оговариваемые сроки по сдельной цене с подписанием изменённого ТЗ"
ЗЫ согласен - "многа букафф", но надеюсь после прочтения етого поста многие не войдут в тёмную комнату, под названием - "Разработка проекта без чётко сформулированного ТЗ", полную граблей .