Towards Self-Adaptive IDEs

IDEs that collect, process, and leverage the interactions of developers to better support the workflow of developers

Why self-adaptive IDEs?

Integrated Development Environments (IDEs) provide developers with tools and facilities to support development activities. Developers use IDEs to read, understand, and write source code. To read and comprehend code, they intensively interact with the IDE and generate a large amount of events that we call IDE interaction data. Examples include opening a code browser on a method, inspecting an object at run-time, editing a line of a method, popping up a refactoring menu, etc.

Current IDEs neglect this information, but researchers have pointed up its importance, for example to evolve the development environment according to user needs [ Murpy, 2006] or to support different software engineering activities [ Frey, 2011].

We envision self-adaptive IDEs that collect, process, and leverage the interactions of developers to better support their workflow.

What are self-adaptive IDEs?

To collect interaction data the environment monitors the actions that a developer is performing inside the IDE and persists them.

After the collection, the IDE should mine this data by transforming and structuring it for further use.

The most important and challenging task is to leverage such data, either retrospectively or at run-time.

Molding the shape of IDEs

In our vision IDEs leverage interaction data at runtime to mold their shape. We foresee three main branches for our research:

Live and adaptive visualizations, in sync with the activities of developers, help them to visually follow their sessions and act as immediate navigation means.

Interactions-based recommender systems leverage previous interactions to suggest developers how to quickly accomplish activities such as navigation or debugging.

Adaptive UIs are elements of the IDE that reshape themselves to increase the efficiency of developers, for example by rearranging frequently used UI components, such as menus and system browsers.

Current status

In the last two years we developed DFlow, an extension to the Pharo Smalltalk IDE that silently captures the interactions happening inside the IDE and enables retrospective visual analyses. Our first step towards self-adaptive IDEs is to understand how developers use the IDE. Currently, we are conducting empirical studies on interaction histories to assess how much time developers spend to comprehend a software system.

We need your help to realize our vision

Learn how