ATTENTION/WARNING - NE PAS DÉPOSER ICI/DO NOT SUBMIT HERE

Ceci est la version de TEST de DIAL.mem. Veuillez ne pas soumettre votre mémoire sur ce site mais bien à l'URL suivante: 'https://thesis.dial.uclouvain.be'.
This is the TEST version of DIAL.mem. Please use the following URL to submit your master thesis: 'https://thesis.dial.uclouvain.be'.
 

Strategies for managing the feature-interaction problems in context-oriented programming

(2023)

Files

Caudron_35681800_Galand_26441800_2023.pdf
  • Open access
  • Adobe PDF
  • 1.91 MB

Details

Supervisors
Faculty
Degree label
Abstract
Context-oriented programs are able to dynamically change their behaviour depending on the environment they are currently executing in, however, adding features to the paradigm can create new types of problems that we will call feature-interaction problems or more simply: conflicts. In this thesis, we worked on the RubyCOP framework which implements the feature-based context-oriented programming paradigm FBCOP. This framework enables programmers to develop programs that can deploy new features, methods and classes at run time when the programs detect a context change during the execution. More precisely, we focused on problems that could occur during the execution of adaptive programs and how we could provide a solution to solve these problems. In fact, when two features are deployed together, they can enter into conflict with each other and create unexpected, unpredictable or faulty behaviours. Two main types of conflicts were defined: • The first type is incompatibility conflict. It occurs when multiple incompatible features, that are activated together, lead to crashes or faulty behaviours. This type of conflict is hard to detect and requires some detection tools to do so. • The second type is sequential conflict, this type of conflict occurs when the behaviour of the system depends on the feature activation order. A sequential conflict occurs when two executions with the same configuration (the same set of activated contexts and features) have different results. Multiple solutions exist to handle those conflicts and one of them is using strategies. A strategy dictates how the system should behave in order to manage conflicts. The strategies used differ depending on the type of conflict, as the core problem is different. Incompatibility conflicts come from the interaction between features whereas sequential conflicts come from the feature activation order. Strategies used to manage incompatibility conflicts are various and can range from throwing errors, letting the user handle conflicts, reverting to a non-conflicting state and activating incompatible features independently to prioritising important features. To manage sequential conflicts, strategies to influence the feature activation order (feature precedence order) need to be defined. We will explore in this thesis strategies that use traversal algorithms such as DFS. But also precedence strategies that use either precedence scores or precedence relations between features.