1.1 MetaEdit+ data model: GOPPRR
The basic requirement for implementing a modeling language
with a metaCASE tool is the specification of the language definition. For this
purpose, MetaEdit+ uses the GOPPRR metamodeling framework. GOPPRR specifications
of the modeling language are made with the metamodeling tools of MetaEdit+
Workbench. The metamodels thus made are read by MetaEdit+ to configure itself to
provide the support environment for the modeling language.
Although more familiar languages from other domains can
also capture some of the information necessary in metamodels, GOPPRR is
preferred here because it was specifically designed for describing modeling
languages. Using a domain-specific modeling language for the task of
metamodeling brings the same benefits as the use of DSM in any domain:
simplicity, precision, and automation. Languages like UML, MOF and ER were
intended for other domains, entailing greater effort, loss of precision, and
risk of misunderstanding for the reader.
Before looking at metamodels, we will start with an
example model of a simple order handling system (
Figure 1–1).
Figure 1–1. A Data Flow Diagram of an order handling system (partial).
This
diagram describes the flow of data when handling orders and invoices. On the
right of the figure we have labeled some examples of the basic constructs that
can be found in all models, whatever their language.
| A
graph is one individual model, often shown as a
diagram |
| Objects
are the main elements of graphs, often shown as boxes or
circles |
| A
relationship connects objects together, often shown as a label over the
connection |
| A
role connects an object into a relationship, shown as a line and often an
arrow-head |
| A
property is an attribute characterizing one of the above, often shown as a
label |
We will call these basic constructs
metatypes. The table below lists some example instance elements of this
model, their types, and their metatypes.
Instance
|
Type
|
Metatype
|
Order handling
|
Data Flow Diagram
|
Graph
|
Process invoice payments, Customer
|
Process, External
|
Object
|
Payment history, Verified orders
|
Data Flow
|
Relationship
|
Arrow-head at Accounts receivable
|
From, To
|
Role
|
"Process invoice payments", "3"
|
Process Name, Process Number
|
Property
|
In addition to these metatypes, some modeling languages also
use ports: specific points on the edge of an object symbol to which roles can
connect. Together, these six metatypes form the concepts of GOPPRR, which we
will describe in more detail below.