2011-08-27 4 views
6

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

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

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

Единственная часть, которую мне не нужно программировать, является партнером по оплате.

У меня есть два вопроса.

1) Будет ли прецедент продавать кучу продуктов клиенту в одном случае с именем «продавать товары по-до» или будет разбит на несколько, например «добавить товар в корзину» и «завершить» продажи "(который будет писать журнал продаж и распечатать квитанцию).

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

+0

Я думаю, что вариант использования отдельно был бы лучшей идеей. И я не понимаю, что вы пытаетесь указать об актерах. –

+0

Причина, по которой я хочу, чтобы база данных продаж, журнал продаж, корзина и т. Д. Были актерами, заключается в том, что становится очень легко определить роли, которые играют актеры, потому что я могу видеть актеров на диаграмме вариантов использования. его нелегко объяснить здесь, но связано с DCI - новой парадигмой: http://en.wikipedia.org/wiki/Data,_Context,_and_Interaction –

+1

Я не уверен, что это будет соответствовать Актеру в смысле использования , Не могли бы вы дать больше объяснений, почему им нужно быть Актерами? Я быстро просмотрел статью в Википедии, и кажется, что эти Роли связаны с объектами, и упоминание о модели домена делает ее похожей на объекты домена. Каталог, база данных продаж, журнал продаж, корзина и т. Д. Вполне могут быть смоделированы как классы в модели домена. На самом деле это будет стандартная практика в приложении типа n-уровня. –

ответ

3

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

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

Используемый кейс должен представлять четко определенное взаимодействие, но необязательно полный один. Отношение <<include>> может использоваться в ситуациях, когда имеет смысл рассматривать как варианты использования полного, так и частичного взаимодействия на одном уровне. Например, вы можете использовать buy stuff: browse products, add product to cart и check out <<xor>> cancel, например, каждый из которых имеет смысл для клиента.

(Я немного смущен о том, предназначена ли ваша система для физических или он-лайн транзакций; наличие допечатных и печатных квитанций, по-видимому, подразумевает первое, корзину покупок как часть понятий, используемых в анализе; последний. Предполагается, что он-лайн система.)

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

Что вы хотите сделать, так это разделить анализ на два уровня. На верхнем (системном) уровне, быть очень строгим относительно обработки системы в целом. В вашем случае, вы, вероятно, нужны актеры customer, payment partner, clerk (для системы физико-транзакций), accountant (и, возможно, administrator), и использовать случаи, перечисленные выше, плюс update product catalogue, audit sales log и т.д.

Тогда вы разбиваете систему на подсистемы и делаете отдельный анализ для каждого из них. Здесь подсистемы могут быть субъектами в случаях использования друг друга.Print receipt, например, не является значимым вариантом использования на системном уровне, поскольку он сам по себе не является взаимодействием между системой в целом и субъектом системного уровня, но имеет смысл в качестве прецедента для подсистемы принтера с до, как актер.

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

Итак, после того, как все это (! Уф) Я думаю, что ответ на ваши вопросы:

  1. И, при условии, каждый случай использования имеет смысл своих актеров, как вполне определенный (но не обязательно полное) взаимодействие с системой.
  2. Да, но не на том же уровне; с одной моделью для системы и отдельными моделями для каждой подсистемы вы можете использовать подсистемы в качестве участников в случаях использования друг друга.
+0

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

+0

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

1

Думаю, вам нужно сначала отступить немного назад. Цель Актеров & Использовать Случаи - сначала спросить: «Кто будет использовать эту систему?» и «зачем им это использовать?». Вы можете начать идентификацию, принтер и т. Д. В качестве актеров - и действительно, некоторые из них могут быть - но есть опасность, что вы пропустите ключевой момент.

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

  • Актер: Клиент
    • Первичный вариант использования: Купить продукт. Это, вероятно, будет разбито на несколько подэтапов, например. Обзор/Сравнить продукты, Выбрать товар (укажите в корзине), Оформить заказ и т. Д. Также будут поддерживаться UC: Проверить статус заказа, вернуть товар, подать жалобу и т. Д.
  • Актер: Аккаунты Клерк
    • Прецеденты: предположительно что-то делать с проверки статуса заказа/оплаты

... и т.д..

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

Вы также идентифицируете другие элементы вашей системы, которые играют определенную роль в реализации поведения UC (например, db продаж и т. Д.). Они являются частью вашей системы - и обычно не будут показаны как Актеры.

Итак, вкратце: Случаи использования предназначены для того, чтобы помочь вам определить цель системы и кто получает от нее ценность, а не структурировать внутренние компоненты дизайна.

hth.

0

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

Что касается вашего второго вопроса, это звучит как типичные объекты домена (который будет смоделирован как диаграмма базового класса). Я не думаю, что они должны быть смоделированы как актеры, если они не играют активной роли. Актеры будут физическими людьми, но также и другими системами, которые взаимодействуют с создаваемой системой. Эти Актеры, возможно, окажутся так называемыми классами подзаголовков.

Обновление

Проходя через the article linked above представляется, что актер (синоним игрока) используется для определения целевого объекта, к которому роль добавляется. Если это правильно, то слово имеет другое значение.

Роль, представляет собой особый вид объекта, который добавляет поведение другого объекта (актер или игрок)

0

, не прочитав другие ответы: -/вот мое:

1) Будет ли случай использования продать кучу продуктов клиенту быть один случай использования имени «продавать товары на до », или будет разбит на несколько, например« добавить товар в корзину »и« полную продажу »(который будет писать журнал продаж и распечатать квитанцию).

Я всегда стараюсь использовать прецедент как «взаимодействие с системой, которая приносит ценность актеру». «продать товар» будет иметь значение. «Добавить товар в корзину» не будет иметь значения.

Я написал «Я стараюсь», так как часто вы начинаете с хорошими прецедентами, которые следуют моему определению, а затем вы начинаете добавлять детали и расширить варианты использования ...

2) Хотя я я программирую каталог, базу данных продаж, журнал продаж, корзину и т. д., могу ли я моделировать их как участников в моих случаях использования? Или являются единственными действующими лицами продавца и платежным партнером?

Я использую актеров не только для реальных людей, но и для систем, которые взаимодействуют с вашей системой. Но термины «база данных», «журнал» и т. Д. Говорят мне, что, похоже, вы хотите внести слишком много деталей в свою диаграмму.

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

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

  • кто будет пользоваться системой?
  • Что будут делать эти актеры с системой?
  • Какие другие системы взаимодействуют с новой системой?

И все. Когда он идет более подробно, я использую другой набор диаграмм.

1

Во-первых, не думайте в терминах программирования на данный момент. Подумайте о том, что нужно бизнесу.

Клиент должен:

  • обтягивать каталог
  • Добавить товар в корзину
  • заказ

Система должна:

  • Показать запрошенный продукт
  • Завершите продажу (или нет)
  • Сбор оплаты
  • Сформировать квитанцию ​​продаж для клиента
  • Доставить купленный продукт

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

Что касается каталога, базы данных продаж, журнала продаж, корзины и т. Д., То актеры - участники взаимодействуют с системами (или прецедентами). Мне трудно представить, как каталог взаимодействует с чем-то. С другой стороны, Клиент определенно взаимодействует с каталогом.

Актер должен быть жизнеспособен в реальном мире. Если система представляет что-то в реальном мире, система может быть актером. Но в реальном мире каталог инертен; корзина инертна. Журнал продаж и продажи db представляют собой бумажные документы, которые являются инертными. Это объекты, а не актеры.

BTW - это лицо отдела продаж системы?

Смежные вопросы