Организация прецедентов в языке UML
Прецедент (случай использования - use case) - это спецификация поведения системы или ее части без определения реализации системы.
Для организации прецедентов их группируют в пакеты, так же как и классы. Кроме того, прецеденты можно организовать, определив между ними отношения обобщения, включения и расширения. Эти отношения применяют, чтобы выделить некоторое общее поведение, извлекая его из других прецедентов, которые его включают, или, наоборот, вариации, поместив такое поведение в другие прецеденты, которые его расширяют.
Отношение обобщения между прецедентами аналогично отношению обобщения между классами. Это означает, что прецедент-потомок наследует поведение и семантику своего родителя, может замещать его или дополнять его поведение, а кроме того, может быть подставлен всюду, где появляется его родитель, кроме того, как родитель так и потомок могут иметь конкретные экземпляры.
Отношение включения между прецедентами означает, что в некоторой точке базового прецедента включено поведение другого прецедента. Включаемый прецедент никогда не существует автономно, а возникает только как часть объемлющего прецедента. Т.о. базовый прецедент заимствует поведение включаемых.
Благодаря наличию отношения включения удается избежать многократного описания одного и того же потока событий, поскольку общее поведение можно описать в виде самостоятельного поведения, включаемого в базовые. Отношение включения является примером делегирования, при котором ряд обязанностей системы описывается в одном месте - во включаемом прецеденте, а остальные прецеденты, когда необходимо включают эти обязанности в свой набор.
Отношение расширения применяют для моделирования таких частей прецедента, которые пользователь воспринимает как необязательное поведение системы. Тем самым можно разделить обязательное, необязательное поведение или поведение при определенных обстоятельствах.
Сценарий (scenario) - это некоторая последовательность действий, иллюстрирующая поведение системы. Сценарии находятся в таком же отношении к прецедентами, как экземпляры (объекты) к классам, то есть сценарий - это экземпляр прецедента.
Относительно сложная система содержит несколько десятков прецедентов, каждый из которых может разворачиваться в несколько десятков сценариев. Для любого прецедента можно выделить основные сценарии, описывающие важнейшие последовательности, и вспомогательные, описывающие альтернативы.
Прецедент описывает желательное поведение системы (подсистемы, класса или интерфейса), но не определяет их реализацию. Это важнейшая особенность, так как анализ системы, по результатам которого специфицируется ее поведение, по возможности не должен учитывать проблемы реализации, иными словами, как это поведение должно быть материализовано. В конце концов, однако, прецеденты придется реализовывать. Для этого необходимо будет создать сообщество классов и других элементов, в результате совместного поведения которых будет достигнуто желаемое поведение. Такое сообщество, включая его динамическую и статическую структуру, называется в UML коопераций