Glossary
- Abstract Syntax
- Abstraction
- Behavioral Modeling
- Blended Modeling
- Code Generation
- Concrete Syntax
- Constraints
- Domain-Specific Language (DSL)
- EMF/Ecore
- Executable Model
- Executable UML (xUML)
- Flexible Modeling
- Metamodel
- Meta Object Facility (MOF)
- Metamodeling Language
- Model-Driven Architecture (MDA)
- Model Transformation
- Model Validation
- Model Simulation
- Multi-view Modeling
- Platform-Independent Model (PIM)
- Platform-Specific Model (PSM)
- Positional Notation
- Projectional Editing
- Refactoring
- Refinement
- Round-Trip Engineering
- Syntactic Sugar
- Topological Notation
- Traceability
- Transformation Language
- Unified Modeling Language (UML)
- Viewpoint
- Workbench
- Team & Partners
- Video Tutorials
- Privacy Policy
- Cookie Policy
- Single Page (eg Policy)
- Teaching
- User Guide
- Cloud & Reactiveness
- What’s new
- Higher Visual Capabilities
- Real-time Collaboration
- LSP/GLSP vs. Jjodel
- EMF vs. Jjolde
- Jjodel Cookbool
- Co-Evolution Capabilities in Jjodel, EMF/Sirius, and MetaEdit+
- Where Jjodel is adopted?
- Student Survey
- Roadmap
- JSX for Model Navigation
Menu
- Abstract Syntax
- Abstraction
- Behavioral Modeling
- Blended Modeling
- Code Generation
- Concrete Syntax
- Constraints
- Domain-Specific Language (DSL)
- EMF/Ecore
- Executable Model
- Executable UML (xUML)
- Flexible Modeling
- Metamodel
- Meta Object Facility (MOF)
- Metamodeling Language
- Model-Driven Architecture (MDA)
- Model Transformation
- Model Validation
- Model Simulation
- Multi-view Modeling
- Platform-Independent Model (PIM)
- Platform-Specific Model (PSM)
- Positional Notation
- Projectional Editing
- Refactoring
- Refinement
- Round-Trip Engineering
- Syntactic Sugar
- Topological Notation
- Traceability
- Transformation Language
- Unified Modeling Language (UML)
- Viewpoint
- Workbench
- Team & Partners
- Video Tutorials
- Privacy Policy
- Cookie Policy
- Single Page (eg Policy)
- Teaching
- User Guide
- Cloud & Reactiveness
- What’s new
- Higher Visual Capabilities
- Real-time Collaboration
- LSP/GLSP vs. Jjodel
- EMF vs. Jjolde
- Jjodel Cookbool
- Co-Evolution Capabilities in Jjodel, EMF/Sirius, and MetaEdit+
- Where Jjodel is adopted?
- Student Survey
- Roadmap
- JSX for Model Navigation
Meta-Object Facility (MOF)
The Meta-Object Facility (MOF) is a standard framework developed by the Object Management Group (OMG) for defining, creating, and managing metamodels. It provides the foundation for model-driven engineering (MDE) by enabling the specification of modeling languages and the interoperability between different modeling tools and frameworks.
Key Concepts and Components:
- Meta-Metamodeling Framework:
- Meta-Metamodel: MOF defines a meta-metamodel, which is the highest level of abstraction in the modeling hierarchy. This meta-metamodel provides the constructs and rules for creating metamodels, similar to how a metamodel provides the constructs and rules for creating models.
- Levels of Abstraction: MOF supports a four-layer architecture:
- M3 (Meta-Metamodel): The layer where MOF itself resides, defining the language for metamodels.
- M2 (Metamodel): Defines the abstract syntax for a specific modeling language (e.g., UML).
- M1 (Model): Instances of the metamodel, representing specific models created by users.
- M0 (User Objects): Real-world instances that the models represent or manipulate.
- Core Elements:
- Classes and Attributes: MOF uses classes to define the types of objects in the metamodel, and attributes to define the properties of these objects.
- Associations and References: MOF allows for defining relationships between classes, specifying how different elements of the metamodel are interconnected.
- Operations and Constraints: MOF supports the definition of operations and constraints to specify the behavior and rules for the metamodel elements.
- Profiles and Extensions:
- Extensibility: MOF allows for the creation of profiles, which are extensions of metamodels to tailor them for specific domains or purposes. Profiles add stereotypes, tagged values, and constraints to the base metamodel without modifying it directly.
- Customization: Through profiles, MOF enables customization and adaptation of modeling languages to meet the needs of particular domains or projects.
- Interoperability and Integration:
- Standardization: MOF provides a standardized way to define and manage metamodels, facilitating interoperability between different tools and platforms.
- Model Exchange: By adhering to the MOF standard, models can be exchanged and used across various tools, ensuring consistency and compatibility.
Historical Context and Development
- Origins and Evolution: MOF was developed by the OMG in the late 1990s as part of its broader initiative to support model-driven architecture (MDA). It has since become a cornerstone of MDE, influencing the development of various modeling standards and tools.
- Influence on UML: UML (Unified Modeling Language), another OMG standard, is defined using MOF. The UML metamodel is specified using MOF constructs, which provides a consistent and interoperable framework for UML tools and applications.
Practical Applications
- Defining Modeling Languages: MOF is used to create metamodels for various modeling languages, such as UML, SysML (Systems Modeling Language), and BPMN (Business Process Model and Notation). These metamodels define the abstract syntax and semantics of the languages.
- Tool Development: Developers use MOF to build tools that support MDE, such as modeling environments, code generators, and model transformation engines. By adhering to MOF standards, these tools can interoperate and share models seamlessly.
- Customization and Profiles: Organizations can create profiles to extend standard modeling languages for specific purposes, such as customizing UML for a particular industry or project.