added first draft of structure Rep_SecureUML. There are however no functions for parsing Rep_SecureUML-types...

git-svn-id: https://projects.brucker.ch/su4sml/svn/infsec-import/trunk/src/su4sml@3237 3260e6d1-4efc-4170-b0a7-36055960796d
This commit is contained in:
Jürgen Doser 2005-10-20 13:08:17 +00:00
parent b447ec81d8
commit 7528ea1d9a
5 changed files with 99 additions and 22 deletions

View File

@ -38,26 +38,6 @@ use "ROOT.ML";
OS.FileSys.chDir "../../../src";
(* ****************************************************** *)
(* Abstract Representation ("The Repository") of a UML model.
- References resolved
- only supported parts were represented
- structural simplifications whereever needed for
our applications. *)
use "rep_ocl.sig";
use "rep_ocl.sml";
use "rep_state_machines.sig";
use "rep_state_machines.sml";
use "rep_activity_graphs.sig";
use "rep_activity_graphs.sml";
use "rep_core.sig";
use "rep_core.sml";
use "rep.sig";
use "rep.sml";
(* ****************************************************** *)
(* Abstract Representation of an XMI File of a UML Model.
- References kept
@ -76,6 +56,29 @@ use "xmi.sml";
(* ****************************************************** *)
(* Abstract Representation ("The Repository") of a UML model.
- References resolved
- only supported parts were represented
- structural simplifications whereever needed for
our applications. *)
use "rep_ocl.sig";
use "rep_ocl.sml";
use "rep_state_machines.sig";
use "rep_state_machines.sml";
use "rep_activity_graphs.sig";
use "rep_activity_graphs.sml";
use "rep_core.sig";
use "rep_core.sml";
use "rep_secureuml.sig";
use "rep_secureuml.sml";
use "rep.sig";
use "rep.sml";
(* ****************************************************** *)
(* Main Conversion Processes *)
use "xmltree_parser.sml"; (* provides explicit xml-tree data structure,

View File

@ -27,6 +27,8 @@ sig
include REP_CORE
include REP_ACTIVITY_GRAPH
include REP_SECUREUML
type Model
end

View File

@ -25,7 +25,10 @@
structure Rep : REP =
struct
open Rep_Core Rep_StateMachine Rep_ActivityGraph
open Rep_Core Rep_StateMachine Rep_ActivityGraph Rep_SecureUML
type Model = { classifiers: Classifier list,
permissions: Permission list,
role_inheritance: RoleHierarchy
}
end

17
src/rep_secureuml.sig Normal file
View File

@ -0,0 +1,17 @@
signature REP_SECUREUML =
sig
type Subject
type Role
type RoleAssignment = (Subject * Role) list
type RoleHierarchy = (Role * Role) list
type Resource
type ActionName
type ProtectedAction
type Permission
end

52
src/rep_secureuml.sml Normal file
View File

@ -0,0 +1,52 @@
structure Rep_SecureUML : REP_SECUREUML =
struct
datatype Subject = User of string
| Group of Group
withtype Group = string * Subject list
(* perhaps we find the need for a more elaborate type later *)
type Role = string
type RoleAssignment = (Subject * Role) list
type RoleHierarchy = (Role * Role) list
(* computes the reflexiv and transitive closure of rh starting from *)
(* the given role *)
(* fun inherited_roles rh role = ... *)
(* Resources according to ComponentUML. This will have to be adapted when we *)
(* support something like ControllerUML. *)
datatype Resource = Entity of Rep_OclType.Path
| EntityMethod of Rep_OclType.Path
| EntityAttribute of Rep_OclType.Path
(* | EntityAssociationEnd of Rep.Path ??? *)
(* fun contained_resources e = ... *)
datatype ActionName = Create | Read | Update | Delete | FullAccess | Execute
datatype ProtectedAction = SimpleAction of ActionName * Resource * string list
| CompositeAction of ActionName * Resource * string list
fun subordinated_actions (SimpleAction _) = nil
| subordinated_actions (CompositeAction (Read,Entity c,p)) = nil
(* let val read_attributes = ...
val read_methods = ...
in
List.concat [read_attributes,read_methods]
end *)
(* | subordinated_actions (CompositeAction (_,_)) = ...*)
type Permission = { name: string,
roles: Role list,
constraints: Rep_OclTerm.OclTerm list,
actions: ProtectedAction list
}
end