一种自动识别需求依赖关系的方法

文档序号:6464647阅读:690来源:国知局
专利名称:一种自动识别需求依赖关系的方法
技术领域
本发明属于计算机软件工程领域,具体涉及一种利用信息检索技术从自然语言描述的 需求规约文档自动识别需求之间依赖关系的方法。
背景技术
在需求工程中发现的独立的需求,绝大多数在软件开发工程中是不能单独处理的。因 为这些需求之间有着很复杂的联系和影响,把需求间的这种关系称为需求相关性。近来的 研究已经表明在任意的需求集合中,只有大约五分之一的需求是真正独立的,不会对任何 其他的需求造成影响。举个例子来说,需求间相互影响是当一个需求① 制约着其他需求的设计和实施;② 影响着实施其他需求的代价;③ 增加或降低用户对其他需求的满意程度。 需求相关性并不是软件开发活动的核心,然而他们却影响着软件工程过程中的开发行为和决策制定,像计划发布、管理变更、需求设计和实施、软件测试以及需求重用等。这 些行为或决策可能基于一个或多个需求,同时也可能会对其他需求产生预想不到的影响。 例如, 一个需求发生了变化,就可能同时带来其他的需求的变化。在评估一个需求改变带 来的影响时,如果不考虑需求相关性,就可能会漏掉变化带来的一些实际影响。结果,实 施一个需求的代价就可能比预想的高出好多倍,相应的就会引起开发延期和预算超支等问 题。相似的情况也会发生在发布计划中,因为发布计划要找出软件系统的下一个发布版本 方便实施的优化需求集。由于需求相关性,并不总能够找出优先级最高的需求。比如,一 个高优先级需求的实施可能要以一个低优先级、高代价的需求为前提。为了不去选择一个 后来肯定会发生变化,并可能带来高昂的修改代价的需求集,理解、明白需求间的这些关 系是非常重要的。因此,为了避免代价高昂的错误,知道需求相关性的存在和带来的后果是必不可少的。 系统的对待需求相关性的目的一方面是提高软件开发中做决策的正确性,另一方面是使得 需求相关性所带来的潜在问题能被尽早的发现。需求相关性管理的主要内容是识别、存储 和维护需求间关联和相互影响的信息。同时也会涉及到在软件开发纷繁复杂的情形下,决 定哪些需求相关性信息是有用的,以及怎样去描述这些信息。但是,目前对需求相关性并没有统一、明晰的分类,原因是很多的。首先,从不同角 度出发,会将需求相关性分为不同种类,包括结构性依赖(STRUCTURAL)、限制性依赖 (CONSTRAINT)、代价价值比依赖(ICOST/VALUE)。其次,需求间的很多关系是交叉的、 相似的,很难将他们区分开。第三,即使有些需求看上去是可以明显分开的,然而实际中 是很难分开的。举个例子来说,存在两个需求,它们间的关系是一个应该在另外一个之前 被实施。 一方面,这种依赖可以被看作是暂时的依赖,前面的实施完后,两者就没有关系 了。另一方面,也可以将这种依赖看作是"前提"关系,即一个需要以另一个的实现为前 提,否则自己的功能就不能实现。所以,对需求相关性的识别上,基本上是泛泛的定义和 识别,而且缺乏一种规则来指导与特定开发活动相关的需求之间的关系。进一步来说,手 工识别需求之间的相关性存在耗时、耗力、精确度低等问题,对于实际项目中,通常采用 自然语言描述的需求规约,致使自动化的识别需求之间的关系的难度大大提高了,因此导 致了需求相关性的应用在实践中很少。信息检索技术是指用户为处理解决各种问题而査找、识别、获取相关的事实、数据、 文献的活动及过程,简单的说,信息检索就是研究由用户给定的査询返回相关的文档的问 题的领域。信息检索针对自然语言描写的需求规约,可以进行批量的自动化处理,可以做 自动化识别需求之间相关性的稽查局技术。在大量的IR方法中,基于标引词(keyword-based) 的信息获取是最常用的方法。待査询的文档被认为是具有不同重要程度标引词的组合,用 户査询也被认为是标引词的组合,与査询相关的文档是通过比较它们之间的标引词来确 定。用户査询和文档之间的相关性通过IR相似度模型来计算,主要包含三大基本模型 布尔模型(Boolean Model)、向量空间模型(Vector Space IR, VSIR)和概率模型(Probability IR, PIR)。1) 布尔模型。这是最简单的模型,它将一个标引词是否在文献中出现表示为1或者0。2) 向量空间模型。该模型扩展了布尔模型,将文献集合中所包含的标引词看成向量, 代表空间中的一个维度,那么这些标引词集合就构成了一个空间。文献集合中的任何一个 文献都可以用空间中的一个向量来进行表示,利用査询和文献的向量积就可以计算它们之 间的相似度。假设集合中有n个不同的标引词,则文献Z),可以表示为Z;《7,,其中4表示标引词J在文献i中的权重(weight);査询《可以表示为《=(^^...^) = 2^^^,其中力表示标引词j在査询中的权重。运用向量积运算可以得到文献向量A与査询向量《之间的相似度w'wz7ar办(A,《)== 2^=1《力( ,, 0 。同一个标引词在不同的査询和文献中具有不同的权重,权重值越大的就认为该标引词越能代表这篇文献,权重值越小的就认为该标引词 越不能代表这篇文献。j'W是向量模型(Vector Space IRModel)中比较常用的标引词权重 的计算方式,综合考虑了标引词的词频和逆文献频率两个因素,比较全面的反映了标引词 在在整个文献空间中的重要性。词频用t/表示,是标引词J'在文献中出现的频率,其计算方式为feg((,J),历表示文献中包含的标引词的个数,/r^"乂)表示在文献c/中 Z户i勿(,7,力标引词i出现的次数;文献频率^f是包含该标引词的文献数与所有文献数的比值,逆文献频率^Z/的一种计算方式是l0g2(;), /7表示文献的个数。因此一个标引词i的权重表示为^=^喊、,,,、一2(》3)概率模型。该模型将IR问题用概率来进行解释,认为文献和查询之间的相关性是通过标引词作为中间桥梁进行计算的。任何一个査询和文献都可以表示为包含一定标引词的命题,它们之间的相似度按照条件概率进行解释当存在查询的时候,存在文献 (/ = 1,2,...","为文献数)的概率。其相似度计算公式如下w>m7w^(A,《)=Pr(Z), |《)=Pr(《1 Di)Pr(Z>')。其中,Z),.表示文献厶^表示查询,也就是Pr④査询《与文献历'之间的相似度等于当<7存在时,A也存在的概率。在计算出相似度之后,根据相似度大小来进行排列,值越大说明该文献越能反映用户的期望,值越小则越不能反 映用户期望。用户的期望与实际返回的结果是有一定差距的,可以釆用査准率(Precision) 和査全率(Recall)来对结果进行度量。按照文献中的定义,査准率是查出的正确的文献数 与查出的所有文献数的比值,而査全率是査出的正确的文献数与所有正确的文献数的比 值。发明内容本发明的目的是针对自然语言描述的需求文档,实现一种自动识别需求之间依赖关系 的方法。本发明针对自然语言描述的需求文档规约,分析归纳出与需求演化特定的依赖关系类 型包括需求相似依赖(Similarity Dependency)禾口需求引用依赖(Reference Dependency)。本发明定义的需求相似依赖指,需求1与需求2在某一个概念上有相同或相似的描述, 当需求1修改了对这个概念的描述,需求2没有进行相应的修改,而导致需求1与需求2 发生冲突或者不一致时,即称需求1与需求2存在相似依赖。需求相似依赖是基于需求修 改导致不一致的场景。本发明定义的需求引用依赖指,需求2描述了某一个概念,需求1描述了需求2与其 他概念之间的交互,当需求2被删除,需求1没有进行相应的修改,而导致需求集合发生 冲突或者不一致时,即称需求2引用依赖于需求1。需求引用依赖是基于需求删除导致不 一致的场景。一种自动识别需求依赖关系的方法,包括识别需求相似依赖关系和识别需求引用依赖 关系,其步骤如下1) 将自然语言描述的需求规约文档转换为计算机可描述的XML文档。自然语言描述 的需求文档规约包括两种类型, 一种是需求内容无结构化描述规约,另一种是需求内容有 结构化描述规约,称之为用例需求规约。XML文档根据需求规约文档的这两种类型,生成 对应格式的文档。需求内容无结构化描述规约和用例需求规约均采用树形结构,对需求内容进行组织, 其最小的需求单位为需求项(Item),每个需求项包含一个需求名称和需求的具体内容。需 求内容无结构化描述规约的需求的内容采用无结构化的方式进行松散的组织。需求项可以 包含子需求项,需求项的层数没有限制。用例需求规约的需求的内容采用结构化的方式对需求内容进行组织,其主要采用几个 有意义的节来组织内容,包括参与者,简要描述,事件流,主事件流,扩展事件流,前 置条件,后置条件,触发条件;2) 在计算机中输入转换为XML形式的需求规约文档,将XML文档各个Tag标记对 应的数据读入中间数据对象进行存储。需求内容无结构化描述规约和用例需求规约均包括下面对象需求项对象;需求名称 对象;需求内容对象;需求片段对象;需求句子对象。用例需求规约的对象还包括参与者对象;简要描述对象;事件流对象;主事件流对 象;扩展事件流对象;前置条件对象;后置条件对象;触发条件对象;3) 以需求项对象中的需求句子对象包含的数据为最小单位,计算各需求句子对象之 间的距离;将各需求句子对象聚合成若干个类,每个类包含一到多个需求句子对象。当类与类之间的距离都大于预先设定的距离阈值后,则在同一个类中的各需求句子对 象所属的需求项对象就具有相似依赖关系,即完成识别需求相似依赖关系。4)计算需求名称对象与需求句子对象之间的短语相似度。如果短语相似度高于设定阈 值,就认为需求句子对象所属的需求项引用依赖于需求名称对象所属的需求项,即完成识 别需求引用依赖。进一步,上述步骤3)中的计算各需求句子对象之间的距离按照欧几里德距离公式进行,包括如下步骤a) 将需求句子对象包含的需求内容文本表示为向量,文本所包含的各个标引词则为该向量的各个维度,则文本可以表示为A =(《,《2,...《)=1:;《^ ,其中4表示标引词/在文本/中的权重(weight);权重采用经典的tf-idf公式,表示为^f^"力)xlog2(上),其S》 (。,D) 《中々^(^D)表示在文本D中标引词/出现的次数,文献频率d/是包含该标引词的文献数与 所有文献数的比值,"表示文献的个数;b) 采用欧几里德距离的方式,计算两两计算需求句子对象文本之间的距离,利用如下公式计算Z^tance(D,,D;)=>1进一步,上述步骤3)中将各需求句子对象聚合成若干个类的步骤如下a) 将每个需求句子对象初始化为一个类;b) 遍历所有的类,采用层次聚类方法中的平均距离法计算类与类之间的距离;C)如果计算出来类之间的距离小于预设值的距离阈值,那么就将这两个类合并,否 则就不合并;d)重复步骤b), c)直到所有的类之间的距离都大于阈值,则过程结束,得到若干个类。 进一步,上述步骤4)中的需求名称对象与需求句子对象之间的短语相似度的计算方法,如下a)将需求句子对象和需求名称对象包含的文本表示为向量,文本所包含的各个标引 词则为该向量的各个维度,则文本可以表示为z^(^,^,…oS^,其中^表示标引词y在文本/中的权重(weight);权重采用经典的tf-idf公式,表示为J^"',力xi0g2(4),其中《表示在文本d中标引词/出现的次数,文献频率d/是包含该标引词的文献数与所有文献数的比值,w表示文献的个数;b)以需求名称对象包含整个文本为查询,以需求句子对象包含文本为文档执行搜索, 其相似度计算不但需要考虑包含的标引词的匹配,还需要考虑标引词在位置上的匹配。根 据字符串编辑距离公式(参见文献http:〃www. merriampark. com/Id. htm),对短语相似度公式进行调整为S/卵'^砂(D, , Z)y) = A力;=^=i 7# ) x1 ,其中distance为将査询字符串编辑为相匹配的文本的次数。本发明的优点和积极效果如下1. 本发明通过对自然语言描述的需求规约之间的需求依赖关系进行自动化,分析和归 纳出了两种对需求演化活动最重要和最主要的需求依赖关系,利用计算机完成分析识别需 求之间复杂的关系,大大提高了识别需求依赖关系时的效率;2. 本发明利用计算机自动化识别的方法克服了人在分析规模大的需求文档时,始终如 一的根据同一个标准来识别依赖关系,对识别的依赖关系的准确性和稳定性带来极大好 处。


图l.自动识别需求之间依赖关系的总体流程图;图2读入XML文档生成需求依赖关系的详细流程图。
具体实施方式
下面结合附图,通过对从自然语言描写的需求规约中识别两种需求依赖关系的过程作 进一步的说明,但不构成对本发明的限制,自动识别需求之间依赖关系的流程图如图l所 示,分为两个阶段。阶段一将自然语言描述的需求规约文档转换成规则化描述的XML文档 在该阶段中,本方法从读取OfficeWord和Text形式的自然语言描述的需求规约文档, 然后根据预先定义的XML标签进行解析并转换。对于无结构化描述需求规约,文档转换 器将需求名称转换成XML中Requirement标签中的属性Title的值。需求的内容按照句号,感叹号,引号,问号等终结符进行拆分放入若干Fragment标签中,并自动生成id属性值。 Fragment标签中的内容又按照逗号,顿号等标点进行拆分放入放入Sinppet标签中,并自 动生成id属性值;对于用例需求规约的处理,基本与无结构化描述需求规约类似,不同之 处在于需要根据Fragment标签中的内容所属的节来设置Fragment的外层标签,包括 UCTitle , UCBrieflntro , UCActor , UCEventFlow , UCPreCondition , UCTrigger , UCPostCondition。阶段二在计算机中输入XML文档,进行依赖关系推理,得到依赖关系集合。如图2所示,在计算机中输入XML文档,经过关系推理引擎,包括相似关系推理引 擎和引用关系推理引擎,通过信息检索处理平台生成依赖关系集合。图中的步骤A, B, C 和步骤D, E可以并行执行。步骤A.计算需求句子对象文本之间的距离,具体方法如下1、 遍历需求项中所有的需求句子对象的文本内容,计算总共包含不同的标引词的数 量,以及在每个需求句子对象文本内容中包含的不同的标引词的数量。根据信息检索中的 向量模型,计算标引词在各个需求句子对象文本中的权重,本实施例的权重采用,2(})进行计算。sx力 《2、 计算两两需求句子对象的文本之间的欧几里德距离,本实施例通过公式进行计算。步骤B.采用聚合方法聚合各需求项中需求句子对象的文本,具体方法如下1,初始化聚合类集合,类与类之间的初始化距离为它们中包含的文本的欧几里德,每个类中包含一个需求句子对象文本,聚合类的数量与需求句子对象数量相同;2,计算类与类之间的距离,如果类之间的距离小于预先设定的距离阈值,则合并这两个类,否则就不合并。计算两个类之间的距离需要考虑三种情况a) 如果两个类中都只包含一个需求句子对象,则类之间的距离为步骤A计算出的 这两个句子对象文本之间的距离。b) 如果类1包含多个的需求句子对象,类2包含一个需求句子对象,则类之间的 距离为类2中的需求句子对象与类1中的所有需求句子对象的距离取平均值。c) 如果类1,2包含多个的需求句子对象,则类之间的距离为类2中的所有需求句子对象与类1中的所有需求句子对象的距离取平均值。 3,重复执行2直到所有的类与类之间的距离大于设定的阈值。步骤C.进行相似依赖关系推理,具体方法如下1,遍历步骤B中生成的聚合类,获取当前聚合类中包含的需求句子对象的集合,如果其包含需求句子对象的数量大于1个,则进行下面步骤2,遍历所述集合中的每个需求句子对象,记录需求句子对象所属的需求项对象在当 前聚合类中出现的次数n,计算出相似度比率SimRatio=n/reqSnippetNum(ReqItem),其中 reqSnippetNum(Reqltem)表示需求项Reqltem中的需求句子对象reqSnippet的数量。3,比较当前聚合类中出现的需求项的相似度比率SimRatio,找出具有最大SimRatio 的需求项maxReqltem,则其他需求项相似依赖于maxReqltem。如果具有最大SimRatio值 的有多个需求项同时存在,则它们之间互相依赖。下面给出一个具体的例子来说明相似度比率SimRatio:例l:设有两个需求项A和B,需求项A—共包含10个需求句子对象,需求项B — 共包含3个需求句子对象;若一个聚合类包含3个需求句子对象,其中有2个需求句子对 象属于需求项A, 1个需求句子对象属于需求项B。那么在这个聚合类中需求项A的 SimRatioA^2/10,需求项B的SimRatioB=l/3, SimRatioA<SimRatioB,所以需求项A相似依 赖于需求项B。步骤D.计算一个需求项中的需求名称文本与另一个需求项中的需求句子对象文本之 间的短语相似度,具体方法如下-1,遍历需求项中所有的需求名称对象的文本内容与需求句子对象的文本内容,计算 总共包含不同的标引词的数量,以及在每个需求名称对象的文本和需求句子对象文本内容 中包含的不同的标引词的数量。根据信息检索中的向量模型,计算标引词在各个需求名称对象文本和需求句子对象文本中的权重,采用公式^^xl。g2(j)进行计算。2,通过公式&>m7w,WZ),,Z^) =^H一a^(U^)进行计算需求名称对象的文本与需求句子对象的文本之间的短语相似度。3,因需求名称对象文本作为一个整体与需求句子对象文本之间的匹配度,需要修正 它们之间的相似度,以如下步骤进行a)遍历需求名称对象文本中每个标引词t,在需求句子对象的文本中找到标引词t出现的位置;b)若t没有出现在需求句子对象的文本中,则检查需求名称对象文本中的下一个 标引词t'是否出现在需求句子对象的文本中,直到找到为止。如果没有标引词出现在 需求句子对象的文本中,则需求名称对象与需求句子对象的相似度为0;C)若t没有出现在需求句子对象的文本中,则以t在需求句子对象文本中出现的 位置为基准,寻找剩下的需求名称对象文本中的标引词t"在需求句子对象文本中出现 的位置;如果t"存在,则计算t与t"的距离在需求句子对象文本与在需求名称对象文 本中之间的差值Amove;d) 计算需求句子对象文本与在需求名称对象文本的距离distance=ZAmove;e) 将上述步骤2的相似度乘以1/(distance+l),得出最后的需求名称对象与需求文本对象的短语相似度PhraseSim=5^ -^-。下面给出一个具体的例子来说明需求名称对象和需求句子对象的短语相似度例2:有需求名称对象"cwrewr baseline view"禾卩需求句子对象"user can view the cwrreW project list"。在找到了需求名称对象中的current在需求句子对象中的位置后,以 current在需求句子对象中的位置为基准,接着匹配baseline和view。其中baseline在需求 句子对象中不存在,view需要向前移动3个位置的距离。这里的距离3是这样计算的首 先在"cwreW baseline view"中,view需要移动两次才能达到current的位置,然后当处于"user can view the cwrre", project list"中current的位置的时候,还需要向前移动一个位置(其中the 是无意义词,预先去除了)才能到达view处,所以最后的distance-3。步骤E.将预先设定的阈值与PhraseSim比较,若短语相似度大于阈值,则认为需求句 子对象所属的需求项引用依赖于需求名称对象所属的需求项,完成识别需求引用依赖。上述实施例中既包含了对本发明方法的描述,本领域的技术人员应能理解,也包含了 本发明方法的处理过程,依照本实施例,本领域的技术人员可以很容易地实现自动识别需 求之间依赖关系的方法。
权利要求
1.一种自动识别需求依赖关系的方法,其步骤包括1)将自然语言描述的需求规约文档转换为规则化描述的XML文档;将所述XML文档对应的数据存储到计算机中;2)计算所述自然语言描述的需求文档规约中的各需求句子对象之间的距离,将所述各需求句子对象聚合成不同的类,遍历所述聚合类中的每个需求句子对象,找出具有最大相似度比率的需求项,则其他需求项相似依赖于所述具有最大相似度比率的需求项;3)计算所述自然语言描述的需求文档规约中各需求名称对象与需求句子对象之间的短语相似度;若短语相似度大于设定阈值,则需求句子对象所属的需求项引用依赖于需求名称对象所属的需求项。
2. 如权利要求l所述的一种自动识别需求依赖关系的方法,其特征在于步骤2)中, 所述各需求句子对象之间的距离利用欧几里德Zfetance(D,,i)》计算,其中,向量z , = w,《 ) =s;=i々—;表示需求句子对象包含的需求内容文本,文本包含的各个标引词为该向量的各个维度,^表示标引词y在文 本/中的权重^f^(。,0 xiog2(^),其中/w《(《,)表示在文本/中标引词j出现的次数,文献频率#是包含该标引词的文献数与所有文献数n的比值。
3. 如权利要求l所述的一种自动识别需求依赖关系的方法,其特征在于步骤2)中所 述的将各需求句子对象聚合成不同的类的步骤如下a) 将每个需求句子对象初始化为一个类;b) 遍历所有的类,采用层次聚类方法计算类与类之间的距离;C)计算出来类之间的距离小于预设值的距离阈值,合并这两个类; d)重复步骤b), c)直到所有的类之间的距离都大于阈值。
4. 如权利要求3所述的一种自动识别需求依赖关系的方法,其特征在于,所述类与类之间距离的计算方法如下a) 若两个类中均只包含一个需求句子对象,类之间的距离为两个需求句子对象之间 的距离;b) 若一个类包含一个需求句子对象,另一个类包含多个的需求句子对象,则类之间的距离为包含一个需求句子对象的类中的需求句子对象与另一个类中的所有需求句子对象的距离的平均值;C)若两个类均包含多个需求句子对象,则类之间的距离为一个类中的所有需求句子 对象与另一个类中的所有需求句子对象的距离的平均值。
5. 如权利要求1所述一种自动识别需求依赖关系的方法,其特征在于,所述步骤2)中具有最大相似度比率值的多个需求项之间互相依赖。
6. 如权利要求l所述的一种自动识别需求依赖关系的方法,其特征在于,步骤3)中, 所述需求名称对象文本与需求句子对象文本之间的短语相似度为(A, =A" {:,^^— ^^,其中distance为将査询字符串编辑为相匹配的文本的次数;向量A =("'1'"'2"''《)=2;"^表示需求名称对象和需求句子 对象中包含的需求内容文本,文本包含的各个标引词为该向量的各个维度,4--j!一',") xiog2(+),表示标引词y在文本i中的权重,介 u, d表示标引词i在文本^中出现的次数,文献频率rff是包含该标引词的文献数与所有文献数n的比值。
全文摘要
本发明属于计算机软件工程领域,具体涉及一种利用信息检索技术从自然语言描述的需求规约文档自动识别需求之间依赖关系的方法,本发明主要针对自然语言描述的需求文档规约,分析归纳出与需求演化特定的依赖关系类型,同时提出用来自动识别需求之间的依赖关系的方法。本发明对需求依赖关系的识别进行自动化,大大提高了识别需求依赖关系时的劳动效率和减少了劳动强度,极大的消除了人在识别过程中容易犯的错误,同时对所识别的依赖关系的准确性和稳定性带来极大好处。
文档编号G06F9/44GK101334793SQ20081011763
公开日2008年12月31日 申请日期2008年8月1日 优先权日2008年8月1日
发明者冯东伟, 娟 李, 引 李, 李明树, 青 王 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1