论文部分内容阅读
随着互联网和软件开发技术的发展,软件的开发方式、运行形态、服务模型等方面都发生了巨大变化,基于互联网构造、运行于互联网之上、通过互联网提供服务的新型网构化软件逐渐成为主流。这一类新型软件形态中,各种类型的利益相关者群体以多样化方式直接或间接参与到软件开发过程,呈现出大众参与驱动的群体化开发特点。各类开放参与的软件资源规模巨大且快速增长、参与项目贡献的开发者人员众多且能力差异大、可供用户选择的软件制品功能多样且相似制品数量巨大。这些变化导致面向软件开发复用的开源资源选择难、面向软件开发任务的开发者选择难、面向用户反馈激发获取的软件应用选择难等挑战日益突出。本论文聚焦于开源软件和移动应用这两类典型的网构化创新软件,面向开源项目参与开发、开发者与开发任务匹配以及用户反馈获取等群体化软件开发任务,深入研究开源软件项目推荐、代码审阅人推荐以及移动应用个性化推荐等核心技术和方法,具体研究成果总结如下:第一,大规模志愿者长期持续贡献是软件项目取得成功的重要基础。开源社区中可供开发者自由参与的开源项目规模巨大,开发者在海量开源项目中寻找自己真正感兴趣的项目是提出需要花费巨大的时间和精力。如何根据开发者的技术爱好及开源项目特征,建立开发者与开源项目之间的精准匹配,对吸引开发者长期参与、提升开发者贡献效率等具有重要意义。本文提出了一种基于多维特征的开源项目个性化推荐方法(即RepoLike),该方法从开源项目自身流行度、关联项目技术相关度以及大众贡献者之间的社交关联度等三个维度度量开发者和开源项目之间的关联关系,并利用线性组合和排序学习算法(Learning To Rank)构建推荐模型,从而为开发者提供个性化的项目推荐服务。第二,大众参与代码贡献是推动软件项目快速迭代的关键环节。在GitHub等新型社交化开发社区中,大量外围开发者可以自由地以Pull-Request的形式向任意感兴趣的软件项目提交自己的代码贡献。这些代码贡献形式各异、质量参差不齐,找到合适的审阅人对大众贡献的代码进行质量审查对减少代码缺陷、提高软件质量、加快项目迭代具有重要意义。本文提出了一种细粒度审阅人推荐方法,首先通过实证分析将Pull-Request审阅人的主要任务细分为技术审查和任务管理两个方面,进而面向任务类型提出了一个双层Pull-Request审阅人推荐模型,采用混合推荐的方式实现审阅人的细粒度指派。第三,大众反馈是推动软件项目向正确方向快速演化的重要因素。应用市场为移动应用发布和获取用户反馈提供了全新途径,但移动应用市场通常存在软件数量庞大、功能雷同等特点,导致用户很难快速发现真正适合自己的应用并长期使用,进而也难以为软件应用的优化提供高质量的有效反馈。针对这一问题,本论文提出了一种基于“小众”模型的个性化推荐算法,将用户对移动应用的使用数据作为描述用户个人兴趣的特征,构建“用户-应用”矩阵,并利用下载信息和使用记录对矩阵数据进行融合加权,基于协同过滤算法实现个性化应用推荐。