Published at ICSE 2018 at the Software Engineering in Practice track, in Gothenburg Sweden (ACM Paper Link)
This repository contains the source code, poster, and presentation accompanying the paper.
Alexandros Lattas1,
Diomedis Spinellis2
1Imperial College London,
2Athens University of Economics and Business
The source code for all optimization algorithms used in paper can be found in the notebook:
code/cmd-optimize.ipynb
To pre-process anonymized telemetry such as the ones used in the experiments use:
python code/preprocess_data.py path/to/file.txt
The purpose of this study is to create a simple User Interaction Model to evaluate alternative approaches to optimizing a user interface.
All approaches can be expressed by varying
In this simplified version of the User Interaction Model, we assert that only 2 weights are needed:
Same group:
- ALL Put all commands on the screen (actually possible with new extra wide LCD screens). This establishes the theoretical optimum.
- NAIVE Naive: make the most frequently executed commands always available.
- GROUP Group heuristics: group together the most used common commands (e.g. delete and move) by doing away the class-verb method for selecting them.
- MRU-B User optimized, based on the most recently used (MRU) commands of a particular user executes more frequently during a training period (batch).
- MRU-O User optimized, based on the most recently used (MRU) commands of a particular user executes more frequently during continuously adjusted (online).
- OPT Optimized: run a (stochastic) optimization algorithm to select those commands whose combination yields the fastest user interaction time. This differs from NAIVE in that it takes into account the actual switching between entities.
- CLUSTER Clustered, based on 2-3 clusters of users. The clustering is performed based on the commands they execute. A stochastic optimization similar to OPT is ran to select the commands executed in each cluster.
The file format is:
init_time
,
click-on-group_name/click-on-command_group-name_command-name
. For example:
1497807650.013000 en_objects
1497807651.223000 vm_object_add
1497807655.943000 vm_object_get_attributes
The data used in these experiments are proprietary and are not made public in this repository.