● 摘要
随着云计算的迅猛发展,先进网络基础设施和信息应用系统建设已经步入“超大规模系统”时代。目前传统软件设计方法难以驾驭前所未有的超大规模复杂系统,产生了深刻的软件危机,社会化的群体软件工程作为一种全新的网上分布式生产模式应运而生。本文将从以下三个方面展开群体软件社区用户行为的社会化分析研究。
(1)社区整体统计分析。首先,爬取目前规模最大的群体软件社区TopCoder并进行数据清洗。从比赛角度对群体软件社区进行统计分析,发现比赛数量呈逐年上升趋势且伴有季节性变化特点,比赛奖金会集中分布到几个固定值上而不是分布很零散等规律;从开发者角度对群体软件社区进行统计分析,发现开发者的提交数呈现幂律分布,开发者选择比赛存在“市场分割”现象,即能力强的开发者的会选择奖金高的比赛,能力差的开发者选择奖金少的比赛等规律。
(2)开发者行为的社会化研究。首先,本文分析发现开发者具有“连续分段”参加比赛的行为规律,使用隐马尔可夫模型对这种行为进行建模验证,在此基础上,提出一个预测开发者是否参加比赛的算法,借此可以帮助社区组织者了解下一个比赛将有多少人参与。把开发者参加比赛连续次数作为特征,与开发者收益进行回归分析,发现连续次数越多,收益越高。其次,构建开发者群体竞争行为的加权有向图模型,用结点中心性指标表征竞争行为,与开发者收益进行回归分析,发现越多人把某开发者当作竞争对手,邻居之间竞争越不激烈,其收益就会越高。最后,研究这两种行为对项目质量的影响,发现单个开发者参加比赛的种类越多,项目质量越高。
(3)团体生产中的提交博弈研究。一个比赛的所有开发者相互合作竞争共同完成比赛是群体软件生产的最小单元,对此本文形式化定义——团体生产过程。处于团体生产过程中的开发者会根据其他开发者提交解决方案与否来决定自己的行动,对此构建博弈模型以指导开发者是否提交解决方案,获取最大收益。提交解决方案的开发者是活跃的,通过仿真研究发现,活跃开发者数量与开发者总量无关,只与开发者的能力分布有关。有能力很强的选手出现,就会导致其他选手表现不活跃,因此应当禁止开发者提交之前查看别人是否提交以吸引更多人积极贡献。
最后,总结本文的分析流程,设计并实现了一个通用的群体软件社区的分析展示工具,包含数据抓取、网络构建,社会化计算与展示等功能。