Towards aiding within-patch information foraging by end-user programmers

Towards aiding within-patch information foraging by end-user programmers
复制标题

帮助最终用户程序员搜寻补丁内信息

DOI:
--
复制
发表时间:
2014
期刊:
IEEE Symposium on Visual Languages / Human-Centric Computing Languages and Environments
影响因子:
--
通讯作者:
Christopher Scaffidi
Christopher Scaffidi
中科院分区:
--
文献类型:
--
作者:
Balaji Athreya;Christopher Scaffidi

文献摘要

被引文献

相似文献

许多工具帮助专业程序员解决在代码维护期间查找信息的难题。这些工具的经验成功可以解释为信息搜寻理论(IFT),它预测一个人如何通过导航信息系统的基础上提供给人的信息特征的视觉权重来寻求信息。受这些工具成功的启发,我们调查了最终用户程序员也会从增加重要信息特征的相对视觉权重的工具中受益的合理预期。我们对两个工具进行了原型化和评估,每个工具都使用现有的算法来识别最重要的代码行。一个原型突出显示重要的代码行;另一个原型隐藏不重要的代码行。一项实证研究表明,通过突出显示来增加重要信息特征的相对权重,确实会对搜寻的信息量和获得信息的速度产生积极影响;另一方面,通过隐藏来降低不重要信息特征的相对权重,则会产生适度的负面影响。这些结果揭示了增强现有基于IFT的觅食模型的机会,并将其应用于设计更有效的最终用户编程工具,用于编码,调试和代码重用。
Many tools help professional programmers with the difficult problem of finding information during code maintenance. The empirical success of these tools can be explained by Information Foraging Theory (IFT) which predicts how a person seeks information by navigating through an information system based on the visual weight of information features presented to the person. Motivated by the success of these tools, we investigated the reasonable expectation that end-user programmers would likewise benefit from tools that increased the relative visual weight of important information features. We prototyped and evaluated two tools, each of which uses an existing algorithm to identify the most important lines of code. One prototype highlights important lines of code; the other prototype hides unimportant lines of code. An empirical study revealed that increasing the relative weight of important information features by highlighting did positively impact the amount of information foraged and the rate of information gained; on the other hand, decreasing the relative weight of unimportant information features by hiding had a modest negative impact. These results reveal opportunities for enhancing existing IFT-based foraging models and applying them to design more effective end-user programming tools for coding, debugging, and code reuse.