An example implementation using MDEOptimiser can be found in this repository.
The aim of the next release problem (NRP) is to find the most suitable set of tasks to include in the next release for a software product, to minimise the cost and to maximise the customer satisfaction. Each Customer has a desire which can consist of one or many SoftwareArtifacts. SoftwareArtifacts can have a dependency on other SoftwareArtifacts.
The input models used for this case study have also been automatically generated by the authors using a random model generator implemented using Java. A brief description of these models has been included in the table below.
|Next Release Problem|
In the figure above, we show a metamodel of this problem.
To solve this problem, the user is required to assign instances of SoftwareArtifacts to a NextRelease such that the total cost of the selected SoftwareArtifacts is minimised and the total customer satisfaction is maximised. We have specified the problem with the following two objectives:
1. [Objective 1] minimise cost for the selected release itmes; 2. [Objective 2] maximise the customer satisfaction for the proposed release.
In the figure below we show an implementation of the case study using our DSL.
The minimal set of required rules for this case study is simple, only requiring a mutations to add and remove an edge between a Solution and a SoftwareArtifact. However, the difference between this case study and the others considered so far, is that the selection of a SoftwareArtifact, directly influences the Cost fitness function and indirectly influences the Customer Satisfaction objective. A SoftwareArtifact is considered for the calculation of a RequirementRealization, only when all its dependencies are also assigned to the solution. With this difference, we aim to evaluate how the generated rules explore the search space in cases where the fitness functions provide only coarse-granular guidance.
In our implementation we have used four mutation operators to explore the search space. These have been implemented using Henshin and are shown in the figure below.
Automatic mutation generation
In the figure below, we include an example of the DSL that allows the user to specify the nodes