Решил создать данную тему, именно, здесь, т.к. она по смыслу подходит в этот раздел.
Я уже обсуждал вопрос о ВИ (варианте использовании или прецеденте), правда в другой ветке. (
http://www.uml2.ru/index.php?option=com_smf&Itemid=45&topic=47.0)
Однако разговор там шел о декомпозиции, а плавно перешел на ВИ. В той теме была данная формулировка ВИ, но, беспокоясь о будущих посетителях, повторим наши рассуждения здесь.
Итак за основу возьмем таки классиков:
Г. Буч, Д. Рамбо, А. Джекобсон
Язык UML Руководство пользователя
Немного цитат:
Размышления о том, как вы и ваша семья будете распоряжаться домом, - это пример анализа на основе прецедентов. Вы рассматриваете разные способы использования дома, которые в конечном счете обусловливают архитектуру. Для многих семей прецеденты использования схожи - во всех домах едят, спят, растят детей, отдыхают и хранят воспоминания. Но в каждом случае выдвигаются индивидуальные требования (или разновидности базовых требований) к жилищу. Потребности большой семьи, например, будут отличаться от запросов молодого человека, только что закончившего колледж. Эти различия окажут решающее влияние на то, как будет выглядеть готовый дом.
Важнейшая особенность разработки прецедентов состоит в том, что вы не специфицируете, как они будут реализованы. Например, поведение банкомата можно описать с помощью вариантов взаимодействия с ним пользователей, но вам не обязательно знать, как он устроен. Прецеденты специфицируют желаемое поведение, но ничего не говорят о том, как его достичь. И, что очень важно, это позволяет вам как эксперту или конечному пользователю общаться с разработчиками, конструирующими систему в соответствии с вашими требованиями, не углубляясь в детали реализации
В UML поведение моделируется с помощью прецедентов, специфируемых в отрыве от реализации. Прецедент - это описание множества последовательностей действий (включая их варианты), которые выполняются системой для того, чтобы актер получил результат, имеющий для него определенное значение.
Если Вы сравните данное определение с тем, которое я в конце концов придумал, то найдете безусловное сходство. Я лишь подчеркнул, что
эта последовательность действий НЕДЕЛИМА. Это к слову, почему ВИ не декомпозируется фукнционально, а может лишь детализироваться на разных уровнях абстракции. Попробуйте поделить ребенка при разводе, а? (сорри за черный юмор). Конечно последовательность действий может быть поделена на шаги. И каждый шаг можно рассмотреть как нечто самостоятельное, уж точно неделимое. Только смысл потеряется. Можно, конечно, разделить трапезу и общение с друзьями. Но разве Вы получите то удовольствие, которое дает пирушка в кругу друзей и близких? Т.е. все определяется целью, конечно потребностью пользователя, актера, действующего лица.
Регистрация на сервере - цель получить аккаунт, доступ. Потому вся последовательность его получения: заполнение форму, отправка данных, получения активации, подтверждение активации - все это тот неделимый процесс, ради которого Вы и начали регистрацию. А каждый из отдельных элементов-этапов сам по себе не приводит Вас к цели, лишь все в целом, как единый (entire) процесс.
В этом главное отличие ВИ от функционального блока в IDEF или DFD. Хотя общее безусловно есть.
Еще немного цитат:
Прецедент описывает множество последовательностей, каждая из которых представляет взаимодействие сущностей, находящихся вне системы (ее актеров), с системой как таковой и ее ключевыми абстракциями. Такие взаимодействия являются в действительности функциями уровня системы, которыми вы пользуетесь для визуализации, специфицирования, конструирования и документирования ее желаемого поведения на этапах сбора и анализа требований. Прецедент представляет функциональные требования к системе в целом. Например, основной прецедент в работе банка - это обработка займов
Прецеденты предполагают взаимодействие актеров и системы. Актер представляет собой логически связанное множество ролей, которые играют пользователи прецедентов во время взаимодействия с ними. Актерами могут быть как люди, так и автоматизированные системы. Например, при моделировании работы банка процесс обработки займов включает в себя, помимо всего прочего, взаимодействие между клиентом и сотрудником кредитного отдела.
Развитие прецедентов может осуществляться по-разному. В любой хорошо продуманной системе существуют прецеденты, которые либо являются специализированными версиями других, более общих, либо входят в состав прочих прецедентов, либо расширяют их поведение. Общее поведение множества прецедентов, допускающее повторное применение, можно выделить, организуя их в соответствии с тремя описанными видами отношений. В частности, при моделировании работы банка базовый прецедент, описывающий обработку займов, подразделяется на несколько вариаций, от оформления крупной закладной до выдачи маленькой деловой ссуды. Однако все эти прецеденты имеют нечто общее в особенностях поведения, например оценку платежеспособности клиента.
Всякий прецедент должен выполнять некоторый объем работы. С точки зрения данного актера, прецедент делает нечто представляющее для него определенную ценность, например вычисляет результат, создает новый объект или изменяет состояние другого объекта. В примере с работой банка процесс обработки заявки на займ приводит к подписанию расходного ордера и материализуется в виде некоторой суммы денег, вручаемой клиенту.
Прецеденты могут быть применены ко всей системе или к ее части, в том числе к подсистемам или даже к отдельным классам и интерфейсам. В любом случае прецеденты не только представляют желаемое поведение этих элементов, но могут быть использованы как основа для их тестирования на различных этапах разработки. Прецеденты в применении к подсистемам - это прекрасный источник регрессионных тестов, а в применении к системе в целом - источник комплексных и системных тестов.
Стоит обратить внимание и на это
Прецеденты являются классификаторами и могут иметь атрибуты и операции, которые изображаются так же, как для классов. Атрибуты можно считать объектами внутри прецедента, которые требуются для описания его внешнего поведения, а операции - действиями системы, необходимыми для описания потока событий. Эти объекты и операции разрешается включать в диаграммы взаимодействия, чтобы специфицировать поведение прецедента.
Как и ко всем остальным классификаторам, к прецедентам можно присоединять автоматы. Позволительно расценивать их как еще один способ описания поведения прецедента.