第五章结构化实现 o编码 o软件测试基础 o白盒测试技术 o黑盒测试技术 o测试策略 o调试
第五章 结构化实现 o 编码 o 软件测试基础 o 白盒测试技术 o 黑盒测试技术 o 测试策略 o 调试
第一节编码 通常把编码和测试统称为实现。 所谓编码就是选择一种语言把软件设计阶段 的结果翻译成计算机可以理解的源程序 作为软件工程过程的一个阶段,编码是设计 的自然结果。因此,程序的质量主要取决于软件 设计的质量 但是,所选用的程序设计语言的特点和编码 风格也会对程序的可靠性、可读性、可测试性和 可维护性产生深远影响
通常把编码和测试统称为实现。 所谓编码就是选择一种语言把软件设计阶段 的结果翻译成计算机可以理解的源程序。 作为软件工程过程的一个阶段,编码是设计 的自然结果。因此,程序的质量主要取决于软件 设计的质量。 但是,所选用的程序设计语言的特点和编码 风格也会对程序的可靠性、可读性、可测试性和 可维护性产生深远影响。 第一节 编 码
编码阶段的任务 主要任务:为每个模块编写程序,将详细设 计的结果转换成用某种程序语言表示的计算机能 理解的源程序形式。 在编程过程中,要把软件详细设计的表达翻 译成编程语言的构造
一、编码阶段的任务 主要任务:为每个模块编写程序,将详细设 计的结果转换成用某种程序语言表示的计算机能 理解的源程序形式。 在编程过程中,要把软件详细设计的表达翻 译成编程语言的构造
程序设计语言的选择 1、程序设计特性 心理特性 编程语言是人-机通信的工具,编码过程是 种人的活动。因此,语言的心理特征对通信的 质量有重要的影响。 美国关于软件的心理学家指出:软件心理学 家的作用是在关注机器效率、软件能力和硬件限 制的同时,应把注意力集中在诸如使用容易、学 习简便、提高可靠性、减少出错率及让用户满意 方面
二、程序设计语言的选择 1、程序设计特性: 心理特性 编程语言是人---机通信的工具,编码过程是 一种人的活动。因此,语言的心理特征对通信的 质量有重要的影响。 美国关于软件的心理学家指出:软件心理学 家的作用是在关注机器效率、软件能力和硬件限 制的同时,应把注意力集中在诸如使用容易、学 习简便、提高可靠性、减少出错率及让用户满意 方面
虽然,有很多编程的自动化辅助工具,然而 软件工程仍然是高度的人工活动过程。因此,有 许多关于人的问题需要研究。特别是语言的心理 学特性对代码的翻译和实现的设计有相当重要的 影响。 一般考虑如下几个心理特性
虽然,有很多编程的自动化辅助工具,然而 软件工程仍然是高度的人工活动过程。因此,有 许多关于人的问题需要研究。特别是语言的心理 学特性对代码的翻译和实现的设计有相当重要的 影响。 一般考虑如下几个心理特性:
1)一致性 一致性是一个心理学而不是数学原则。即是 一件事情应该以同一种方式完成 一种语言的限制越多,你就会越担心其他限 制,从而缩手缩脚。即使出现在语言的其它部分, 他们也会影响对当前无限制部分的使用。 一致性的另一个重要方面是,同一个语法结 构在不同的上下文不应该有不同的意思。 如括号的匹配使用
1)一致性 一致性是一个心理学而不是数学原则。即是 “一件事情应该以同一种方式完成。” 一种语言的限制越多,你就会越担心其他限 制,从而缩手缩脚。即使出现在语言的其它部分, 他们也会影响对当前无限制部分的使用。 一致性的另一个重要方面是,同一个语法结 构在不同的上下文不应该有不同的意思。 如括号的匹配使用
2)多义性:是指程序员的多种理解的错误。 如,X= sinulog(X+1),可理解为 X=(sinx)(og(x+1)也可理解为 X=sin(xlog (x+1) 另一种引起多义性的原因是:允许不规范的 使用有缺省值的数据类型的标识符。如 FORTRAN中标识符 KDELTA按缺省应认为有整数 特征,然后, REAL KDELTA一个显式说明,就赋 于 KDELTA以浮点特征。此处,由于心理上的多 义性就可能产生混惑
2)多义性:是指程序员的多种理解的错误。 如,X=sinxlog(x+1),可理解为: X=(sinx)(log(x+1))也可理解为 X=sin(xlog(x+1)) 另一种引起多义性的原因是:允许不规范的 使用有缺省值的数据类型的标识符。如 FORTRAN中标识符KDELTA按缺省应认为有整数 特征,然后,REAL KDELTA一个显式说明,就赋 于KDELTA以浮点特征。此处,由于心理上的多 义性就可能产生混惑
3)紧凑性:一种面向代码信息量的表示 这个信息量必须由人来记忆 APL语言是一种非常紧凑的编程语言, 但很难读懂。逻辑语言也一种非常紧凑的 语言。度量紧凑性的语言属性有
3)紧凑性:一种面向代码信息量的表示, 这个信息量必须由人来记忆。 APL语言是一种非常紧凑的编程语言, 但很难读懂。逻辑语言也一种非常紧凑的 语言。度量紧凑性的语言属性有:
4)局部性:人的记忆有“联觉”和“顺序 两种。我们是凭借联觉记忆去识别人脸、邻居或 是书中某一页的版面布局,而不去追究其细节。 所谓的联觉记忆能力,是我们记忆力中的一部分, 它可以使我们在一瞬间,把事物作为一个整体来 记忆。所谓顺序记忆能力则更多地与听觉有关, 听过9个音符后,就可以把第10个哼唱出来,但 要求直接唱出某个音符,就难多了。顺序记忆类 似于议程不定的链条
4)局部性:人的记忆有“联觉”和“顺序” 两种。我们是凭借联觉记忆去识别人脸、邻居或 是书中某一页的版面布局,而不去追究其细节。 所谓的联觉记忆能力,是我们记忆力中的一部分, 它可以使我们在一瞬间,把事物作为一个整体来 记忆。所谓顺序记忆能力则更多地与听觉有关, 听过9个音符后,就可以把第10 个哼唱出来,但 要求直接唱出某个音符,就难多了。顺序记忆类 似于议程不定的链条
局部性是编程语言的综合特性。当语句 可以组合为程序块、结构化构造可直接实 现、设计代码和合成代码具有高的模块性 的聚合时,局域性就高。 如语言特性支持或鼓励异常处理时,局 域性就低
局部性是编程语言的综合特性。当语句 可以组合为程序块、结构化构造可直接实 现、设计代码和合成代码具有高的模块性 的聚合时,局域性就高。 如语言特性支持或鼓励异常处理时,局 域性就低