2017-01-03 13 views
1

Я занимаюсь анализом требований к системе, и в настоящее время я пытаюсь написать примеры использования бизнеса (BUC) и диаграмму бизнес-схемы использования. Я в настоящее время используют следующие правила:INCLUDE заявление в альтернативном потоке бизнес-кейса

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

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

Это все нормально работал, пока я не прибыл в следующей ситуации:

  • В альтернативном потоке BUC (давайте назовем это один A) есть дублирующиеся, что я уже указано в другом BUC (назовем это B).
  • Поэтому, естественно, я хочу использовать инструкцию INCLUDE, чтобы указать на B.
  • Если я это сделаю, я также должен показать это в моей диаграмме использования бизнес-схемы.
  • Если я рисую стрелку INCLUDE на диаграмме (от A до B), то похоже, что A не может существовать без B.
  • Однако это не так, поскольку A нужно только B, когда он находится в альтернативном потоке.

Я рассмотрел следующие варианты:

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

Любые мысли?

ответ

2

include используется, когда (и только когда) включенный UC запускается всегда при запуске основного UC.

extend Используется, когда возможно завершить основной UC без запуска расширяющегося UC, но в некоторых альтернативных потоках также выполняется расширение UC.

Итак, в вашем случае вы должны использовать extend.

Можно указать точки расширения. Вы можете использовать это для объяснения логики (уточните, что расширение UC всегда выполняется при вводе альтернативного потока). Если логика более сложна, вы также можете поместить ее в комментарий.

Я не обсуждаю здесь, если ваше разложение является правильным подходом (но ожидайте такого обсуждения от других).

+0

«но ожидайте такого обсуждения от других» :-D :-D – observer

0

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

Я настоятельно рекомендую прочитать Биттнер/Спенс и понять основы, прежде чем двигаться в направлении, в котором вы идете, соответственно, чтобы вернуться назад и нацелиться на нужную цель.