论文部分内容阅读
面向服务软件架构的发展推动了软件开发模式的开放进程。不同于以往的封闭式环境,现在开发者可以直接按需使用公开的Web服务,也能方便地发布自己开发的服务。在这种开放的开发环境下,软件服务的数量急速增长,越来越多的服务拥有相同或者相似的功能。服务使用者对服务的需求不再局限于功能,也会要求更高的性能质量。然而,从大量的相似服务中找到质量高且最适合自己的服务是非常困难的。同时,对服务提供者来说,如何提高自身服务质量以吸引更多的用户也是一大挑战。服务平台对用户调用的服务进行质量预测能很好地解决这两个难题。软件服务的质量一般指服务的性能特征,由内部质量和外部质量构成。内部质量是指服务本身的固有属性,不受外部交互环境的影响,软件的缺陷情况是内部质量重要的衡量指标之一;外部质量是指用户调用服务时观察到的服务性能属性,如响应时间、吞吐率等。在开放服务的开发模式下,软件服务内部质量和外部质量的精准预测,对服务使用者、服务开发者、基础服务平台三方都具有重要的意义。然而,目前对软件服务内部和外部质量的研究还存在一些不足,主要表现为:1)对软件缺陷的预测工作主要集中于预测软件实体(如类、模块等)有无缺陷,对实体中缺陷个数的预测研究还存在不足,对实际的开发活动缺乏有效的实践指导;2)对于服务质量QoS(Quality of Service)的预测,目前主要使用基于评分的方法,以更准确地预测用户和服务之间QoS属性值为目标。但更准确的QoS属性值预测并不一定能带来更好的推荐效果,在QoS感知的服务推荐问题上,基于排序的方法更符合服务推荐应用场景;3)大多数服务推荐工作针对推荐算法,缺少对QoS感知的服务推荐系统设计和实现的研究。为解决上述问题,本文围绕软件服务质量的内部缺陷预测、外部QoS预测和QoS感知的服务推荐问题展开研究,主要工作和贡献包括:(1)软件缺陷的预测能帮助软件开发者快速定位有缺陷的软件实体,提升软件测试效率。然而,基于二分类(binary classification)的软件实体有无缺陷的预测方法提供的信息有限。本文使用经验软件工程的方法分析了缺陷个数预测的可行性,尝试在多种回归模型中找到最适合缺陷个数预测的方法,并对比了跨项目(cross-project)和项目内(within-project)缺陷预测效果的差异,以及软件度量元(software metric)特征降维对预测效果的影响。本文在公开的软件工程数据集PROMISE库上进行了大规模实验,实验结果显示随机森林回归模型在不同场景中的预测效果最好;并且与项目内预测的结果相比,跨项目预测的结果没有显著的统计差异,有时甚至效果更好。(2)本文提出了一种基于评分和排序的软件服务QoS预测方法,它结合了基于邻域和隐语义模型对用户服务QoS属性矩阵分析的优点,根据访问服务用户的QoS属性值排序来衡量服务之间的相似度,从而提高预测的准确率。同时,分析了使用排序指标来衡量推荐效果的必要性。在Web服务数据集(WSDream)上的实验结果表明,与其他方法相比,本文提出的混合推荐模型取得了更好的推荐效果。(3)本文对服务推荐系统需求展开分析,以基于评分和排序的混合推荐模型为核心,设计并实现了一个QoS感知的软件服务个性化推荐系统。在系统中用户可以指定服务功能需求,系统根据用户调用服务的历史QoS属性记录,为其推荐质量高且最合适的服务,从而为个性化推荐系统的实现提供了可行的整体解决方案。