Skip to main content

Programs and Modules

An NS Model is structured into Programs and Modules.

  • Programs are the root of a Model. E.g. ApplicationApplicationThe overarching model container grouping all components, domain logic, and configurations for an enterprise solution..
  • Modules are reusable parts of the Model. E.g. Component. A Module can be shared among multiple Programs.

ProgramTypes​

Programs have ProgramTypes. These types are defined in expansion-resources as data-resource and can be referenced by individual models.

The ProgramType provides information for the ModelLoading and ExpandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact.:

  • The rootExpandableElement, referring to the type of Element that will act as Program Element. E.g. elements::Application.
  • A programFactory, providing implementations to load the model.
  • model, source and expansion directories.
  • A set of ConcernTypes, which represent what technologies are required to be defined.
  • A set of LayerTypes, defining the layersLayerLogical separation of functionality within a single system/application, focused on code organization. that can be expanded at the level of the Program.

ModuleTypes​

Modules have ModuleTypes. Similar to the ProgramTypes, they provide information surrounding the Modules:

  • The expandableElement, referring to the elementType for the Module.
  • A moduleFactory, also providing implementations for loading the Modules
  • model, source and expansion directories.
  • A set of ConcernTypes.
  • A set of LayerTypes, defining the layersLayerLogical separation of functionality within a single system/application, focused on code organization. that can be expanded at the level of the Module.

ProgramComposite and ModuleComposite​

Once loaded, the ProgramComposite and ModuleComposites represent the entirety of the model. They link to the elements they represent with the fieldsFieldA property of a DataElement expanded to a database column and user interface input element. programElement and moduleElement, respectively.

They each have a set of technologies. These technologies are set during the enrichment phase of the model loading. These sets of technologies, together with the LayerTypes on the ProgramType/ModuleType, define which ExpandersExpanderA unit of generation that combines a data tree instance (functional M1 model) with a template to generate an artifact. will be applied.