Как лучше всего визуализировать & # 8220; Матрицу разрешений & # 8221; в диаграмме классов UML?
-
04-07-2019 - |
Вопрос
Ради простоты:
Существует система, основанная на разрешениях, с различными типами пользовательских уровней и действий (например: разрешения файловой системы UNIX)
Каков наилучший подход для визуализации этого в UML?
Решение
У меня обычно есть классы, представляющие пользователей, роли и разрешения. Пользователи принадлежат к ролям, а роли получают разрешения. Разрешения необходимы для доступа к другим объектам. В UML я предполагаю, что вы смоделировали бы роль как абстрактный базовый класс и имели бы несколько разных реализаций, по одной для каждой роли.
Обычно я моделирую Разрешение как объект, содержащий наборы читаемых, записываемых, удаляемых классов бизнес-сущностей (возможно, содержащих исключения или включения свойств). Каждая роль, то есть одно разрешение. Это разрешение разрешает или запрещает доступ к одному или нескольким другим классам. По умолчанию в доступе отказано, и доступ разрешен только в том случае, если класс находится в соответствующем наборе для запрошенного действия.
Другие советы
Мне нравится думать, что у объекта файловой системы есть несколько стандартных методов, каждый из которых имеет соответствующее разрешение.
Существует 9 методов / разрешений, которые обычно представляют интерес: комбинации (пользователь, группа, другие) * (чтение, запись, выполнение). Кроме того, есть такие параметры, как Sticky и SetUID.
Объект файловой системы связан с одним пользователем и одной группой. Пользователь связан с любым количеством групп. Р>
Текущий пользователь связан с любым количеством групп. Р>
Выше приведено довольно стандартное представление диаграмм классов. Объекты файловой системы, пользователи, группы, ассоциации. А объекты файловой системы имеют кучу атрибутов и 9 канонических методов.
Ограничение на то, что разрешено, не имеет аккуратной диаграммы. Это набор выражений правил. Первый - какой набор разрешений использовать (пользователь, группа или другое), а затем какое разрешение в наборе (чтение, запись или выполнение).
Вы могли бы, я полагаю, определить класс пользователей с некоторым набором конкретных объектов (в Unix есть пользователь, группа, другое) и класс операций с некоторым набором конкретных объектов (Unix имеет чтение, запись, выполнение) , Затем вы можете определить разрешения с двумя ассоциациями: один для класса пользователя и один для класса операций. Р>
Я думаю, что проще просто перечислить методы полного набора, чтобы суетливо представить схемы комбинаций экземпляров пользовательских классов и классов операций.