What is QiQu?
QiQu is an open source framework to support the MDA and MDSD approach. It is based on the idea to convert an UML-model into source-code (such as Java, C#, Cobol etc.). With QiQu you can build your own domain-specific generators that convert your models into the code of your choice, respecting your architectural design.
Since QiQu heavily relies on XML, you can not only convert from XMI (representing UML) to source-code, but from any XML-format into anything else. (XML, HTML, DDL-Scripts, Excel etc.). If the converting features of QiQu do not fit your demands, you can easily create additional functionality i.e. to write the result of your conversion into a database or to merge the information of a UML-Model with the result of a SQL-Query.
We are sure, you will find out many more possibilities!
How does it work?
The graphic above shows the standard way to work with QiQu.
QiQu includes a scripting language to define your transformation rules - you can navigate in your input xml-model (typically your UML-model in XMI), select the elements of the input xml-model (typically your UML-model in XMI) and transform them into an xml output-model, adding or removing information as you wish. The transformation is done by the QiQu-Engine. To transform your output-model into Java-code, DDL-scripts or anything else, use a template-engine, write the necessary templates and merge your transformed output with the template. The QiQu Scripting Language supports the use of Velocity to perform this task.
The QiQu Scripting Language also supports features to read in property-files (i.e. to be able to load the input-file, direct the output to the correct directories or to choose variable options for the transforming-process at runtime); it is also possible to generate a respective options dialog window at runtime.
For the complete syntax of the QiQu Scripting Language and all its features, have a deeper look into the documentation.
How to use it?
Write the QiQu-scripts and the (Velocity)templates needed to perform the wanted transformation tasks. You can do this by using the QiQu Eclipse-Plugin which supports your work with Wizards and customized Editors.
Pack the scripts, the templates and the QiQu runtime engine in a (executable) jar-File and deliver it to the end-users (designers, developers) ? typically together with the respective modeling-guidelines ? for the runtime use.
See the samples for more possibilities?
How to extend it?
If you are missing a functionality in the QiQu-Scripting-Language, you can easily extend it. QiQu is completely written in Java and the QiQu-Scripting-Language supports the loading of additional Commands at runtime.
Have a look into the documentation for more details.