一种定位软件开发中需求变更影响范围的方法和系统的制作方法

文档序号:6601788阅读:136来源:国知局
专利名称:一种定位软件开发中需求变更影响范围的方法和系统的制作方法
技术领域
本发明涉及计算机领域,尤其涉及一种定位软件开发中需求变更影响范围的方法和系统。
背景技术
在协作软件开发中,各种团队和协作者参与书写用户需求、设计等文档,并以代码的形式实现系统功能。另一方面,为了应对文档或代码中的变更或存在的问题,协作者需要了解文档或代码中所需要修改的具体位置。基本上,需要将这些位置总结成一定结论,从而为后续的文档或代码的修改提供参考。基于上述原因,在协作软件开发中,经常有强烈的需要来定位变更可能影响的变更范围。特别是一旦有变更在需求文档发生时,这种需要变得愈加明显。因为需求所对应的下属文档有很多种类,设计,代码等等,都需要进行修改对应。在这种情形下,一个能够定位需求变更影响范围的工具,将会极大的提高变更应对效率。当前,IBM DOORS是一个成熟的需求管理和需求变更管理工具。它试图改进软件开发过程中需求变更管理的效率和质量。为了实现这个目标,DOORS将需求等文档转换成为成果项,同时建立不同文档的成果项之间的关联。基于这些成果项和对应的关联,用户能够跟踪到所需要对应的变更,同时对相应的变更进行修改和编辑。此外,专利申请号为 JP2008204333的日本专利申请,公开了试图手工建立文档章节之间的映射关系,一旦某个需求变更发生时,系统能够自动创建基于被影响章节的应对任务并分配给相关的协作者的技术方案。但是,上述技术方案存在两个不足。首先,文档章节之间的关联是由人来识别的。 当文档的数量增加或更新频繁的时候,文档之间的关联关系很难同步及时更新。另外,这种手工维护的关联关系也需要花费相当的人力,特别是当文档类型繁多或结构复杂的时候。 第二,源代码与其他文档之间的关联很难被管理起来。由于代码的数量一般都比较庞大,当尝试手工建立代码与文档之间的关联时,很难做到准确和全面覆盖到所有代码。在这种情况下,设计等文档与代码之间的联系被中断。这样,需求变更请求不能被应对和跟踪到代码层次。这种局限阻碍了实现需求变更应对要覆盖到软件开发完整流程的目标。

发明内容
有鉴于此,本发明的目的在于提供一种定位软件开发中需求变更影响范围的方法和系统,使需求变更请求能够自动应对和跟踪到代码层级,从而使需求变更的应对能够覆盖软件开发完整流程,并且针对需求变更请求,在变更执行之前进行成本估计。根据本发明的一方面,提供了一种定位软件开发中需求变更影响范围的方法,包括输入至少一个需求变更请求、至少一个软件文档、和至少一个与所述软件文档对应的代码文件集合;
根据所述需求变更请求,在所述软件文档和所述代码文件集合中定位受影响实体;输出所述受影响实体。根据本发明的一个特征,在所述软件文档和所述代码文件集合中定位受影响实体包括从所述软件文档中提取文档信息,并从所述代码文件集合中提取代码特征信息;根据所述文档信息和代码特征信息确定多个实体和多个关键字;根据所述多个关键字中的至少一个关键字确定所述多个实体的关联度;根据所述多个实体的关联度创建索引文件;根据所述索引文件,在所述多个实体中定位受影响实体。根据本发明的另一个特征,所述方法进一步包括使用语料库识别所述软件文档中的所述关键字;使用基于代码类型的代码识别规则识别代码中包含的所述关键字;获取所述关键字之间的关联关系,并形成关键字关联表;基于所述关键字关联表,建立所述实体之间的关联和相似度;创建索引文件,以存储所述实体之间的关联和相似度。根据本发明的另一个特征,所述方法进一步包括创建字典;使用所述字典识别所述软件文档中的所述关键字;其中,当所述软件文档中出现新的关键字时,将所述新的关键字添加到所述字典;使用基于代码类型的代码识别规则识别代码中包含的所述关键字;获取所述关键字之间的关联关系,并形成关键字关联表;基于所述关键字关联表,建立所述实体之间的关联和相似度;创建索引文件,以存储所述实体之间的关联和相似度。根据本发明的另一个特征,所述方法进一步包括建立V形模型,根据所述V形模型定位所述受影响实体。根据本发明的另一个特征,在所述V形模型中,包括平级文档和下级文档;在所述平级文档和下级文档中根据匹配的关键字计算得到匹配分数和相似度,根据所述匹配分数,确定最匹配实体,并根据所述相似度,确定所述受影响实体中除所述最匹配实体之外的其他所述受影响实体。根据本发明的另一个特征,所述方法进一步包括根据所述匹配分数和所述相似度,以预定方式输出显示所述受影响实体。根据本发明的另一个特征,所述实体包括软件文档的章节、代码文件包。根据本发明的另一个特征,所述代码文件包括多个代码文件包;所述代码文件包包括多个代码文件。根据本发明的另一个特征,
所述文档信息包括文档类型、文档格式、文档内容;所述代码特征信息包括代码文件名、代码类型;对于软件文档,所述关键字为文档内容中的关键字;对于代码文件集合,所述关键字为代码文件名。根据本发明的另一个特征,所述方法进一步包括根据所述受影响实体,按照预定句子成本对所述需求变更请求进行成本估计。根据本发明的另一方面,提供了一种定位软件开发中需求变更影响范围的系统, 包括输入模块,用于输入至少一个需求变更请求、至少一个软件文档、和至少一个与所述软件文档对应的代码文件集合;需求变更管理模块,用于根据所述需求变更请求,在所述软件文档和所述代码文件集合中定位受影响实体;输出模块,用于输出所述受影响实体。根据本发明的一个特征,所述需求变更管理模块包括信息提取模块,用于从所述软件文档中提取文档信息,并从所述代码文件集合中提取代码特征信息;文本分析模块,用于根据所述文档信息和代码特征信息确定多个实体和多个关键字;关联识别模块,用于根据所述多个关键字中的至少一个关键字确定所述多个实体的关联度;索引创建模块,用于根据所述多个实体的关联度创建索引文件;定位模块,用于根据所述索引文件,在所述多个实体中定位受影响实体。根据本发明的另一个特征,在所述系统中,队列,用于存储所述软件文档;所述需求变更管理模块,进一步用于获取在所述队列中存储的所述软件文档并根据所述软件文档创建所述索引文件;调度器,用于间歇性地调用所述需求变更管理模块中的所述索引创建模块以创建所述索引文件。根据本发明的另一个特征,所述定位模块,进一步用于建立V形模型,根据所述V形模型定位所述受影响实体。根据本发明的一个特征,在所述V形模型中,包括平级文档和下级文档;所述定位模块,进一步用于在所述平级文档和下级文档中根据匹配的关键字计算得到匹配分数和相似度,根据所述匹配分数,确定最匹配实体,根据所述相似度,确定所述受影响实体中除所述最匹配实体之外的其他所述受影响实体。根据本发明的另一个特征,所述输出模块,用于根据所述匹配分数和所述相似度,以预定方式输出显示所述受影响实体。
7
根据本发明的另一个特征,所述系统包括成本估计模块,用于根据所述受影响实体,按照预定句子成本对所述需求变更请求进行成本估计。本发明所述的定位软件开发中需求变更影响范围的方法和系统,不但能够自动识别文档章节之间的关联,而且能够简单快捷地管理源代码与其他文档之间的关联,从而大大提高了定位需求变更影响范围的效率和准确率,较好地实现需求变更的应对能够覆盖软件开发完整流程的目标。另外,针对需求变更请求,在变更执行之前进行成本估计,不但能够使开发人员预先了解不同需求变更请求所需要的成本,有计划地修改项目时间表,进而更有利地保证软件开发的顺利进行,而且能够使软件开发投资方根据预先估计的开发成本,对不同需求变更请求进行针对性地筛选,在保证软件开发顺利进行的同时,更好地控制实际的开发成本。


图1示出了一个软件项目文档的构成;图2示出了本发明实施例中定位软件开发中需求变更影响范围的系统结构框图;图3示出了本发明实施例中定位软件开发中需求变更影响范围的系统所在的计算机系统的结构框图;图4示出了本发明实施例中需求变更管理模块的多线程处理过程;图5为本发明实施例中定位软件开发中需求变更影响范围的方法流程图;图6示出了图5中关键字识别的详细流程;图7A进一步详细地描述了本发明实施例中确定文档文件中的关键字的处理流程;图7B进一步详细地描述了本发明实施例中确定代码文件集合中的关键字的处理流程;图8示出了图7B中的根据规则抽取代码存在的实体的具体示例;图9示出了本发明实施例中需求实体的组成;图10示出了本发明实施例中设计实体的组成;图11示出了本发明实施例中代码实体的组成;图12示出了本发明实施例中关键字的基本结构模型;图13示出了本发明实施例中关键字关联表的结构;图14示出了本发明实施例中形成实体关联表的详细流程;图15示出了本发明实施例中实体的基本结构模型;图16示出了本发明实施例中实体之间相似度的计算例子;图17示出了本发明实施例中实体关联表的结构;图18示出了本发明实施例中输入模块的界面结构图;图19示出了本发明实施例中根据需求变更请求定位受影响实体的详细流程;图20示出了本发明实施例中的V形模型结构;图21示出了本发明实施例中在V形模型中判断某个实体是否受到影响的细节流程;
图22示出了本发明实施例中各实体与需求变更请求中关键字比较中使用的实体关键字关联表;图23示出了本发明实施例中根据需求变更请求定位受影响实体的实施例;图M示出了本发明实施例中使用排序与颜色展现受影响实体的输出界面;图25示出了本发明实施例中基于指向图展现受影响实体的输出界面;图沈示出了本发明实施例中基于柱状图展现受影响实体的输出界面;图27示出了本发明实施例中基于标签图展现受影响实体的输出界面;图观示出了本发明实施例中用户自定义的字典结构;图四示出了本发明实施例中使用字典进行关键字识别的详细流程;图30示出了本发明实施例中在系统中增加人为确认步骤的交互流程;图31示出了本发明实施例中根据受影响范围进行成本估计的方法流程;图32示出了本发明实施例中包括成本估计模块的定位软件开发中需求变更影响范围的系统结构框图。
具体实施例方式下面结合说明书附图详细描述本发明的具体实施例。参考图1,图1示出了一个软件项目文档的构成。对于一个软件项目为项目A,它包含两个文档,需求文档需求_A101与设计文档设计_A102。需求_A阐述了某个项目或系统的所有需求说明项,设计_々阐述了围绕需求_々展开的所有功能设计。同时,还有很多为了实现设计_A中所有设计的源代码_A103。需求_A,设计_A以及源代码_A都存储在文件服务器中。如果需求—A的一些功能需要更新,设计_々相应的章节也需要同步更新。同时, 开发人员也需要更新源代码_A。通过本发明来实现定位软件文档中被需求变更影响的实体,从而定位设计_A以及源代码—A中需要修改的范围。参考图2,图2示出了本发明实施例中定位软件开发中需求变更影响范围的系统结构框图,图2中包括输入模块201,用于输入至少一个需求变更请求、至少一个软件文档、和至少一个与软件文档对应的代码文件集合;需求变更管理模块202,用于根据需求变更请求,在软件文档和代码文件集合中定位受影响实体;输出模块203,用于输出受影响实体。其中,需求变更管理模块202包括信息提取模块2021,用于从软件文档中提取文档信息,并从代码文件集合中提取代码特征信息;文本分析模块2022,用于根据文档信息和代码特征信息确定多个实体和多个关键字;关联识别模块2023,用于根据多个关键字中的至少一个关键字确定多个实体的关联度;索引创建模块20M,用于根据多个实体的关联度创建索引文件;
定位模块2025,用于根据索引文件,在多个实体中定位受影响实体。图3示出了本发明实施例中定位软件开发中需求变更影响范围的系统所在的计算机系统的结构框图。根据本发明涉及的各个方面,需求变更管理模块202需要与应用服务器307、文件服务器303以及数据库308建立交互。同时需求变更管理模块202需要构建在操作系统306之上,通过操作系统调度中央处理器301、输入/输出控制器305、系统存储器302等硬件资源,同时使用网络适配器304来连接分布式网络309,从而与其他计算机建立通讯。参考图4,图4示出了本发明实施例中需求变更管理模块的多线程处理过程。在导入所有软件文档之后,一个队列401被创建以用来缓存软件文档。需求变更管理模块202 获取在队列401中缓存的软件文档。调度器402间歇性地调用需求变更管理模块202的索引创建模块2024以创建索引文件。图5为本发明实施例中定位软件开发中需求变更影响范围的方法流程图,包括步骤如下输入需求变更请求、软件文档、和与软件文档对应的代码文件集合(步骤501);从软件文档中提取文档信息,并从代码文件集合中提取代码特征信息(步骤 502);

根据文档信息和代码特征信息确定多个实体和多个关键字(步骤503);根据多个关键字中的至少一个关键字确定多个实体的关联度(步骤504);根据多个实体的关联度创建索引文件(步骤505);根据索引文件,在多个实体中定位受影响实体(步骤506);输出受影响实体(步骤507)。图6详细地描述了确定关键字的处理流程。输入软件文档(步骤601);判断软件文档是否为文本文件(步骤602),如果是,进入步骤604,否则,进入步骤603。在本实施例中,需求_A以及设计_A都被判定为文本文件,源代码_A被判定为非文本文件,即代码文件。确定代码文件的关键字(步骤603)。系统先使用语料库612对文本文件进行分词(步骤604)。系统判断分词得到的字是否为名词(步骤605),如果分词得到的字不是名词,系统将返回步骤604继续进行分词;如果分词得到的字是名词,系统将判断该字在语料库中是否存在(步骤606),如果该字在语料库中存在,系统将直接对文档以及代码中的关键字聚类(步骤611);如果该字在语料库中不存在,系统将寻找该字的存在频率(步骤607),并评估频率的大小(步骤608)以判断该字是否为关键字(步骤609),如果不是关键字,在系统返回步骤604继续对文本文件进行分词,如果是关键字,则将该关键字加入语料库(步骤 610)并开始对文档以及代码中的关键字进行聚类(步骤611)。图7A进一步详细地描述了确定文档文件中的关键字的处理流程。其中,输入文档 (步骤7A01),从输入的文档配置信息中寻找文档目录(步骤7A02),并定位文档目录下的所有文件(步骤7A03)。判断文档目录下的所有文件中是否包含代码文件(步骤7A04),如果包含代码文件,将执行确定代码文件的关键字(步骤7A05,对应于图6中的步骤603)。如果不包含代码文件,则进一步判断是否存在更多文件(步骤7A06),如果不存在更多文件, 则结束文档提取(步骤7A07),如果存在更多文件,将加载更多文件中的文件(步骤7A08), 并读取该文件信息(步骤7A09)。从文件信息中,确定该文件的文件格式(步骤7A10)。根据文件格式,对文件进行解析,得到文档中的实体(步骤7A11),例如,如果文件格式是word 格式,则解析该文档中的heading,得到该文档中的章节集;如果文件格式是Excel格式,则解析该文档中的sheet,得到该文档中的sheet集;如果文件格式是html格式,则解析该文档中的section,得到该文档中的section集。对于其它文件格式,也可以预先定义的解析规则进行解析。然后,将文档中的实体加入到实体集合中(步骤7A12)。图7B进一步详细地描述了确定代码文件集合中的关键字的处理流程。在图7B中,在装载代码集合(步骤7B01)后,系统会开始分析代码的格式(步骤7B(^)并根据代码的格式加载相应的代码解析规则(步骤7B03)。根据代码解析规则, 抽取代码中存在的实体(步骤7B04)。接着,抽取实体中的关键字(步骤7B05)。在上级文档的实体中寻找关键字(步骤7B06),判断关键字是否存在于上级文档的某个实体(步骤7B07),如果关键字存在于上级文档的某个实体,系统将对文档以及代码中的关键字聚类 (步骤7B08),否则,将该关键字将会加入到语料库,并被下一轮的分词与关键字识别使用 (步骤 7B09)。假定,源代码_A(10;3)是使用Java语言编码实现。图8以Java的解析规则为例阐述了步骤7B04的抽取实体规则。当系统检测到源代码_A的格式是“.Java"时,加载 Java解析规则(步骤801),在代码集合中搜索所有包含“.java”的代码包。增加所有包含 “.java”文件的代码包到实体(步骤803)。判断是否存在更多实体(步骤804),如果存在更多实体,则加载至少一个实体(步骤805),并获取该实体中所有“.java"文件的文件名 (步骤806)并作为关键字关联到实体(步骤807),返回步骤804,如果实体已经遍历完毕, 不存在更多实体,系统将开始对文档以及代码中的关键字聚类(步骤706)。该实施例中,软件文档以及代码的关键字识别结果显示如图9-11所示。图9中, 实体_需求是需求文档里的一个章节,包含了需求(Requirement),开发者(Developer)以及时间表(khedule)等3个关键字。图10中,实体_设计是设计文档里的一个章节,包含了需求变更(Requirement Change),发布版本(Release)以及时间表Schedule)等3个关键字。图11中,实体_代码是其中一部分源代码,包含了需求变更(Requirement Change), 需求管理(Requirement Management),设置质量(Design Quality)以及其他源代码文件。参考图12,索引文件中的关键字结构1201包含更新/创建/删除时间1202,位置 1203,关联关键字1204以及同义关键字1205。更新/创建/删除时间1202存储了该关键字的相应操作时间。位置1202存储了该关键字存在的文档或代码实体。关联关键字1204存储了与该关键字有关联的其他关键字,这种关联是通过步骤611中的聚类处理建立的。同义关键字1205存储了与该关键字相同意义的关键字集合,该关键字集合也是通过步骤611 的聚类处理建立的。在本实施例中,语料库技术被使用构建关键字之间的关联关系,参考图13。所有的关键字关联被存储在表格1301。在表格1301中,关键字、相应的目标关键字以及关联类型都以记录的方式保存。目标关键字表示该关键字是由某个关键字拓展而来,例如,需求管理(requirement management)是由需求(requirement) 行生拓展而来,因此,需求管理是需求的目标关键字,关联类型是拓展(EXTEND)。当关键字之间的关联越来越多时,更多的记录将会被加入到表格1301中。本实施例中的实体关联表参考图17。图17中,实体关联表1701试图计算所有软件文档包含的实体之间的相似度。在实体关联表1701中,由于实体与其自身之间不存在相似度的情形,因此,在对角线位置之上的单元格中都没有具体数值。另外,由于实体之间的值没有方向性,因此,单元格1702的值可以为空。由此可见,实体关联表1701中的下半对角位置(即对角线位置之下的单元格的值)将能够覆盖和表示所有实体中任意两个实体之间的相似度。更具体地,根据实体关联表1701中的相似度计算流程1401参考图14。图14中, 首先系统将装载软件文档中的所有实体(步骤1402),并初始化实体关联表1701 (步骤 1403)。判断是否存在更多实体(步骤1404),如果不存在更多实体,则结束该流程(步骤 1417)。如果存在更多实体,则系统装载实体(步骤1405),步骤1405中,设定装载第m个实体。读取该第m个实体包含的关键字(步骤1406),判断是否存在更多关键字(步骤1407), 如果不存在更多关键字,则系统返回步骤1405继续装载下一个实体;如果存在关键字,则系统加载关键字(步骤1408)并查询关键字关联表中的关键字(步骤1409),并查询该关键字对应的关联关键字(步骤1410)。系统判断是否存在更多关联关键字(步骤1411),如果不存在更多关联关键字,系统将返回步骤1408继续加载其他关键字。如果存在关联关键字,系统加载该关联关键字(步骤1412)并寻找包含该关联关键字的实体(步骤1413)。系统判断是否存在包含该关联关键字的实体(步骤1414),如果不存在包含该关联关键字的实体,则返回步骤1412加载其他关联关键字,否则系统将加载该实体记为a (步骤1415),并对实体关联表1701中的第m行,第a列单元格(m,a)的值进行加1操作(步骤1416)。重复上述相似度计算流程1401,继续加载其他实体并不断更新实体关联表1701 中的单元格的值。索引文件中的实体结构如图15所示。实体结构1501包含更新/创建/删除时间 1502,位置1502,包含关键字1503,关联实体1504以及匹配标记1506。更新/创建/删除时间1502存储了该实体的相应操作时间。位置1502存储了该实体存在的文档或代码实体位置。包含关键字1503存储了与该实体包含的关键字。关联实体1504存储了与该实体有关联的实体集合,其是由相似度计算流程1401计算所得到的。匹配标记1506存储是否与某个需求变更请求最匹配。如果匹配,该标记为真,否则,该标记为假。该实施例中的实体_需求与实体_设计的相似度计算如图16所示。图16中,实体_需求包含了需求(Requirement),开发者(Developer)以及时间表(Schedule)等3个关键字。实体_设计包含了需求变更(Requirement Change),发布版本(Release)以及时间表(Schedule)等3个关键字。从表格1301可以看出,需求变更(Requirement Change) 与需求(Requirement)存在关联。同时存在同一个关键字即时间表(Schedule)。这样根据相似度计算流程1401的计算,系统可以计算得到实体_需求与实体_设计之间的相似度 (1601)的值为2。如上所述,在索引 创建模块2024中创建索引文件之前,用户通过输入模块201输入需求变更请求。参考图18所示,首先用户需要通过下拉菜单1801指定文档类型,它代表了需求变更发生的目标文档类型。在该实施例中,需求变更与需求相关,所以选择需求作为文档类型,还需要输入需求变更请求内容1802。用户可以指定需要更新或变更的功能描述。 之后,点击申请变更1803按钮可以开始申请一个新的需求变更。此外,用户可以点击取消按钮1804以取消某个需求变更请求。同时用户可以点击查看文档按钮1805跟踪需求文档的变更。图19示出了根据需求变更请求定位受影响实体的详细流程。图19中,系统加载需求变更请求中的关键字(步骤1902)并初始化实体与关键字的矩阵表(步骤1903)。系统判断是否存在更多关键字(步骤1904),如果存在更多关键字,系统装载关键字并记为关键字m(步骤1905)并装载包含该关键字的实体(步骤1906);否则,进入步骤1911。为了判断实体是否在影响范围内,需要在V形模型中进行判断(步骤1907)。系统判断是否存在更多实体(步骤1908),如果存在更多实体,系统装载实体并将该实体记为a (步骤1909), 并在实体与关键字矩阵表的第m行第a列单元格(m,a)位置加1 (步骤1910),继续装载其他实体进行累加;如果不存在更多实体,系统将返回步骤1904继续判断并装载关键字直到不存在关键字为止。在实体与关键字矩阵表中寻找最大的总和(步骤1911),根据该最大总和位置,取得最大总和所在的实体(步骤1912)。将该实体的匹配标记1506(步骤1903) 更新为真,同时在实体表中寻找所有的关联实体(步骤1914)。系统判断是否存在更多的关联实体(步骤1915),如果存在更多的关联实体,系统将装载关联实体(步骤1916)并根据与最匹配实体之间的相似度是否超出影响范围进行判断(步骤1917)。如果超出范围,系统将返回步骤1914继续寻找其他关联实体。如果没有超出范围,将该关联实体增加到受影响实体中,并继续装载实体。如果不存在更多的关联实体,即所有关联实体已经装载完毕,在结束流程(步骤1918)。在本实施例中,我们假定受影响的范围是10。假定实体_设计是最匹配的实体,在实体关联表1701中寻找所有相关联的实体,可以发现实体_需求与实体 _设计的相似度为2,由于它小于10,所以实体_需求将会被排除在受影响实体之外。相反的,实体_代码被包含在受影响实体之内,原因在于实体_代码与实体_设计之间的相似度为13。图20示出了一个V形模型2001的例子。它包含了软件开发生命周期中的所有步骤。例如,需求分析2002包含一个下级活动系统设计2003以及一个平级活动验收测试 2004。编码2005没有下级与平级活动。用户可以定制和修改该V形模型图来适应他们的真实软件开发模式。图2中的软件文档则是上述步骤所产生的各种成果物。图21示出了在V形模型中判定实体是否受到影响的流程图。首先,系统将解析需求变更请求中的关键字(步骤2102)。基于这些关键字,在需求变更请求的目标文档(例如,下拉菜单1801中指定的文档)中搜索关键字(步骤2103),并在目标文档定位是否有受影响的实体(步骤2104)。接着,系统判断受影响的其他文档的级别(步骤2105)。系统判断是否存在平级文档(步骤2106),如果存在平级文档,则在平级文档搜索关键字(步骤 2107)并在平级文档中定位受影响的实体(步骤2108)。另外,系统还判断是否存在下级文档(步骤2109),如果存在下级文档,则在下级文档搜索关键字(步骤2110)并在下级文档中定位受影响的实体(步骤2111)。如果不存在,则结束该流程2112)。通过上述流程,受影响的实体能够根据V形模型进行过滤。图22示出了实体与关键字的矩阵表2201。该矩阵表存储了所有实体与需求变更请求关键字之间的匹配分数,其中,总和2202代表总共的关键字匹配分数。单元格2203代表设计(Design)关键字在实体_需求中的匹配分数。单元格2204代表实体_设计与所有需求变更请求关键字的匹配分数总和。总和2202最大的值所在的实体为最匹配实体。在该实施例中,由于实体_设计的总和2202的值为8,因此,实体_设计为最匹配实体。
13
图 23示出了本实施例中受影响实体定位实例2301。解析输入的需求变更请求, 从而得到包含的两个关键字设计质量(Design Quality) 2303以及需求变更(Requirement Change) 2304。从索引文件包含的关键字表以及实体表中查询得到,需求变更(Requirement Change) 2304以及设计质量(Design Quality) 2303在实体_设计中的匹配分数最高,详见图22中的单元格2204。在实体关联表1701中查找临近实体,发现实体_代码没有超出范围,因此,实体_代码与实体_设计被加入到受影响实体中,并通过输出模块203显示该受影响实体。图24给出了一种输出模块203。它将显示根据实体与关键字的矩阵表2201计算得到的所有受影响实体。从图22中的单元格2204可以得到实体_设计的匹配分数为8。 同时可以从图17中的单元格1703中得到实体_设计与实体_代码的相似度为13。与最临近的实体比较后,可以将实体_设计的匹配分数更新为8加上13,即21。实体_设计2401 以斜线(斜线等于红色,下同)表示最匹配的实体,实体_代码2402以反斜线(反斜线等于黄色,下同)表示次匹配的实体。所有受影响实体将按照匹配分数,以不同的顺序与颜色展现在输出模块。同时,点击实体_设计图标2403,实体_设计的详细信息页面将被显示, 如文本框2404所示。用户可以从文本框2404中看到有关实体_设计的详细内容以及相关信息。进一步的应对动作可以基于这些页面信息进行决策。图25-27显示了其他可能的输出模块界面。图25显示了以关联节点组织起来的输出模块界面。在该输出模块界面中,实体_ 设计2401与实体_代码2402以矩形展示,中间方向线表示了它们之间的相似度。线的方向显示了实体的匹配分数大小。匹配分数小的实体指向匹配分数大的实体。同样的,以斜线表示最匹配的实体,以反斜线表示次匹配的实体。图26显示了另外一个可能的输出模块界面。输出模块界面以柱状图表示,在该柱状图中,斜线的柱条表示最匹配的实体,以反斜线的柱条表示次匹配的实体。图27显示了另外一个可能的输出模块界面。输出模块界面以标签云的方式显示所有受影响实体,通过字体大小,颜色等信息来展现实体信息。当然,并不仅限于上述几种输出模块界面,在本发明实施里中,只要能够将受影响实体显示出来使用户能够把握这种需求变更的影响范围,并同时使用户看到相应实体的详细内容与细节信息的输出模块界面都是可以的。在上述实施例中,解释了怎样是用语料库技术识别关键字关联并使用这些关联进一步识别不同软件文档包括源代码的大量实体之间的关联。事实上,本发明中的需求变更管理模块201还提供了一个替代语料库识别关键词的方法。参考图28,一个字典2801在创建索引之前被创建。字典2801的结构如图28所示。用户可以将新的关键字增加到字典2801中,同时也可以由程序在发现新的关键字时自动加入到字典2801中。字序号代表某个关键字的唯一标记。词性代表关键字的词性,比如名词(noun.)、副词(adv.)等等。同义词代表与该关键字同义的其他关键字。原子性表示该关键字是否可以再细分。如果不能细分,则属性为是(Yes),否则为否(No)。图29示出了使用字典与使用语料库在识别关键字时存在的差别。图29与图6区别在于,首先,步骤604中的分词处理将使用字典2801作为关键字识别的参考;其次,搜索字典中的所有关键字来确认当前关键字是否在字典中存在(步骤2902);最后,在确定当前字是关键字之后,系统将该关键字增加到字典观01中(步骤2903)。本发明通过使用自定义的字典,可以应用在不适宜使用语料库的各种场景。另一方面,程序可以在创建索引文件的同时,快速和大量地积累关键词。越来越多的关键字能够被程序自动的积累,而用户只需要确认字典中新出现的各种关键字即可。同时,为了更好的提高本发明的精确度,一些人为的操作也被支持。图30示出了在系统中增加人为确认步骤的交互流程。在用户3001发出一个请求需求变更之后(步骤300 ,需求变更管理模块202将自动解析需求变更请求中的关键字 (步骤3003)。然后,用户可以确认这些被解析的需求变更请求关键字(步骤3004)。步骤 3004可以为下一步执行的使用索引文件的受影响范围定位(步骤300 提供精确度的保障。在需求变更管理模块202计算得到受影响实体之后,由于系统可能不能覆盖到所有被影响实体,用户可以设置影响范围(步骤3006)来扩大到可能的受影响实体范围。该范围可以在图19中的步骤1917的计算中重新执行,从而更准确的定位受影响实体。此外,本发明也支持用户来确认受影响实体(步骤3007)。这样用户可以根据自己的经验来判断是否某些实体需要被变更。比如用户可以从输出模块中删除实体_代码M02来从受影响实体中移除实体_代码。这样用户确认过后的受影响实体只包括实体_设计M01。通过这种人为干预的确认,受影响实体将覆盖到所有可能需要变更的实体并能为之后的需求变更应对提供精确保障。图31示出了本发明实施例中根据受影响范围进行成本估计的方法流程。在成本估计的功能中,根据前述的受影响实体定位,装载可能受影响的实体(步骤3101),判断是否存在更多实体(步骤3102),如果存在更多实体,将逐个加载当前实体(步骤3103),并装载预定句子成本(步骤3104),如0. 018人月每个句子,即0. 018人月/句子,1人月表示一个人工作一个月的工作量,再根据检索关键字计算当前实体中可能受影响的句子数目(步骤310 ,将句子成本与可能受影响的句子数目相乘,得到该实体可能的变更成本(步骤 3106),并将该成本累加至变更成本中(步骤3107),直到不存在更多实体;如果不存在更多实体,则结束成本估计(步骤3108)。图32示出了本发明实施例中包括成本估计模块的定位软件开发中需求变更影响范围的系统结构框图。图32中,成本估计模块204,用于根据所述受影响实体,按照预定句子成本对所述需求变更请求进行成本估计。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,对本发明实施例所作的任何修改、变更、组合、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种定位软件开发中需求变更影响范围的方法,其特征在于,包括输入至少一个需求变更请求、至少一个软件文档、和至少一个与所述软件文档对应的代码文件集合;根据所述需求变更请求,在所述软件文档和所述代码文件集合中定位受影响实体; 输出所述受影响实体。
2.根据权利要求1所述的方法,其特征在于,在所述软件文档和所述代码文件集合中定位受影响实体包括从所述软件文档中提取文档信息,并从所述代码文件集合中提取代码特征信息;根据所述文档信息和代码特征信息确定多个实体和多个关键字;根据所述多个关键字中的至少一个关键字确定所述多个实体的关联度;根据所述多个实体的关联度创建索引文件;根据所述索引文件,在所述多个实体中定位受影响实体。
3.根据权利要求2所述的方法,其特征在于,所述方法进一步包括 使用语料库识别所述软件文档中的所述关键字;使用基于代码类型的代码识别规则识别代码中包含的所述关键字; 获取所述关键字之间的关联关系,并形成关键字关联表; 基于所述关键字关联表,建立所述实体之间的关联和相似度; 创建索引文件,以存储所述实体之间的关联和相似度。
4.根据权利要求2所述的方法,其特征在于,所述方法进一步包括 创建字典;使用所述字典识别所述软件文档中的所述关键字;其中,当所述软件文档中出现新的关键字时,将所述新的关键字添加到所述字典;使用基于代码类型的代码识别规则识别代码中包含的所述关键字; 获取所述关键字之间的关联关系,并形成关键字关联表; 基于所述关键字关联表,建立所述实体之间的关联和相似度; 创建索引文件,以存储所述实体之间的关联和相似度。
5.根据权利要求2所述的方法,其特征在于,所述方法进一步包括 建立V形模型,根据所述V形模型定位所述受影响实体。
6.根据权利要求5所述的方法,其特征在于, 在所述V形模型中,包括平级文档和下级文档;在所述平级文档和下级文档中根据匹配的关键字计算得到匹配分数和相似度,根据所述匹配分数,确定最匹配实体,并根据所述相似度,确定所述受影响实体中除所述最匹配实体之外的其他所述受影响实体。
7.根据权利要求6所述的方法,其特征在于,所述方法进一步包括 根据所述匹配分数和所述相似度,以预定方式输出显示所述受影响实体。
8.根据权利要求1所述的方法,其特征在于, 所述实体包括软件文档的章节、代码文件包。
9.根据权利要求1所述的方法,其特征在于, 所述代码文件集合包括多个代码文件包;所述代码文件包包括多个代码文件。
10.根据权利要求2所述的方法,其特征在于, 所述文档信息包括文档类型、文档格式、文档内容; 所述代码特征信息包括代码文件名、代码类型;对于软件文档,所述关键字为文档内容中的关键字; 对于代码文件集合,所述关键字为代码文件名。
11.根据权利要求1所述的方法,其特征在于,所述方法进一步包括根据所述受影响实体,按照预定句子成本对所述需求变更请求进行成本估计。
12.一种定位软件开发中需求变更影响范围的系统,其特征在于,包括输入模块,用于输入至少一个需求变更请求、至少一个软件文档、和至少一个与所述软件文档对应的代码文件集合;需求变更管理模块,用于根据所述需求变更请求,在所述软件文档和所述代码文件集合中定位受影响实体;输出模块,用于输出所述受影响实体。
13.根据权利要求12所述的系统,其特征在于, 所述需求变更管理模块包括信息提取模块,用于从所述软件文档中提取文档信息,并从所述代码文件集合中提取代码特征信息;文本分析模块,用于根据所述文档信息和代码特征信息确定多个实体和多个关键字; 关联识别模块,用于根据所述多个关键字中的至少一个关键字确定所述多个实体的关联度;索引创建模块,用于根据所述多个实体的关联度创建索引文件; 定位模块,用于根据所述索引文件,在所述多个实体中定位受影响实体。
14.根据权利要求13所述的系统,其特征在于,在所述系统中, 队列,用于存储所述软件文档;所述需求变更管理模块,进一步用于获取在所述队列中存储的所述软件文档并根据所述软件文档创建所述所述索引文件;调度器,用于间歇性地调用所述需求变更管理模块中的所述索引创建模块以创建索引文件。
15.根据权利要求13所述的系统,其特征在于,所述定位模块,进一步用于建立V形模型,根据所述V形模型定位所述受影响实体。
16.根据权利要求15所述的系统,其特征在于, 在所述V形模型中,包括平级文档和下级文档;所述定位模块,进一步用于在所述平级文档和下级文档中根据匹配的关键字计算得到匹配分数和相似度,根据所述匹配分数,确定最匹配实体,根据所述相似度,确定所述受影响实体中除所述最匹配实体之外的其他所述受影响实体。
17.根据权利要求16所述的系统,其特征在于,所述输出模块,用于根据所述匹配分数和所述相似度,以预定方式输出显示所述受影响实体。
18.根据权利要求12所述的系统,其特征在于,所述系统包括 成本估计模块,用于根据所述受影响实体,按照预定句子成本对所述需求变更请求进行成本估计。
全文摘要
本发明公开了一种定位软件开发中需求变更影响范围的方法和系统,包括输入至少一个需求变更请求、至少一个软件文档、和至少一个与所述软件文档对应的代码文件集合;根据所述需求变更请求,在所述软件文档和所述代码文件集合中定位受影响实体;输出所述受影响实体。通过本发明使需求变更请求能够自动应对和跟踪到代码层次,从而使需求变更的应对能够覆盖软件开发完整流程。
文档编号G06F9/44GK102214091SQ20101016321
公开日2011年10月12日 申请日期2010年4月9日 优先权日2010年4月9日
发明者细矢淳, 谭一兵, 谷口洋司 申请人:株式会社日立制作所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1