控制流复杂度在分析流程活动数量的基础上,考虑活动执行顺序对流程复杂性的影响。控制流结构包括顺序、选择(or-split)、并行(and-split)和循环等,不同的逻辑结构决定了不同的流程执行顺序,对流程的可理解性和效率的影响也不相同。
Cardoso研究了流程分支结构对设计人员的难度,提出了基于流程分支的控制流复杂度(control flow complexity,CFC)[8]。当流程模型存在分支结构时,建模人员需要考虑不同流程分支的状态、结构等复杂因素,加大了流程建模的难度和错误率。Cardoso分析了xor-split、or-split、and-split等多种流程分支结构,计算各种分支结构的状态、后续活动数量对复杂性的影响,通过加权求和得到流程的控制流复杂度。
公式(7.1)为3种分支结构复杂性的影响因子,其中CFC(a)为分支活动a的影响因子,put(a)表示活动a的后续状态数。可以看出and-split的复杂性最低,xor-split和or-split的复杂性与后续活动状态有关,且or-split结构的复杂性最高,与后续活动状态呈指数关系。公式(7.2)为流程p的控制流复杂度,可以根据各种分支结构的影响因子加权求和得到流程的整体复杂度。
CFC在流程建模阶段可以评估流程模型的质量,简单易用,可以作为流程可维护性、流程质量的指标。但CFC并没有区分不同循环结构对流程复杂性的影响,而且与活动复杂性一样缺乏对流程信息、资源等要素的考虑。
流程模型可以看成是特殊的有向图,利用计算机图论的知识研究流程复杂度取得了一定进展。Latva-Koivisto在对流程模型进行分析的基础上,使用图论分析了模型的复杂性度量[9],其中网络复杂度系数(coefficient of network complexity,CNC)由流程模型图中的边数除以流程活动数得到,即图的网络密度。CNC越大表明网络的连接数越多,即流程活动之间的传递关系越多,流程模型的可读性较低、错误率和复杂度越高。
复杂性指数(complexity index)是将流程图逐步规约而得到单一节点所经历的最小迭代次数,反映了流程模型的结构化(structuredness)程度。例如,在业务流程执行语言(business process execution language,BPEL)描述的流程模型中,复杂性指数表示结构化良好的活动数量。复杂性指数不适用于具有环路结构的流程模型。此外,约束估计(restrictiveness estimator)是对流程图中所有可能的路径数量的一个评估指标,计算方法使用公式(7.3)。其中N为流程模型图中的活动数;rij表示活动i和j是否连通(连通为1,不连通为0)。约束估计评估了业务流程可以执行的活动序列的可能性。约束估计取值范围为[0,1],并不受流程活动数量的影响,可以作为具有不同活动规模的流程模型的复杂度对比指标。
基于图方法的复杂度指标利用成熟的图论算法对流程模型图的复杂性进行评估,具有较高的可靠性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。