ABSTRACT BEHAVIOURAL SPECIFICATION (ABS)
Abstract Behavioral Specification (ABS) is a modeling language based on Delta Oriented Programming (DOP) that supports software development with Software Product Product Line (SPL) approach. By using SPL, software developers can create multiple products on a single development process. At the beginning, developer have to define system commonalities and variabilities.
By using ABS, feature variations can be defined on feature model. Each feature will be realized using delta model (delta). Delta is a code that can change the Core ABS (existing features) without changing the original code. The connectivity between the delta with features, defined in the Product Line Configuration.
Finally, to create a product, we have to define the product name and features that will be implemented for the product. ABS compiler will create product selection based on the feature selection.
VARIABILITY MODULES FOR JAVA (VMJ)
Variability modules for Java (VMJ) is an architectural pattern
to realize the variability modules (VM) in Java programming language.
The VM concept is combined with the Java module system (available from Java 9)
and design patterns to model delta-oriented programming (DOP). The main advantage of VMJ is an extension
of the Java module system that supports SPLE and also Multi Product Line (MPL).
Java modules are managed using decorator and factory design patterns to derive product variants.
A delta module decorates a core module by specifying the modification behavior.
A product module configures objects based on the selected features. By defining java
modules dependency, a product module can access functionality in the selected features.
Objects in the core modules and delta modules are created using the factory pattern.
The factory pattern also manages the delta application order if a feature is implemented
by more than one delta. VMJ is more intuitive to use for anyone familiar with the Java programming language.
The adoption of SPLE, as a new approach, can be easier using VMJ.