Developer Social Network 张伟强
开发者社交网络(DSN) 背景 形成 研究意义 开源软件的发展(自组织、地理上分散的人员结构) 虚拟社区、社交网站的兴起 利用社交分析提高软件开发和维护的质量,降低成本
研究路线 如何抽取 如何分析 如何应用 以什么方式建立开发者之间的社交关系? 从哪些角度分析DSN?
抽取方式1:根据项目参与情况 建立社交连接的方式: 数据来源: 2个开发者参与过同一个项目,则在他们间建立联系 SourceForge.net(一个基于Web的项目支持网站,为开源项目提供项目管理工具、Bug跟踪、邮件列表服务、论坛、版本控制软件) 39000个项目,33000个开发者(2001.1~2002.3) 《The open source software development phenomenon: An analysis based on social network theory》2002 - Eighth Americas Conference on Information Systems
抽取方法2:根据文件提交行为 建立社交连接的方式 数据来源 在某个项目里,如果2个开发者修改过同一个模块/文件,则在他们间建立联系 源代码版本控制工具(CVS、SVN、Git) 《 Seeking the source: software source code as a social and technical artifact》 2005 - GROUP
抽取方法3:根据电子邮件往来 建立社交连接的方式 数据来源 如果2个开发者之间发送过email,则在他们间建立联系 public mailing list archive 《 Mining Email Social Networks》2006- MSR
抽取方法4:根据Bug报告评论 建立社交连接的方式 数据来源 以该方式建立DSN的原因 2个开发者评论过同一个Bug报告,则在他们间建立联系 Bug tracking system(Bugzilla、Jira) 以该方式建立DSN的原因 大部分Bug生存期短,意味着强烈的临时关系 Bug关注于具体的技术问题,在局部代码进行修改 《 Understanding a Developer Social Network and its Evolution》2011- ICSM
社交分析1:幂律分布 开发者的分布函数在Log-Log图中近似直线 开发者数量 参与项目数 修改文件数 发送email数 In-degree Out-degree …… 开发者的分布函数在Log-Log图中近似直线
社交分析2:“六度分隔” “小世界”性质
社交分析3:模块性 社区挖掘算法、模块性度量方法 DSN中是否存在清晰的社区结构
社交分析4:演化规律 开发者的加入和离开 开发者分布的演化 分隔程度的演化 模块性的演化 社区的演化 ………
社交分析5:团队结构与开发者地位
社交分析6:社交行为与开发行为的关系 发送email多的开发者是否在修改代码活动中也活跃? DSN中度数大的开发者是否完成了更多的Bug报告修复工作? ……
DSN应用示例1:预测failure 《Putting it all together: using socio-technical networks to predict failures》
DSN应用示例2:Bug Triage 《Developer Prioritization in Bug Repositories 》 在Bug报告分配这一任务中,根据开发者的历史行为(修复、评论)确定开发者擅长的Bug报告类型,建立分类器;当新的Bug报告出现时,推荐最合适的开发者。 定义开发者在DSN中的优先级,推荐修复Bug报告的开发者时把优先级高的排在前面
我们的想法 假设 实验对象 开发者社交网络应该与程序模块网络相一致 二者会在演化过程中越来越趋向一致 二者不一致的部分暗示着较差的软件质量(隐含Bug) 实验对象 Eclipse
2个网络的挖掘建立 DSN 程序模块网络 问题 Bug报告评论关系:Bugzilla 修改模块的关系:CVS 使用工具抽取(Dependency Finder) 问题 Bug报告与源代码的时间与版本
网络相似性比较 结点统一化 相似性比较 问题 先将程序模块网络中每个结点替换成开发者 根据开发者对模块的修改记录(CVS) 抽取出2个网络中的社区 找出2个网络间对应的社区,以重叠程度来度量相似性 问题 Bug跟踪系统中的开发者与版本控制系统中开发者的对应