EnAr-Fusion

EnAr-Fusion is a domain speci fic language (DSL) to compose and re fine our EA domain metamodels. However, before starting to use this language, it is necessary to specify these metamodels by using a metamodeling language. In this case, we used Ecore to specify ArchiMate and ARMOR metamodels. Then, these metamodels are specifi ed by using a common set of concepts from the metamodeling language.

Author(s)

Name Email
Hector Arturo Florez Fernandez

Language

This language allows in a single transformation, adapting metamodels and the composition of adapted metamodels. To accomplish this, EnAr-Fusion offers 18 operations that can act on the input metamodels and on the composite metamodel.
Considering the next two metamodels called mm1 and mm2:

mm1 mm2
We assume that the packages containing the Ecore metamodels are called exampleMM1 and exampleMM2.

Declarations

import

Imports a metamodel. The metamodel can be imported by the next two ways:
1. From a local host. In this case, it is necessary to especify the relative or absolute full path of the file. The declaration would be as follows.

import "./models/mm1.ecore"

2. From the EnAr Project repository. In this case, it is necessary to especify just the path of the metamodel adding at the begining the keyword svn:. The declaration would be as follows

import "svn:metamodel/mm1/v1"
Restrictions
  • The package of the metamodel mm1, may not exist in the metamodels imported before.

export

Allows including the name and path of the export metamodel.

export "mm3" "http://uniandes.edu.co/exampleMM3"

Instructions

Restrictions

An EnAr-Fusion program must satisfied the following restrictions:

  • Must contain at least two import declarations with diferents input metamodels.
  • Must contain at least one instruction.
  • The program must be composed with the language instructions. If the program contains diferent instructions, it won't be executed.

Errors

An EnAr-Fusion program could generate the following errors:

  • Syntax error
    • If the program has a sintax error, EnAr-Fusion, will notify the line where is the first error. In this case, the program will not be compiled neither executed.
  • Execution error
    • If the program presents an execution error, EnAr-Fusion will stop the process and will notify the error.

Example

Considering the next two metamodels
MM1

MM2

These metamodels are in the EnAr Project repository with the paths:

And the next EnArFusion source code

import "svn:metamodel/mm1/v1"
import "svn:metamodel/mm2/v1"
export "mm3" "http://uniandes.edu.co/exampleMM3"

newEntity N

addAttribute attN1 {
  source = N
  type = EInt
  optional = false	
}

newEntity M

addAttribute attM1 {
  source = M
  type = EInt
  optional = false		
}

setAbstractEntity exampleMM2.V

mergeEntities EN {
  entity1 = exampleMM1.E
  entity2 = N
}

newLink M_Z {
  source = M
  target = exampleMM2.Z
  containment = false
  minCard = 1
  maxCard = -1
  associatedLink = Z_M
} 

newLink X_B {
  source = exampleMM2.X
  target = exampleMM1.B
  containment = false
  minCard = 0
  maxCard = -1
}  

splitEntity exampleMM2.X {
  entity X1{
    Attributes {
      attX1
    }
    Links {
      X_Y
      X_B
    }
  }
  entity X2 {
    Attributes {
      attX2
    }
    Links {
      X_Y
      X_W
    }
  }
}

The output metamodel named mm3 is the following

Meta-Model (Abstract Syntax)

Downloads

Project Version SVN
EnAr-Fusion 1.0 SVN: http://minsky2.uniandes.edu.co/especiales/enar/Fusion/Fusion

Technical Report

fusion.txt · Última modificación: 2012/05/14 16:19 por ha.florez39
Departamento de Ingeniería de Sistemas y Computación - Facultad de Ingeniería - Universidad de los Andes
CC Attribution-Noncommercial-Share Alike 3.0 Unported
Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0