第6章--软件编码-普通高等院校计算机类专业系列教材-软件工程教学课件.ppt
《第6章--软件编码-普通高等院校计算机类专业系列教材-软件工程教学课件.ppt》由会员分享,可在线阅读,更多相关《第6章--软件编码-普通高等院校计算机类专业系列教材-软件工程教学课件.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章 软件编码 第6章 软件编码 6.1 程序设计语言程序设计语言 6.2 编码风格及软件效率编码风格及软件效率 6.3 程序复杂度的概念及度量方法程序复杂度的概念及度量方法 6.4 小结小结 第6章 软件编码 6.1 6.1 程序设计语言程序设计语言6.1.1 6.1.1 程序设计语言的分类程序设计语言的分类 随着计算机技术的发展,目前已经出现了数百种程序设计语言,但被广泛应用的只有几十种。由于不同种类的语言适用于不同的问题域和系统环境,因此了解程序设计语言的分类可以帮助我们选择出合适的语言。通常可将程序设计语言分为面向机器语言和高级语言两大类。第6章 软件编码 1.1.面向机器语言面向机
2、器语言 面向机器语言包括机器语言(Machine Language)和汇编语言(Assemble Language)两种。机器语言是计算机系统可以直接识别的程序设计语言。机器语言程序中的每一条语句实际上就是一条二进制形式的指令代码,由操作码和操作数两部分组成。由于机器语言难以记忆和使用,通常不用机器语言编写程序。汇编语言是一种符号语言,它采用了一定的助记符来替代机器语言中的指令和数据。汇编语言程序必须通过汇编系统翻译成机器语言程序,才能在计算机上运行。汇编语言与计算机硬件密切相关,其指令系统因机器型号的不同而不同。由于汇编语言生产效率低且可维护性差,所以目前软件开发中很少使用汇编语言。第6章
3、软件编码 2.2.高级语言高级语言 高级语言中的语句标识符与人类的自然语言(英文)较为接近,并且采用了人们十分熟悉的十进制数据表示形式,利于学习和掌握。高级语言的抽象级别较高,不依赖于实现它的计算机硬件,且编码效率较高,往往一条高级语言的语句对应着若干条机器语言或汇编语言的指令。高级语言程序需要经过编译或解释之后,才能生成可在计算机上执行的机器语言程序。高级语言按其应用特点的不同,可分为通用语言和专用语言两大类。第6章 软件编码 第6章 软件编码 2)专用语言 专用语言是为了解决某类特殊领域的问题而专门设计的具有独特语法形式的程序设计语言。如专用于解决数组和向量计算问题的APL语言;专用于开发
4、编译程序和操作系统程序的BLISS语言;专用于处理人工智能领域问题的LISP语言和PROLOG语言等。这些语言的共同特点是可高效地解决本领域的各种问题,但难以应用于其他领域。第6章 软件编码 6.1.2 6.1.2 程序设计语言的特性程序设计语言的特性 由于程序设计语言是实现人机通信的基本工具,编程者只有通过程序才能指挥计算机按照要求完成特定的任务,因此,程序设计语言所具有的特性往往会不可避免地对编程者处理问题的思路、编写程序的方式和质量产生影响。总的来说,程序设计语言具有心理、工程和技术三大特性。1.1.心理特性心理特性 程序体现的是编程者解决问题的思路,不同的人有不同的解题思路,同一个人在
5、不同心理状态下的解题思路往往也会有所不同。所谓程序设计语言的心理特性,就是指能够影响编程者心理的语言性能。这种影响主要表现在以下几个方面。第6章 软件编码 1)歧义性 歧义性指程序设计语言中的某些语法形式使不同的人产生不同的理解。如FORTRAN语言中的表达式x*y*z有人理解为(x*y)*z,有人却理解为x*(y*z)。当然,这只是由于某些人对语言中某些语法规则的不了解所导致的,对于语言编译系统来说只有确定的一种解释。第6章 软件编码 第6章 软件编码 3)局部性和顺序性 局部性是指语言的联想性,即相关内容的相对集中性。在编程过程中,我们将实现某一功能的语句集中书写在一个模块中,由模块组装成
6、完整的程序,并要求模块具有高内聚、低耦合的特点,其目的就是希望加强程序的局部性。顺序性指语言的线性特征。例如对于顺序结构的程序人们很容易理解,而如果程序中存在大量的分支结构和循环结构,人们理解起来就比较困难了。语言的局部性和顺序性是由人类习惯于用联想的方式及按逻辑上的线性序列记忆事物的特性所决定的,局部性和顺序性的加强可提高程序的可理解性。第6章 软件编码 2.2.工程特性工程特性 语言是人们在软件工程活动中的编码阶段所使用的工具,因此有必要从软件工程的观点考虑为了满足软件开发项目的需要,程序设计语言所应具备的工程特性。语言的工程特性主要体现在以下几个方面。1)可移植性 可移植性反映了程序在不
7、同机器环境下的通用性和适应性。不同机器环境包括不同的机型、不同的操作系统版本及不同的应用软件包。若一个程序可不加修改或稍加修改就可以应用于不同的机型、运行于高版本的操作系统或集成到不同的应用软件包中,则称这个程序具有较高的可移植性。第6章 软件编码 第6章 软件编码 3)开发工具的支持 为了缩短编码阶段所花费的时间以及提高编码的质量,应选择具有良好开发工具支持的程序设计语言。这些开发工具主要包括:编译程序、连接程序、交互式调试器、交叉编译器、图形界面及菜单系统生成程序、宏处理程序等。4)可维护性 程序的维护是软件工程活动中的一项重要内容。为了提高程序的可维护性,即方便对源程序的修改,程序中采用
8、的语言必须具有良好的可读性和易于使用的特点。第6章 软件编码 第6章 软件编码 6.1.3 6.1.3 程序设计语言的选择程序设计语言的选择 要为待开发项目选择合适的程序设计语言,应充分考虑到项目的各种需求,结合各种语言的心理特性、工程特性、技术特性以及应用特点,尽量选取实现效率高且易于理解和维护的语言。由于程序设计语言的选择往往会受到各种实际因素的制约和限制,因此选择语言时不能只考虑理论上的标准,而是要同时兼顾理论标准和实用标准。下面分别简要地对选择语言的主要理论标准和实用标准进行介绍。第6章 软件编码 1.1.理论标准理论标准 1)理想的模块化机制、易于阅读和使用的控制结构及数据结构 模块
9、化、良好的控制结构和数据结构可以降低编码工作的难度,增强程序的可理解性,提高程序的可测试性和可维护性,从而减少软件生存周期中的总成本,并缩短软件开发所需的时间。2)完善、独立的编译机制 完善的编译系统可尽可能多地发现程序中的错误,便于程序的调试和提高软件的可靠性,并且可以使生成的目标代码紧凑、高效;独立的编译机制便于程序的开发、调试和维护,可以降低软件开发和维护的成本。第6章 软件编码 第6章 软件编码 2)工程的规模 语言系统的选择与工程的规模有直接的关系。例如,Foxpro与Oracal及Sybase都是数据库处理系统,但Foxpro仅适用于解决小型数据库问题,而Oracal和Sybase
10、则可用于解决大型数据库问题。特别是在如果工程的规模非常庞大,并且现有的语言都不能完全适用时,为了提高开发的效率和质量,就可以考虑为这个工程设计一种专用的程序设计语言。第6章 软件编码 3)软件的运行环境 软件在提交给用户后,将在用户的机器上运行,在选择语言时应充分考虑到用户运行软件的环境对语言的约束。此外,运行目标系统的环境中可以提供的编译程序往往也限制了可以选用的语言的范围。4)可以得到的软件开发工具 由于开发经费的制约,往往使开发人员无法任意选择、购买合适的正版开发系统软件。此外,若能选用具有支持该语言程序开发的软件工具的程序设计语言,则将有利于目标系统的实现和验证。第6章 软件编码 5)
11、软件开发人员的知识 软件开发人员采用自己熟悉的语言进行开发,可以充分运用积累的经验使开发的目标程序具有更高的质量和运行效率,并可以大大缩短编码阶段的时间。为了能够根据具体问题选择更合适的语言,软件开发人员应拓宽自己的知识面,多掌握几种程序设计语言。6)软件的可移植性要求 要使开发出的软件能适应于不同的软、硬件环境,应选择具有较好通用性的、标准化程度高的语言。第6章 软件编码 7)软件的应用领域 任何语言编译系统设计的出发点都有所不同,其对某一领域问题的处理能力也就存在较大差异,因此不存在真正适用于任何应用领域的语言,通用语言也不例外。如FORTRAN语言最适用于工程科学计算,COBOL语言最适
12、用于处理商业领域中的问题。所以,选择语言时一定要充分考虑到软件的应用领域。在实际选择语言时,往往任何一种语言都无法同时满足项目的所有需求和各种选择的标准,这时就需要编程者对各种需求和标准进行权衡,分清主次,在所有可用的语言中选取最适合的一种进行编程。第6章 软件编码 6.2 6.2 编码风格及软件效率编码风格及软件效率6.2.1 6.2.1 编码风格编码风格 编码风格是指在不影响程序正确性和效率的前提下,有效编排和合理组织程序的基本原则。一个具有良好编码风格的程序主要表现为可读性好、易测试、易维护。由于测试和维护阶段的费用在软件开发总成本中所占比例很大,因此编码风格的好坏直接影响着整个软件开发
13、中成本耗费的多少。特别是在需要团队合作开发大型软件的时候,编码风格显得尤为重要。若团队中的成员不注重自己的编码风格,则会严重影响与其他成员的合作和沟通,最终将可能导致软件质量上出现问题。第6章 软件编码 第6章 软件编码 1)序言性注释 序言性注释一般位于模块的首部,用于说明模块的相关信息。主要包括:对模块的功能、用途进行简要说明;对模块的界面进行描述,如调用语句的格式、各个参数的作用及需调用的下级模块的清单等;对模块的开发历史进行介绍,如模块编写者的资料、模块审核者的资料及建立、修改的时间等;对模块的输入数据或输出数据进行说明,如数据的格式、类型及含义等。第6章 软件编码 2)描述性注释 描
14、述性注释位于源程序模块内部,用于对某些难以理解的语句段的功能或某些重要的标识符的用途等进行说明。通过在程序中加入恰当的描述性注释可以大大提高程序的可读性和可理解性,对语句的注释应紧跟在被说明语句之后书写。需要注意的是,并不是对所有程序中的语句都要进行注释,太多不必要的注释反而会影响人们对程序的阅读。第6章 软件编码 2.2.标识符的命名及说明标识符的命名及说明 编写程序必然要使用标识符,特别是对于大型程序,使用的标识符可能成千上万。由于对程序中的标识符作用的正确理解是读懂程序的前提,因此若编程者随心所欲地进行标识符的命名和说明,可能就会给阅读程序带来麻烦。1)标识符的命名 为了便于阅读程序时对
15、标识符作用进行正确的理解,标识符的命名应注意以下几个问题:第6章 软件编码 第6章 软件编码 2)标识符的说明 由于程序中通常需要使用大量不同类型的标识符,为了使说明部分阅读起来更加清晰,在对其进行类型说明时应注意以下几点:(1)应按照某种顺序分别对各种类型的变量进行集中说明,如:先说明简单类型,再说明指针类型,再说明记录类型;对简单类型的变量进行说明时,可先说明整型,再说明实型,再说明字符型等等。(2)在使用一个说明语句对同一类型的多个变量进行说明时,应按照变量名中的字母顺序(az)对其进行排列。第6章 软件编码 3.3.语句的构造及书写语句的构造及书写 语句是构成程序的基本单位,语句的构造
16、方式和书写格式对程序的可读性具有非常重要的决定作用。1)语句构造 (1)语句应简单直接,避免使用华而不实的程序设计技巧。如为了求出x、y两个数中的较大数,以下两个C语句均可实现:方法一:max=(x+y+abs(xy)/2;方法二:max=(xy)?x:y;显然,方法二的可读性要比方法一好得多。第6章 软件编码 第6章 软件编码 (4)为了不破坏结构化程序设计中结构的清晰性,在程序中应尽量不使用强制转移语句GOTO。(5)为了便于程序的理解,不要书写太复杂的条件,嵌套的重数也不宜过多。(6)为了缩短程序的代码,在程序中应尽可能地使用编译系统提供的标准函数。对于程序中需要重复出现的代码段,应将其
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 编码 普通 高等院校 计算机 类专业 系列 教材 软件工程 教学 课件
限制150内