Skip to main content

Developing Expanders

Now you have arrived to the heart of the matter, where we will give you the opportunity to gain a clear understanding of the tools. This will enable you to contribute to our NS Tools and to take part in improving them. For an in-depth look at the theory behind normalized systems, take a look at the book:

Mannaert, H., Verelst, J. & Bruyn, P. (2016). Normalized systems theory from foundations for evolvable software toward a general theory for evolvable design. Kermt: NSI-Press.


Expansion is typically run by using the expanders-maven-plugin. You can use the expand goal:

mvn expanders:expand

The plugin works by reading an expansionSettings.xml, which should be placed in conf/expansionSettings.xml. It is also possible to use other expansionSettings.xml files in case you need to have multiple files:

mvn expanders:expand -Dexpansion.settings=conf/expansionSettings-alternative.xml


This tutorial will guide you through the steps to create your own expanders.

How to create and implement new Expanders, which generate artifacts based on the model:

How to implement new Features, which inserts code in feature anchors in other Expanders:

How to define models for tests:

How to set up an expansion-resource project:

How to add data to an expansion-resource: