Привет! Меня зовут Настя, я системный аналитик в X5 Tech. В этой статье хочу поделиться своим опытом создания чек-листа для технического задания (далее – ТЗ), какие ошибки совершала на начальных этапах работы над продуктом, и как сформированный чек-лист помогает мне уже на протяжении трёх лет. Такой чек-лист может пригодиться не только для самостоятельной работы над ТЗ, но и как инструмент проверки уже готового документа.

Статья будет полезна, как мне кажется, системным и бизнес-аналитикам, владельцам продуктов и тем, кто работает с разработкой требований.

Предыстория

Несколько интернет-источников говорят нам, что впервые чек-лист придумали в авиации (описание можно почитать тут или тут). Если кратко, то в 1934 году во время испытания новой модели Boeing произошло крушение: достаточно опытный пилот совершил ошибку. Именно этот случай показал, что человеку, пусть и подготовленному, сложно держать в голове много информации. Так был придуман некий список, включающий самый важный перечень процессов управления и подготовки к полёту. Такой список помогал техническим специалистам в авиации, а со временем модернизировался, да и вовсе перешёл в повседневную жизнь многих людей.

Чек-листы в современном мире

Каждый день мы выполняем разные задачи: некоторые из них “на автомате”, другие требуют чуть больше времени и сосредоточенности. Но все они так или иначе состоят из списка действий, который мы и называем чек-листом. Возьмём, например, различные марафоны уборки (генеральная уборка за три дня) или элементарный список покупок – чем не чек-лист? Или список того, что нужно взять в путешествие. Ни одна моя поездка уже не обходится без такого чек-листа. Плюс ко всему, современному миру – современные решения: есть даже книги по написанию чек-листов и чек-лист для диджитал уборки.

Источник                                                                                   Источник

Так зачем же мы их используем? Чтобы упрощать и структурировать. Сейчас вокруг нас много информационного шума, дел и задач, и с легкостью можно упустить что-то важное. Чаще всего наши списки не такие сложные, и забывчивость не приводит к крушениям самолётов. Тем не менее, пользу чек-листов сложно отрицать, ведь они:

  • сокращают ошибки в наших действиях;

  • экономят время на выполнение задач;

  • помогают не думать о рутине (речь про частный случай, например, поход в магазин).

Ошибки: провал или опыт?

“Извлекай пользу из каждой ошибки.”

Людвиг Витгенштейн

Мне, как аналитику, свойственно упрощать не только работу программистов или заказчиков, но и свою собственную. В первые месяцы работы в Х5 Tech я столкнулась с большим объёмом информации:

  • многообразие бизнес-процессов в магазинах “Пятёрочка”;

  • состав и конфигурация внутренней системы магазинов;

  • несколько смежных подразделений и команд разработки.

Мне стало интересно разбираться в процессах, коммуницировать с разными людьми, собирать и выявлять требования. Но держать все данные в голове – сложно, память стала подводить, а разработчики и тестировщики стали чаще замечать недочёты в ТЗ.

В итоге, спустя три месяца, для повышения качества постановок на разработку (и, в основном, для сокращения поступающих вопросов от коллег :)) я сформировала свой чек-лист того, что необходимо учитывать в ТЗ.

Первая версия выглядела так:

Как же я к этому пришла? Как ни банально, но большинство из нас учатся на ошибках, причём, на собственных. О них и расскажу.

Ошибка № 1: Забывать описывать то, что часто используется

Информационная система, над которой мы с командой работаем, устроена таким образом, что пользователь видит свои рабочие документы с разными статусами на разных экранных формах: форма с активными документами (с которыми ещё можно работать) и форма с архивными документами (не доступными для изменений). Так вот, изменения чаще всего касались формы активных документов – добавить подсказку к полю, новую колонку в таблице, новое поле. А т. к. архивная форма чаще повторяла активную, то изменения в ней должны быть аналогичные.

Для примера рассмотрим процесс составления претензии к поставщику относительно качества товара. Директору магазина необходимо в этом случае совершить такие действия:

  • составить электронный акт разногласий;

  • распечатать акт;

  • подписать акт;

  • отправить на рассмотрение в претензионный отдел.

Согласование акта зависит от того, был ли он оформлен в первые минуты приёмки товара при водителе или в течение суток уже без водителя. Таким образом, специалисту по претензиям нужно было видеть способ оформления акта. Но даже при наличии всей информации в электронном виде (тут у нас идёт интеграция между системами), специалист и директор между собой могут обмениваться уточняющей информацией. И если директору нужно посмотреть, каким способом выставлен акт (в электронном архиве документов), то, очевидно, мы должны были добавить отображение этого способа и в архивном акте. Что я и “успешно” забыла указать в ТЗ и чего не было прописано в бизнес-требованиях…

Отображение поля “Создан: при водителе/без водителя” на форме активного документа
Отображение поля “Создан: при водителе/без водителя” на форме активного документа

Получалось так, что путь пользователя заканчивался на этапе работы с активным документом и не описывал его действия с архивным. Проблема обнаружилась разработчиком в одной из задач, когда он увидел в коде связь активной и архивной формы. Посовещавшись на троих – я, разработчик и тестировщик, – мы решили доработать этот момент в текущем релизе и не переносить на следующий. Так изменения для пользователя выглядели более логичными и не вызывали вопросов относительно разных интерфейсов одной и той же формы.

Отображение поля “Создан” на форме архивного документа
Отображение поля “Создан” на форме архивного документа

Ошибка № 2: Забывать описывать то, что редко используется

Не все задачи включают изменения одной и той же функциональности. Например, могут быть изменения только экранных форм и не затрагивать изменения в печатных формах, или наоборот. То же касается и изменений конфигурации системы. Не так часто это используется в повседневной разработке, но может быть частью новой фичи. А без этой части картина для пользователя, опять же, будет неполной.

Иногда тестировщики при проверке задачи проходятся не только непосредственно по доработкам и альтернативным сценариям, но и тестируют “около”. Это значит, что может быть проверена функциональность, связанная с путём пользователя, который мы улучшаем, но не входящая в начальный скоуп разработки. Так мы обнаружили, что в одной из задач нам не хватило доработки печатной формы. И т. к. изменения были небольшими, то внесли это в уже написанное ТЗ.

Вот пример экранной формы с данными по выкладке товара на полке:

А вот так выглядит печатная форма:

Видно, что поля “Фейс шир./ Фейс выс./Стиль выкладки” присутствуют и в документе для печати, и на экранной форме, но изначально в ТЗ я не прописывала добавление этих данных на печатную форму.

Ошибка № 3: Забывать описывать изменения на всех устройствах

Если система имеет десктопную и мобильные версии, то изменения должны быть и там, и там. Команды, занимающиеся мобильной разработкой и разработкой десктопа,  разные. Аналитики, тестировщики, разработчики между собой пересекаются не во всех доработках, а бизнес-требования чаще формулируются для системы в общем.

Заказчик ожидает, что функциональность будет внедрена на всех устройствах, а по факту оказалось, что в релизе поддержали изменения только в десктопной версии. Разработка на мобильных устройствах “переехала” на следующий релиз ввиду ограничения по срокам и ресурсам, которые изначально не запланировали. Доработки велись в последующие месяцы, и по факту, для пользователя мобильная версия на это время стала урезанной версией десктопной. Это отставание длилось на протяжении нескольких релизных циклов, но в конце концов всё выровнялось.

Были ещё несколько кейсов, в которых так или иначе всплывали доработки в уже согласованных требованиях.

Как мы это решали?

  • некоторые ошибки исправлялись в момент согласования ТЗ и разработки;

  • некоторые через CR (Change Request – запрос на изменение) уже после разработки, на пилоте новой версии системы;

  • некоторые переходили на следующий релиз.

Мой чек-лист – моя прелесть

Все предыдущие ошибки и решения помогли мне сформировать свой чек-лист, который я использую для валидации ТЗ. По нему я сверяю документ перед тем, как отдать его в разработку: а всё ли я учла в описании? Все ли альтернативные сценарии указаны? Все ли устройства описаны и т. п.

И, конечно, я была очень рада, когда он перестал наполняться. Ведь это означало, что большинство шишек уже набиты, а, значит, можно составлять более полные и точные ТЗ.

Формально мой чек-лист содержит следующие пункты:

Описание

Пример

1

Чаще всего дорабатывается в каждой задаче

Изменения в базе данных (формат и размерность полей); доработка экранных форм.

2

Редко дорабатывается

Отчёты; печатные формы; экранные фильтры.

3

Является специфичным для бизнес-процесса

Разные пути пользователя для достижения одной и той же цели: доработки должны быть описаны для всех таких возможных ситуаций.

4

Наличие разных форматов или устройств

Десктоп, мобильная версия. Мобильная версия с разным интерфейсом на разных физических устройствах (устройство под Android или Windows).

5

Конфигурация системы

Дополнительные параметры развёртывания, настройки системы.

6

Интеграция с другими системами

Формат и размерность параметров интеграции между системами; все ли системы учтены.

7

Проверка описания форматов данных или сообщений на соответствие принятым стандартам/гайдлайнам разработки

Если есть корпоративные стандарты, то необходимо их соблюдать.

Скачать обобщённый чек-лист можно здесь.

Мой список содержит проверку узконаправленных бизнес-процессов, за доработку которых отвечает наша команда. И если задача достаточно объёмная (бизнес-требования подразумевают доработку не на один спринт или релиз), то обязательно сверяю ТЗ с этим чек-листом.

Спустя год работы и по сей день он выглядит так:

Ещё хочу добавить, что если проект или сфера автоматизируемой деятельности сложная (включает много деталей или просто много информации), то лучше заранее создать свой чек-лист. Попробуйте сформировать его целенаправленно, а не на ошибках. Надеюсь, это будет менее болезненно для команды, и мой чек-лист поможет вам в этом.

Применение чек-листа для ТЗ

Если говорить о пользе своего чек-листа, то для себя я определила три ситуации, в которых его использую:

  1. при согласовании бизнес-требований: проверить, всё ли учёл бизнес-аналитик и заказчик;

  2. при написании ТЗ: легче разбивать на задачи для разработки. Например, можно оформить отдельные задачи на изменение БД, изменение экранных форм, интеграцию;

  3. в процессе разработки: ответы на вопросы разработчиков и тестировщиков –  почему так, а не иначе написано в ТЗ. А потому что, следуя чек-листу:

    • согласовывала изменения с архитекторами;

    • использовала корпоративные гайдлайны;

    • общалась и согласовывала требования с бизнес-экспертами/заказчиком по различным бизнес-процессам.

Зачем ещё может понадобиться чек-лист для ТЗ?

  • Чтобы не забыть что-то сделать:

проходясь по такому чек-листу, я понимала, что иногда в готовом ТЗ забывала указывать какие-то требования на разработку. И, тем самым, чек-лист помогал мне заранее исправить ситуацию, когда изменения пришлось бы вносить уже в момент разработки.

  • Чтобы не делать лишнего:

порой функциональность могла присутствовать на одной форме и отсутствовать на другой намеренно, но благодаря чек-листу я знала, что заказчику нужна такая разница в требованиях, а не то, что он или я просто забыли указать это в документах для разработки.

Комментарии (3)


  1. gleb_l
    29.06.2023 16:13

    На мой взгляд, бОльшая проблема - кристаллизация БТ из бизнес-бульона, чем само преобразование БТ в ТЗ. И здесь в принципе чеклисты могут помочь (Шарапов, слушай - правило первое - найди тему, которая ему интересна..), но харизма самого следователя даст много больше. В любом мире то, чем мы пользуемся часто, оказывается настолько привычным, что обходится вниманием. Вспомните Агату Кристи или Холмса - слугу, почтальона, клерка никто не считает за субъекта, способного совершить бизнес-действие (в случае детектива - преступное)

    Отсюда вывод - сыщик с воображением и способностью имперсонироваться в преступника - хороший кандидат на сбор БТ и помощник в преобразовании БТ в ТТ


  1. tempart
    29.06.2023 16:13

    Сначала пытался понять, чек-лист ТЗ - валидация на что тут? На соответствие БТ, на "качество" (по критериям) самого дока? Не понял.

    Потом увидел, что

    для повышения качества постановок на разработку (и, в основном, для сокращения поступающих вопросов от коллег :)) я сформировала свой чек-лист того, что необходимо учитывать в ТЗ

    Тут уже попытался понять, что такое "ТЗ" в статье. Судя по всему, здесь это синоним постановки на разработку.
    На мой взгляд, так не надо делать. ТЗ в мире разработки ИС - вполне конкретный вид документа, формализован в различных методиках, стандартах.

    Ну и, честно говоря, вижу изобретение велосипеда, причём неотшлифованного.
    Есть модели документирования разработки ИС, от бизнес-целей до каких-нибудь эксплуатационных на готовый продукт. Соответственно, есть методики валидации этих доков.
    В данном случае, странно видеть в чек-листе то, что должно быть описано (формализовано) до постановки на разработку. Чек-лист постановки - это, фактически, трассировка задач в постановке требованиям на функциональность


    1. AShevchenk0 Автор
      29.06.2023 16:13

      Спасибо за интересный коммент, есть над чем задуматься и порассуждать)

      ТЗ в мире разработки ИС - вполне конкретный вид документа, формализован в различных методиках, стандартах.

      Согласна с этим утверждением. Есть и стандарты ГОСТ по разработке, и внутренние корпоративные стандарты компаний, которые говорят нам о том, что должно быть описано в таком документе. И в данном случае ТЗ – это действительно синоним описания постановки на разработку.

      В моей статье речь про исследование до написания ТЗ/постановки и про проверку некоторых пунктов, которые мы потом формализуем в документе ТЗ или в описании постановки на разработку.

      Например, тот же самый пункт про требования на доработку на разных устройствах – было немало задач, когда функциональность нужна была только на одном устройстве, или наоборот, когда заказчик озвучивал требование только для одного устройства, бизнес-аналитик фиксировал это в БТ, а потом (уже после разработки) выяснилось, что надо было сделать на всех устройствах. Конечно, можно было сказать «этого не было в БТ», «что заказали, то и сделали», но если можно предусмотреть и исключить такие ситуации до разработки, то почему бы это не сделать? 

      Таким образом, я говорю о том, что чек-лист помогает сократить кол-во ошибок в постановках, помогает валидировать как БТ и требования заказчика, так и ТЗ/постановки коллег. Валидировать на предмет таких ситуаций, как:

      • действительно ли заказчик озвучил то, что ожидает от разработки

      • действительно ли бизнес-аналитик правильно зафиксировал это в БТ

      • действительно ли в постановке на разработку учтено всё, что покроет ожидания заказчика

      странно видеть в чек-листе то, что должно быть описано (формализовано) до постановки на разработку.

      В этом как раз нет ничего странного) Чек-лист и есть тот самый формализованный список того, что мы должны учитывать до разработки. Именно он помогает не забывать указывать в ТЗ/постановках то, что ожидает заказчик. И именно он помогает избежать багов и наличия CR, когда в разработке участвует несколько команд или даже подразделений (в случае с интеграционными задачами).

      Различные стандарты и методологии документирования – тоже хорошо, но в данной ситуации, когда я только устраивалась в X5 Tech, они не покрывали всех моих потребностей для написания таких постановок, которые бы учитывали все нюансы нашей корпоративной системы и особенностей разработки. Поэтому и был сформирован такой чек-лист, которым я решила поделиться.

       

      Резюмируя:

      • ТЗ в данном случае – синоним постановки на разработку;

      • чек-лист – формальное описание того, что должно быть учтено до разработки;

      • и такое формальное описание позволяет валидировать документы (БТ/ТЗ/описания постановок на разработку) и/или бизнес-требования на предмет того, чтобы результат разработки закрывал потребности и ожидания заказчика.