Cómo visualizar mejor un & # 8220; permission Matrix & # 8221; en un diagrama de clase UML?

StackOverflow https://stackoverflow.com/questions/237373

Pregunta

En aras de la simplicidad:

Existe un sistema basado en permisos con diferentes tipos de acciones y niveles de usuario (piense: permisos del sistema de archivos UNIX)

¿Cuál sería el mejor enfoque para visualizar esto en UML?

¿Fue útil?

Solución

Por lo general, tengo clases que representan usuarios, roles y permisos. Los usuarios que pertenecen a roles y los roles tienen permisos otorgados. Se requieren permisos para acceder a otros objetos. En UML, supongo que usted modelaría el rol como una clase base abstracta y tendría múltiples implementaciones diferentes, una para cada rol.

Por lo general, yo modelo un Permiso como un objeto que contiene conjuntos de clases de entidades de negocios legibles, que se pueden escribir y que se pueden eliminar (lo que quizás incluya exclusiones o inclusiones de propiedad). Cada rol, entonces tiene un permiso. Ese permiso permite o niega el acceso a una o más clases. El permiso está denegado de forma predeterminada, y el acceso solo se permite si la clase está en el conjunto apropiado para la acción solicitada.

Otros consejos

Me gusta pensar que un objeto del sistema de archivos tiene varios métodos estándar, cada uno de los cuales tiene un permiso asociado.

Hay 9 métodos / permisos que suelen ser de interés: las combinaciones de (Usuario, Grupo, Otro) * (Lectura, Escritura, Ejecución). Además, hay opciones como Sticky y SetUID.

Un objeto del sistema de archivos está asociado con un usuario y un grupo. Un usuario está asociado con cualquier número de grupos.

El usuario actual está asociado con cualquier número de grupos.

Lo anterior es un diagrama de clase bastante estándar. Sistema de archivos de objetos, usuarios, grupos, asociaciones. Y los objetos del sistema de archivos tienen una pila de atributos y los 9 métodos canónicos.

La restricción sobre lo que está permitido no tiene un diagrama ordenado. Es un conjunto de expresiones de reglas. El primero es qué conjunto de permisos usar (usuario, grupo u otro) y luego qué permiso en el conjunto (leer, escribir o ejecutar).

Supongo que podría definir una clase de usuarios con algún conjunto de objetos concretos (Unix tiene usuario, grupo, otro) y una clase de operaciones con algún conjunto de objetos concretos (Unix tiene lectura, escritura, ejecución) . Luego puede definir permisos con dos asociaciones: una para la clase de usuario y otra para la clase de operación.

Creo que es más fácil simplemente enumerar los métodos de conjuntos completos que diagraman las instancias de la clase de usuario de la combinación y las instancias de la clase de operación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top