Come visualizzare al meglio una matrice di autorizzazione & # 8220; & # 8221; in un diagramma di classe UML?

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

Domanda

Per semplicità:

Esiste un sistema basato sui permessi con diversi tipi di livelli e azioni dell'utente (si pensi: permessi del file system UNIX)

Quale sarebbe l'approccio migliore per visualizzarlo in UML?

È stato utile?

Soluzione

In genere ho classi che rappresentano Utenti, Ruoli e Autorizzazioni. Gli utenti appartengono ai ruoli e ai ruoli vengono concesse le autorizzazioni. Sono necessarie autorizzazioni per accedere ad altri oggetti. In UML suppongo che tu modifichi il ruolo come una classe base astratta e che abbia molteplici implementazioni diverse, una per ciascun ruolo.

Tipicamente, modello un'Autorizzazione come oggetto contenente insiemi di classi di entità aziendale leggibili, scrivibili e cancellabili (forse contenenti esclusioni di proprietà o inclusioni). Ogni ruolo, quindi, ha un'autorizzazione. Tale autorizzazione consente o nega l'accesso a una o più altre classi. L'autorizzazione è negata per impostazione predefinita e l'accesso è consentito solo se la classe è nel set appropriato per l'azione richiesta.

Altri suggerimenti

Mi piace pensare che un oggetto file system abbia diversi metodi standard, ognuno dei quali ha un'autorizzazione associata.

Esistono 9 metodi / permessi di solito di interesse: le combinazioni di (Utente, Gruppo, Altro) * (Leggi, Scrivi, Esegui). Inoltre, ci sono opzioni come Sticky e SetUID.

Un oggetto file system è associato a un utente e un gruppo. Un utente è associato a un numero qualsiasi di gruppi.

L'utente corrente è associato a un numero qualsiasi di gruppi.

Quanto sopra è roba di diagramma di classe piuttosto standard. Oggetti del file system, utenti, gruppi, associazioni. E gli oggetti del file system hanno una pila di attributi e 9 metodi canonici.

Il vincolo su ciò che è consentito non ha un diagramma ordinato. È un insieme di espressioni di regole. Il primo è quale set di autorizzazioni utilizzare (utente, gruppo o altro) e quindi quale set di autorizzazioni (lettura, scrittura o esecuzione).

Potrei, suppongo, definire una classe di utenti con una serie di oggetti concreti (Unix ha utente, gruppo, altro) e una classe di operazioni con una serie di oggetti concreti (Unix ha letto, scritto, eseguito) . È quindi possibile definire le autorizzazioni con due associazioni: una alla classe utente e una alla classe operativa.

Penso che sia più semplice elencare i metodi set completi che diagrammi agevolmente le combinazioni di istanze di classe utente e istanze di classe operativa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top