理解软件工程中的环行复杂度计算

需积分: 49 3 下载量 86 浏览量 更新于2024-08-20 收藏 7.33MB PPT 举报
"计算程序的环行复杂度-软件工程讲义-软件工程电子书 PPT" 在软件工程中,环行复杂度(也称为循环复杂度或者圈复杂度)是衡量程序复杂性的一个重要指标,它由美国计算机科学家迈克尔·科斯特拉诺(Michael J. Costello)提出,并被广泛应用于分析程序结构的复杂性。环行复杂度通过计算程序控制流图(Control Flow Graph, CFG)中的线性无关循环数量来评估程序的复杂程度。 在给定的描述中,我们看到计算环行复杂度的一个实例。在图4.4(b)中,环行复杂度的计算方法如下: 1. 首先,确定图中的线性无关的有向环。在这个例子中,有4个这样的环:R1、R2、R3、R4。 2. 其次,计算图中的实线弧数。在图4.4(b)中,实线弧数为14。 3. 再来,计算图中的节点数。在这里,节点数是12。 4. 最后,使用公式 V(G) = 实线弧数 - 节点数 + 2 来计算环行复杂度。所以,V(G) = 14 - 12 + 2 = 4。 另外,还提到了一个与环行复杂度相关的计算方法,即判定结点的数量。在图4.4(b)中,判定结点(即含有分支的节点)有3个。判定结点的环行复杂度计算公式是 V(G) = 判定结点数 + 1。因此,对于这个图,环行复杂度也可以表示为 V(G) = 3 + 1 = 4。尽管计算方式不同,但两种方法得出的结果相同,都是4。 软件工程是一门广泛的学科,它关注软件的开发、维护和管理过程,以解决所谓的“软件危机”。软件危机是在20世纪60年代由于软件开发过程中遇到的一系列问题而提出的,包括开发周期过长、成本过高、错误频繁、需求变更难以应对等。为了解决这些问题,人们提出了软件工程的概念,借鉴了其他工程领域的原则,如系统化的方法、规范化的流程和量化度量。 软件工程学包括软件的定义、性质以及工程化的方法。软件不仅包括程序,还包括数据结构和文档。软件的主要特性有复杂性、难以描述性、不可见性(在运行前无法直观体验)、变化性、风险性以及大规模复制的可能性。软件工程学的目标是通过应用工程原理来经济、可靠和有效地开发和维护软件,尽管早期的定义可能相对粗糙,但随着技术的发展,软件工程的实践和理论都在不断进化和完善。