The uniqueness of the Genasys architecture is its abstraction of the process into three distinct and independent models.
The Genasys Sweetspot
Genasys allows for the generation of 100% of a system’s “code”, where code refers to any artifact that can be expressed in text format including:
These artifacts can be used for system execution, documentation, training, operations support, etc. Having said that, the sophistication of the generated artifacts depends on the upfront investment in technology models: templates, aspects, and perspectives.
The Technology Models used by Genasys offer full compliance with an organization’s technology standards, and can fit seamlessly into an existing SDLC framework.
The Genasys technology model
Perspectives
Aspects
Templates
Variables
and Conditions
Perspectives
Aspects
Templates
Variables
and Conditions
Perspectives
Aspects
Templates
Variables
and Conditions
Perspectives
Aspects
Templates
Variables
and Conditions
Perspectives
Aspects
Templates
Variables
and Conditions
This abstraction through the DSMM allows business models to be associated with any defined technology models and for technology models to be applied to any business model.
The Domain-Specific Meta-Models (DSMM) provide a syntax for expressing business system concepts but do not document the business itself.
The Business Models (BM) are expressed in the syntax of the DSMM and describe the scope and functional characteristics of the target business solution.
The Technology Models (TM) define technology-specific assembly instructions organized by DSMM syntax elements.
The core of Genasys is an engine that accepts, as input, an identified set of business models and an identified set of technology models.
It produces, as output, the set of artifacts derived from the application of the technology models to the business models. It also produces a set of XML reports that detail the derivation process.
There is also a plug-in to support the review of the XML reports. Genasys provides two additional Eclipse plug-ins, based on the Eclipse Modeling Framework (EMF), that support the editing of business models and technology models.
To support this, the Genasys business modelling plug-in can also be used to define new domain-specific meta-models.
Perspectives are used to divide a technology model into a set of basically independent feature categories such as User Interface, Data Management, Process Coordination, Security.
A Perspective typically embodies a specific technology solution approach.
By organizing solution elements into Perspectives, Genasys can combine different technology elements together into solutions with various features.
The concept of Perspectives helps ensure the separation of concerns across the solution so that elements of the solution can evolve independently of each other.
Each Genasys Perspective contains one or more Aspects.
Genasys borrows the concept of Aspect from the Aspect-Oriented Programming (AOP) paradigm.
Essentially an Aspect defines the fine-grained handling of cross-cutting concerns of a system, in all of the contexts where it appears.
Each Aspect is associated with a specific type of entity as defined by the meta-model shared between the Business model and the technology model.
For example, an Aspect may implement the behavioural features specific to a Data Attribute. All Data Attributes in the business model would be implemented by the same Aspect.
It is important to emphasize that Genasys borrows AOP concepts, however does not use AOP explicitly in its implementations. AOP implementations are typically limited to specific languages and platforms.
Genasys brings the concept of Aspects to any implementation technology.
Each Genasys Aspect contains one or more Templates.
A Template is a collection of code snippets that all share the same modelling context.
The modelling context is derived from the meta-model entity of the parent Aspect and is refined by the specific characteristics of each instance of the entity in the business model.
Each Genasys Template may contain Variables.
Variables allow the code snippets contained in a Template to be adapted to any specific business model context.
A Variable is essentially a name:value pair.
The value of the variable is derived at generation time based on the context of the owning Aspect and the Business Model that is in scope.
Before generating any output from a Template, Genasys examines the code snippets and substitutes any occurrences of the Variable name with its corresponding contextual value.
Each Genasys Template may contain Conditions.
Conditions are boolean rules that determine whether a particular Template is applicable to a particular context.
Conditions take the form variable-name:operator:value, where variable-name refers to one of the Variables declared within this Template.
Only Templates for which all Conditions are true, or Templates which have no Conditions, will contribute to the output in a particular context.