Menu

Refinement-type transformations

2006-06-26
2013-04-17
  • Ville Oikarinen

    Ville Oikarinen - 2006-06-26

    This is the idealized waterfall process ngrease models:

    The client defines (with the help of an analyst) the problem using as high level concepts as possible.

    New client- or project-specific concepts may be created. Defining semantics for new concepts is done by creating transformers for them.

    The client starts the process by making a transformation request for the model.

    The process keeps on transforming the model into lower levels of abstraction until the abstraction level is so low that a computer can execute it.

    In this kind of program refinement process each step involves choices. Each higher level model can be modeled in many ways as a lower level model. For example the same specification can be implemented in different programming languages.

    So the transformation request consists of the model to transform plus all the constraints or strategies needed to specify which transformations to apply on it.

     
    • Ville Oikarinen

      Ville Oikarinen - 2006-06-26

      The constraints are specified as a set of available transformers.

      For example a client might say that "all persistence must be implemented using PostgreSQL, because ...".

      In ngrease this constraint is implemented by adding the following transformers in the transformation request (this is just a very crude sketch): Dao->DaoSqlImpl and SqlDialect->PostgreSqlDialect

      There may be cases where the constraints are different in different parts of the model. So constraints can be added under any node in the tree, not only directly under the transformation request.

       

Log in to post a comment.