FM3

FM3 or Fame meta-metamodel is a model to describe metamodels.

FM3 applies lessons learned and best practices from using EMOF in the Moose and Famix project:

See also:


FM3.Element

is an abstract class with attributes

with these constraints

FM3.Class

subclasses NamedElement with attributes

with these reserved instances

 OBJECT := (FM3.Class (name 'Object') (root true))
 BOOLEAN := (FM3.Class (name 'Boolean') (primitive true) (superclass (ref: Object)))
 NUMBER := (FM3.Class (name 'Number') (primitive true) (superclass (ref: Object)))
 STRING := (FM3.Class (name 'String') (primitive true) (superclass (ref: Object)))

for any other instance of MF3.Class, these constraints apply

// TODO, I am not sure about this ... it does not allow overloading of attributes, does anyone need overloading?

FM3.Package

subclasses NamedElement with attributes

with these constraints

FM3.Property

subclasses NamedElement with attributes

with these constraints

and these semantics