1、2019/3/17,1,第六章 软件编码,2019/3/17,2,本章要点,程序设计语言分类与源程序的质量要求 程序设计语言的选择原则 编码和编码风格 程序效率 编码错误的预防 代码复查 编码工具,2019/3/17,3,对源程序的要求,语法正确 源程序具有良好的结构性 良好的程序设计风格,2019/3/17,4,结构化程序设计,结构化程序设计的原则 程序设计自顶向下、逐步求精 数据结构的合理化,2019/3/17,5,程序设计风格,源程序文档化 数据说明 语句结构 输入输出,2019/3/17,6,第一、源程序文档化,标识符的命名 程序的注释 视觉组织空格、空行与缩进,2019/3/17,7
2、,第二、数据说明,数据说明的次序应当规范化,使数据属性容易查找,也有利于测试、排错和维护 当多个变量名用一个语句说明时,应当对这些变量按字母的顺序排列 如果设计了一个复杂的数据结构,应使用注释说明在程序实现时这个数据结构的特点,2019/3/17,8,第三、语句结构,编码阶段构造的语句应力求简单、直接,不能为了只追求效率而使语句复杂化,2019/3/17,9,第四、输入输出,I/O信息是与用户的使用直接相关的。I/O的方式和格式应当尽可能方便用户的原则。系统能否为用户接受,有时就取决于I/O风格。,2019/3/17,10,程序效率,讨论效率的准则 算法对效率的影响 影响存储效率的因素 影响输
3、入输出的因素,2019/3/17,11,第一、讨论效率的准则,程序效率是指运行速度及程序占用的存储空间。 效率是一个性能要求,目标值应当在需求分析阶段给出。软件效率以需求为准,不应以人力所及为准 好的设计可以提高效率 程序的效率与程序的简单性相关,2019/3/17,12,第二、算法对效率的影响,源程序效率与详细设计阶段确定的算法效率直接相关。在将详细设计翻译转换成源代码后,算法效率反映为程序运行速度和存储容量要求。,2019/3/17,13,第三、影响存储效率的因素,P171,2019/3/17,14,第四、影响输入输出的因素,I/O分为两种:一种是面向人(操作员)的,一种是面向设备。,20
4、19/3/17,15,程序设计语言,程序设计语言特性的比较 程序设计语言的分类 程序设计语言的选择,2019/3/17,16,防止编码错误,编译程序能够检查的错误 编译程序不能检查的错误 防止编码错误的方法,2019/3/17,17,第一、编译程序能够检查的错误,语法错误 打字错误 颠倒或遗漏了程序编码行 多余标号与变量,2019/3/17,18,第二、编译程序不能检查的错误,定义或算法错误 语句功能与算法所要求的事件不一致 数据类型错误 输入数据错误 由病态数据引起的逻辑错误 面向设备与传输的错误 与运行环境有关的错误,2019/3/17,19,第三、防止编码错误的方法,避免复杂编码 避免数
5、据的依赖性 避免不完整的逻辑判断 避免编译程序选项的缺省 检查输入数据的属性 重新阅读语言的参考手册和用户手册,2019/3/17,20,代码复查,在完成了编码并纠正了所有语法错误之后,还需要对照详细设计的N-S图(IPO图)审查每个模块的源代码清单。 目的是检查编码的正确性,源代码的可读性,以及详细设计的可追溯性。代码复查是人工查找逻辑错误的方法。代码复查不应该由编写程序的程序员来负责,并且所有的程序模块都应该进行严格复查。,2019/3/17,21,编码工具,在软件开发阶段,为了保证软件质量,提高软件生产效率,有许多工具可以使用,常用工具有以下几种:源代码准备工具 语言处理工具 编码复查辅
6、助工具,2019/3/17,22,程序复杂性度量,程序复杂性主要指模块内程序的复杂性。它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜藏错误的多少。同时它也是软件可理解性的一种度量。减少程序复杂性,可提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少。,2019/3/17,23,代码行度量法,度量程序的复杂性,最简单的方法就是统计程序的源代码行数,此方法基本考虑是统计一个程序的源代码行数,并以源代码行数作为程序复杂性的度量。代码行度量法只是一个简单的,估计粗糙的方法。,2019/3/17,24,McCabe度量法,基于程序控制流的复杂性度量方法,又称为环路复杂度,基于一个程序模块的程序图中环路的个数。一般来说,此度量法的得到的值如果超过10,说明程序复杂度比较高,应该化简为几个小程序;如果小于10,则认识复杂度适当。,2019/3/17,25,McCabe度量法,程序图程序图是把程序程序流程图中每个处理符号都退化成一个结点,原来连接不同处理符号的流线变成连接不同结点的有向弧。程序图只描述程序内部的控制流程。 复杂度公式V(G)=m-n+pm:图中的弧数 n:图的结点数 p:图的强连通分量个数,