发明名称 一种检测需求冲突关系的方法
摘要 本发明公开了一种自动检测需求冲突关系的方法,其包括:建立需求数据库和需求关系数据库;根据冲突的类型,建立冲突关系矩阵;以及遍历所述冲突关系矩阵,检测需求冲突。本发明能够在系统设计运行之前进行自动需求冲突的检测和去除,避免漏测和误测的问题,提高了冲突检测的准确性。
申请公布号 CN102902760B 申请公布日期 2014.01.29
申请号 CN201210360800.5 申请日期 2012.09.25
申请人 中国人民解放军国防科学技术大学 发明人 刘俊先;陈洪辉;罗爱民;罗雪山
分类号 G06F17/30(2006.01)I;G06Q10/06(2012.01)I 主分类号 G06F17/30(2006.01)I
代理机构 北京风雅颂专利代理有限公司 11403 代理人 李弘
主权项 1.一种检测需求冲突关系的方法,其包括: 建立需求数据库和需求关系数据库;根据冲突的类型,建立冲突关系矩阵;以及遍历所述冲突关系矩阵,检测需求冲突; 其中,根据冲突的类型建立冲突关系矩阵,以及遍历所述冲突关系矩阵检测需求冲突的步骤包括:若所述需求数据库的需求类型中的两项需求之间存在双向相同的逻辑关系,则存在简单需求冲突;遍历所述需求数据库中所有的需求类型,进行简单需求冲突的检测;其中所述简单需求冲突包括直接简单需求冲突和间接简单需求冲突; 其中,针对直接简单需求冲突的检测和去除,具体的步骤包括: 1)调取数据库中的任务对象,任意选取一种类型的需求A,创建需求数据集合Table(A),对Table(A)中的需求进行编号,记为Table(A)={a<sub>i</sub>|i=1,2,…,n<sub>A</sub>},其中n<sub>A</sub>为A类型需求的数目; 2)从数据库中任意选择一种需求关系r,遍历需求类型A,建立Table(A,r);以及 3)根据Table(A,r)建立n<sub>A</sub>×n<sub>A</sub>的二维数据链表D(A,r),若a<sub>i</sub>到a<sub>j</sub>存在关系r,那么D(A,r)的第i行第j列的元素取值为1,否则取值为0;记D(A,r)元素取值对应的矩阵为<img file="FDA0000425308480000011.GIF" wi="385" he="73" />根据D(A,r)建立n<sub>A</sub>×n<sub>A</sub>的二维数据链表DD(A,r),DD(A,r)的第i行第j列的元素取值为dd<sub>r</sub>(i,j)=d<sub>r</sub>(i,j)×d<sub>r</sub>(j,i),DD(A,r)即为所述冲突关系矩阵;其中,遍历所述冲突关系矩阵,检测需求冲突的步骤包括: 如果dd<sub>r</sub>(i,j)=1,那么需求a<sub>i</sub>和a<sub>j</sub>间存在关于关系r的直接简单需求冲突; 其中,针对间接简单需求冲突的检测和去除的步骤包括: 1)调取数据库中的任务对象,任意选取一种类型的需求A,创建需求数据集合Table(A),对Table(A)中的需求进行编号,记为Table(A)={a<sub>i</sub>|i=1,2,…,n<sub>A</sub>},其中n<sub>A</sub>为A类型需求的数目; 2)从数据库中任意选择一种需求关系r,遍历需求类型A,建立Table(A,r); 3)根据Table(A,r)建立n<sub>A</sub>×n<sub>A</sub>的二维数据链表D(A,r),若a<sub>i</sub>到a<sub>j</sub>存在 关系r,那么D(A,r)的第i行第j列的元素取值为1,否则取值为0;记D(A,r)元素取值对应的矩阵为<img file="FDA0000425308480000021.GIF" wi="386" he="74" />根据D(A,r)建立n<sub>A</sub>×n<sub>A</sub>的二维数据链表DD(A,r),DD(A,r)的第i行第j列的元素取值为dd<sub>r</sub>(i,j)=d<sub>r</sub>(i,j)×d<sub>r</sub>(j,i);以及4)将数据链表D(A,r)元素取值记为矩阵D,建立两个n<sub>A</sub>×n<sub>A</sub>的二维数据链表DT(A,r)和DC(A,r),DT(A,r)和DC(A,r)元素的取值分别记为矩阵F和C,其中F的初始取值为单位矩阵,C的初始取值为零矩阵;循环n<sub>A</sub>次计算F=F×D,C=C+F,根据C的取值为数据链表DC(A,r)赋值,<img file="FDA0000425308480000022.GIF" wi="231" he="60" />,其中<img file="FDA0000425308480000023.GIF" wi="126" he="58" />运算为行列数相同的矩阵对应位置元素相乘的运算,D′表示矩阵D的转置矩阵;根据F的取值为数据链表DT(A,r)赋值,DT(A,r)即为所述冲突关系矩阵;其中,遍历所述冲突关系矩阵,检测需求冲突的步骤包括: 遍历数据链表DT(A,r),查找所有大于0的元素,则该元素所在行和列对应的需求存在间接简单需求冲突,即若DT(A,r)的i′行和j′列的元素不为0,那么需求a<sub>i′</sub>和a<sub>j′</sub>间存在关于关系r的间接简单需求冲突; 完成简单需求冲突关系的检测和去除后,对于任意两类需求,如果所述的两类需求之间存在单向逻辑关系,同时所述两类需求的需求集合之间的交集不为空集,则存在需求映射冲突;遍历所述需求数据库中所有的需求类型,进行需求映射冲突的检测; 其中,针对需求映射冲突,根据冲突的类型建立冲突关系矩阵的步骤包括: 1)调取完成简单需求冲突的任务对象; 2)任意选取两种类型的需求A、B,所述A、B两类需求之间关系的集合记为R(A)∩R(B),从需求类型A到B存在任意一种需求映射关系s; 3)取R(A)∩R(B)中的任意一种关系r,建立A类需求的需求关系为Table(A,r),建立B类需求的需求关系为Table(B,r),建立A、B两类需求映射关系为Table(A,B,s); 4)遍历数据表Table(A,B,s),建立一个n<sub>A</sub>×n<sub>B</sub>的二维数据链表D(A,B,s),若存在关于关系s的需求映射(a<sub>i</sub>,b<sub>j</sub>),那么D(A,B,s)的第i行第j列的元素取值为1,记为f<sub>s</sub>(i,j)=1;否则取值为0,即f<sub>s</sub>(i,j)=0;其中,遍历所述冲突关系矩阵,检测需求冲突的步骤包括: 选择Table(A,B,s)中的任意一个数据记录代表的需求映射,设为<img file="FDA0000425308480000031.GIF" wi="234" he="80" />采用如下公式计算<img file="FDA0000425308480000032.GIF" wi="206" he="76" />对应的冲突集合<img file="FDA0000425308480000033.GIF" wi="125" he="75" />实现需求冲突的检测:<img file="FDA0000425308480000034.GIF" wi="844" he="77" /><img file="FDA0000425308480000035.GIF" wi="1075" he="77" />其中,<img file="FDA0000425308480000036.GIF" wi="615" he="79" />表示D(A,r)的元素对应矩阵D<sub>A</sub>的第i<sub>0</sub>列,<img file="FDA0000425308480000037.GIF" wi="240" he="79" />表示D(B,r)的元素对应矩阵D<sub>B</sub>的第j<sub>0</sub>行,CM为D(A,B,s)取值对应的矩阵。
地址 410073 湖南省长沙市开福区国防科技大学信息系统与管理学院重点实验室