What is the Wurbelizer?

The Wurbelizer is a generic and lightweight code generator for agile development projects. It is easy to integrate, easy to learn, slim and yet flexible and powerful. The Wurbelizer is written in Java and available as Open Source according to the LGPL.

Motivation

click to enlarge
(please click on image to enlarge)
Generative programming is not a new programming technique but has attracted new attention primarily in context with the model driven development paradigm. The basic idea behind MDD and all the MD-buzzwords is to transform extensive models into other models or -- most interestingly -- directly into source code. The transformation is accomplished by code generators that interpret the model and create the source code. Sounds simple, but it isn't.
It isn't simple because the usefulness of the generated code depends on the completeness of the model. However, experience shows that a complete model is hard to achieve and a rather optimistic assumption, especially during early stages of a project. Unfortunately, this does not fit well with agile development methods, because they rely on a roundtrip engineering with short development cycles beginning as soon as possible, even if the model is not fully known yet.
The Wurbelizer simplifies generative programming in agile projects significantly by eliminating the need for a complete model. Instead of generating source files as a whole, it focuses on aspects which are represented by independent generators anchored within the source files and communicating with the model on their own. This approach leads to an inversion of the perspective, in which no longer the model but the code itself drives the code generation by picking only those parts from the model that are sufficient to describe the aspects completely. The traditional monolithic and waterfall-like transformation phase is replaced by many small and generic mini-generators that keep the code in sync with the model. The more elaborate the model gets and the more aspects can be described, the more working and therefore testable code can be generated and all this will fall into place as the project emerges.

What the Wurbelizer is not

The Wurbelizer is not a template engine, although it can be used as such.
It is not a preprocessor, although it can manipulate source files the same way a preprocessor can do.
It is not an MDD tool, although it generates code from models.
It is not an AOP framework, although it weaves the implementation of aspects into sources.
It is not a dependency injection framework, although it can be used to inject dependencies.

History

The Wurbelizer has been successfully used in several projects and was initially developed as Closed Source in parallel with the Java framework Tentackle, which heavily relies on generative programming. Eventually, the Wurbelizer became Open Source -- "for those who were interested". In 2008 the Wurbelizer officially went online with its own website.