Telosys Tools (http://tools.telosys.org/) is a simple and pragmatic code generator. Provided as an Eclipse Plugin (http://marketplace.eclipse.org/content/telosys-tools ), it uses an original approach mixing “database first scaffolding” and classical model driven engineering. Laurent Guérin, one of the key people behind the project tells us more about it.
This tool aims to provide an alternative to the classical principles :
- the “model first” approach (based on UML or DSL models) that provides all the useful information to the generator, but that requires a significant workload at the beginning of the project to create a reliable and accurate model
- the “database first” scaffolding approach (based on the meta-data retrieved from the database) that allows a quick start of the project, but that provides limited information to the generator
The Telosys Tools approach is a mix of the two. The principle can be described by 3 steps :
1) An existing database is used to create a “lightweight model”. The structure of the database is retrieved by the tool as in a “scaffolding” principle but to create a simple model and not to generate the code immediately
2) Once the model has been created, it can be updated and complemented in order to provide exactly what is expected for the code generation (it’s the refining step)
3) Finally, the customized “lightweight model” can be used by the tool to generate the code (by applying templates on the model’s data)
The “lightweight model” can also be updated in case of changes in the database structure.
The lightweight model editor :
The generator is based on the “Velocity” engine and uses a set of templates. Hence the templates can be adapted to each project requirements, new templates can be created if necessary, etc.. Reusable templates are shared on GitHub (https://github.com/telosys-tools-community).
The generation targets :
This tool is used as a “development accelerator”, it allows a quick start for different kinds of projects. The ”lightweight model” can be more or less refined depending on the context.
For more information, see :