Управление проектами - статьи

         

Свойства ролей


В литературе понятие роли используется преимущественно в контексте моделей данных и в архитектурных моделях. В таких работах исследуются средства структурной композиции свойств объекта из свойств его ролей; нас же будет интересовать, прежде всего, объединение функциональности, соответствующей поведению в различных ролях. Тем не менее, сами свойства ролей, как в структурном, так и в поведенческом аспектах сходны. Основываясь на обзоре, произведенном в [], отметим следующие свойства ролей:

  • констектуальность: роли имеют смысл только в контексте некоторого взаимодействия;
  • объекто-зависимость: экземпляры роли не существуют без объектов;
  • множественность: объект может играть несколько ролей одновременно (в частности, несколько экземпляров одной и той же роли);
  • иерархичность: роли могут образовывать иерархии ролей.

Эти свойства ролей прослеживаются и в сценариях.

Подчеркнем различие между классами и ролями:

  • классы задают свойства отдельных объектов;
  • роли задают позицию и ответственность (responsibility) объекта в рамках некоторой системы или подсистемы.

Удобно различать понятие роли и экземпляра роли - по аналогии с различением понятий класса и экземпляра класса. Под существованием во время выполнения (run-time) экземпляра роли мы будем понимать факт выполнения экземпляром агента или компонента системы данной роли в процессе некоторого взаимодействия.

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

Метамодель, иллюстрирующая эти соотношения, может быть описана диаграммой, представленной на Рис. 4.

Рис. 4. Метамодель, описывающая соотношения между ролями, классами и их экземплярами


Абстракция роли достаточно исследована с точки зрения ее структурной реализации, например, модели данных, использующие роли [], связь понятия роли и интерфейса [], шаблоны реализации ролей []; однако с точки зрения объединения поведения в различных сценариях роли практически не исследуются.
Произведем краткий обзор шаблонов для представления ролей, рассматриваемых в работе []:

  • объединение в единый тип для ролей (single role type) - все особенности каждой из ролей объединяются в один общий тип;
  • использование отдельного типа для каждой роли (separate role type) - каждая роль трактуется как отдельный тип;
  • использование ролевого объекта (role object) - особенности, присущие роли, объединяются в специальный объект; основной объект является хостом (host object), объединяющим несколько таких ролевых объектов; при обращениях внешних объектов он использует нужный из ролевых объектов в зависимости от контекста;
  • использование ролевого отношения (role relationship) - специальный объект, объединяющий особенности данной роли, моделирует связь основного объекта в данной роли с некоторым внешним объектом.

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

Содержание раздела