In MPS the dependencies between modules (solutions, languages) are specified at module level. There are many cases in which one would like to define a set of dependencies which are allowed and make sure that not-allowed dependencies do not accidentally occur.
Potential reasons for not allowing certain dependencies:
- Keep clean the layered architecture of modules (solutions, languages)
- Enable independent deployment/packaging of a smaller set of modules (solutions, languages)
- Enable more incremental builds (by caching)
Usage of Architecture checker
- Create a model and import the language
org.mpsqa.arch
- Create a
architecture specification
root node and specify the architecture- architecture is specified as a set of components
- each component contains multiple modules (solutions, languages)
- the allowed dependencies between 'components' are specified
- architecture is specified as a set of components
- Trigger Model Checker and thereby find out if NOT allowed dependencies are available
- dependencies violations can thereby be automatically discovered in the CI by running the model checker
Internal implementation
org.mpsqa.arch
works exclussively on the dependencies specified among modules