论文部分内容阅读
软件工程是一种以人为中心的活动,因此人的因素对软件开发过程的效率和产出都有着极为重要的影响,其中程序员是软件工程中最为核心的参与人员。程序员是一种典型的知识工作者,他们的工作包括在不同的应用之间生产、转移和消费大量的不同种类的信息,因此程序员有很多的信息需求从而使他们的行为变得更加复杂。通过理解程序员行为,研究者可以提出更好的程序编写规范、项目管理方法以及软件工具来支持程序员的工作,从而提高程序员的工作效率。近些年软件工程的研究者们越来越关注人行为的研究,例如已经有很多软件工程的研讨会和学术会议(如CHASE、VL/HCC)专注于人和人社会关系方面的研究。这些研究的目的包括调查程序员的能力、程序员在软件开发和维护过程中的信息需求、程序员如何合作以及如何提高程序员效率等。在这些软件工程的研究中,通常会采用很多的数据追踪和收集方法,比如采访、问卷、观察、出声思考、插装等。在程序员行为研究中有两种技术被广泛地用来收集数据:截屏录像和插装。截屏录像是一种通用而且容易部署的方法,但是分析截屏录像数据需要大量的时间和人力;而插装一个软件可以自动化地记录一个应用中的用户交互数据,但是插装当前很多的应用软件都比较复杂,而且程序员在软件开发过程中会使用多个软件(如IDE、浏览器等),插装所有的软件需要相当大的代价。针对这两个问题,本文提出了相应的方法并实现了两个工具:scvRipper和ActivityS-pace。利用这两个工具收集到的数据,本文同时还做了一些程序员行为的分析。具体的,本文的主要贡献有以下部分:1.本文提出了一种基于计算机视觉技术可以自动化地从截屏录像中抽取出时间序列的程序员交互数据的方法,并实现了一个截屏录像挖取工具scvRipper。利用29个小时的截屏录像数据,本文评估了scvRipper的可用性、有效性和性能。2.利用scvRipper从29个小时截屏录像数据中抽取的时间序列交互数据,本文做了一个程序员在软件开发过程中网上搜索行为的细粒度定量分析,同时这个定量分析也证明了scvRipper的可用性。利用同样的数据,本文还提出了一种基于数据挖掘技术的方法BPMiner,它可以从scvRipper挖取的截屏录像数据中分析出程序员行为模式。3.本文基于操作系统(OS)层面的插装方法来跟踪和收集程序员与应用交互时的鼠标和键盘事件,从而追踪程序员在各个不同应用中的活动,并且不需要对所有软件进行插装。本文通过对这些数据做了进一步地抽象和分析,并提供了一些情景式的和语义的UI来帮助程序员搜索跨应用的相关信息,这个工具称之为ActivitySpace。同时本文设计了一个评估ActivitySpace的案例研究,从8个参与者中搜集了417个小时的有效活动数据。利用这些数据,本文分析了软件开发过程中的信息碎片问题以及评估了ActivitySpace的有效性。4.与以前规模较小并且在控制的实验环境下进行的程序理解行为研究相比,本文利用ActivitySpace,做了一个在实际的开发环境中大规模的关于程序理解行为的探索性研究。本文收集了来自5个真实项目组共48个程序员,1725个小时的有效工作数据,这些数据包括来自多个应用(比如IDE、浏览器)的程序员交互数据。本文通过这个案例研究验证了程序理解在软件开发中的重要作用,以及影响程序员程序理解效率的若干主要因素及其初步的相关性探索。