Motto: First write the code generator; don’t worry about the code, it will write itself.
What is Dogen
Dogen is a code generator designed to target domain models. It is crucial for Kitanda because we use a intensively domain driven approach to software engineering, resulting in a very large number of domain specific languages. Dogen was created to make the modeling process simpler: the user creates a domain model using a UML tool and Dogen uses it to generate its source code representation. The generated code contains most of the services required from a typical C++ domain object such as serialisation, hashing, streaming and so on.
Why do we need Dogen
The main objective of creating a domain generator is to avoid having to maintain manually a significant amount of trivial code; this not only speeds up the development process but it also improves quality as programmers do not tend to perform repetitive tasks terribly well. We developed our own domain generator because we could not find one that fitted our requirements - open source or otherwise.
Note that Dogen is specifically tailored for our needs and as such it is not a general purpose domain generator. We are, however, wiling to accept any patches for functionality not directly required by us.