views:

36

answers:

1

Hi everyone,

I'm looking for suggestions, best practices, and if possible open-source examples of a transformation architecture that is flexible and decoupled.

I need to change an already existent codebase that based on some analysis is able to convert some old existent apps into something newer.

The ins and outs aren't that interesting, however I do want to see a good way of implementing this.

Some initial thoughts would be to have scenarious defined. One scenario is composed of multiple validation steps, and actual actions on the data supplied. The workflow would start with identifying windows and containers and moving on to grouping and organizing.

What are your thoughts? Any guidelines or advise?

+2  A: 

See the DMS Software Reengineering Toolkit. This is a program transformation engine designed to accept arbitrary langauge definitions (your "old codebase"), carry out arbitrary analyses, and then apply transformations based on those analyses. Construction of DMS started in 1995, so it has had considerable time to be applied and used in practice.

DMS has been used to define DSLs and transform them to other languages. It has been used to "define" (implement) the specification of many classic programming languages (C, C++, C#, COBOL, Java, PHP, JavaScript, ....) and carry out analyses of those, and transform the code in those languages to provide improved versions of the original program. The tasks it has been applied to are commercial, practical, and the results in use. It has been used to translate legacy languages into more modern ones.

In short, DMS is designed to be exactly a flexible framework for constructing analysis/transformation tools.

Ira Baxter
Thanks, it's a good start.
Mihai Lazar