### Technologies used

For migration of AMALTHEA models, plane java approach has been used ( non EMF) along with the following 3rd party libraries :

- JDOM 2
- JAXEN
- XALAN
- XERCES

### Framework for model migration

Using the above specified technologies, eclipse plugin based framework for model migration is developed.

- org.eclipse.app4mc.amalthea.converters.common plugin consists of Model migration framework

### Components of Model Migration Framework

- Converters
- Cache Builders
- Pre Processor
- Post Processor

Detailed description of each component can be found below:

Converters: This component is responsible for converting the model (xmi) content from one version to another. A Converter component is executed for selected model files and the corresponding referred model files for migration ( each execution is w.r.t. specific model file).

> First version of APP4MC was 0.7.0

> From version 0.9.3 of APP4MC, there will not be any support for migration of AMALTHEA models based on ITEA releases (itea.103, itea.110, itea.111).

Cache Builders: This component is responsible for building the required cache, by querying the input models or storing the necessary information - > before executing the Converters for specific migration step ( e.g. 0.9.0 to 0.9.1)
Scope of each Cache Builder component is only during a step of model migration ( e.g. 0.9.0 to 0.9.1)

> Each Cache Builder component is tightly coupled to a specific AMALTHEA model version.

Pre Processor: This component is responsible for fetching/modifying specific information before invocation of Cache Builders/Converters components.

> This component is tightly coupled to input version of the AMALTHEA model files which are selected (explicitly/implicitly) for model migration. Each Pre-Processor component is executed only once for the input model files, irrespective of number of migration steps.

Post Processor: This component is responsible for adding/modifying specific information after invocation of Cache Builders/Converters components for a specific migration step ( e.g. 0.9.0 to 0.9.1)

> This component is tightly coupled to input and output version of the AMALTHEA model files which are selected (explicitly/implicitly) for model migration.

Example how Post-Processor’s are invoked:

If Post-Processor is defined with input-model-versions :0.9.0, 0.9.1 and output version 0.9.2.In case if the migration is invoked from 0.9.0 to 0.9.2 for the specified AMALTHEA models.Following migration steps are to be performed internally:

- 0.9.0 to 0.9.1
- 0.9.1 to 0.9.2

> In this case post-processor is invoked after migration step 0.9.1 to 0.9.2

Flexibility of post-processors is, they are defined in a generalized way to specify in the direction which they should be invoked as a part of model migration.

#### Model migration sequence

Sequence in which various components are invoked during model migration