Если несколько актеров имеют одни и те же цели в списке "Актер-цель"

Крейг Ларман утверждает, что создание списка Actor[/User]-Goal в виде некоторой таблицы / сетки является хорошей техникой для поиска вариантов использования во время анализа требований. (Применение UML и паттернов - стр. 69 и далее)

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

Actor Goal

Admin Create User
" Read User
" .. (full CRUD)
" CRUD Entry
" Assign Entry (to User)
" ..

User Create Entry
" .. (full CRUD)
" CRUD himself?
" ..

Администратор может делать то, что пользователь может + более, например, управлять пользователями системы разработки или назначать им записи.

Администратор и Пользователь явно разделяют некоторые Цели (Можем ли мы использовать термин Вариант использования?).

Я не совсем уверен, куда идти с точки зрения уточнения этого списка Актер-Гол.

Мой мозг говорит мне, что я могу сэкономить время и усилия, повторно используя / абстрагируя здесь, так что я, скорее всего, в итоге получу один общий суперкласс, реализующий поведение CRUD Entry, где Admin расширяет функциональность с помощью управления целями (Пользователь CRUD, назначение, так далее.).

Но я знаю, что это скорее вопрос дизайна, чем анализа.
Я также знаю, что могу написать вариант использования для этого в отдельности: мне не нужно указывать, кто именно его использует, мне просто нужно знать, что это какая-то сущность, которая придерживается данного контракта [/interface].


Когда пришло время задуматься об абстракции?
Я слишком усложняю вещи, делая это прямо сейчас?
Должны ли мы оставить список "Актер-гол", как указано выше, и отметить его как "полный" артефакт?

Поскольку классическая цель списка Actor-Goal состоит в том, чтобы предоставить краткий обзор нашего следующего Артефакта - Диаграммы вариантов использования - можем ли мы начать переход прямо здесь? схема использования

Диаграмма вариантов использования делает всю часть повторного использования гораздо более заметной (по крайней мере, для меня). Было бы целесообразно принять избыточность прямо сейчас и позаботиться об этом на более поздних этапах (например, проектирование)?

Ценю ваш вклад!


РЕДАКТИРОВАТЬ: Кроме того, я не совсем уверен, что пользователь CRUDing себя.. Но давайте держать вещи простыми и придерживаться основного вопроса.

1 ответ

Это отличная идея, чтобы идентифицировать варианты использования кандидатов в списке целей-актеров, как вы уже описали.

Проблемы при определении вариантов использования

В реальной жизни вы быстро столкнетесь с проблемами согласованности при разработке списка во время выявления требований:

  • некоторые опрошенные пользователи / бизнес-эксперты опишут очень подробные пошаговые цели (соответствующие системным функциям), тогда как другие опишут довольно высокие цели пользователей. Таким образом, вам понадобится третий столбец для определения уровня цели каждого варианта использования.

  • Терминология и цели пользователя не всегда будут выражаться единообразно. Поэтому может потребоваться перекрестная проверка и переименование вариантов использования. Например, у меня была система, где:

    • админ утверждал manage authorizationsи бизнес-пользователь утверждал, что manage authorization, Был ли это тот же вариант использования? Нет: оказалось, что первый maintained assignment of authorizations в системе, а второй был уполномочен decide on authorizations assignment and request them от админа.
    • покупатель объяснил, что для заказа на покупку кто-то должен register a good receipt до того, как счет будет оплачен. Работник склада объяснил, что на складе они manage stock movement, Позднее, однако, оказалось, что те движения, где хорошие поступления, хорошие выпуски и перемещения акций.

Таким образом, четвертый столбец с комментариями об основных вариантах может помочь сохранить обзор и выявить скрытый потенциал обмена.

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

Диаграмма вариантов использования

Теперь я буду очень провокационным: как только у вас будет хорошая и согласованная таблица со всеми действующими лицами и вариантами использования, какую выгоду вы ожидаете от диаграммы вариантов использования?

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

К тому же, <<Include>>, <<Extend>> и обобщающие отношения следует использовать с трудом, потому что они быстро затрудняют понимание диаграммы.

Наконец, действительно ли абстракция и повторное использование происходят на уровне варианта использования? Относится ли это к действующим лицам вне системы? Если нет, то это больше о деталях дизайна и реализации. Поэтому я бы посоветовал рассмотреть их подробнее в модели классов, которую вы создадите (или получите) для реализации сценариев использования.

Другие вопросы по тегам