Как лучше всего визуализировать «Матрицу разрешений» в диаграмме классов UML? - PullRequest
3 голосов
/ 26 октября 2008

Ради простоты:

Существует система, основанная на разрешениях, с различными уровнями пользователей и действиями (подумайте: разрешения файловой системы UNIX)

Каков наилучший подход для визуализации этого в UML?

Ответы [ 2 ]

1 голос
/ 26 октября 2008

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

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

0 голосов
/ 26 октября 2008

Мне нравится думать, что у объекта файловой системы есть несколько стандартных методов, каждый из которых имеет соответствующее разрешение.

Существует 9 методов / разрешений, которые обычно представляют интерес: комбинации (Пользователь, Группа, Другое) * (Чтение, Запись, Выполнение). Кроме того, есть такие опции, как Sticky и SetUID.

Объект файловой системы связан с одним пользователем и одной группой. Пользователь связан с любым количеством групп.

Текущий пользователь связан с любым количеством групп.

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

Ограничение на то, что разрешено, не имеет аккуратной диаграммы. Это набор выражений правил. Первый - какой набор разрешений использовать (пользователь, группа или другое), а затем какое разрешение в наборе (чтение, запись или выполнение).

Вы могли бы, я полагаю, определить класс пользователей с некоторым набором конкретных объектов (Unix имеет пользователя, группу и т. Д.) И класс операций с некоторым набором конкретных объектов (Unix имеет чтение, запись, выполнение) , Затем вы можете определить разрешения с двумя ассоциациями: один для класса пользователя и один для класса операций.

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

...