OME Meta-Framework

Introduction

OME is an environment for developing and analyzing models. These models are developed within the constraints of a modeling framework. For our purposes, a modeling framework is a specification of the types of objects that can occur within a model, and the relationships that can occur between them.

The modeling environment provided by OME is not intended to be constrained to any one particular framework. Developers and users can create new frameworks by describing them in Telos. A framework that can be supported by OME, however, must branch off the "OME Meta-Framework". The OME Meta-Framework is specified in OME.tel file found in the program/frameworks/ directory of the OME package.

This document will briefly describe some features supported by the OME Meta-Framework, at a high level, and introduce some of the terminology used throughout the OME documentation and source code. The features of the OME Meta-Framework are the building blocks from which other frameworks are constructed. The details of how one would go about developing a new framework will be covered in the "OME3 Power-User Manual". <not available yet>



Objects

The Meta-Framework is object oriented. The art of developing a framework to be used under OME is the process of describing the types of objects that can occur in a model developed under the framework. A model, in essence, is just a collection of objects (instances of the types described in the framework), and their attributes.

There are two major classes of objects that are supported: elements and links. Elements are the basic object in a model. They can be thought of as "nodes" in a graph.

Links are used represent connections between objects in the model. Links are similar to edges in a graph. Unlike typical graph edges that can only connect two nodes, a link can potentially connect any two objects in the model, including other links. Links are directed, and have a source and a destination (sometimes referred to as a from and a to). The types of objects that can be a legal source or destination for a particular type of link can be restricted in the specification of the link type.

All objects (elements and links) are aware of the links that are connected to them, though not directly aware of which links are incoming and which are outgoing.


Figure 1. Elements and Links

 

Attributes

Objects in a model can have attributes as specified by their framework. For example, most objects will have an attribute "name". Links have special attributes "to" and "from".

There are two main types of attributes, value attributes and reference attributes. Value attributes are attributes whose targets are arbitrary values (typically strings or numbers). The attribute "name’ mentioned above is an example of a value attribute.

References attributes have targets that are other objects in the model. The "to" and "from" attributes of a link are reference attributes.

The OME Meta-Framework provides ability to create special objects, called "OME Attributes" that can be the target of reference attributes. These are objects in the framework, that attributes on objects in the model can point to. These special objects can be used to restrict the possible targets of an attribute, and also can hold information on how the attribute should be presented in GUI. This is a rather complicated feature of the Meta-Framework, and would probably best be understood with an example. The "softgoal labels" in the NFR Framework are modeled as OME Attributes.




Expandability

An important feature of the OME Meta-Framework is expandability. Elements in a framework may be expandable. If an element is expandable, it means that other elements can be children of it. Child elements are thought to be within the bounds (sometimes called scope) of the parent. That is, the bounds of the parent are expanded to include the child elements.

A parent (expandable) element may have many child elements. A child element may have only one parent element.

Currently, OME only supports one level of expansion. No child element can itself be a parent element. The Meta-Framework may some day be extended to support arbitrary levels of expansion.

This is the feature that is used to implment the S-R modeling aspect of the i* framework.