《软件工程概论》郑人杰版-第9章-软件实现ppt课件.ppt
《《软件工程概论》郑人杰版-第9章-软件实现ppt课件.ppt》由会员分享,可在线阅读,更多相关《《软件工程概论》郑人杰版-第9章-软件实现ppt课件.ppt(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第9章 软件实现 程序设计语言程序设计语言 程序设计风格程序设计风格 编码规范编码规范 程序效率与性能分析程序效率与性能分析9.1 程序设计语言 程序设计语言的性能程序设计语言的性能 从软件心理学及软件工程角度对程序设计语言的从软件心理学及软件工程角度对程序设计语言的性能进行讨论。性能进行讨论。9.1 程序设计语言软件心理学的观点软件心理学的观点 (1) (1) 一致性一致性。表示一种语言所使用符号的兼容程度、。表示一种语言所使用符号的兼容程度、允许随意规定限制,以及允许对语法或语义破允许随意规定限制,以及允许对语法或语义破例的程度。例的程度。(2) (2) 二义性二义性。虽然语言的编译程序总
2、是以一种机械。虽然语言的编译程序总是以一种机械的规则来解释语句,但读者则可能用不同的方的规则来解释语句,但读者则可能用不同的方式来理解语句。式来理解语句。(3) (3) 简洁性简洁性。程序设计语言的简洁性用来表示为了。程序设计语言的简洁性用来表示为了用该语言编写程序,必须记忆的关于代码的信用该语言编写程序,必须记忆的关于代码的信息量。息量。9.1 程序设计语言 软件心理学的观点软件心理学的观点 (4) (4) 局部性局部性。是指程序设计语言的综合特性。在编。是指程序设计语言的综合特性。在编码的过程中,由语句组合成模块,由模块组装为码的过程中,由语句组合成模块,由模块组装为程序系统结构,并在组装
3、过程中实现模块的高内程序系统结构,并在组装过程中实现模块的高内聚和低耦合,可使程序的局部性加强。聚和低耦合,可使程序的局部性加强。(5) (5) 传统性传统性。人们学习一种新的程序设计语言的能。人们学习一种新的程序设计语言的能力受到传统的影响。力受到传统的影响。 9.1 程序设计语言软件工程的观点软件工程的观点 (1)(1) 详细设计应能直接地容易地翻译成代码程序。详细设计应能直接地容易地翻译成代码程序。(2)(2) 源程序应具有可移植性。源程序应具有可移植性。 (3)(3) 编译程序应具有较高的效率。编译程序应具有较高的效率。 (4)(4) 尽可能应用代码生成的自动工具。尽可能应用代码生成的
4、自动工具。 (5)(5) 可维护性。可维护性。 9.1 程序设计语言程序设计语言的分类程序设计语言的分类从软件工程的角度,根据程序设计语言发展的从软件工程的角度,根据程序设计语言发展的历程,可以将程序设计语言大致分为历程,可以将程序设计语言大致分为4 4类。类。(1)(1)从属于机器的语言从属于机器的语言第一代语言第一代语言(2)(2)汇编语言汇编语言第二代语言第二代语言(3)(3)高级程序设计语言高级程序设计语言第三代语言第三代语言 从从2020世纪世纪5050年代就开始出现,它们的特点是用年代就开始出现,它们的特点是用途广泛。典型的高级程序设计语言有途广泛。典型的高级程序设计语言有ALGO
5、LALGOL、FORTRANFORTRAN、COBOLCOBOL、BASICBASIC、PASCALPASCAL、C C、C +C +、LispLisp、PROLOGPROLOG、AdaAda等。等。9.1 程序设计语言 程序设计语言的分类程序设计语言的分类(4) (4) 第四代语言(第四代语言(4GL4GL)4GL4GL以数据库管理系统所提供的功能为核心,进一以数据库管理系统所提供的功能为核心,进一步构造了开发高层软件系统的开发环境,如报表步构造了开发高层软件系统的开发环境,如报表生成系统、多窗口表格设计系统、菜单生成系统生成系统、多窗口表格设计系统、菜单生成系统等。等。4GL4GL提供了功
6、能强大的非过程化问题定义手段,用提供了功能强大的非过程化问题定义手段,用户只需告诉系统做什么,而无须说明怎么做。户只需告诉系统做什么,而无须说明怎么做。 9.1 程序设计语言程序设计语言的选择程序设计语言的选择在选择编程语言时,可以考虑以下因素。在选择编程语言时,可以考虑以下因素。(1)(1)应用领域:目标系统的应用领域不同,需要采应用领域:目标系统的应用领域不同,需要采取的系统开发范型也不同,所以要考虑支持相取的系统开发范型也不同,所以要考虑支持相应范型的编程语言。应范型的编程语言。(2)(2)系统用户的要求系统用户的要求。(3)(3)编程语言自身的功能。编程语言自身的功能。(4)(4)编码
7、和维护成本及开发环境。编码和维护成本及开发环境。(5)(5)编程人员的技能。编程人员的技能。(6)(6)软件可移植性。软件可移植性。 9.2 程序设计风格 在软件生存期中,人们经常要阅读程序。特别是在软件生存期中,人们经常要阅读程序。特别是在软件测试阶段和维护阶段,编写程序的人和参在软件测试阶段和维护阶段,编写程序的人和参与测试、维护的人都要阅读程序。与测试、维护的人都要阅读程序。 在编写程序时多花些工夫,讲求程序的风格,这在编写程序时多花些工夫,讲求程序的风格,这将大量地减少人们读程序的时间。将大量地减少人们读程序的时间。 本节对程序设计风格的本节对程序设计风格的4 4个方面,即个方面,即源
8、程序文档化源程序文档化、数据说明的方法数据说明的方法、语句结构语句结构和和输入输入/ /输出方法输出方法中值中值得注意的问题进行概要的讨论得注意的问题进行概要的讨论 9.2 程序设计风格 源程序文档化源程序文档化 源程序文档化包括标识符的命名、安排注释以及源程序文档化包括标识符的命名、安排注释以及程序的视觉组织等。程序的视觉组织等。9.2 程序设计风格 标识符的命名标识符的命名 标识符包括标识符包括模块名模块名、变量名变量名、常量名常量名、标号名标号名、子程序名子程序名以及以及数据区名数据区名、缓冲区名缓冲区名等。这些名字等。这些名字应能反映它所代表的实际东西,使其能够见名知应能反映它所代表的
9、实际东西,使其能够见名知意,有助于对程序功能的理解。意,有助于对程序功能的理解。应当选择精练的意义明确的名字,才能简化程序应当选择精练的意义明确的名字,才能简化程序语句,易于对程序功能的理解。语句,易于对程序功能的理解。 9.2 程序设计风格 程序的注释程序的注释 正确的注释能够帮助读者理解程序,为测试和维正确的注释能够帮助读者理解程序,为测试和维护阶段提供明确的指导。护阶段提供明确的指导。注释行的数量占到整个源程序的注释行的数量占到整个源程序的1/31/3到到1/21/2。 注释分为序言性注释和功能性注释。注释分为序言性注释和功能性注释。序言性注释通常置于每个程序模块的开头部分,序言性注释通
10、常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身它应当给出程序的整体说明,对于理解程序本身具有引导作用。具有引导作用。 9.2 程序设计风格序言性注释序言性注释有些软件开发部门对序言性注释做了明确而严格的规定,有些软件开发部门对序言性注释做了明确而严格的规定,要求程序编制者逐项列出。要求程序编制者逐项列出。 (1)(1) 程序标题。程序标题。(2)(2) 有关本模块功能和目的的说明。有关本模块功能和目的的说明。(3)(3) 主要算法。主要算法。(4)(4) 接口说明:包括调用形式,参数描述,子程序清单。接口说明:包括调用形式,参数描述,子程序清单。(5)(5) 有关数据
11、描述:重要的变量及其用途,约束或限制条件,有关数据描述:重要的变量及其用途,约束或限制条件,以及其他有关信息。以及其他有关信息。(6)(6) 模块位置:在哪一个源文件中,或隶属于哪一个软件包。模块位置:在哪一个源文件中,或隶属于哪一个软件包。(7)(7) 开发简历:模块设计者,复审者,复审日期,修改日期、开发简历:模块设计者,复审者,复审日期,修改日期、有关说明等。有关说明等。9.2 程序设计风格 功能性注释功能性注释 功能性注释嵌在源程序体中,用以描述其后的语句或程序功能性注释嵌在源程序体中,用以描述其后的语句或程序段,也就是解释下面要段,也就是解释下面要“做什么做什么”,或是执行了下面的语
12、,或是执行了下面的语句会怎么样。句会怎么样。例如,下面的注释行仅仅重复了后面的语句,对于理解它例如,下面的注释行仅仅重复了后面的语句,对于理解它的工作并没有什么作用。的工作并没有什么作用。/ /* * Add amount to total Add amount to total * */ /total = amounttotal = amounttotal; total; 如果注明把月销售额计入年度总额,便使读者理解了下面语如果注明把月销售额计入年度总额,便使读者理解了下面语句的意图:句的意图: / /* * Add monthly-sales to annual-total Add mon
13、thly-sales to annual-total * */ / total = amount total = amounttotal;total;9.2 程序设计风格 功能性注释功能性注释 书写功能性注释,要注意以下几点。书写功能性注释,要注意以下几点。(1)(1)用于描述一段程序,而不是每一个语句。用于描述一段程序,而不是每一个语句。(2)(2)用缩进和空行,使程序与注释容易区别。用缩进和空行,使程序与注释容易区别。(3)(3)注释要正确。注释要正确。9.2 程序设计风格 视觉组织视觉组织空格、空行和移行空格、空行和移行 空格空格:恰当地利用空格,可以突出运算的优先性,:恰当地利用空格,
14、可以突出运算的优先性,避免发生运算的错误。例如,将表达式避免发生运算的错误。例如,将表达式 (a(a17)&!(b17)&!(b49)|c 49)|c 写成写成 (a(a17) & !(b17) & !(b49) | c 49) | c 就更清楚。就更清楚。空行空行:自然的程序段之间可用空行隔开。:自然的程序段之间可用空行隔开。 9.2 程序设计风格 视觉组织视觉组织空格、空行和移空格、空行和移行行 移行移行:移行也叫做向右缩格。对于选择:移行也叫做向右缩格。对于选择语句和循环语句,把其中的程序段语句语句和循环语句,把其中的程序段语句向右做阶梯式移行,可使程序的逻辑结向右做阶梯式移行,可使程序
15、的逻辑结构更加清晰,层次更加分明。构更加清晰,层次更加分明。 9.2 程序设计风格 数据说明标准化数据说明标准化 为了使程序中数据说明更易于理解和维护,在编为了使程序中数据说明更易于理解和维护,在编写程序时,需要注意数据说明的风格。写程序时,需要注意数据说明的风格。(1) (1) 数据说明的次序应当规范化,使数据属性容易数据说明的次序应当规范化,使数据属性容易查找,也有利于测试、排错和维护。查找,也有利于测试、排错和维护。 常量说明。常量说明。 简单变量类型说明。简单变量类型说明。 数组说明。数组说明。 公用数据块说明。公用数据块说明。 所有的文件说明。所有的文件说明。9.2 程序设计风格 数
16、据说明标准化数据说明标准化 (2) (2) 当多个变量名用一个语句说明时,应当对这些当多个变量名用一个语句说明时,应当对这些变量按字母顺序排列。例如,将变量按字母顺序排列。例如,将 int sizeint size,lengthlength,widthwidth,costcost,price;price; 进行如下改写更好。进行如下改写更好。 int costint cost,lengthlength,priceprice,sizesize,width; width; (3) (3) 对于复杂的数据结构,应当使用注释对其进行对于复杂的数据结构,应当使用注释对其进行说明。说明。9.2 程序设计风
17、格 语句结构简单化语句结构简单化 在编码阶段,语句结构要力求简单、直接,不能在编码阶段,语句结构要力求简单、直接,不能为了片面追求效率而使语句复杂化。为了片面追求效率而使语句复杂化。(1) (1) 在一行内只写一条语句,并且采取适当的移行在一行内只写一条语句,并且采取适当的移行格式,使程序的逻辑和功能变得更加明确。例如,格式,使程序的逻辑和功能变得更加明确。例如,下面程序的可读性很差。下面程序的可读性很差。 for (i=1; i=n-1; i+) t=i; for (j=i+1; for (i=1; i=n-1; i+) t=i; for (j=i+1; j=n; j+) if (ajat)
18、 t=j; if (t!=i) j=n; j+) if (aj= 0 & char = 0 & char 8080字符)要分成多行写,长表字符)要分成多行写,长表达式要在低优先级操作符处划分新行,操作符放达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。使排版整齐,语句可读。(4) (4) 循环、判断等语句中的条件测试若有较长的表循环、判断等语句中的条件测试若有较长的表达式,则要进行适应的划分,长表达式要在低优达式,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。先级
19、操作符处划分新行,操作符放在新行之首。1.1.版面版面(5) (5) 不允许把多个短语句写在一行中,即一行只写不允许把多个短语句写在一行中,即一行只写一条语句。一条语句。(6) if(6) if、whilewhile、forfor、defaultdefault、dodo等语句自占一等语句自占一行。行。(7) (7) 只用空格键,不要使用只用空格键,不要使用TABTAB键。以免用不同的键。以免用不同的编辑器阅读程序时,因编辑器阅读程序时,因TABTAB键所设置的空格数目不键所设置的空格数目不同而造成程序布局不整齐。同而造成程序布局不整齐。(8) (8) 函数或过程的开始、结构的定义及循环、判断函
20、数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格,等语句中的代码都要采用缩进风格,casecase语句下语句下的情况处理语句也要遵从语句缩进要求。的情况处理语句也要遵从语句缩进要求。1.1.版面版面(9) (9) 程序块的分界符(如程序块的分界符(如C CC+C+语言的大括号语言的大括号 和和 )应各独占一行并且位于同一列,同时与)应各独占一行并且位于同一列,同时与引用它们的语句左对齐。引用它们的语句左对齐。 在函数体开始、类定义、结构定义、枚举定义以在函数体开始、类定义、结构定义、枚举定义以及及ifif、forfor、dodo、whilewhile、switchswitc
21、h、casecase语句中的语句中的程序都要采用如上的缩进方式。程序都要采用如上的缩进方式。1.1.版面版面 例如,下面的程例如,下面的程序段不符合规范。序段不符合规范。 应书写为以下格应书写为以下格式:式: 1.1.版面版面(10) (10) 在两个以上的变量、常量间进行判等操作时,在两个以上的变量、常量间进行判等操作时,操作符之前、之后或者前后要加空格;进行非判操作符之前、之后或者前后要加空格;进行非判等操作时,如果是关系密切的操作符(如等操作时,如果是关系密切的操作符(如- - 、:),后面不应加空格。),后面不应加空格。 由于留空格所产生的清晰性是相对的,所以,在由于留空格所产生的清晰
22、性是相对的,所以,在已非常清晰的语句中没有必要再留空格,如括号已非常清晰的语句中没有必要再留空格,如括号内侧(左括号后面和右括号前面)不要加空格,内侧(左括号后面和右括号前面)不要加空格,多重括号间不必加空格。多重括号间不必加空格。2.2.注释注释 注释的原则是有助于对程序的阅读理解。注释的原则是有助于对程序的阅读理解。(1) (1) 一般情况下,注释量一般控制在一般情况下,注释量一般控制在20%20%到到50%50%之间。之间。(2) (2) 说明性文件(如头文件说明性文件(如头文件.h.h文件、文件、.inc.inc文件、编文件、编译说明文件译说明文件.cfg.cfg等)头部应进行注释,注
23、释必须等)头部应进行注释,注释必须列出:版权说明、版本、生成日期、作者、内容、列出:版权说明、版本、生成日期、作者、内容、功能、与其他文件的关系、修改日志等,头文件功能、与其他文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。的注释中还应有函数功能简要说明。(3) (3) 源文件头部应进行注释,列出:版权说明、版源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的本号、生成日期、作者、模块目的/ /功能、主要函功能、主要函数及其功能、修改日志等。数及其功能、修改日志等。2.2.注释注释(4) (4) 函数头部应进行注释,列出:函数的目的函数头部应进行注释,列出:函
24、数的目的/ /功功能、输入参数、输出参数、返回值、调用关系能、输入参数、输出参数、返回值、调用关系(函数、表)等。(函数、表)等。(5) (5) 注释的内容要清楚、明了、含义准确,防止注注释的内容要清楚、明了、含义准确,防止注释二义性。释二义性。(6) (6) 避免在注释中使用缩写,特别是非常用缩写。避免在注释中使用缩写,特别是非常用缩写。在使用缩写时或之前,应对缩写进行必要说明。在使用缩写时或之前,应对缩写进行必要说明。(7) (7) 代码的注释应放在代码的上方或右方(对单条代码的注释应放在代码的上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于语句的注释)相邻位置,不可放在下面,
25、如放于上方则需与其上面的代码用空行隔开。上方则需与其上面的代码用空行隔开。2.2.注释注释(8) (8) 对于所有有物理含义的变量、常量,如果其命对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加注释,名不是充分自注释的,在声明时都必须加注释,说明其物理含义。变量、常量、宏的注释放在其说明其物理含义。变量、常量、宏的注释放在其上方相邻位置或右方。上方相邻位置或右方。(9) (9) 如果数据结构声明(包括数组、结构、类、枚如果数据结构声明(包括数组、结构、类、枚举等)不是充分自注释的,必须加以注释。对数举等)不是充分自注释的,必须加以注释。对数据结构的注释应放在其上方相
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程概论 软件工程 概论 人杰 软件 实现 ppt 课件
限制150内