1、1软件工程软件工程项目管理项目管理可行性与可行性与需求分析需求分析 系统系统设计设计编码编码测测试试维维护护软件工程与项目管理的主要环节软件工程与项目管理的主要环节第六章第六章 编码及代码审查编码及代码审查 3目录目录o程序设计语言程序设计语言o编码规约编码规约o代码审查代码审查46.1 程序设计语言程序设计语言o程序设计语言的分类:程序设计语言的分类:6.1.1 6.1.1 程序设计语言的分类程序设计语言的分类 语言的等级划分,程序设计语言可以分为语言的等级划分,程序设计语言可以分为机器语机器语言言、汇编语言汇编语言和和高级语言高级语言三类。三类。高级语言从应用特点上可以分为高级语言从应用特
2、点上可以分为基础语言基础语言(例:(例:FORTRANFORTRAN,COBOLCOBOL)、)、结构化语言结构化语言(例:(例:PASCAL PASCAL,C C)、)、专用语言专用语言(例:(例:PROLOGPROLOG,BLISSBLISS);从语言);从语言内在特点可以分为内在特点可以分为系统实现语言系统实现语言(例:(例:C C语言)、语言)、静态高级语言静态高级语言(例:(例:FORTRANFORTRAN、COBOLCOBOL)、)、块结构块结构高级语言高级语言(例:(例:PASCALPASCAL,ALGOLALGOL)、)、动态高级语动态高级语言言;从语言的执行方式划分:;从语言
3、的执行方式划分:解释语言和编译语解释语言和编译语言言。高级语言有:高级语言有:JavaJava、C C、C+C+、VCVC、C#C#、VBVB等。等。6.1.2 6.1.2 程序设计语言的特性程序设计语言的特性o 工程特性:工程特性:语言可移植性语言可移植性 开发工具的可用性开发工具的可用性 语言的可重用性语言的可重用性 语言的可维护性语言的可维护性 6.1.2 6.1.2 程序设计语言的特性程序设计语言的特性o 心理特性:心理特性:二义性二义性 简洁性简洁性 局部性和顺序性局部性和顺序性 传统性传统性86.1.3 编程语言的选择编程语言的选择o选择程序设计语言的标准选择程序设计语言的标准n
4、从用户方面考虑从用户方面考虑 若由用户自己维护软件,应选择用户熟若由用户自己维护软件,应选择用户熟 悉的程序设计语言。悉的程序设计语言。n 从程序员方面考虑从程序员方面考虑 软件开发人员的知识水平和心理因素等;软件开发人员的知识水平和心理因素等;9n 从软件的可移植性考虑从软件的可移植性考虑 如果目标系统将在不同的计算机环境下如果目标系统将在不同的计算机环境下运行,或者预期使用的寿命很长,则需运行,或者预期使用的寿命很长,则需要选择一种标准化程度高,并且程序可要选择一种标准化程度高,并且程序可移植性好的语言实现设计。移植性好的语言实现设计。n 从应用领域考虑从应用领域考虑不同的程序设计语言有着
5、不同的适用范不同的程序设计语言有着不同的适用范围。围。101 1、以下属于第三代程序设计语言的选项是(、以下属于第三代程序设计语言的选项是()。)。A.A.机器语言机器语言B.B.现代语言现代语言C.C.汇编语言汇编语言D.SQLD.SQL语言语言112 2、以下描述错误的是(、以下描述错误的是()。)。A.A.程序设计语言的特性和程序设计风格,会深刻程序设计语言的特性和程序设计风格,会深刻地影响软件的质量和可维护性地影响软件的质量和可维护性B.B.为了保证程序编码的质量,程序员必须深刻理为了保证程序编码的质量,程序员必须深刻理解、熟练掌握并正确地运用程序设计语言的特解、熟练掌握并正确地运用程
6、序设计语言的特性性C.C.高效的程序代码能缩短开发周期,并减少维护高效的程序代码能缩短开发周期,并减少维护代价代价D.D.只要程序设计语言选择的好就可以设计出高效只要程序设计语言选择的好就可以设计出高效的程序代码,对于程序的结构没有要求的程序代码,对于程序的结构没有要求123 3、以下属于选择程序设计语言的标准的选项是(以下属于选择程序设计语言的标准的选项是()。)。A.选择用户熟悉的程序设计语言选择用户熟悉的程序设计语言B.从程序员知识水平和心理因素等方面考虑从程序员知识水平和心理因素等方面考虑C.从软件的可移植性考虑从软件的可移植性考虑D.以上三项都属于以上三项都属于131、4GL语言属于
7、第三代程序设计语言(语言属于第三代程序设计语言()。)。2、程序设计这一阶段的工作是把详细设计中,具、程序设计这一阶段的工作是把详细设计中,具体的过程性描述内容,翻译成某一种程序设计体的过程性描述内容,翻译成某一种程序设计语言编写的源程序(语言编写的源程序()。)。3、选择程序设计语言只需要从程序员技术层面考、选择程序设计语言只需要从程序员技术层面考虑(虑()。)。4、高效的程序代码能缩短开发周期,并减少维护、高效的程序代码能缩短开发周期,并减少维护代价(代价()。)。5、为了保证程序编码的质量,程序员必须深刻理、为了保证程序编码的质量,程序员必须深刻理解、熟练掌握并正确地运用所有程序设计语言
8、解、熟练掌握并正确地运用所有程序设计语言的特性。此外,还要求源程序具有良好的结构的特性。此外,还要求源程序具有良好的结构和良好的程序设计风格(和良好的程序设计风格()。)。14156.2 编程规约编程规约o程序设计风格程序设计风格n 也称编程风格。指人们编制程序时所表也称编程风格。指人们编制程序时所表现出来的特点、习惯、逻辑思路。良好现出来的特点、习惯、逻辑思路。良好的编程风格可以减少编码错误,减少读的编程风格可以减少编码错误,减少读程序的时间,从而提高软件的开发效率。程序的时间,从而提高软件的开发效率。161.源程序文档化源程序文档化 2.数据说明数据说明3.语句结构语句结构 4.满足运行工
9、程学的输入输出风格满足运行工程学的输入输出风格 注意从这几个方面培养和学习良好的注意从这几个方面培养和学习良好的编程风格,使编出的程序清晰易读,编程风格,使编出的程序清晰易读,易于测试与维护,从而提高软件的质易于测试与维护,从而提高软件的质量。量。主要从以下方面注意编程主要从以下方面注意编程风格风格17(1)恰当的标识符)恰当的标识符1.源程序文档化源程序文档化18(2)适当的注释)适当的注释o夹在程序中的注释是程序员与日后的夹在程序中的注释是程序员与日后的程序读者之间通信的重要手段。注释程序读者之间通信的重要手段。注释决不是可有可无的。决不是可有可无的。o一些正规的程序文本中,注释行的数一些
10、正规的程序文本中,注释行的数量占到整个源程序的量占到整个源程序的13到到12,甚至更多。甚至更多。19(3)标准的书写格式)标准的书写格式o书写表达式时,恰当使用空格或圆括号书写表达式时,恰当使用空格或圆括号等作隔离符。例如等作隔离符。例如 :应将应将(A(A17)ANDNOT(B17)ANDNOT(B49)ORC 49)ORC 写成写成(A(A17)AND NOT(B17)AND NOT(B49)OR C49)OR Co在注释段的周围加上边框。在注释段的周围加上边框。o用分层缩进的写法显示选择结构和循环用分层缩进的写法显示选择结构和循环20n 在设计阶段已经确定了数据结构的组织在设计阶段已经
11、确定了数据结构的组织及其复杂性。在编写程序时,则需要注及其复杂性。在编写程序时,则需要注意数据说明的风格意数据说明的风格n 为了使程序中数据说明更易于理解和维为了使程序中数据说明更易于理解和维护,必须注意以下几点:护,必须注意以下几点:2.数据说明数据说明21(1 1)数据说明的次序应当规范化)数据说明的次序应当规范化 在程序中数据说明,应按下列次序进行:在程序中数据说明,应按下列次序进行:常量说明常量说明 变量类型说明变量类型说明 1)整型量说明;)整型量说明;2)实型量说明;)实型量说明;3)字符量说明;)字符量说明;4)逻辑量说明)逻辑量说明 数组说明数组说明 公用数据块说明公用数据块说
12、明 所有的文件说明所有的文件说明 22(2 2)数据说明语句中变量安排有序化)数据说明语句中变量安排有序化n 当多个变量名在一个说明语句中说明时,当多个变量名在一个说明语句中说明时,应当对这些变量按字母的顺序排列。带标应当对这些变量按字母的顺序排列。带标号的全程数据也应当按字母的顺序排列。号的全程数据也应当按字母的顺序排列。(3 3)使用注释说明复杂数据结构)使用注释说明复杂数据结构233.3.语句结构语句结构2425264.4.输入输出方法输入输出方法6.3.1 6.3.1 代码审查的目的和形式代码审查的目的和形式o 代码审查是一个开发人员与架构师集中与讨代码审查是一个开发人员与架构师集中与
13、讨论代码的过程。代码审查就是以组为单位阅论代码的过程。代码审查就是以组为单位阅读代码,是一系列规程和错误检查技术的集读代码,是一系列规程和错误检查技术的集合。合。代码审查是一种非常有效的程序验证技代码审查是一种非常有效的程序验证技术,对于典型的程序来说,可以查出最多达术,对于典型的程序来说,可以查出最多达7070的逻辑设计错误和编码错误。的逻辑设计错误和编码错误。o 代码审查的形式主要有几种代码审查的形式主要有几种:同行评审;管同行评审;管理评审;单人评审;代码检查。理评审;单人评审;代码检查。6.3.2 6.3.2 代码审查小组和代码审查内容代码审查小组和代码审查内容o 代码审查的小组成员一
14、般由三至五人组成,代码审查的小组成员一般由三至五人组成,大型项目评审组人员最多可能会多达大型项目评审组人员最多可能会多达1010人左人左右,但通常是由四人组成。右,但通常是由四人组成。o 除项目评审组人员外,评审活动中还有的角除项目评审组人员外,评审活动中还有的角色是项目经理和质量保证人员。色是项目经理和质量保证人员。o 代码审查过程中,在代码检查的时间和地点代码审查过程中,在代码检查的时间和地点上的选择上,应避免所有的外部干扰。上的选择上,应避免所有的外部干扰。o 代码的审查内容主要有:代码的编写规范代码的审查内容主要有:代码的编写规范(注释的书写格式、命名规范、代码组织结(注释的书写格式、
15、命名规范、代码组织结构)、技术处理规范(异常处理、日志处构)、技术处理规范(异常处理、日志处理)、业务实现等。理)、业务实现等。6.3.3 6.3.3 代码审查过程代码审查过程1.1.代码审查输入及入口准则:代码审查输入及入口准则:2.2.代码审查的步骤代码审查的步骤 制定评审计划;制定评审计划;评审准备;评审准备;评审会议;评审会议;对评审结果采取行动;对评审结果采取行动;评审结果跟踪;评审结果跟踪;提交和归档。提交和归档。30程序设计程序设计 课后习题课后习题1.1.以下属于第三代程序设计语言的以下属于第三代程序设计语言的选项是(选项是()。)。A.A.机器语言机器语言B.B.现代语言现代
16、语言C.C.汇编语言汇编语言D.SQLD.SQL语言语言31程序设计程序设计 课后习题课后习题2.2.结构化程序设计主要强调的是结构化程序设计主要强调的是()。)。A A程序的规模程序的规模 B.B.程序的效率程序的效率C.C.程序设计语言的先进性程序设计语言的先进性 D.D.程序易读性程序易读性D32程序设计程序设计 课后习题课后习题3.3.以下符合编码风格要求的是以下符合编码风格要求的是()。)。A.A.尽可能把程序编得短些尽可能把程序编得短些 B.B.用有意义的变量名用有意义的变量名C.C.注释越少越好注释越少越好 D.D.尽可能多地使用尽可能多地使用GOTOGOTO语句语句B334.4
17、.下列属于标准的书写格式下列属于标准的书写格式()。)。A.A.书写时适当使用空格分隔书写时适当使用空格分隔B.B.一行写入多条语句一行写入多条语句C.C.嵌套结构不使用分层缩进的写法嵌套结构不使用分层缩进的写法D.D.程序中不加注释程序中不加注释A345.5.以下描述错误的是(以下描述错误的是()。)。A.程序设计语言的特性和程序设计风格,会程序设计语言的特性和程序设计风格,会深刻地影响软件的质量和可维护性深刻地影响软件的质量和可维护性B.为了保证程序编码的质量,程序员必须深为了保证程序编码的质量,程序员必须深刻理解、熟练掌握并正确地运用程序设计语言刻理解、熟练掌握并正确地运用程序设计语言的
18、特性的特性C.高效的程序代码。能缩短开发周期,并减高效的程序代码。能缩短开发周期,并减少维护代价少维护代价D.只要程序设计语言选择的好就可以设计出只要程序设计语言选择的好就可以设计出高效的程序代码,对于程序的结构没有要求高效的程序代码,对于程序的结构没有要求356.6.以下属于选择程序设计语言的标以下属于选择程序设计语言的标准的选项是(准的选项是()。)。A.A.选择用户熟悉的程序设计语言选择用户熟悉的程序设计语言B.B.从程序员知识水平和心理因素等从程序员知识水平和心理因素等方面考虑方面考虑C.C.从软件的可移植性考虑从软件的可移植性考虑D.D.以上三项都属于以上三项都属于361.1.高效的
19、程序代码。能缩短开发周高效的程序代码。能缩短开发周期,并减少维护代价。(期,并减少维护代价。()2.2.程序设计语言的特性和程序设计程序设计语言的特性和程序设计风格,会深刻地影响软件的质量风格,会深刻地影响软件的质量和可维护性。(和可维护性。()对对对对373.3.程序设计语言中应绝对禁止使用程序设计语言中应绝对禁止使用GOTOGOTO语句。(语句。()4.4.随着软件技术的发展,人们逐渐随着软件技术的发展,人们逐渐认识到编码不仅要强调效率还要认识到编码不仅要强调效率还要强调清晰。(强调清晰。()错错对对385.4 GL5.4 GL语言属于第三代程序设计语言属于第三代程序设计 语言。(语言。(
20、)6.6.程序设计这一阶段的工作是把详程序设计这一阶段的工作是把详细设计中,具体的过程性描述内细设计中,具体的过程性描述内容,翻译成某一种程序设计语言容,翻译成某一种程序设计语言编写的源程序编写的源程序 。(。()错错对对397.7.选择程序设计语言只需要从程序员选择程序设计语言只需要从程序员技术层面考虑技术层面考虑 。()8.8.为了保证程序编码的质量,程序员为了保证程序编码的质量,程序员必须深刻理解、熟练掌握并正确地必须深刻理解、熟练掌握并正确地运用所有程序设计语言的特性。此运用所有程序设计语言的特性。此外,还要求源程序具有良好的结构外,还要求源程序具有良好的结构和良好的程序设计风格和良好的程序设计风格。()错错错错409.程序设计风格指人们编制程序时所程序设计风格指人们编制程序时所 表现出来的特点、习惯、逻辑思路。表现出来的特点、习惯、逻辑思路。()1010.编码时应从以下几方面注意编程编码时应从以下几方面注意编程风格:源程序文档化、数据说明、风格:源程序文档化、数据说明、语句结构、满足运行工程学的输入语句结构、满足运行工程学的输入输出风格输出风格。()对对对对