第5章 软件编码
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题,但难以应用于其他领域。
第5章 软件编码 6.1.2 程序设计语言的特性
1. 心理特性 程序体现的是编程者解决问题的思路,不同的人有不同 的解题思路,同一个人在不同心理状态下的解题思路往往也
会有所不同。所谓程序设计语言的心理特性,就是指能够影
响编程者心理的语言性能。这种影响主要表现在以下几个方 面。
第5章 软件编码 5.1.3 程序设计语言的选择
要为待开发项目选择合适的程序设计语言,应充分考虑到 项目的各种需求,结合各种语言的心理特性、工程特性、技术 特性以及应用特点,尽量选取实现效率高且易于理解和维护的
语言。由于程序设计语言的选择往往会受到各种实际因素的制
约和限制,因此选择语言时不能只考虑理论上的标准,而是要 同时兼顾理论标准和实用标准。下面分别简要地对选择语言的 主要理论标准和实用标准进行介绍。
第5章 软件编码 3) 开发工具的支持 为了缩短编码阶段所花费的时间以及提高编码的质量,应 选择具有良好开发工具支持的程序设计语言。这些开发工具主 要包括:编译程序、连接程序、交互式调试器、交叉编译器、 图形界面及菜单系统生成程序、宏处理程序等。 4) 可维护性 程序的维护是软件工程活动中的一项重要内容。为了提高 程序的可维护性,即方便对源程序的修改,程序中采用的语言 必须具有良好的可读性和易于使用的特点。
目的所有需求和各种选择的标准,这时就需要编程者对各种需
求和标准进行权衡,分清主次,在所有可用的语言中编码风格及软件效率
5.2.1 编码风格
编码风格是指在不影响程序正确性和效率的前提下,有效 编排和合理组织程序的基本原则。一个具有良好编码风格的程
序主要表现为可读性好、易测试、易维护。由于测试和维护阶
段的费用在软件开发总成本中所占比例很大,因此编码风格的 好坏直接影响着整个软件开发中成本耗费的多少。特别是在需 要团队合作开发大型软件的时候,编码风格显得尤为重要。若 团队中的成员不注重自己的编码风格,则会严重影响与其他成 员的合作和沟通,最终将可能导致软件质量上出现问题。
第5章 软件编码 1. 内部文档 所谓内部文档,是指程序中的说明性注释信息。在程序中 加入注释信息的目的是为了提高程序的可读性,为程序的测试 和维护带来方便。几乎所有的程序设计语言中都提供了专用于
合适的正版开发系统软件。此外,若能选用具有支持该语言程序
开发的软件工具的程序设计语言,则将有利于目标系统的实现和 验证。
第5章 软件编码 5) 软件开发人员的知识 软件开发人员采用自己熟悉的语言进行开发,可以充分运用
积累的经验使开发的目标程序具有更高的质量和运行效率,并可
以大大缩短编码阶段的时间。为了能够根据具体问题选择更合适 的语言,软件开发人员应拓宽自己的知识面,多掌握几种程序设 计语言。 6) 软件的可移植性要求
要使开发出的软件能适应于不同的软、硬件环境,应选择具
有较好通用性的、标准化程度高的语言。
第5章 软件编码 7) 软件的应用领域 任何语言编译系统设计的出发点都有所不同,其对某一领 域问题的处理能力也就存在较大差异,因此不存在真正适用于 任何应用领域的语言,通用语言也不例外。如FORTRAN语言最适 用于工程科学计算,COBOL语言最适用于处理商业领域中的问题。 所以,选择语言时一定要充分考虑到软件的应用领域。 在实际选择语言时,往往任何一种语言都无法同时满足项
第5章 软件编码 (1) 选用具有实际含义的标识符,如用于存放年龄的变量名 最好取age,用于存放学生信息的数组名最好取student。若标识 符由多个单词构成,则每个单词的第一个字母最好采用大写或单 词间用下划线分隔,以利于对标识符含义的理解。 (2) 为了便于程序的输入,标识符的名字不宜过长,通常不 要超过八个字符。特别是对于那些对标识符长度有限制的语言编 译系统来说,取过长的标识符名没有任何的意义。如在FORTRAN 77中,通常编译系统可以区分的标识符长度不超过六个字符。 (3) 为了便于区分,不同的标识符不要取过于相似的名字。 如student和students,很容易在使用或阅读时产生混淆。
高级语言按其应用特点的不同,可分为通用语言和专用语
言两大类。
第5章 软件编码 1) 通用语言 通用语言是指可用于解决各类问题、可广泛应用于各个领 域的程序设计语言。从较早出现的基础语言Basic、FORTRAN等, 到后来出现的结构化语言P、C等,再到现在被广泛使用的面向 对象语言Visual C、Java等都属于通用语言的范畴。
块的清单等;对模块的开发历史进行介绍,如模块编写者的资料、 模块审核者的资料及建立、修改的时间等;对模块的输入数据或 输出数据进行说明,如数据的格式、类型及含义等。
第5章 软件编码 2) 描述性注释
描述性注释位于源程序模块内部,用于对某些难以理解的语
句段的功能或某些重要的标识符的用途等进行说明。通过在程序 中加入恰当的描述性注释可以大大提高程序的可读性和可理解性, 对语句的注释应紧跟在被说明语句之后书写。需要注意的是,并
第5章 软件编码
第5章 软件编码
5.1 程序设计语言 5.2 编码风格及软件效率 5.3 程序复杂度的概念及度量方法 5.4 小结
第5章 软件编码
5.1 程序设计语言
5.1.1 程序设计语言的分类
随着计算机技术的发展,目前已经出现了数百种程序设计语 言,但被广泛应用的只有几十种。由于不同种类的语言适用于不 同的问题域和系统环境,因此了解程序设计语言的分类可以帮助 我们选择出合适的语言。通常可将程序设计语言分为面向机器语
第5章 软件编码 2) 简洁性 简洁性指编程者要使用该语言所必须记住的各种语法规则 (包括语句格式、数据类型、运算符、函数定义形式等)的信息 量。需记忆的信息量越大,简洁性越差,人们掌握起来也就越
难。但若程序设计语言的语法成分太少,过于简洁,又会给阅
读程序带来麻烦,不利于人的理解。因此对于一个好的程序设
第5章 软件编码 2. 实用标准 1) 系统用户的要求 由于用户是软件的使用者,因此软件开发者应充分考虑用 户对开发工具的要求。特别是当用户要负责软件的维护工作时, 用户理所应当地会要求采用他们熟悉的语言进行编程。
第5章 软件编码 2) 工程的规模 语言系统的选择与工程的规模有直接的关系。例如, Foxpro与Oracal及Sybase都是数据库处理系统,但Foxpro仅适 用于解决小型数据库问题,而Oracal和Sybase则可用于解决大 型数据库问题。特别是在如果工程的规模非常庞大,并且现有 的语言都不能完全适用时,为了提高开发的效率和质量,就可
计语言来说,既应具有一定的简洁性,又要具有较高的可理解
性。
第5章 软件编码
3) 局部性和顺序性
局部性是指语言的联想性,即相关内容的相对集中性。在
编程过程中,我们将实现某一功能的语句集中书写在一个模块
中,由模块组装成完整的程序,并要求模块具有高内聚、低耦 合的特点,其目的就是希望加强程序的局部性。顺序性指语言 的线性特征。例如对于顺序结构的程序人们很容易理解,而如 果程序中存在大量的分支结构和循环结构,人们理解起来就比
第5章 软件编码 1) 歧义性 歧义性指程序设计语言中的某些语法形式使不同的人产生 不同的理解。如FORTRAN语言中的表达式x**y**z有人理解为 (x**y)**z,有人却理解为x**(y**z)。当然,这只是由于某些 人对语言中某些语法规则的不了解所导致的,对于语言编译系 统来说只有确定的一种解释。
第5章 软件编码 3. 技术特性 在确定了软件开发项目的需求后,根据项目的特性选择具 有相应技术特性的程序设计语言对保证软件的质量具有非常重 要的作用。不同的语言具有不同的技术特性,例如有的语言提
供了丰富的数据类型或复杂的数据结构;有的语言具有很强的
实时处理能力;有的语言可方便的实现大量数据的查询及增、 删、改的功能。根据语言的技术特性为项目选择合适的程序设 计语言,不但可以使编写的程序很好地满足项目的要求,而且 对后期的测试和维护工作也是非常有益的。
第5章 软件编码 2) 专用语言 专用语言是为了解决某类特殊领域的问题而专门设计的具 有独特语法形式的程序设计语言。如专用于解决数组和向量计 算问题的APL语言;专用于开发编译程序和操作系统程序的 BLISS语言;专用于处理人工智能领域问题的LISP语言和PROLOG 语言等。这些语言的共同特点是可高效地解决本领域的各种问
机器语言难以记忆和使用,通常不用机器语言编写程序。汇编语
言是一种符号语言,它采用了一定的助记符来替代机器语言中的 指令和数据。汇编语言程序必须通过汇编系统翻译成机器语言程
序,才能在计算机上运行。汇编语言与计算机硬件密切相关,其
指令系统因机器型号的不同而不同。由于汇编语言生产效率低且 可维护性差,所以目前软件开发中很少使用汇编语言。
不是对所有程序中的语句都要进行注释,太多不必要的注释反而
会影响人们对程序的阅读。
第5章 软件编码 2. 标识符的命名及说明 编写程序必然要使用标识符,特别是对于大型程序,使用
的标识符可能成千上万。由于对程序中的标识符作用的正确理
解是读懂程序的前提,因此若编程者随心所欲地进行标识符的 命名和说明,可能就会给阅读程序带来麻烦。 1) 标识符的命名 为了便于阅读程序时对标识符作用进行正确的理解,标识 符的命名应注意以下几个问题:
较困难了。语言的局部性和顺序性是由人类习惯于用联想的方
式及按逻辑上的线性序列记忆事物的特性所决定的,局部性和 顺序性的加强可提高程序的可理解性。
第5章 软件编码
2. 工程特性
1) 可移植性 可移植性反映了程序在不同机器环境下的通用性和适应性。 不同机器环境包括不同的机型、不同的操作系统版本及不同的 应用软件包。若一个程序可不加修改或稍加修改就可以应用于
言和高级语言两大类。
第5章 软件编码 1. 面向机器语言 面向机器语言包括机器语言(Machine Language)和汇编语言
(Assemble Language)两种。机器语言是计算机系统可以直接识
别的程序设计语言。机器语言程序中的每一条语句实际上就是一 条二进制形式的指令代码,由操作码和操作数两部分组成。由于
第5章 软件编码 2. 高级语言 高级语言中的语句标识符与人类的自然语言(英文)较为接 近,并且采用了人们十分熟悉的十进制数据表示形式,利于学 习和掌握。高级语言的抽象级别较高,不依赖于实现它的计算 机硬件,且编码效率较高,往往一条高级语言的语句对应着若 干条机器语言或汇编语言的指令。高级语言程序需要经过编译 或解释之后,才能生成可在计算机上执行的机器语言程序。
以考虑为这个工程设计一种专用的程序设计语言。
第5章 软件编码 3) 软件的运行环境 软件在提交给用户后,将在用户的机器上运行,在选择语言
时应充分考虑到用户运行软件的环境对语言的约束。此外,运行
目标系统的环境中可以提供的编译程序往往也限制了可以选用的 语言的范围。
4) 可以得到的软件开发工具
由于开发经费的制约,往往使开发人员无法任意选择、购买
第5章 软件编码 1. 理论标准 1) 理想的模块化机制、易于阅读和使用的控制结构及数据结 构 模块化、良好的控制结构和数据结构可以降低编码工作的难 度,增强程序的可理解性,提高程序的可测试性和可维护性,从 而减少软件生存周期中的总成本,并缩短软件开发所需的时间。 2) 完善、独立的编译机制 完善的编译系统可尽可能多地发现程序中的错误,便于程序 的调试和提高软件的可靠性,并且可以使生成的目标代码紧凑、 高效;独立的编译机制便于程序的开发、调试和维护,可以降低 软件开发和维护的成本。
不同的机型、运行于高版本的操作系统或集成到不同的应用软
件包中,则称这个程序具有较高的可移植性。
第5章 软件编码 2) 语言编译器的实现效率 不同语言的编译器在将源程序代码翻译成目标代码的过程 中,由于编译程序设计质量的不同导致生成的目标代码的大小 和执行效率不尽相同。为了获得高效率的目标代码,选择语言 时应充分考虑到语言编译器的实现效率。
书写注释信息的注释语句。为了使程序易于阅读和修改,应在
必要的地方加上相应的注释。在修改程序时,不要忘记对相应 的注释也要进行修改。
程序中的注释一般可按其用途分为两类:序言性注释和描
述性注释。
第5章 软件编码 1) 序言性注释
序言性注释一般位于模块的首部,用于说明模块的相关信息。 主要包括:对模块的功能、用途进行简要说明;对模块的界面进 行描述,如调用语句的格式、各个参数的作用及需调用的下级模