冯济舟, 吴 亮, 董世友
(中国电子科技集团公司第三十八研究所,安徽 合肥 230088)
随着信息技术的持续发展,现代系统的复杂程度和规模不断增加[1],传统的以文档为中心的系统工程由于存在无法保证数据一致性、更改困难、难以描述活动等诸多缺陷,已无法满足工程方案设计的要求。基于模型的系统工程(Model-Based Systems Engineering,MBSE)正成为复杂系统设计的基础。MBSE将模型置于整个系统工程过程的中心,从设计阶段开始即通过模型的不断演化、迭代递增实现产品的系统设计[2-3]。相对于传统以文档为中心的系统工程,MBSE加强了投资者与团队成员之间沟通,提高了知识获取的能力,具有更好的信息追溯性,增强工件重用以及降低开发风险等。模型驱动的系统设计方法“被寄予希望能够取代多年来被系统工程师所运用的文档中心方法,并最终被完整的集成进系统工程过程”[4]。
当前,系统工程建模的语言、工具和技术很多,如行为图、IDEF0、N2图等,然而这些建模方法使用的符号和语义不同,彼此之间不能互操作和重用。系统工程标准建模语言[7]正是在这个背景下,由国际系统工程学会和对象管理组织于2004年提出[5],在工程实践中广泛应用,并取得了良好的应用效果。
目前,对于冲突检测方法主要有以下四种:1)形式化推理的方式,将设计转化成逻辑描述,并刻画其对象属性,从而完成设计冲突检测的技术[6],其难点在于设计转化为逻辑描述及推理机的构建;2)状态转换作为设计建模原则,利用状态模型检验,将设计转化为状态转换,通过检测状态,判断设计冲突问题[7],其难点在于设计无遗漏、客观地转换为状态转换;3)目标作为设计建模原则,利用目标语义及其启发式规则,进行设计冲突检测[8-10],其难点在于目标语义和启发式规则的构建及语义、规则集的完整性;4)利用图文法[11],通过给定图的性质及语义,检测处理用图表达的设计描述的冲突问题,其难点在于各种不同业务领域定义的准确性和完整性[12-13]。上述四种方法针对的是系统工程设计表达的不同方面,基于此方面表达形式的特性,建立模型和定义规则,并给予实现。因此,用上述四种方法建模,只能建立起由方法论规定的有限种的表达形式,每种表达形式都要建立模型和规则,且彼此之间的关系都是固定的,有时还需要建立语义库。
由此可见,上述四种方法在系统工程设计表达方面的局限性,往往会造成系统工程设计表达内容完整性的缺失,更无系统工程设计表达的标准性、系统性和复杂性的考虑。然而,系统工程设计分析是一个层次化的分析过程,从设计初期阶段,提出比较模糊的战略构想,再到设计中期阶段,逐步形成作战设计,推出能力设计,最后再到设计末期阶段,得出比较完整的系统设计方案设计。在整个过程中,都有获取和定义系统工程设计的要求,因此系统工程设计冲突检测方法要能涵盖整个设计阶段过程;其次,上述四种方法的建模粒度过细,甚至要依靠第三方分析、设计工具,设计的转化表达工作量大,规则集的构造复杂,通用性差,从构想到应用的工程量相当于一个专业化工具的开发,且缺乏可扩展性和复用性,极大影响了设计冲突检测应用及检测执行效果的验证;最后,采用语义库的方式,将受限于所要表达的具体业务,虽然冲突检测限制在系统工程设计方面,但由于系统工程设计业务的差异,所需要的语义库也就千差万别,更无从评估所建语义库的正确性和完整性对冲突检测的影响。
本文针对以上问题,通过研究目前流行的系统工程设计中用于多视图军事需求模型要素表达的工具特性,抽象、归类[14],提出了基于图论方法的抽象建模,简化了设计转化表达的难度,提升了设计表达的直观性,由图论法抽象的模型,可以在各视图军事需求模型的设计表达工具中使用,提高了冲突检测方法的通用性、可扩展性和复用性,减少了工程量,加快了设计冲突检测应用及检测执行效果的验证。针对语义库的劣势,提出了采用矩阵和证据推断表达实现图论理论的方法,在无需额外资源的情况下,只凭借视角下系统工程设计表达矩阵中各元素本体的特点和规律,在系统设计运行之前,进行设计冲突检测,避免冲突检测的漏测和误测[15]。
同视角下设计之间显性冲突指构成该视角的设计项之间存在矛盾或冲突的地方,可分为以下三种情况。如图1(a)所示,设计项a2和a3互为上下级关系,那么设计项a2和a3可能会出现冲突;如图1(b)所示,设计项a2是设计项a4、a5和a3的上级设计,设计项a3是设计项a5的上级设计,那么设计项a2和a3可能会出现了冲突;如图1(c)所示,设计项a2和a3同时是设计项a4和a5的上级设计,那么设计项a2和a3可能会出现了冲突。
图1 同视角下设计之间显性冲突示意图
同视角下设计关系冲突指设计项关系存在矛盾或冲突的地方。比如对于设计项,如果定义了设计项a1是设计项a3的上级设计,设计项a3是设计项a5的上级设计,那么设计项a5不应该是设计项a1的上级设计,否则设计项关系之间就会出现冲突。如图2所示。
图2 单个视角原子设计项关系冲突示意图
不同视角下设计映射关系冲突指不同视角的设计项经设计映射后,不同视角相关设计项的设计关系发生冲突的地方。比如对于设计集A={a1,a2,a3,a4,a5}和设计集B={b1,b2,b3,b4,b5}之间存在映射关系,如果在集合A中,定义了设计项a2是设计项a4的上级设计。在集合B中,定义了设计项b3是设计项b4、b5的上级设计。如果两个集合间设计项a2与b4、b5具有映射关系,设计项a4与b3具有映射关系,那么集合A中的a2、a4与集合B中的b3、b4、b5之间的映射关系出现了冲突。如图3所示。
图3 不同视角下设计映射关系冲突示意图
同视角下设计之间隐性冲突指当多个视角之间的设计项存在追溯关系时,其顶层视角的设计项之间存在冲突的地方。比如,在同一视角下设计项a1和b1,其a1由设计项aa1、aa2、aa3和aa4组成,aa2由设计项aaa1、aaa2、aaa3和aaa4组成,其b1由设计项aa1、bb2、aa3和aa4组成,bb2由设计项aaa1、aaa2、aaa3和bbb4组成。通过比较设计项a1与b1间组成结构及内容的相似性,以此推断a1和b1存在冲突的可能性。如图4所示。
图4 同视角下设计之间隐性冲突示意图
首先,基于多视图军事需求模型要素表达框架,对系统工程设计进行描述;然后,依次对各个视角原子设计项进行冲突检测,若不存在冲突,再对各个视角原子设计项关系进行冲突检测,若不存在冲突,再对不同视角下设计映射关系冲突进行检测,若不存在冲突,再对多视角间设计追溯链进行冲突检测,若不存在冲突,便可保证信息中各设计的逻辑正确,不存在冲突。当存在冲突时,需系统标注并自动推送,由人完成设计冲突的判定和处理,如图5所示。其中空菱形表示其任何一个输入有效时,均会触发其输出,而不需要所有输入同时有效。
图5 基于多视图军事需求模型要素表达框架设计的冲突检测流程图
设计项集合A={ai|i=1,2,…,n},其中ai为具体的设计项,n为设计项数量。对于某具体设计项来说,该设计项与其他设计项之间的关系向量矩阵可表示为(ai1,ai2,…,ain),关系向量矩阵上各元素的取值,遵循以下规则:
建立n×n阶的设计项关系矩阵A,n为设计项数量,判断该矩阵A中各元素值,若第i行(1≤i≤n)表示的设计项是第j列(1≤j≤n)表示的设计项的上级设计,则A(i,j)=1,否则A(i,j)=0。由此可建立矩阵A中的所有元素值。
首先建立设计项之间关系矩阵A,然后依次判断矩阵A中的对称元素是否同时为1,即矩阵中是否存在A(i,j)×A(j,i)=1,若有,则说明i对应的设计项与j对应的设计项存在冲突;接下来,查找由设计的传递性引起的关系冲突问题,调整关系矩阵A,将上一步发现的对称元素均为1的元素置为0,即A(i,j)=A(j,i)=0,初始化与矩阵A等阶的二维零矩阵A0和单位矩阵A1,循环进行n-1次计算A1=A1×A和A0=A0+A1,最后A0=A0⊗AT,其中AT是A的转置,⊗表示矩阵对应位置元素相乘,若最后得出的A0(i,j)不为0,则说明i对应的设计项和j对应的设计项之间仍存在冲突。
判断矩阵A中各元素值,若第i行(1≤i≤n)表示的设计项是第j列(1≤j≤n)表示的设计项的上级设计,则A(i,j)=1,否则A(i,j)=0。由此可建立矩阵A中的所有元素值。构建其中另外一个视角矩阵,各设计项之间关系的nB×nB的二维全矩阵B。判断该矩阵B中各元素值,若第i行(1≤i≤n)表示的设计项是第j列(1≤j≤n)表示的设计项的上级设计,则B(i,j)=1,否则B(i,j)=0。由此可建立矩阵B中的所有元素值。构建两个视角的nA×nB映射关系矩阵AB,判断该矩阵AB中各元素值,若第i行(1≤i≤nA)表示的设计项与第j列(1≤j≤nB)表示的设计项之间存在设计映射关系,则AB(i,j)=1,否则AB(i,j)=0。由此可建立矩阵AB中的所有元素值。
首先,找出设计映射矩阵AB中任意不为0的元素,如(i,j);然后进行两个矩阵的计算,ABij=Ai×Bj和FAB=ABij⊗AB,其中Ai表示矩阵A抽取第i列的列向量矩阵,Bj表示从矩阵B抽取第j行的行向量矩阵,ABij表示基于矩阵A抽取的第i列的列向量与矩阵B抽取的第j行的行向量相乘得到的矩阵,⊗表示矩阵对应位置元素相乘,遍历FAB中各元素,若FAB(i,j)=1,且AB(i,j)=1,则表明该位置所对应的设计映射关系存在冲突。按照以上步骤,依次遍历矩阵AB中其他非0元素进行计算判断,得出所有具有映射关系的冲突情况结果。
以1.1节图1(a)为例。设计项a2与设计项a3互为上下级关系,因此设计项a2关系向量中,其与设计项a3的关系值无法表示,同理,a3关系向量中,其与a2的关系也无法表示,两个关系向量无法按照规则方法建立,因此说明此两个设计项a2,a3存在设计冲突的可能。
由此,在同一个视角、同一层级的设计冲突问题即可检测出来。
以1.1节图2为例,建立单个视角下设计项之间的关系矩阵A,由于A(1,2)=A(2,1)=1,因此可以推断出设计项a1和a2存在冲突。其值为
进一步,查找设计关系传递造成的设计关系冲突,调整设计项之间的关系矩阵A,并初始化与A同阶的零矩阵A0和单位矩阵A1,其值分别为
循环4次A1=A1×A和A0=A0+A1计算后,进行A0=A0⊗AT计算,得出最终结果为
因此,a1与a5,a3与a1以及a5与a3之间存在设计关系冲突。
由此,同一视角、不同层级的设计冲突问题即可检测出来。
以1.1节图3为例,建立表示设计项之间关系的5×5矩阵A、5×5矩阵B以及表示两个视角映射关系的5×5矩阵AB,其值分别为
找出矩阵AB中不为0的元素,以AB(4,3)为例,计算AB4,3=A4×B3和F4,3=AB4,3⊗AB,具体计算过程为
式中:A4表示矩阵A抽取第4列的列向量;B3表示矩阵B抽取第3行的行向量。
因为F4,3(2,4)=1且AB(2,4)=1,F4,3(2,5)=1且AB(2,5)=1,因此可得出a4与b3的映射关系和a2与b4、b5之间的映射关系存在冲突。按照以上步骤,依次遍历矩阵AB中其他非0元素进行计算判断,即可得出所有映射关系项是否存在冲突的结果。
由此,不同视角下对应设计的逻辑关系不一致问题即可检测出来。
由此,通过设计包含的视角集,推断在同一视角下任意两个设计是否冲突的问题即可检测出来。
本文采用的方法与其他冲突检测方法的比较,如表1所示。
表1 与其他检测方法性能比对分析
针对系统工程设计的专业性、表达形式的多样性、当前冲突检测方法通用性差、以及冲突检测语义库建设周期长建设难度大等问题,本文提出了以多视图军事需求模型要素表达框架为标准,对系统工程设计描述进行抽象并归类,总结并建立了四种通用性强、表达形式统一的系统工程设计冲突模型,并通过图论方法和矩阵方法,实现模型的物理形式表示和逻辑形式转化,然后详细描述了解决系统工程设计冲突检测问题的启发式算法和D-S证据推断方法,实现了冲突的自动检测,结合应用案例,验证方法的有效性和正确性。
1)提出的系统工程设计冲突检测方法解决了目前系统工程设计表达的完整性、系统性、标准性和复杂性缺失的问题,简化了设计转化表达的难度,提升了设计表达的直观性,提高了冲突检测方法的通用性、可扩展性和复用性,减少了工程量,加快了设计冲突检测应用及检测执行效果的验证,而且在无需额外资源的情况下,只凭系统工程设计表达矩阵中各元素本体的特点和规律,在系统设计运行之前,进行设计冲突检测,避免冲突检测的漏测和误测。
2)本文所提的系统工程设计检测方法,主要针对系统工程设计表达中具有通用性的活动视角表达、状态视角表达和能力视角表达,不适用于时序视角表达内容的检测,日后可结合具体应用场景,增加具有针对性的设计冲突检测内容,以及提出时序表达设计冲突检测方法。