Критерии качества требований с примерами (Часть 2)

от автора

Продолжение первой части статьи про критерии качества требований.

  1. Атомарность (или «единичность»)

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

    Пример 1: «Если пользователь нажимает ‘Отмена’, он должен вернуться на главную страницу, а изменения должны быть сброшены.»
    Здесь объединены два разных сценария: возврат на главную страницу и сброс изменений, которые могут быть реализованы независимо друг от друга.
    Атомарные требования: 
    — при нажатии ‘Отмена’, все внесенные изменения должны быть сброшены.
    — при нажатии ‘Отмена’, пользователь должен вернуться на главную страницу.

    Пример 2: «На странице отчёта должно отображаться имя пользователя, а также должна быть возможность скачивания PDF-версии отчёта.»
    Это требование описывает два разных элемента интерфейса и две разные функции программы: отображение имени пользователя и возможность скачать отчет.
    Атомарные требования: 
    — «На странице отчёта должно отображаться имя пользователя.»
    — «На странице отчёта должна быть кнопка для скачивания PDF-версии отчёта.»

  2. Необходимость (или «обязательность»)

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

    Пример 1: «В приложении должна быть возможность авторизоваться через социальную сеть Line.»
    Если продукт ориентирован на российскую аудиторию, доля пользователей из стран Азии составляет мизерный процент, и компания НЕ планирует продвижение в Азии, то поддержка авторизации через соц. сеть, популярную именно в Азии, не добавляет существенной ценности и не соответствует целям компании. Такое требование не является необходимым и обязательным для реализации.

    Пример 2: 
    Первоначальное требование: «Пользователи должны иметь возможность вернуться на предыдущую страницу с помощью кнопки «Назад».»
    Новое требование: «Пользователи должны иметь возможность вернуться на предыдущую страницу с помощью жеста свайпа.»
    Кнопка «Назад» становится ненужной после внедрения жеста. Так как жест выполняет ту же функцию, но удобнее и соответствует современным стандартам пользовательского интерфейса. После удаления кнопки «Назад» должно быть удалено и требование о ней. Иначе будет путаница.

    Пример 3: «Приложение должно поддерживать браузер Internet Explorer 10.» Это требование стало устаревшим и должно быть удалено, так как Internet Explorer 10 больше не используется и не поддерживается разработчиками.

  3. Прослеживаемость (или «трассируемость»)

    Требования должны быть оформлены в структурированном виде и, в идеале, иметь уникальные идентификаторы. В контексте тестирования прослеживаемые (или «трассируемые») требования — это те, которые удобно связать с тестами. Для этого используются матрицы трассировки. В общем виде такая матрица выглядит так:

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

    Пример 1: 
    «Приложение должно обеспечивать высокую безопасность, поддерживать различные уровни доступа для пользователей и администраторов, иметь возможность интеграции с внешними системами, такими как системы управления проектами; также оно должно работать на мобильных устройствах и поддерживать уведомления. Пользовательский интерфейс должен быть интуитивно понятным, с возможностью настройки тем, а производительность должна быть достаточной для работы с большими объемами данных. Важно обеспечить стабильную работу системы при одновременном подключении большого количества пользователей.»

    У такого полотна требований отсутствует прослеживаемость, потому что:
    — нет структуры, выделяющей функциональные и нефункциональные требования;
    — отсутствует нумерация требований;
    — несколько требований смешаны в одном абзаце, что затрудняет отслеживание и реализацию;
    — нет четкого разделения по категориям (безопасность, интерфейс, производительность и т.д.).

  4. Модифицируемость

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

    Пример 1: 
    В разделе «Авторизация» в Notion: «Все пользователи системы должны проходить двухфакторную аутентификацию для доступа к личным данным.»
    В разделе «Безопасность» в Confluence: «Все пользователи системы должны проходить двухфакторную аутентификацию для доступа к личным данным.»

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

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

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

    Пример 1:  «Реализовать функцию для повышения скорости отклика с использованием методик принудительного управления.»
    «Методики принудительного управления» — это термин, который не имеет чёткого определения в контексте IT и не используется для описания подходов к оптимизации времени отклика. Сложно понять, как реализовать такое требование и какие технологии имелись в виду.
    Понятное требование: «Реализовать кэширование данных для повышения скорости отклика.»

    Пример 2:  «Сайт должен быть способен к улучшению взаимодействия через динамическое управление параметрами.»
    Фразы «улучшение взаимодействия» и «динамическое управление параметрами» слишком абстрактны и не конкретизируют, какие аспекты взаимодействия нужно улучшить и какие параметры должны быть динамически управляемыми. Требование не несёт полезной информации.
    Понятное требование: «Сайт должен предоставлять возможность настройки пользовательского интерфейса в реальном времени: переключение светлой и тёмной темы, три варианта величины шрифта, переключение в режим высокой контрастности.»


ссылка на оригинал статьи https://habr.com/ru/articles/843220/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *