本发明属于软件工程技术领域,特别是涉及一种基于用户反馈信息的软件需求检索系统。
背景技术:
软件需求工程是软件工程中的一个非常重要的研究领域,对软件需求工程领域的研究主要是为了支持软件需求的获取,构造,发展和管理等一系列活动。近年来,软件数量飞速增加,所以,在软件发展初期搜索合适的软件需求十分必要。为了实现这个目标,许多需求工程工具被设计用来搜索软件需求,然而,这些工具对以语义为基础的检索只能提供有限的支持。更重要的是,在软件需求检索中用户需要面对面进行交流,当用户处于不同地区时这将是一个很严重的问题。另外,由于软件代码量大,现有的软件有很多缺陷,大多数需求工程工具没有指出这些缺陷。
技术实现要素:
本发明目的是为了解决现有技术中存在的问题,提出了一种基于用户反馈信息的软件需求检索系统。本发明所述软件需求检索系统采用了基于反馈信息的互补分类方法,该方法结合了关键词,分面分类法和大众分类法,通过语义概念字典提供了大量的语义信息,避免了大众分类法语义信息不足的缺陷。这种互补分类方法极大地提高了检索系统的效率和精确度。
本发明的目的通过以下技术方案实现:一种基于用户反馈信息的软件需求检索系统,包括用户认证模块、检索模块、语义概念字典模块、反馈模块、开发人员认证模块和大众分类模块;
所述用户认证模块用于将一个用户列表储存在一个可扩展标记语言文件中,所述用户列表中包含了用户的名字和密码,在进入系统之前所有用户都必须通过身份认证;
所述检索模块包括关键词和分面检索组件以及云标签组件;所述关键词和分面检索组件用于管理和分析用户信息,所述用户信息包括密码和在用户界面被输入的分面信息;如果用户信息跟需求数据库的信息匹配,所述关键词和分面检索组件从需求数据库中搜索到合适的软件需求,如果用户信息没有出现在需求数据库中,云标签组件从标签数据库中为用户推荐合适的标签;
所述语义概念字典模块是一个包括了关键词的语义概念集合;用于为用户提供关键词相关的语义概念,用户能够根据语义概念中的某一个进行搜索;
所述反馈模块用于管理和储存用户反馈信息,所述用户反馈信息为用户评价搜索到的软件需求与标签;
所述开发人员认证模块用于将开发人员的姓名和密码储存在一个可扩展标记语言文件中,任何开发人员在创建一个新的软件需求并标记需求之前都必须通过身份认证;
所述大众分类模块用于开发人员用标签对软件需求进行分类,所述标签、软件需求和相关的开发人员被储存在同一个可扩展标记语言文件中。
进一步地,所述大众分类模块用于开发人员用标签对软件需求进行分类的分类方法为大众分类法,定义一个软件需求的标签的“频率”为该标签被分配给该软件需求的次数;频率最高的标签成为软件需求的类别,而那些频率接近最高频率的标签也会在用户搜索相关需求时被推荐。
进一步地,所述如果用户信息没有出现在需求数据库中,云标签组件从标签数据库中为用户推荐合适的标签;具体为:sim(k,ti)定义为关键词k和标签ti的相似度;定义
二者的余弦相似度被定义如下
检索系统通过使用余弦相似度方法来计算关键词和标签之间的相似度来推荐与关键词相似的标签。
附图说明
图1是本发明所述基于用户反馈信息的软件需求检索系统的结构框图;
图2是一个对软件需求加标签的例子图;
图3是软件需求的检索界面图;
图4是相关软件的搜索结果图;
图5是一个软件需求的详细内容界面图;
图6是标签推荐图;
图7是创建一个新的软件需求的过程图。
具体实施方式
下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合图1,本发明提出一种基于用户反馈信息的软件需求检索系统,包括用户认证模块、检索模块、语义概念字典模块、反馈模块、开发人员认证模块和大众分类模块;
所述用户认证模块用于将一个用户列表储存在一个可扩展标记语言文件中,所述用户列表中包含了用户的名字和密码,在进入系统之前所有用户都必须通过身份认证;
所述检索模块包括关键词和分面检索组件以及云标签组件;所述关键词和分面检索组件用于管理和分析用户信息,所述用户信息包括密码和在用户界面被输入的分面信息;如果用户信息跟需求数据库的信息匹配,所述关键词和分面检索组件从需求数据库中搜索到合适的软件需求,如果用户信息没有出现在需求数据库中,云标签组件从标签数据库中为用户推荐合适的标签;所述云标签组件允许用户从云标签选择相关的标签,通过选中的标签,用户可以找到合适的软件需求。
所述如果用户信息没有出现在需求数据库中,云标签组件从标签数据库中为用户推荐合适的标签;具体为:sim(k,ti)定义为关键词k和标签ti的相似度;定义
二者的余弦相似度被定义如下
检索系统通过使用余弦相似度方法来计算关键词和标签之间的相似度来推荐与关键词相似的标签。
所述语义概念字典模块是一个包括了关键词的语义概念集合;用于为用户提供关键词相关的语义概念,用户能够根据语义概念中的某一个进行搜索;由于基于关键词的软件需求搜索方法只在句法上跟关键词进行匹配,因此这个方法不一定可以搜索到用户想要的软件需求。因此提供了一个关键词对的语义概念字典来解决这个问题。这个语义概念字典是一个包括了关键词的语义概念集合。如果用户在用户界面输入了一个出现在语义概念字典的关键词,系统会为用户展示相关的语义概念,在搜索中用户只能添加额外的关键词限制结果。然而,语义概念字典为用户提供了一些语义概念,用户可以选择一个合适的概念来提高搜索的结果。以下算法描述了检索模块和语义概念字典之间的具体关系:
所述反馈模块用于管理和储存用户反馈信息,所述用户反馈信息为用户评价搜索到的软件需求与标签;反馈模块允许用户评估适当的软件需求和标记。用户反馈技术反映了用户的兴趣,有助于系统提高检索质量。以下例子显示了软件需求的用户反馈信息:
<反馈-信息>
<用户-名称>张涛</用户-名称>
<日期>2009-12-01</日期>
<软件-需求>搜索引擎</软件-需求>
<id>sr-001</id>
<评分>5</评分>
<用户-数量>10</用户-数量>
<平均-得分>4</平均-得分>
…
</反馈-信息>
在本例中,用户名元素和日期元素指示对软件需求和评估时间进行评级的用户。软件需求元素和编号元素表示被评级的软件需求和此软件需求的编号。评分分数元素指示用户给出软件需求的分数。用户数量元素表示对软件需求进行评估的用户数量,而平均得分元素则表示软件需求的平均得分。
所述开发人员认证模块用于将开发人员的姓名和密码储存在一个可扩展标记语言文件中,任何开发人员在创建一个新的软件需求并标记需求之前都必须通过身份认证;
所述大众分类模块用于开发人员用标签对软件需求进行分类,所述标签、软件需求和相关的开发人员被储存在同一个可扩展标记语言文件中。所述大众分类模块用于开发人员用标签对软件需求进行分类的分类方法为大众分类法,定义一个软件需求的标签的“频率”为该标签被分配给该软件需求的次数;频率最高的标签成为软件需求的类别,而那些频率接近最高频率的标签也会在用户搜索相关需求时被推荐。大众分类法算法的详细内容为:当开发人员在系统的用户界面上用标签标记软件需求时,会形成标签树。在标签树中,标签(ti)和软件需求(rj)分别成为父节点和子节点。系统会记录标签并计算标签被分配到软件需求的次数。最后,将循环程序计算的最高频率的标签作为软件需求的最终类别插入到标签数据库中。
图2是对软件需求进行标记的一个例子。在这个例子中,开发者用不同的标记(数据挖掘、web服务、大众分类法和信息检索)来标记软件需求“查询系统”。定义一个软件需求的标签的“频率”为该标签被分配给该软件需求的次数。频率最高的软件成为软件需求的类别。在图2中,大众分类法的频率比其他标记要大,因此大众分类法是该软件需求的类别。此外,由于信息检索标签和数据挖掘的频率接近于大众分类法标签,检索系统能够在用户搜索相关需求时推荐这些标签。
在系统中,用户输入用户名与密码通过用户认证模块之后,就可以进入用户界面。用户可以通过输入关键词和各方面信息搜索软件需求,如果关键词与软件需求数据库信息匹配,语义概念字典自动打开呈现语义概念供用户选择,用户选择了合适的语义概念后系统会展示满足用户需要的软件需求;如果关键词没有匹配到数据库的信息,云标签数据库就会自动推荐相应的标签,用户选择标签之后同样可以搜索到中意的软件需求。最后用户可以对搜索结果进行打分,系统根据用户打分做出相应调整,提高检索精确度。同时,开发人员也可以在系统中创建新的软件需求。通过身份认证后,创建新的软件需求并添加相关信息(如作者,域名,成本估计等),多名开发人员通过大众分类法用频率最高的标签对该软件进行分类并储存,也高效利用了其他相关度较高的标签。
通过实验证实了所提出的检索系统在软件需求检索方面的可行性:
一个用户输入了关键词”检索系统“,接着用户点击“核对”选择一个与关键词相关的语义概念。由于关键词与检索系统的标签数据库的信息匹配,这个系统很快展示了与关键词相关的语义概念。记录这个用户选择了“信息检索”。接着,这个用户可以输入分面信息,其中包括“领域:数据挖掘”,“消费估计:10mm”和“软件体系结构:thor”。在这种情况下,其他信息的输入可以是任意的。最后,用户找到了合适的软件需求。图3为软件需求的检索界面。图4展示了搜索结果。图4中搜索系统展示了一个搜索结果列表。可以看到有四个软件需求能够匹配关键词和分面,这四个需求按用户反馈分数的平均分排序。每个需求的分数被呈现在入口的末端。用户可以选择任何软件需求查看详细的内容。图5展示了一个软件需求的详细内容“第一网页搜索系统需求”。在屏幕截图中,标出了许多能够反映软件需求基本信息的部分,比如“领域”和“消费评估”等。另外,这个图片还展示了这个软件需求和相关软件的缺陷描述。最后一行中,用户可以输入一个反馈分数(最大是5分)。如果关键词没有匹配到需求数据库的数据,检索系统会推荐一些标签给用户。图6展示了当用户输入了未匹配的信息时包含了推荐标签的云标签。用户可以选择任何相关的标签来核查搜索结果列表。
图7展示了怎样创建一个新的需求。在这个例子中,一个开发人员“gildong”创造了一个新的需求“软件需求检索系统”,用标签“检索系统”对新需求进行了标记,并且相应的输入“8mm”和“soa”设置它的“消费估计”“软件体系结构”的特征。除此之外,开发人员选择一个语义概念以避免歧义,同时用这个软件需求的信息,相似的系统和缺陷来描述它。
以上对本发明所提供的一种基于用户反馈信息的软件需求检索系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。