Clustering navigation sequences to create contexts for guiding code navigation

To guide programmer code navigation, previous approaches such as TeamTracks recommend pieces of code to visit by mining the associations between pieces of code in programmer interaction histories. However, these result in low recommendation accuracy. To create more accurate recommendations, we propose NavClus an approach that clusters navigation sequences from programmer interaction histories. NavClus automatically forms collections of code that are relevant to the tasks performed by programmers, and then retrieves the collections best matched to a programmer's current navigation path. This makes it possible to recommend the collections of code that are relevant to the programmer's given task. We compare NavClus' recommendation accuracy with TeamTracks' by simulating recommendations using 4397 interaction histories. The comparative experiment shows that the recommendation accuracy of NavClus is twice as high as that of TeamTracks.

[1]  Janice Singer,et al.  NavTracks: supporting navigation in software maintenance , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[2]  Romain Robbes,et al.  Replaying IDE interactions to evaluate and improve change prediction approaches , 2010, 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010).

[3]  2006 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC 2006), 4-8 September 2006, Brighton, UK , 2006, VL/HCC.

[4]  Mik Kersten,et al.  Using task context to improve programmer productivity , 2006, SIGSOFT '06/FSE-14.

[5]  Brad A. Myers,et al.  An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks , 2006, IEEE Transactions on Software Engineering.

[6]  Michele Lanza,et al.  Replaying past changes in multi-developer projects , 2010, IWPSE-EVOL '10.

[7]  Hoh Peter In,et al.  Micro interaction metrics for defect prediction , 2011, ESEC/FSE '11.

[8]  Michael W. Godfrey,et al.  Detecting Interaction Coupling from Task Interaction Histories , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

[9]  R. Suganya,et al.  Data Mining Concepts and Techniques , 2010 .

[10]  Andreas Zeller,et al.  Mining version histories to guide software changes , 2005, Proceedings. 26th International Conference on Software Engineering.

[11]  Oscar Nierstrasz,et al.  Supporting task-oriented navigation in IDEs with configurable HeatMaps , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[12]  Oscar Nierstrasz,et al.  Autumn Leaves: Curing the Window Plague in IDEs , 2009, 2009 16th Working Conference on Reverse Engineering.

[13]  Amy J. Ko,et al.  Eliciting design requirements for maintenance-oriented IDEs: a detailed study of corrective and perfective maintenance tasks , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[14]  Martin P. Robillard,et al.  Recommendation Systems for Software Engineering , 2010, IEEE Software.

[15]  Oscar Nierstrasz,et al.  SmartGroups: Focusing on Task-Relevant Source Artifacts in IDEs , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[16]  Alexander Sahm,et al.  Switch! Recommending Artifacts Needed Next Based on Personal and Shared Context , 2010, Software Engineering.

[17]  Romain Robbes,et al.  Logical Coupling Based on Fine-Grained Change Information , 2008, 2008 15th Working Conference on Reverse Engineering.

[18]  Mary Czerwinski,et al.  Easing program comprehension by sharing navigation data , 2005, 2005 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'05).

[19]  Anind K. Dey,et al.  Understanding and Using Context , 2001, Personal and Ubiquitous Computing.

[20]  J.A. Gomez,et al.  Locating user functionality in old code , 1992, Proceedings Conference on Software Maintenance 1992.

[21]  Martin P. Robillard,et al.  The Influence of the Task on Programmer Behaviour , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[22]  Philip S. Yu,et al.  A Framework for Clustering Evolving Data Streams , 2003, VLDB.

[23]  Michele Lanza,et al.  Software Evolution Comprehension: Replay to the Rescue , 2011, 2011 IEEE 19th International Conference on Program Comprehension.

[24]  Robert DeLine,et al.  Evaluating cues for resuming interrupted programming tasks , 2010, CHI.

[25]  Charu C. Aggarwal,et al.  Addressing Concept-Evolution in Concept-Drifting Data Streams , 2010, 2010 IEEE International Conference on Data Mining.

[26]  Víctor M. González,et al.  No task left behind?: examining the nature of fragmented work , 2005, CHI.

[27]  Zhenchang Xing,et al.  An exploratory study of feature location process: Distinct phases, recurring patterns, and elementary actions , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).

[28]  Jae-Gil Lee,et al.  Trajectory clustering: a partition-and-group framework , 2007, SIGMOD '07.

[29]  Chris Parnin,et al.  Building Usage Contexts During Program Comprehension , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[30]  Romain Robbes,et al.  Characterizing and Understanding Development Sessions , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

[31]  Martin P. Robillard,et al.  Recommending change clusters to support software investigation: an empirical study , 2010 .

[32]  Sungwon Kang,et al.  A Study on Guiding Programmers' Code Navigation with a Graphical Code Recommender , 2011, SERA.

[33]  Emerson R. Murphy-Hill,et al.  A degree-of-knowledge model to capture source code familiarity , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[34]  James D. Hollan,et al.  Edit wear and read wear , 1992, CHI.

[35]  Qiang Yang,et al.  The program understanding problem: analysis and a heuristic approach , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[36]  A. Sillitti,et al.  Automated Segmentation of Development Sessions Into Task-Related Subsections , 2009 .

[37]  Gail C. Murphy,et al.  Comparing episodic and semantic interfaces for task boundary identification , 2007, CASCON.

[38]  Sungwon Kang,et al.  Clustering and recommending collections of code relevant to tasks , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).