Developing Expansion Modules
Walking Through the Expanders
In this walkthrough or Expander’s Tale, we describe the creation of an additional functional expansion, or code generation, module in the Normalized Systems Expanders and Normalized Systems Prime Radiant. We first explain the overall control structure of the expansion selection, configuration, and execution. Then, before going in detail through the actual creation of an expansion module for a specific functionality, we discuss the most intriguing part of NS development: the autogeneration or replication of the Prime Radiant in order to enable an extended metamodel.
A Declarative Control Structure
Currently, a major effort is being done to simplify both the control structure of the expanders, and the round trip engineering of model extensions and expander features.
- Round Trip Engineering
- Mapping of the Elements Model
- Expansion Control Design
- New Expander Structure
- Expansion Goals
- Expansion Context
- Expander Features
- Relations between Layers, Technologies and source directories
- Version Policy
- Expansion Settings XML
- NSF Installation XML
- Expansion Resource
- Creating external expanders with a separate meta-model
Model Validation and Transformation
Formalizing nsx-prime, Expanders using Composite projections from expanded shared layer, and migration of model validations from the modeler to PR require a new approach to expressing internal model constraints.
- Projections Overview
- Tree To Composite Projector
- Transformation and Validation
- Options as expander flags
Testing the Expanders
To test the result of the expanders, the diff compares the result with the previous version of the Expanders.