第6章 软件编码 本章内容结构 本章引言 学习目标 教学内容 本章小结 思考和练习 课堂讨论 2019年4月9日
本章引言 经过软件的总体设计和详细设计后,便得到了软件系统的结构和每个模块的详细过程描述,接着便进入了软件的制作阶段,或者叫编码阶段,也就是通常人们惯称的程序设计阶段。 程序设计语言的性能和编码风格在很大程序上影响着软件的质量和维护性能,即对程序的可靠性、可读性、可测试性和可维护性产生深远的影响,所以选择哪一种程序设计语言和怎样来编写代码是要认真考虑的。但是,本章并不具体讲述如何编写程序,而是在软件工程这个广泛的范围内介绍与编程语言和编写程序有关的一些问题。 2019年4月9日
学习目标 熟悉程序设计语言的分类 了解程序设计语言的选择 理解并会应用程序设计风格 2019年4月9日
教学内容 6.1 程序设计语言的分类 6.2 程序设计语言的选择 6.3 程序设计风格 6.4 本章小结和习题 2019年4月9日
6.1 程序设计语言的分类 从不同的分类角度,程序设计语言可得出不同的分类体系。从软件工程的角度,编程语言可分为基础语言、结构化语言和面向对象语言3 大类。 6.1.1 基础语言 6.1.2 结构化语言 6.1.3 面向对象语言 2019年4月9日
6.1.1 基础语言 基础语言是通用语言,它的特点是适用性强,应用面广,历史悠久 。 6.1.1 基础语言 基础语言是通用语言,它的特点是适用性强,应用面广,历史悠久 。 FORTRAN,COBOL,BASIC和ALGOL都属于这类语言。
6.1.2 结构化语言 20世纪70年代以来,随着结构化程序设计思想的逐步发展,先后出现了一批常用的结构化语言。 6.1.2 结构化语言 20世纪70年代以来,随着结构化程序设计思想的逐步发展,先后出现了一批常用的结构化语言。 作为基础语言的ALGOL语言是结构化语言的基础,它衍生出了Pascal、C、 Ada等结构化语言。
6.1.3 面向对象的语言 C++语言 Java语言 从软件工程的角度,按“代”可以将编程语言划分为: 6.1.3 面向对象的语言 C++语言 Java语言 从软件工程的角度,按“代”可以将编程语言划分为: 1GL:面向机器的语言,代表是机器语言和汇编语言; 2GL:始于20世纪50年代至60年代,代表:FORTRAN、ALGOL、COBOL、BASIC。 3GL:也称现代编程语言,代表Pascal、C、Ada、C++、Smalltalk等、 4GL :代表:VB、VC、JAVA。
6.2 程序设计语言的选择 程序设计语言选择的理想标准主要有: 6.2 程序设计语言的选择 程序设计语言选择的理想标准主要有: 为了使程序容易测试和维护以减少软件的总成本,所选用 的高级语言应该有理想的模块化机制,以及可读性好的控制 结构和数据结构; 为了便于调试和提高软件可靠性,语言特点应该使编译程 序能够尽可能多地发现程序中的错误。 为了降低软件开发和维护的成本,选用的高级语言应该有 良好的独立编译机制。
6.2 程序设计语言的选择 程序设计语言选择的实用标准主要有: 待开发软件的应用领域 用户的要求 软件的运行环境 软件开发人员的知识 6.2 程序设计语言的选择 程序设计语言选择的实用标准主要有: 待开发软件的应用领域 用户的要求 软件的运行环境 软件开发人员的知识 软件的可移植性要求
6.3 程序设计风格 源程序代码的逻辑简明、易读易懂是好程序的一个重 要标准。 1.程序内部文档 2.数据说明 3.语句构造 4.输入输出 6.3 程序设计风格 源程序代码的逻辑简明、易读易懂是好程序的一个重 要标准。 1.程序内部文档 2.数据说明 3.语句构造 4.输入输出 5.效率
6.3.1 程序内部文档 程序内部文档包括标识符的选取、增加注解和好的程 序布局。 标识符的选取 程序的注解 程序的布局
6.3.2 数据说明 数据说明应遵循一些简单的原则: 数据说明的次序应该标准化; 当一个说明语句说明多个变量时,最好按字典顺序排列; 6.3.2 数据说明 数据说明应遵循一些简单的原则: 数据说明的次序应该标准化; 当一个说明语句说明多个变量时,最好按字典顺序排列; 如果设计时使用了一个复杂的数据结构,则应加注解说明用程序设计语言实现这个数据结构的方法和特点 。
6.3.3 语句构造 语句构造的原则 : 不要为了节省存储空间把多个语句写在同一行。 尽量避免复杂的条件测试,尤其是减少对“非”条件的测试。 6.3.3 语句构造 语句构造的原则 : 不要为了节省存储空间把多个语句写在同一行。 尽量避免复杂的条件测试,尤其是减少对“非”条件的测试。 避免大量使用循环嵌套语句和条件嵌套语句。 利用圆括号使逻辑表达式或算术表达式的运算次序清晰直观。 变量说明不要遗漏,变量的类型、长度、存储及初始化要正确。 心理换位:“如果我不是编码人,我能看懂它吗”?
6.3.4 输入输出 有关输入输出风格的规则: 对所有输入数据都要进行校验。 检查输入项重要组合的合法性。 保持简单的输入格式。 6.3.4 输入输出 有关输入输出风格的规则: 对所有输入数据都要进行校验。 检查输入项重要组合的合法性。 保持简单的输入格式。 输入一批数据时,使用数据或文件结束标志,不要用计数来控制。 人机交互式输入时,要详细说明可用的选择范围和边界值。 当程序设计语言对输入/输出格式有严格要求时,应保持输入格式与输入语句的要求一致。 输出报表的设计要符合用户要求,输出数据尽量表格化、图形化。 给所有的输出数据加标志,并加以必要的注解。
6.3.5 效率 效率主要是指处理机工作时间和内存容量这两方面的利用率。 关于程序效率问题应该记住下面3条原则: 6.3.5 效率 效率主要是指处理机工作时间和内存容量这两方面的利用率。 关于程序效率问题应该记住下面3条原则: 效率是属于性能的要求,因此应该在软件需求分析阶段确定效率方面的要求; 良好的设计可以提高效率; 提高程序的效率和好的编码风格要保持一致,不应该一味追求程序的效率而牺牲程序的清晰性和可读性。 进一步讨论效率问题: 代码效率 、存贮效率和输入输出的效率 。
例子
例子
例子
例子
例子
例子
例子
例子
例子
例子
本章小结 编码阶段是将详细设计的每个模块的算法转换为用程序设计语言编写的源程序。用程序设计语言编写源程序时,要根据实际项目的特点,既要考虑现实可能性,又要从技术角度、工程角度和心理角度评价和比较各种语言,选择一种合适的程序设计语言。 编码风格直接影响软件的质量,影响软件的可读性、可维护性和可移植性。因此,编码风格要求简明和清晰,不要追求所谓程序设计技巧,要注重程序结构清晰,层次结构分明,语言简单明了,各种标识符名字的命名要规范,程序和复杂的数据要有注释。 2019年4月9日
习题 在软件项目开发时,选择程序设计语言通常考虑哪些因素? 举例说明各种程序设计语言的特点及适用范围? 什么是程序设计风格?为了具有良好的程序设计风格,应该注意哪些方面的问题? 以下3个表达式表示的是同一个内容: (a)-6**A/3*B; (b)-(6**A/3)*B; (c)+(((6**A)/(-3))*x) (1)你认为哪一种可读性最好?哪一种最差? (2)如果让你列出几条关于书写表达式的指导原则,你对表达式中运算符的数量和圆满括号的层数将作何规定 5. 第4代语言有哪些主要特征?为什么受到广大用户欢迎?
课堂讨论 根据前面选择的软件开发项目,选择一种程序设计语言尝试完成编码工作; Question? 2019年4月9日