icpc

An experiment on how Feature dependent variables affect program comprehensibility

icse

Author : Djan Santos, Cláudio Sant'Anna and Márcio Ribeiro

Abstract :

Background: #ifdefs allow developers to define source code related to features that should or should not be compiled. A feature dependency occurs in a configurable system when source code snippets of different features share code elements, such as variables. Variables that produce feature dependency are called dependent variables. The dependency between two features may include just one dependent variable or more than one. It is reasonable to suspect that a high number of dependent variables and their use make the analysis of variability scenarios more complex. In fact, previous studies show that #ifdefs may affect comprehensibility, especially when their use implies feature dependency. Aims: In this sense, the main goal of our experiment is to evaluate if the comprehensibility of configurable system source code varies according to the number of dependent variables. Testing this hypothesis is important so that we can recommend practitioners and researchers the extent to which writing #ifdef code with dependencies is harmful. Method: To minimize this knowledge gap, we executed a controlled experiment with 12 participants who analyzed programs trying to specify their output. We quantified comprehensibility using metrics based on time and attempts to answer tasks correctly, participants’ visual effort, and participants' heart rate. Results: Our results indicate that the higher the number of dependent variables the more difficult it was to understand programs with feature dependency. Conclusions: In practice, our results indicate that comprehensibility is more negatively affected in programs with higher number of dependent variables and when these variables are defined at a point far from the points where they are used.

 

 
Procedure:

1 - we cleaned all material and equipment with alcohol gel and asked the participant to fill out a consent form;
2 - the participant put on the smartwatch;
3 - calibrate eye-tracking and smartwatch devices;
4 - we asked her or him to watch a two minute full-screen video of a fish swimming in an aquarium;
5 - perform the task in order based in Latin square group;

 
Source codes of our experiment:

SOURCE CODE OF PROGRAMS

Latin Square 2 x2:

Domain 1: sale of property
Domains 2: grade calculation
Developer 1 4DV (Program 1) 2DV (Program 3)
Developer 2 2DV (Program 2) 4DV (Program 4)
LEGEND: 4DV (4 Dependent Variable) 2DV (2 Dependent Variable)

TASKS OF PROGRAMS

Tasks

with more dependent variable

with fewer dependent variable

Domain 1 - sale of property Task 1, Task 2 and Task 3 Task 1, Task 2 and Task 3
Domain 2 - grade calculation Task 1, Task 2 and Task 3 Task 1, Task 2 and Task 3

Quantitative collected data

Script R

Indiviual time to specify the output
Time.R
Number of attempts needed until correct answer
Attempts.R
Individual number of fixations
Fixations.R
Number of HRV HRV.r

AOI OF PROGRAMS

Domain 1: sale of property
Domains 2: grade calculation
Program 1 and Program 2 Program 3 and Program 4

PROGRAMS HIGHLIGHTING VARIABLE DEFINITIONS AND VARIABLE USAGES

Domain 1: sale of property
Domains 2: grade calculation
Program 1 and Program 2 Program 3 and Program 4