文章目录

  • 一:价值(了解)
  • 二:McCabe方法
    • (1)流图
      • A:定义
      • B:把程序流程图映射为流图
      • C:PDL翻译为流图
    • (2)环形复杂度
      • A:定义
      • B:计算方法
  • 三:Halstead方法(了解)
    • (1)定义
    • (2)方法

一:价值(了解)

  • 把程序的复杂程度乘以适当数可估算出软件中错误的数量以及开发需要的工作量
  • 定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣
  • 程序的定量的复杂程度可以作为模块规模的精确限度

二:McCabe方法

(1)流图

A:定义

流图实质上是“退化了的”程序流程图,它仅仅描绘程序的控制流程,完全不表现对数据具体操作以及分支或循环的具体条件,流图通常被用来突出表示程序的控制流

B:把程序流程图映射为流图

①:对于顺序结构,一个顺序处理和下一个选择可以映射为一个结点

②:对于选择语句,开始/结束语句映射为一个结点,两条分支至少各映射成一个结点


③:开始语句和结束语句各映射成一个结点


  • 流图中用圆表示结点一个圆代表一条或多条语句(比如4、5)。程序流程图中的一个顺序的处理框序列和一个菱形判定框,可以映射成流图中的一个结点(比如2,3)
  • 流图中的箭头线称为,代表控制流流图中一条边必须终止于一个结点(比如9必须为一个结点),即使这个结点并不代表任何语句
  • 由边和结点围成的面积称为区域,计算区域数时应包括图外部未被围起来的区域

C:PDL翻译为流图

(2)环形复杂度

A:定义

McCabe方法根据程序控制流的复杂程度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度

B:计算方法

环形复杂度定量度量程序的逻辑复杂度,可以用下述3种方法中的任何一种来计算环形复杂度:

  • 流图中的区域数等于环形复杂度

  • 流图G的环形复杂度V(G)=E-N+2,E是流图中边的条数,N是结点数

  • 流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。V(G)小于等于10比较科学

三:Halstead方法(了解)

(1)定义

Halstead方法是根据程序中运算符操作数的总数来度量程序的复杂程度

(2)方法

1.程序长度NNN定义,其中N1N_{1}N1​是程序中运算符出现总次数,N2N_{2}N2​是程序中操作数出现总次数

N=N1+N2N=N_{1}+N_{2}N=N1​+N2​

2.预测程序长度的公式,使用的不同运算符的个数为n1n_{1}n1​,不同操作数的个数为n2n_{2}n2​

H=n1log2n1+n2log2n2H=n_{1}log_{2}n_{1}+n_{2}log_{2}n_{2}H=n1​log2​n1​+n2​log2​n2​

3.预测程序中包含错误的个数的公式
E=N∗log2(n1+n2)/3000E=N*log_{2}(n_{1}+n_{2})/3000E=N∗log2​(n1​+n2​)/3000

(软件工程复习核心重点)第五章详细设计-第五节:程序复杂度的定量度量相关推荐

  1. (软件工程复习核心重点)第二章可行性研究-第四节:数据字典

    文章目录 一:相关概念 (1)定义 (2)作用 (3)意义(了解) 二:内容 三:定义数据的方法 (1)数据元素组成数据的方式 (2)符号表示 四:数据字典示例 五:用途 一:相关概念 (1)定义 数 ...

  2. (软件工程复习核心重点)第九章面向对象分析-第二节:面向对象分析之建立对象模型

    文章目录 一: 基本概念 (1)对象模型 (2)先建立对象模型的原因 (3)信息来源 (4)典型的建模步骤 二:确定类与对象 (1)找出候选的类与对象 A:客观事物分类 B:非正式分析 C:提取隐含的 ...

  3. (软件工程复习核心重点)第一章软件工程概论习题

    这一章题目主要以简答和名词解释为主 文章目录 一:选择题 二:填空题 三:名词解释 (1)必考 (2)了解 四:简答题 (1)必考 1.关于软件危机 2.关于软件工程 3. 关于软件生命周期 4.关于 ...

  4. (软件工程复习核心重点)第一章软件工程概论-第四节:软件过程及相关模型

    文章目录 一:软件过程概念 (1)定义 (2)构成 二:主要模型 (1)瀑布模型 A:定义 B:特点 C:优缺点 D::适用范围 E:实际的瀑布模型 (2)快速原型模型 A:定义 B:原理 C:优缺点 ...

  5. (软件工程复习核心重点)第二章可行性研究习题

    文章目录 一:选择题 二:填空题 三:名词解释 (1)必考 四:简答题 (1)必考 1. 关于可行性研究 2. 关于数据流图 3. 关于数据字典 (2)了解 五:应用题/画图题 一:选择题 二:填空题 ...

  6. (软件工程复习核心重点)第二章可行性研究-第三节:数据流图

    文章目录 一:数据流图的定义(DFD) 二:数据流图的特点 三:数据流图的符号 (1)符号 (2)注意(了解) 四:数据流图示例 (1)示例1 A:首先从题目中提取四种成分 B:画数据流图 (2)示例 ...

  7. (软件工程复习核心重点)第九章软件项目管理

    文章目录 一:估算软件规模 (1)代码行技术 (2)功能点技术 二:工作量估算 三:进度计划 (1)甘特图(Cantt图) (2)工程网络 四:人员组织 五:质量保证 六:软件配置管理 七:能力成熟度 ...

  8. (软件工程复习核心重点)第一章软件工程概论-第三节:软件生命周期

    文章目录 一:软件定义 (1)问题定义 (2)可行性研究 (3)需求分析 二:软件开发 (1)总体设计 (2)详细设计 (3)编码和单元测试 (4)综合测试 三:软件维护 一:软件定义 (1)问题定义 ...

  9. (软件工程复习核心重点)第一章软件工程概论-第二节:软件工程

    文章目录 一:软件工程 (1)软件工程的定义 (2)软件工程的本质特征 (3)软件工程基本原理 二:软件工程方法学 (1)概念 (2)分类 一:软件工程 (1)软件工程的定义 软件工程:采用工程的概念 ...

  10. (软件工程复习核心重点)第一章软件工程概论-第一节:软件和软件危机

    文章目录 一:软件的概念.特点与发展 (1)软件发展的三个阶段 (2)软件的概念 (3)软件的特点 二:软件危机 (1)软件危机的概念 (2)软件危机的表现 (3)软件危机产生的原因 A:主观原因 B ...

最新文章

  1. html5小游戏Untangle
  2. VMware 虚拟化编程(6) — VixDiskLib 虚拟磁盘库详解之二
  3. 手撕 CNN 经典网络之 AlexNet(理论篇)
  4. 什么是僵尸进程与孤儿进程
  5. python画气泡图_​用Python把图做的好看点:用Matplotlib画个好看的气泡图
  6. python打包成安装包_把 python 程序打包成 egg 或者 whl 安装包
  7. 牛客题霸 [将字符串转化为整数] C++题解/答案
  8. 互联网晚报 | 1月29日 星期六 | 支付宝相互宝正式关停;大钲资本成瑞幸咖啡实控人;苹果创有史以来最高单季营收...
  9. 划重点:微信小程序1月9日正式上线
  10. Oracle_spatial的常见错误与注意事项
  11. [luogu P3128][USACO15DEC]Max Flow [LCA][树上差分]
  12. tomcat配置报错解决方法 The jre_home environment variable is not defined correctly
  13. asp连接mysql未发现数据源名称_asp.net – 连接到MySQL导致错误“未找到数据源名称且未指定默认驱动程序”...
  14. i.MX283A移植mt7601--小米随身wifi
  15. python是面向对象开发_Python开发之路-面向对象
  16. 刘邦的用人之道!真心服气
  17. 双路服务器芯片组的发展
  18. 智过网:2023年注册测绘师考试执业范围
  19. vue 路由三种写法方式
  20. 刚安装的PostgreSQL默认用户名和密码是多少?

热门文章

  1. 世界上最好用的浏览器Chrome 10周岁生日,迎来一大波更新!
  2. java指令导出data文件_直接用 java 命令行动态生成jpg文件 (转)
  3. python解析原理_python爬虫原理
  4. python-opencv图像处理之SIFT尺度不变特征变换
  5. 刷新认知!基因表达,男女有别|Science、Cell等发布15篇人类遗传调控新成果
  6. 聚类分析(一)基本思想
  7. Omni Recover for Mac版 - 一站式iPhone数据恢复
  8. 一款简单实用的桌面电子邮件客户端
  9. vins中imu融合_视觉和imu融合的算法研究
  10. 【例1】 给定n(n>=1),用递归的方法计算1+2+3+4+...+(n-1)+n。