Architecture overview
The Janus Transformation Language (JTL) is a declarative model transformation language specifically tailored to support bidirectionality and change propagation. The implementation of the language relies on the Answer Set Programming (ASP). This is a form of declarative programming oriented towards difficult (primarily NP-hard) search problems and based on the stable model (answer set) semantics of logic programming. Being more precise model transformations specified in JTL are transformed into ASP programs (search problems), then an ASP solver is executed to find all the possible stable models that are sets of atoms which are consistent with the rules of the considered program and supported by a deductive process.
The overall architecture of the environment supporting the execution of JTL transformations is reported in Figure 4. The JTL engine is written in the ASP language and makes use of the DLV solver to execute transformations in both forward and backward directions. The engine executes JTL transformations which have been written in a QVT-like syntax, and then automatically transformed into ASP programs. Such a semantic anchoring has been implemented in terms of an ATL [16] transformation defined on the JTL and ASP metamodels. Also the source and target metamodels of the considered transformation (MMsource,MMtarget) are automatically encoded in ASP and managed by the engine during the execution of the considered transformation and to generate the output models.