Developers use Integrated Development Environments (IDEs) to maintain and evolve software systems. IDEs facilitate development activities such as navigating, reading, understanding, and writing source code. Development activities are composed of many basic events, such as browsing the source code of a method or editing the body of a method. We call these actions “interaction data”. We believe that collecting, processing, and exploiting these interactions at run-time can potentially augment the productivity of developers.
Our goal is to create self-adaptive IDEs: IDEs that collect, mine, and leverage the interactions of developers to better support the developers’ workflow. We envision a development environment that automatically and seamlessly adapts itself to support developers while maintaining and evolving software systems. To reach our goal, we will develop means to reshape the user interface of the IDE, interaction-based recommenders, and integrate live and adaptive visualizations inside the IDE.
As a first step towards our vision, we have developed DFlow, a tool that non-intrusively records all IDE interactions while a developer is programming. At the moment DFlow collects all the interactions between the developer and the IDE, and enables retrospective analysis by means of software visualizations.
1. Towards
Self-Adaptive IDEs
Roberto Minelli and Michele Lanza
REVEAL @ Faculty of Informatics, University of Lugano, Switzerland
R E V E A L
Università
della
Svizzera
italiana
4. Interaction
Data
Opening a code browser
Inspecting an object at run-time
Editing a method
Opening & closing a window
Popping up a refactoring menu
Adding a class
Removing a method
Removing a class
5. Interaction
Data
Evolve the environments
according to user needs
Enhance how developers
navigate code
G. C. Murphy, M. Kersten, and L. Findlater.
How are java software developers using
the Eclipse IDE? IEEE Software, 2006.
T. Frey, M. Gelhausen, and G. Saake.
Categorization of concerns: A categorical
program comprehension model. PLATEAU 2011.
13. Live and Adaptive
Visualizations
Views In-Sync With The Workflow Of Developers
Visualizations that co-evolve with the evolution of the
software system. These views can act as a “visual memory”
for developers.
14. Live and Adaptive
Visualizations
Views In-Sync With The Workflow Of Developers
Visualizations that co-evolve with the evolution of the
software system. These views can act as a “visual memory”
for developers.
Adaptive Visualizations
Views that are able, depending on the context, the history,
and the type of session, to completely reshape themselves
(e.g., changing layout, color scheme).
15. Adaptive
User Interfaces
Enhancing Code Browsers
Browsers that automatically reshape themselves to better
support different activities, such as source code navigation.
16. Adaptive
User Interfaces
Enhancing Code Browsers
Browsers that automatically reshape themselves to better
support different activities, such as source code navigation.
Repositioning Frequently Used UI Elements
IDE understand when UI elements (e.g., menu) are used
frequently and reposition them in a more convenient place.
18. Interaction-Based
Recommender Systems
Navigation Recommendations
IDEs detect “navigation patterns” from fine-grained
interaction histories to provide developers with
suggestions on how to navigate code more efficiently.
Debugger Recommendations
IDEs leverage previous debugging histories to provide
developers with suggestions on how to debug easily.
26. PHARO Smalltalk IDE
DFlow
10:20 20:12
3:00 6:00 18:35 21:00 23:00 45:43 48:00 51:00 54:00
category Pill
Class Blue Class Red
foo bar baz
category X
Class Y
m1 m2 m3
0
300
600
1680
900
1200
360
27. Understand
PHARO Smalltalk IDE
DFlow
Visualize
10:20 20:12
3:00 6:00 18:35 21:00 23:00 45:43 48:00 51:00 54:00
category Pill
Class Blue Class Red
foo bar baz
category X
Class Y
m1 m2 m3
0
300
600
1680
900
1200
360
Classify
Track Flow
Dominant
Tracks