TigerTeam TRIMM – Model Driven Generator

TRIMM is, in our humble opinion, the closest you can come to a Swizz Army Knife of Code Generators for UML Class based models.


Swizz Army Knife


TRIMM is going Open Source
NEWS: TRIMM will be released as Opensource (Apache 2 license) during 4th quarter of 2012

TRIMM’s place in the software development process

TRIMM allows you to fit Model Driven Development (MDD) into exactly the development process you prefer, being it Agile/Iterative or a more heavy weight Waterfall process.

TRIMM Code Generation Process

TRIMM allows you to generate code based on Structural models (mainly UML Class models) to a variety of different technologies:

TRIMM currently supports UML 2.x Class models made with these UML editors:

TRIMM Modules

TRIMM is a very modular Code generator that contain modules for many different target technologies.

TRIMM Core

This is the foundation for all of the technology specific TRIMM modules.
The TRIMMCore module supports reading in UML 2.x Class models made with these UML editors:

TRIMM Java

The TRIMM Java module features a very versatile and easy to use Java Codegenerator, which can transform an imported UML 2.x Class model to high quality Java code.

The main differentiator between the TRIMM Java code generator and other (typically template based) Java code generators is the ease of use and the high extensibility, which allows you to create reusable Code generator plugins that you can use on other projects.
TRIMM Java already comes with a long list of existing reusable plugins (link to details about Plugins to come…)

TRIMM Java supports the Generator Gap Pattern (also known as Extension Classes or 3 level inheritance) for generating solid code while still allowing developers to write custom code that isn’t overwritten by the code generator.

TRIMM Jpa

The TRIMM Jpa module, that is an extension of the TRIMM Java module, allows you to generate Java domain models that uses the Java Persistence API (JPA) to persist your applications data into a relational database.

TRIMM Jpa supports standard JPA version 2.0 as well as several vendor specific features.
Currently list of supported vendors are:

Among the more advanced features supported by TRIMM Jpa is Bi-temporal Data models (active history) using Hibernates Envers.

List of plugins to come, in the meantime check out this tutorial for getting started using TRIMM JPA

Note: TRIMM Jpa (as well as TRIMM Java) supports the Generator Gap Pattern for generating solid code while still allowing developers to write custom code that isn’t overwritten by the code generator.

TRIMM Groovy / Grails GORM

The TRIMM Groovy module supports generating Groovy code from UML 2.x Class models.

TRIMM Groovy also supports generating Grails GORM data models.

TRIMM Groovy supports the Generator Gap Pattern through the use of Mixins.

TRIMM WS (WebService)

The TRIMM WS module supports generating WebService contracts, in the form of WSDL documents and XML Schemas, from UML 2.x Class model.

The generator is quite versatile and allows detailed control over generated contracts (such as naming convention, SOAP headers & faults, inlining of XML schemas, etc.)