开发者社交网络 张伟强
What? 开发者 社交网络 以开发者为节点, 以开发者间的特定关系为边, 所形成的网络结构 什么是开发者社交网络? 开发者 社交网络 什么是开发者社交网络? 我们这门研讨班,题目是开发者社交网络,大家了解这个是什么吗? 什么印象? 分解一下,两个词 意思我们都懂 合起来呢? Facebook, Twitter,微博,豆瓣,知乎,百度贴吧 stack overflow,github,sourceforge,linked in 显式 以开发者为节点, 以开发者间的特定关系为边, 所形成的网络结构
Why? 代码 人 开发者的交流协作关系 在软件工程中至关重要 社交网络 开源项目平台 首先介绍一下为什么我选择了这个研究问题? 代码 人 社交网络 开源项目平台 首先介绍一下为什么我选择了这个研究问题? 其实我们都知道,人的因素在软件开发中至关重要。开发团队成员中每个人的水平、专业技能、行为特征、协作方式等都可能影响软件质量和开发效率,从而最终影响软件的成败。 但在以往的学术研究中主要关注的是程序代码,很少考虑人的因素。 因为代码是可见的,可以去分析它的结构;而人的行为和特征难以度量。 人的各种活动在开发中是必不可少的,比如说开发团队的协作和交流,一起讨论问题。这些信息很重要却很难保留下来。 要研究这样的问题,就要获得这方面的数据,开源软件提供了这样的机会。 参加到开源项目中的人通过互联网进行讨论和协作开发,很多信息保留了下来。 而且可以获得一个开发者在多个项目中的活动情况。这样就可以更准确地衡量开发者的经验特征 有了数据支持,对这些数据的处理和分析方法,就是社交网络。 刻画人与人之间的关系,放到软件开发中就是开发者之间的交流协作关系, 对于大规模的项目,或者整个开源社区,使用社交网络分析可能会发现一些有意思的结果。 开源软件的流行同时为我们提出了新的问题,什么样的开源软件更容易成功,尤其是从人的角度出发,哪些与人有关的因素影响开源软件的成功。 总的来说,研究人的活动首先是因为人很重要但缺乏关注,开源软件可以提供数据保证研究的可行性,同时引出新的研究问题,而社交网络可以作为研究这样问题的方法。 而现在 以前关注代码,现在关注人! 开源项目提供数据,记录了人的活动 可以使用开发者社交网络进行研究 同时带来研究问题:影响开源项目成功的因素 开发者的交流协作关系 在软件工程中至关重要
How? 构建方式 分析方法 为了研究这样的问题,14年我对开发者社交网络的文献进行了整理总结,写了一篇综述,在中国科学英文版上发表。 从3个角度来总结了软件工程研究中用到的DSN 如何构建DSN,DSN描述的是开发者间的关系,但从不同的角度来确立开发者间的关系,比如说 在整个开源社区中,两个人参与到同一个项目中,有过协作 在一个项目中,修改过同一个模块的代码;或者有过email交流;或者在缺陷跟踪中有过交集,讨论过同一个bug等等 如何分析DSN,可以用社交网络分析的度量局部特性和全局特性,分析开发者的角色(核心,边缘),社团挖掘(在一个团队中挖出小团队),社交网络中讨论的幂律分布或者六度分隔的特性,等等 如何应用DSN,这个其实还很少,目前主要用在软件维护这个环节,大部分是在缺陷预测中,可以用网络分析度量指标作为预测模型的输入 应用场景
网络构建 数据获取:采访/问卷 VS 过程数据 构建方式: 交流关系——Email,留言,Bug报告评论 协作关系——开发代码,领取任务,参与项目 管理学开始
抽取方式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
网络分析 社交分析: SNA度量——中心度,网络大小,聚集系数… 角色分析——核心成员,边缘成员,中介 社团挖掘——小团体 网络特性——幂律分布,六度分隔 模式挖掘——子图挖掘 演化特征——以上特性的演化特点 可视化 管理学开始 软工相关: 社交分析特性和软工活动的相关性
网络特性分析及演化分析 ICSM 2011 从静态和动态角度考察GSN的特点在DSN中适用情况
提出问题
识别DSN和Communities 抽取DSN 识别社区及验证 Louvain algorithm 1、度数大的结点是关键开发者 2、使用真实社区birds-of-a-feather (BOF) meetings in the Mozilla Summit 2010进行验证
DSN vs GSN (1/4) Power Law
DSN vs GSN (2/4) Degree of Separation
DSN vs GSN (3/4) Modularity Higher modularity indicates that there are clearly defined communities (teams) within the network.
DSN vs GSN (4/4) Community Size
DSN vs GSN Summary
DSN Evolution (1/5) Developer Changes
DSN Evolution (2/5) Degree Distrubution
DSN Evolution (3/5) Degree of Separation
DSN Evolution (4/5) Modularity
DSN Evolution (5/5) Community Size Distribution
Community Evolution 计算2个连续时间段的社区之间的相似度,如果达到一定阈值,则认为后面的社区是由前面的社区演化而来 5种演化模式:derivation (expand or shrink), merge, split, extinct, emerge 社区演化的结论如下:
网络应用 改善软件工程任务: 预测——缺陷预测——加入网络度量作为特征 推荐——Bug推荐——加入开发者优先级 管理学开始
论文套路 提出问题 设计模型/方法 实验验证 分析现象 VS 改善过程 管理学开始
论文阅读 How Developers’ Collaborations Identified from Different Sources Tell us About Code Changes (ICSME 2014) Building It Together: Synchronous Development in OSS (ICSE 2014) From Developer Networks to Verified Communities: A Fine-Grained Approach (ICSE 2015) Facilitating Coordination between Software Developers: A Study and Techniques for Timely and Efficient Recommendations (TSE 2015) Understanding and Improving Software Build Teams (ICSE 2014) 管理学开始