Model-driven framework for Design Space Exploration

Design space exploration (DSE) aims at searching through various models representing different design candidates to support activities like configuration design of critical systems or automated maintenance of IT systems. In model-driven engineering, DSE is applied to find instance models that are (i) reachable from an initial model with a sequence of transformation rules and (ii) satisfy a set of structural and numerical constraints.

How to get it?

The source code of the DSE framework is available for evaluation in the SVN repository of VIATRA2. If you have any questions, contact Ábel Hegedüs.

DSE core

The common code base that defines the concepts of the DSE framework, such as the search tree, exploration strategy, solver environment, and the extensions for enabling DSE over VIATRA.

Quick fix

We have developed an extension for the DSE framework to generate quick fixes for domain-specific modeling languages. You can find out about the details in our VL/HCC 2011 paper and this page.

Guided DSE

Since exhaustive exploration of the design space is infeasible for large models, the traversal is often guided by hints, derived by system analysis, to prioritize the next states to traverse (selection criteria) and to avoid searching unpromising states (cut-off criteria). In our ASE 2011 paper, we define an exploration approach where selection and cut-off criteria are defined using dependency analysis of transformation rules and an algebraic abstraction (details about the criteria and evaluation algorithm was published in our PNGT 2010 paper).

Example models

You can find the case study examples that were used to evaluate the framework on the publicly accessible SVN in the following project:

  • Quick fix
    • List of errors: cases/bpmn/ms/Errors2.txt
    • VPM files for running from VIATRA UI: case/bpmn/ms
      • Open one of the .vpml files found in the cases/bpmn/ms (e.g. bpmn_CReg_Macro_Error.vpml using the VIATRA2 perspective). Drag first bpmn_helper2.vtcl then bpmn_fix2.vtcl from cases/bpmn/ onto "modelspace0" in the Modelspaces view. If the transformation definitions loaded successfully, bring up the local menu of bpmn_fix2 and select "Run Quick Fix Solver". In the input dialog, open the tree view in the bottom to bpmn.models.Macro and double-click it (this sets the first parameter, the model we're working on), next double click on "GW1" in bpmn.models.Macro.Pool (this sets up the second parameter, the element to be fixed), finally type "no" or "false" at the end of the input string (this sets up the third parameter, which if "true" will try to visualize the search tree in the VIATRA2 visualisation view). You should see the results of the search in the VIATRA2 Textual output view. This requires the quickfix.gui to be loaded into the runtzime eclipse.
    • Models for Quick fix in BPMN editor: cases/bpmn/examples
      • Centralized Register - WITH ERRORS
      • Procurement - WITH ERRORS
      • Open one of the .bpmn files found in the cases/bpmn/examples project (e.g. Macro.bpmn from cases/bpmn/examples/Centralized%20Register%20-%20WITH%20ERRORS/ with the graphical Eclipse BPMN edior). It should signal some errors in the Problems view, if you bring up the local menu (right click) on any of them, there will be a "Quick fix" option and that calls our framework and should find some fixes. This requires the quickfix.bpmn project to be loaded into the runtime eclipse.
  • Guided DSE