Skip to content

sehe/dogen

 
 

Repository files navigation

Dogen Logo

Licence Build Status Build Status Coverage Status Issues Releases ![Gitter](https://badges.gitter.im/join chat.svg) Coverity Download

Overview

Dogen is a suite of tools focusing on bringing Model Driven Software Development (MDSD) workflows to C++ development. It is also largely inspired by the Domain Driven Design (DDD) methodology, albeit it is not strictly necessary to follow the DDD approach in order to use it.

In lay terms, our main objective is to automate the modeling process as much as possible: the user creates domain models in one of the supported front-end formats and respecting a set of predefined restrictions; Dogen then uses this input to generate a source code representation of the model. At present the main front-end is Dia, but we also support JSON (Dia test models, JSON test models). Depending on use cases and user demand, other frontends may follow. The generated code contains most of the functionality required from a typical C++ domain object such as serialisation, hashing, streaming and so on. Whilst we intend for the suite to be useful out of the box for most use cases, our end goal is enable users to extend Dogen, adapting it to the vagaries of their specific use cases.

Please note that the code generated by dogen is C++-11 only.

Binary Packages

We have started to provide experimental binary packages on BinTray. At present we support Debian Linux, OSX and Windows, all in 64-bit. The packages are generated at the end of each sprint.

You can download the packages from this location: https://bintray.com/domaindrivenconsulting/Dogen

Building From Source

To build Dogen on Linux and OSX you need a moderately recent compiler such as GCC 4.7 or clang 3.7 and a very recent version of Boost: ideally 1.62. Older Boost versions work, but require patches. See our patches directory.

Once you have Boost installed, you can simply do:

git clone git@github.com:DomainDrivenConsulting/dogen.git
cd dogen/build
mkdir output
cd output
cmake ../..
make -j5 # number of cores available

If you have installed Boost on a non-standard location, you need to add CMAKE_INCLUDE_PATH and CMAKE_LIBRARY_PATH to the commands above:

CMAKE_INCLUDE_PATH=/my/boost/include/path CMAKE_LIBRARY_PATH=/my/boost/lib/path cmake ../..

Dogen also builds under Visual Studio 2015 and a recent version of Boost (as per above). You also need to install git and cmake. Once all the dependencies have been installed, the build is similar to Linux (assuming a msysgit shell, but CMD/Powershell should work fine too):

git clone git@github.com:DomainDrivenConsulting/dogen.git
cd dogen/build
mkdir output
cd output
cmake ../.. -DCMAKE_BUILD_TYPE=Release -G 'Visual Studio 14 2015 Win64'
cmake --build . --config Release --target ALL_BUILD

Demo

At present we don't have a recent demo of Dogen, but this fairly old one should give you an idea of its workflow.

Alt text

Problems

If you have a failure building Dogen or running its unit tests, please submit a bug report that includes:

  • the error messages;
  • the compiler and Boost version;
  • the Operative System.

If you find a bug whilst using Dogen, please send the compressed log file as well; it is located under the directory where you executed Dogen and named dogen.knitter.MODEL.log where MODEL is the name of the model you ran against.

Bugs can be submitted using github Issues.

About

The Domain Generator - Generates source code for Model Driven Software Development.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 93.2%
  • C# 3.7%
  • CMake 2.6%
  • Other 0.5%