Использование пользовательских историй для автоматизированной, запланированной или реактивной функциональности

StackOverflow https://stackoverflow.com/questions/3928046

  •  30-09-2019
  •  | 
  •  

Вопрос

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

В частности, аспекты, которые меня интересуют тем, что я написал пользовательную историю для автоматизированной, запланированной или реактивной функциональности, с точки зрения которого следует описать? Учитывая, что мы используем формат истории, такой как «как [роль], я хочу [функциональность], чтобы [цель]», какова роль в «как [роли]» в части истории и что такое Цель в «так, чтобы [цель]» часть истории? Функциональность обычно достаточно ясна, но роль и цель кажутся немного относительными. Например, я мог бы использовать систему в качестве моей точки отсчета и написать что -то вроде «как система/агент по выполнению заказа Центр обработки заказа, чтобы порядок мог быть выполнен ». Или, в качестве альтернативы, я мог бы взглянуть на вещи с точки зрения бизнеса и написать что -то вроде «как прислушивание заказа, я хочу иметь возможность обрабатывать заказы, введенные клиентами, чтобы я мог выполнить свою ответственность перед своими клиентами и дать их то, что они хотят »(или что -то в этом роде). Тем не менее, я также мог бы написать это с точки зрения клиента и сказать что -то вроде «как клиент, я хочу, чтобы мой запись заказа была обработана/выполнена, чтобы я мог получить то, что я хочу».

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

Это было полезно?

Решение

Это может помочь отойти от традиционного шаблона истории пользователя и к ориентированному на заинтересованные стороны формат инъекции функций (BDD в пространстве анализа):

In order to <achieve a goal>
As <the stakeholder>
I want <someone to do something for me>.

Вы можете понять, кто является заинтересованным сторонником, подумав о том, кто будет готов заплатить за рассказ истории. Например, коробки Captcha - эти раздражающие вещи, которые пользователи должны заполнять - выполняются для пользы модератора или сделать сайт более привлекательным для получения дохода, а не для пользы пользователя вообще! На самом деле, когда вы думаете о большинстве сайтов, приложений и т. Д., Они вряд ли когда -либо сделали для пользователя. Большинство веб -сайтов о доходах от рекламы. Большинство корпоративных приложений включают в себя один департамент, вводящий данные, чтобы другой отдел мог использовать их, или так, чтобы деньги могли быть взяты от клиентов.

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

In order to make sales
As the Sales Head
I want customers to be notified of any errors with their order.

In order to make sales
As the Sales Head
I want customers' orders to be fulfilled within 24 hours.

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

In order to fulfil customer's orders within 24 hours...

Теперь каждую историю можно проследить до проектного видения, и вы можете увидеть все системы в игре. Так что ваши автоматические сценарии могут прочитать:

Given a valid order in the queue
When the order fulfilment system runs
Then it should send a fill order form to the processing centre
When the processing centre responds successfully
Then the successful fulfillment should be logged
And the customer should be notified by email.

Given an invalid order in the queue
When the order fulfilment system runs
Then it should send a fill order form to the processing centre
When the processing centre responds with an error
Then the error should be logged
And the customer should be notified of the problem by email.

Например.

Кстати, если вы думаете о переходе в этот формат сейчас, имейте в виду, что прозрачность, которую он создает, может вызвать абсолютное хаос с людьми, которые, скажем, развиваются, потому что у них есть бюджет, а не правильное видение проекта. Я думаю, что это хорошо. Другие считают политику менее комфортной! Удачи, что бы вы ни решили.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top