Прецедент (UML)
Прецеде́нт (англ. use case), также: вариант использования, сценарий использования — спецификация последовательностей действий (варианты последовательностей и ошибочные последовательности) в Унифицированном языке моделирования (UML), которые может осуществлять система, подсистема или класс, взаимодействуя с внешними действующими лицами (англ. Actors).
Прецеденты были предложены Иваром Якобсоном и значительно популяризированы Алистером Коберном.
Назначение
Прецеденты служат для документирования функциональных требований к программным системам. Прецедент описывает некоторый целостный фрагмент поведения системы, не вдаваясь при этом в особенности внутренней структуры субъекта. Определение прецедента содержит все свойственные ему виды поведения: основную последовательность, различные варианты стандартного поведения и различные исключительные ситуации с указанием ответной реакции на них. С точки зрения пользователя некоторые из видов поведения выглядят как ошибочные. Однако для системы ошибочная ситуация является одним из вариантов поведения, который должен быть описан и обработан.
Прецедент описывает взаимодействие программной системы с действующими лицами в виде последовательности сообщений. В понятие действующие лица входят люди, компьютерные системы и процессы.
При проектировании программной системы производится поиск таких классов для реализации прецедента, которые удачно сочетали бы в себе требуемые роли и не приводили к излишнему усложнению системы. Реализацию прецедента можно смоделировать в виде одной или нескольких коопераций (реализаций прецедента).
Один и тот же прецедент может быть описан с различной степенью детализации.
В MSF используются аналоги прецедентов — сценарии (англ. Scenario).
Нотация
На диаграммах прецедентов в UML прецедент отображается в виде эллипса. Внутри эллипса или под ним указывается имя элемента.
К прецедентам в UML применимы следующие виды отношений:
- Ассоциация (англ. Association) — может указывать на то, что действующее лицо инициирует соответствующий вариант использования.
В том числе между прецедентами:
- Расширение (англ. Extend) — разновидность отношения зависимости между базовым вариантом использования и его специальным случаем.
- Включение (англ. Include) — определяет взаимосвязь базового варианта использования с другим вариантом использования, функциональное поведение которого всегда задействуется базовым вариантом использования.
- Обобщение (англ. Generalization, наследование) — моделирует соответствующую общность ролей.