版权归原作者所有,如有侵权,请联系我们

[科普中国]-决策到决策路径

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

决策到决策路径decision-to-decision path)是指当用控制流程图表示程式时,一条不包含任何决策节点的路径,换句话说,决策到决策路径是介于二个决策点中的路径。

基本特点决策点是类似if-else指令或for循环一様,会根据变量的数值决定后续执行程式的节点。

决策到决策路径有以下的特性:

启始节点和结束节点不是同一个节点。

除启始节点和结束节点外,所有节点的入度及出度均为1,也就是每个节点都只是一个边的起点和一个边的终点。

若利用控制流程图计算循环复杂度时,每一个决策到决策路径均可以简化为一个节点,不会影响循环复杂度的计算。1

本质复杂度本质复杂度(Essential complexity)是指由于一问题的本质不适合简单的求解方式,所有可行的求解方式都很复杂的情形。本质复杂度和偶然复杂度不同,后者的复杂度和问题本质无关,和选用求解的工具或方法有关。

本质复杂度至少在1980年代中期已被使用,图灵奖得主佛瑞德·布鲁克斯当时已开始使用本质复杂度及其反义词偶然复杂度。他也在1995年时在《人月神话》中的没有银弹一段中提出他的新论点。1

代码覆盖率代码覆盖(英语:Code coverage)是软件测试中的一种度量,描述程式中源代码被测试的比例和程度,所得比例称为代码覆盖率

代码覆盖是由系统化软件测试所衍生的方式。第一份出版的相关参考资料是Miller及Maloney1963年在ACM通讯上发表的论文。

代码覆盖是飞行设备进行安全认证中的考量项目之一。飞行设备相关认证的指南列在美国联邦航空管理局的文件DO-178B及最近出版的文件DO-178C。功能安全标准,如IEC 61508或ISO 26262,并未定义程式码覆盖率之需求值,只列为软件测试方法的选项,唯有航太产业标准(DO-178B)要求100%,以因应超高可靠度的产品需求,此数值对于工业或汽车产品实属理想目标。1

循环复杂度循环复杂度Cyclomatic complexity)也称为条件复杂度圈复杂度,是一种软件度量,是由老托马斯·J·麦凯布在1976年提出,用来表示程序的复杂度,其符号为VG或是M。循环复杂度由程序的源代码中量测线性独立路径的个数。此概念有些类似的量测文字复杂度的Flesch-Kincaid可读性测试,不过方法不完全相同。

循环复杂度是由程序的控制流图来计算:有向图的节点对应程序中个别的代码,而若一个程序运行后会立刻运行另一代码,会有边链接二代码对应的节点。圈复杂度可应用在程序的子程序、模块、方法或类别。

麦凯布首先提出一种称为“基础路径测试”(Basis Path Testing)的软件测试方式,是测试程序中的每一线性独立路径,此情形的测试用例个数即为程序的循环复杂度。

“循环复杂度”的名称有时会让人误解,因为此复杂度不只计算程序中的循环(循环)个数。循环复杂度是指程序的控制流图中,若将结束点到启始点再增加一个边时,控制流图中的圈(几个边形成封闭路径)的个数。2

本词条内容贡献者为:

王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所