...
Изначально при работе с заказчиком мы собираем требования, формируем ТЗ (которые в моей практике зачастую выглядят как требования разработчикам, так что тут ТЗ=постановки на реализацию), а после чего нам необходимо этот документ подписать.
Важно различать проблемы:
*декомпозиции системы и декомпозиции документа.
*совмещения в одном документе описания требований Заказчика и постановок на их реализацию для разработчика.
О декомпозицииНаверное, удобно декомпозировать документ по составляющим элементам (не уточняю пока, что под этим имею в виду) системы: каждому элементу - свой документ с описанием требований. Тогда выбирая способ декомпозиции системы на элементы, вы выбираете и способ декомпозиции по документам. Возможно, объединяя некоторые (или все) документы в один. Проблема в том, что разные методологии исходят из разных моделей, подразумевающих разные методологии декомпозиции систем.
Техническое задание по ГОСТ подразумевают один вид моделей системы, RUP - другую.
ГОСТ предполагает декомпозицию системы на подсистемы, которые могут снова декомпозироваться на подсистемы. Предполагается также, что можно сформулировать требования к
функциям (результатам работы) системы и описать как функции системы декомпозируются на функции подсистем. Такое верхнеуровневое описание должно объяснять (Заказчику обязательно) каким образом через функциональное взаимодействие подсистем будет получен
результат работы (выполняться функции и задачи) системы в целом. Если подсистем нет - то как декомпозиция функций системы на задачи (комплексы задач) обеспечивает достижение необходимого результата. Описание декомпозиции системы на подсистемы и функций на задачи должна давать представление о системе, которое является основой для формулировки требований и составления ТЗ.
Попытка описать в рамках ГОСТ систему, реализуемую в
объектной модели, вынуждает пускаться в достаточно вольные интерпретации требований ГОСТ, "натягивать" объектные представления на IDEF0-образные функциональные модели, изобретать способы отражения различных уровней представления системы в документах, для этого не приспособленных.
Касательно
совмещения требований и постановок: если Заказчик требует ТЗ по ГОСТ, то стоит ли описывать в ТЗ детали реализации, которые важны разработчикам, но не очень важны Заказчику (полагая, что Заказчику нужен
результат - выход функции)?
О декомпозиции при объектном подходеИсторически так сложилось, что бизнес, как правило, мыслит в терминах функциональной модели, а разработка ведется в объектных подходах. Ориентированные на RUP и UML методологии (см.например, G.Overgaard, UML blueprints), предполагают декомпозицию системы, прежде всего по вариантам использования. Декомпозиция по документам для Заказчика, по идее, может идти по вариантам использования. Но опять же, пока мы описываем систему в терминах вариантов использования. Если же мы начинаем рисовать диаграмму классов системы, причем на уровне, необходимом разработчикам системы, то её декомпозиция (особенно по вариантам использования) и поддержание её в консистентом и актуальном виде представляется вообще весьма трудоемкой и даже проблематичной задачей.
Опять же касательно
совмещения требований и постановок:Стоит ли включать детальные требования в ТЗ для Заказчика? Стоит ли вообще пытаться
оформлять детальные требования (постановки) в рамках объектного подхода в виде
официального документа - ведь не на зря были предложены Agile-подходы
?
В каком случае мы можем работать с одним документом? Такая ситуация может возникнуть, если над проектом работает один аналитик, а так же один или множество заказчиков. При работе с множеством заказчиков в одном документе потребуется хорошо планировать работу, чтобы проверку требований и реализации заказчики осуществляли поочередно. Это очень тяжело, так что я всегда вел требования каждого заказчика в отдельном документе, а после согласований их объединял. В данном случае, если заказчиков множество, то придётся распараллелить их работу по согласованию документа, что скажется на сроках проекта.
А вы пробовали рассылать документ одновременно на согласование разным заказчикам (распараллеливать)? Хотя бы в электронном виде? Если речь идет о
согласовании с Заказчиками - специалистами различных подразделений, то, они же, как правило, смотрят документ под разными углами зрения и "технически" свести их требования в одном документе, как правило, можно очень быстро. Если этапу согласования требований предшествовал этап сбора требований, то чем качественнее удалось выявить требования при обсуждении с заказчиками, тем меньше должно быть проблем при согласовании.
И опять же вопрос - насколько детально нужно описывать
реализацию, чтобы её
проверял Заказчик?
Если проект автоматизирует какую-либо большую область, то тут уже требуется работа нескольких аналитиков, особенно, если объемный проект следует выполнить за более короткий срок, чем если его будет вести один аналитик.
Мне, например, гораздо эффективнее и комфортнее работать как минимум в паре, постоянно критикуя каждое требование и идею друг друга, а потом фиксируя решение. При такой организации работы можно осуществлять тестирование требований, обсуждать их и спокойно уходить в отпуск, не боясь звонков и вопросов. Однако работа в команде сразу говорит о том, что у вас не получится писать ТЗ в одном документе.
Если система декомпозирована на взаимодействующие элементы и каждый аналитик отвечает за требования к элементу (компоненту, ВИ, фиче) то "взаимодействие" аналитиков (возможно, с перекрытием зон ответственности) неизбежно, хотя описанное Вами полное дублирование функций вряд ли разумно с точки зрения затрат на проект.
Если заказчик настаивает, что это новый проект и он не хочет подписывать новое ТЗ (постановки на реализацию), а вести только изменения на каждый элемент интерфейса, то тогда, при написании новых документов или правке каждый аналитик будет готовить список новых полей и измененных, а так же новые документы. Потом переносить это в один сводный документ и опять подписывать. Лишняя работа у нас будет по переносу новой информации. Как входной материал можно использовать не весь документ, а сразу браться за доки, которые мы мержили для подписи. Очевидная проблема - как писать формулы, если часть нумерации в старом ТЗ, а часть в новом (лазить туда-сюда и давать ссылки на старый док, чтобы показать заказчику, а потом сносить в общий ексельник, актуальный по системе).
В любом случае, самый лучший вариант - все поля вывести в отдельный Excel-файл, соблюдать там единую нумерацию (с этим не должно быть трудностей), апдейтить маленькие доки, а новые объекты вносить под новыми последующими номерами.
В описанной ситуации угадывается практика ведения документов по ГОСТ в режиме изменения. Если у Вас поехала нумерация (даже страниц) заменяете весь текст начиная с первого изменения в режиме "Лист 23-54 заменить на прилагаемые листы 23-54" "Добавить новые листы 55-57" если количество листов увеличилось или "Изъять листы 55-57", если количество листов уменьшилось. Описываете это в извещении на изменении (Excel ГОСТом не предусмотрен:) с общим указанием, что именно изменили в документе (3-5 предложений).
Номер страницы такой же важный параметр документа, как и номер формулы. Если у Вас в листе хоть что-то изменилось, да еще если в тексте есть ссылки на номер страницы, рисунка формулы и хоть какой-то номер сместился - заменяйте все страницы (по крайней мере до начала очередного раздела), не мучайтесь
.