Привет, меня зовут Юлия Новикова и я системный аналитик. Сегодня обсудим критерии качества требований и как их применять

О чём пойдёт речь:

  • зачем соблюдать критерии качества при написании требований;

  • как проверить хорошее требование или нет с помощью критериев качества;

  • как исправить требование

Для кого эта статья:

  • джуны аналитики научатся писать понятные требования;

  • мидлы убедятся, что всё делают правильно;

  • сеньоры могут поделиться опытом в комментариях, что будет полезно всем грейдам

Озвучила организационную информацию, переходим к сути


Зачем соблюдать критерии качества при написании требований?

Критерии качества — принципы, которые гарантируют, что требования будут понятны всем

Понятные требования помогут создать нужный для заказчика продукт и уменьшить шансы на появление той самой страшной ошибки аналитики при сдаче проекта, когда клиент говорит «А мы хотели по‑другому»

Характеристики качества требований:

  1. Атомарность

  2. Полнота

  3. Краткость

  4. Консистентность

  5. Выполнимость

  6. Приоритизированность

  7. Тестируемость

  8. Однозначность

  9. Понятность


Как проверить требование?

Прогоните его по каждому критерию и поправьте, если нужно

Атомарность

Требование атомарно, если его нельзя декомпозировать без потери завершённости

Инструкция

Как проверить требование на атомарность:

  1. Прочитайте требование

  2. Если в тексте нет перечислений, условий или союзов — переходим к проверке на полноту

  3. Если есть — проверьте по чек‑листу ниже

  4. Если пункт применим, декомпозируйте требование и вернитесь на первый шаг

  5. Если пункт неприменим — пропустите его

Чек‑лист:

  1. Разделены функциональные и нефункциональные требования

  2. Каждая функция описана отдельно

  3. Разграничены этапы процесса

  4. Требования четко разделены по направлениям деятельности

Полнота

Требование полное, если содержит всю информацию, необходимую для реализации задачи

Инструкция
  1. Проверьте описание. Убедитесь, что учли все возможные сценарии
    Например, если описали создание пользователя, не забудьте о редактировании и удалении

  2. Оцените детализацию. Прочитайте ещё раз и дополните требование, если возникают уточняющие вопросы

  3. Исследуйте граничные условия

    К примеру,

    • числовые поля и строки. Пропишите ограничение количества символов

    • файлы. Установите ограничение размера в мб для загрузки

    • количество записей на странице для настройки пагинации

  4. Определите критерии успеха. Убедитесь, что указаны четкие и измеримые критерии приемки
    Было требование «Покупатель быстро заказывает товар». Измерим скорость в шагах. Стало: «Покупатель заказывает товар за 3 клика». Уже лучше

  5. Оцените как новые требования изменят систему и поправьте документацию

  6. Посмотрите на требования под другим углом: продумайте интерфейс и напишите требования для дизайнера, составьте user story, нарисуйте диаграммы UML или BPMN

Краткость

Требование краткое, если не содержит лишнюю информацию

Как сделать требование кратким:

  1. Определите основную мысль

  2. Задайте вопрос «Можно ли убрать без потери смысла?» к каждому слову в требовании. Если да — убирайте


Консистентность

Требование консистентно, если не противоречит другим требованиям проекта

Внимательно отнеситесь к описанию БД и маппингов. Часто здесь встречаются ошибки

Как написать консистентное требование:

  1. Сравните с другими требованиями. Посмотрите, не противоречит ли оно тому, что уже есть на проекте. Возможно, стоит поправить связанные статьи

  2. Поговорите с командой. Обсудите новое требование, вопросы покажут что дописать

  3. Проиллюстрируйте требование на примере и уточните похож ли он на ожидаемый результат. Иллюстрацию для примера выбирайте по ситуации, но вот распространённые варианты: макет, сценарий, схема или excel файл


Выполнимость

Оцените ресурсы:

  1. Бюджет. Сколько времени денег нужно для реализации и укладывается ли хотелка в бюджет

  2. Квалификация команды. Сможет ли команда выполнить требование или нужно нанимать новых людей

  3. Технологии. Можно ли реализовать требование чисто технически? Обсудите с командой


Приоритизированность

Выставить приоритет получится, если требование атомарное, полное и непротиворечивое. Этот пункт особенно полезен, когда продукт развивается итерациями

Пример приоритизируемых требований:

  • Приложение поддерживает авторизацию через социальные сети (VK, Telegram)

  • Приложение поддерживает двухфакторную аутентификацию


Тестируемость

Напишите базовые тест‑кейсы для QA даже если требование «понятно, как проверить». Будет достаточно одного успешного кейса и 2–3 с ошибкой. Это ускорит погружение команды в задачу и создание unit‑тестов со стороны разработки

Однозначность и понятность

Уточните требование с заказчиком и обсудите с командой. Убедитесь, что участники процесса понимают требования одинаково. От заказчика важно получить письменное подтверждение


Вот и всё. Теперь требование хорошее, поздравляю с прохождением этого пути :)

Какими правилами вы руководствуетесь для написания требований? Поделитесь опытом в комментариях

P.S.: в моём телеграм канале Шерлок в IT делюсь мнением о технологиях и полезными инструментами для аналитика. Буду рада познакомиться поближе и обсудить другие темы

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


  1. nikolz
    28.06.2024 17:32
    +3

    Вопросы к автору статьи.

    1) Вы требования к тз сами придумали или заимствовали?

    Если придумали сами:

    1. какие требования были до Вас.

    2. почему Вы полагаете, что Ваши критерии необходимы и достаточны.

    Если заимствовали, то откуда.

    ----------------

    В СССР был стандарт требований к т.з. Вы изучали опыт предшественников?


  1. Batalmv
    28.06.2024 17:32

    Пример "мы за все хорошее против всего плохого" :) В реальной жизни это все не работает.

    Причина проста и очевидна. Системы чуть сложнее "Hello world" обычно имеют взаимосвязи, зависимости и т.д. И это самое сложное, так как отдельный маленький кирпичик описать можно, но "стена" часто почему-то не собирается. Про это особо ничего

    Плюс есть специфика. Web-морду с REST API надо описывать по одному, интеграционные сценарий на какой-то ESP - в принципе по другому, аналитику - вообще другой мир

    В реальности работает чек лист + шаблон, который надо сделать под конкретный проект + заранее оговорить с командой, какие требования применяются всегда (логи, безопасность, нотация), чтобы не писать каждый раз


  1. tik4
    28.06.2024 17:32

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


  1. bonsai
    28.06.2024 17:32

    Примеров маловато. С примерами тем кому надо "5 раз описать другими словами" лучше заходит.

    Стандарты без примеров это совсем идиллия.

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


  1. ngekht
    28.06.2024 17:32

    Хороший набор критериев для первой версии требований, на самом деле. Теперь бы шаг вперед и посмотреть в сторону их поддержки.

    RUP скажем или ГОСТ 34 предполагал еще что требования должны быть

    Трассируемыми

    Изменяемыми

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

    А вы как у себя делаете управление изменениями?