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 4,397 interaction histories. The comparative experiment shows that the recommendation accuracy of
NavClus is twice as high as that of TeamTracks. We also conduct a diary study to investigate the eectiveness of a graphical code recommender that incorporates the NavClus approach. Our study reveals that developers using NavClus tend to spend less time viewing the code base and more time modifying the software, indicating less time is needed to understand software before modifying it.
프로그래머의 코드 네비게이션 활동을 촉진하기 위해 기존 방법들은 다음에 방문할 프로그램 요소를 추천하고자 하였다. 이러한 방법들은 프로그래머 인터랙션 히스토리에서 연속으로 방문한 프로그램 요소 간의 관계를 마이닝하여 추천을 수행하였다. 하지만, 이러한 방법은 낮은 추천 정확도를 보였다. 우리는 좀 더 효과적인 추천을 위해 새로운 방법인 네브클러스(NavClus)를 제안하는데, 해당 방법은 프로그래머 인터랙션 히스토리에서 네비게이션 시퀀스를 생성한 후에 이를 바탕으로 클러스터링을 수행하여 프로그래머의 과거 네비게이션 컨텍스트를 표현하는 코드 묶음을 생성한다. 이후 현재 프로그래머의 인터랙션을 모니터링 하여 질의(Query)를 생성한 후 이를 바탕으로 과거 컨텍스트를 표현하는 코드 묶음 중 유사성이 높은 코드 묶음을 선택하여 현재의 작업 문맥에서 참조해야 할 코드의 묶음을 추천한다.
제안한 방법인 네브클러스와 가장 최근의 프로그래머 인터랙션 마이닝을 이용한 추천 기법인 팀트랙스(TeamTracks)를 시뮬레이션 실험을 통해 비교한 결과 제안한 방법인 네브 클러스가 팀트랙스의 추천 기법보다 두 배로 높은 추천 정확도를 보였다. 또한 네브클러스 방법을 장착한 그래픽컬 코드 추천 시스템을 바탕으로 유저 시스템을 수행한 결과 네브 클러스를 활용할 경우 사용자가 코드를 단순히 조회하는 활동에 비해 편집하는 비중을 높일 수 있음을 확인하였다.