Я хотел бы прояснить взаимосвязь между двумя важными понятиями: командным определением Критериев готовности (Definition of done) и Условий удовлетворенности (Conditions of Satisfaction) для пользовательской истории.
Что такое Критерии готовности (Definition of done)?
Критерии готовности (Definition of done) — это согласованный набор критериев, которые должны быть выполнены прежде, чем элемент бэклога (пользовательская история) будет считаться завершенным. Каждый элемент бэклога для конкретного продукта должен соответствовать определению критериев готовности (Definition of done), чтобы считаться потенциально готовым.
Критерии готовности (Definition of done) каждой команды будут немного отличаться, но что важно запомнить: Критерии готовности (Definition of done) должны быть одинаковыми и могут быть применены ко всем невыполненным элементам бэклога.
Пример Критериев готовности (Definition of done).
Код хорошо написан. То есть команда не чувствует необходимости немедленно проводить рефакторинг или переписывать его.
Код проверен.
Код поставляется с автоматическими тестами на всех соответствующих уровнях.
Код был либо запрограммирован в паре, либо прошел проверку кода (Code review).
Реализованая функция была описана в документации для конечного пользователя.
Кто создает Критерии готовности (Definition of done)?
Разработчики создают Критерии готовности (Definition of done) благодаря их общему пониманию того, что означает создание высококачественного и готового к поставке продукта в их понимании, если конечно в организации уже не существует Критериев готовности (Definition of done), которому должны подчиняться все команды.
Критерии готовности (Definition of done) должны применяться ко всем инкрементам продукта и должны подчиняться стандартам качества организации. Критерии готовности (Definition of done) могут содержать элементы, уникальные для каждого продукта.
Что такое Условия удовлетворенности (Conditions of Satisfaction)?
Условия удовлетворенности (Conditions of Satisfaction) специфичны для каждого элемента бэклога и определяют, что должно быть верным, чтобы эта конкретная пользовательская история считалась выполненной.
Критерии приемки (Acceptance criteria) vs Условия удовлетворенности (Conditions of Satisfaction)
Многие люди путают Критерии приемки (Acceptance criteria) и Условия удовлетворенности (Conditions of Satisfaction), не понимая разницы. И это совершенно нормально, так как принципиальной разницы нет. Я предпочитаю использователь термин Условия удовлетворенности (Conditions of Satisfaction), а не Критерии приемки (Acceptance criteria) по одной причине: это понятнее для владельца продукта. А владелец продукта — это человек, в первую очередь ответственный за создание условий удовлетворенности пользователей.
Владельцы продукта (и некоторые программисты) считают написание Критериев приемки (Acceptance criteria) чем-то особенным, чем занимаются тестировщики. Когда я прошу их написать Критерии приемки (Acceptance criteria) для пользовательской истории, многие владельцы продуктов кажутся сбитыми с толку, говоря, что они не знают, как их написать.
Владельцам продуктов будет намного легче ответить на вопрос, если я буду избегать термина «Критерии приемки (Acceptance criteria)». Поэтому вместо этого я спрашиваю их, что должно быть правдой, чтобы вы могли считать эту конкретную историю законченной? И мы фиксируем их как условия удовлетворенности (Conditions of Satisfaction), которые должны быть выполнены для каждой пользовательской истории
Примеры Условий удовлетворенности (Conditions of Satisfaction)
Чтобы понять, что такое Условия удовлетворенности (Conditions of Satisfaction), полезно взглянуть на несколько примеров. Рассмотрим пользовательскую историю, например: «Как пользователь, я должен войти в систему перед использованием сайта». Эта пользовательская история может включать следующие Условия удовлетворенности (Conditions of Satisfaction):
пользователь входит в систему только тогда, когда предоставлены надлежащие учетные данные
доступна опция «запомнить меня»
пользователь может запросить напоминание пароля
пользователь заблокирован после трех неудачных попыток
Чтобы этот пример пользовательской истории был выполнен, все эти Условия удовлетворенности (Conditions of Satisfaction) должны быть истинными, и Критерии готовности (Definition of done) также должны быть выполнены.
Критерии приемки (Acceptance criteria) vs Критерии готовности (Definition of done)
Критерии приемки (Acceptance criteria) и Условия удовлетворенности (Conditions of Satisfaction) — это два термина, которые означают почти одно и то же. Когда дело доходит до владельцев продуктов, пишущих Условия удовлетворенности (Conditions of Satisfaction) для пользовательских историй, совершенно нормально называть эти условия Критерии приемки (Acceptance criteria).
Если вспомнить про Критерии готовности (Definition of done), то думайте о них, как о специальном наборе Критериев приемки (Acceptance criteria), которые применимы и добавляются к каждой пользовательской истории (элементу бэклога). Чтобы описанная выше история пользователя была реализована, должны быть верны две вещи.
1) Должны быть выполнены все Критерии приемки (Acceptance criteria) или Условия удовлетворенности (Conditions of Satisfaction), специфичные для этой истории, и
2) Все критерии, составляющие Критерии готовности (Definition of done), общие для всех пользовательских историй проекта или организации, должны быть выполнены.
Примечание переводчика: я решила перевести статью Майка Кона о том, что такое Условия удовлетворенности, так как сама впервые столкнулась с этим термином. Напишите в комментариях, что думаете о вводе нового термина?