软件工程实践编程幻灯片.ppt
《软件工程实践编程幻灯片.ppt》由会员分享,可在线阅读,更多相关《软件工程实践编程幻灯片.ppt(144页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程实践编程第1页,共144页,编辑于2022年,星期三第五讲软件实现第2页,共144页,编辑于2022年,星期三内容和目的n编程语言的选择 n编程风格n程序效率n编码要求n静态分析n代码审查n软件调试第3页,共144页,编辑于2022年,星期三编程(编码)n编程是设计的自然结果n编程语言的特性和编程风格会深刻地影响软件的重量和可维护性n软件实现是一个不断变换的过程:设计源程序目标代码机器码n为了保证程序编码的质量,程序员必须深刻理解、熟练掌握并正确地运用程序设计语言的特性。此外,还要求源程序具有良好的结构性和良好的程序设计风格。第4页,共144页,编辑于2022年,星期三编程的目的n编码
2、的目的n是使用选定的程序设计语言,把模块的过程性描述翻译为用该语言书写的源程序(源代码)模块的过程性描述 (不可执行的)源程序(可执行的)编码第5页,共144页,编辑于2022年,星期三结构化程序设计n结构化程序设计是一种设计程序的技术n它采用自顶向下逐步细化的设计方法和单入口(Single entry)单出口(Single exit)的控制结构n这种控制结构包括有:n顺序n选择n循环第6页,共144页,编辑于2022年,星期三结构化程序设计的原则1、使用语言中的顺序、选择、重复等有限的基本控制结构表示程序2、选用的控制结构只准许有一个入口和一个出口 3、程序语句组成容易识别的块(Block)
3、,每块只有一个入口和一个 出口4、复杂结构应该用基本控制结构进行组合嵌套来实现 5、严格控制GOTO语句第7页,共144页,编辑于2022年,星期三编程语言的选择n应用领域n算法及运算的复杂性n软件运行的环境n性能n数据结构的复杂性n软件开发组成员对该语言的熟悉程度第8页,共144页,编辑于2022年,星期三编程风格n程序必须是可以理解的n程序的风格应该强调简单和清晰n影响程序风格的因素有:n源程序文档化n数据说明的方法n语句的结构nI/O的方法第9页,共144页,编辑于2022年,星期三源程序文档化n选择好标识符(变量和标号)的名字n挑选有意义的标识符名字n安排注解n序言式注解(头文件)n功
4、能注解n使程序的结构一目了然n缩进第10页,共144页,编辑于2022年,星期三源程序文档化源程序文档化n n 标识符的命名标识符的命名n n 安排注释安排注释n n 程序的视觉组织程序的视觉组织第11页,共144页,编辑于2022年,星期三符号名的命名符号名的命名n n符号名即标识符,包括符号名即标识符,包括模块名模块名、变量名变量名、常量名常量名、标号名标号名、子程序名子程序名、数据区数据区名名以及以及缓冲区名缓冲区名等。等。n n这些名字应能反映它所代表的实际东西,这些名字应能反映它所代表的实际东西,应有一定实际意义应有一定实际意义。n n例如,表示次数的量用例如,表示次数的量用Time
5、s,表示总量,表示总量的用的用Total,表示平均值的用,表示平均值的用Average,表,表示和的量用示和的量用Sum等。等。第12页,共144页,编辑于2022年,星期三符号名的命名符号名的命名n n名字不是越长越好名字不是越长越好,应当选择精炼的意,应当选择精炼的意义明确的名字。义明确的名字。必要时可使用缩写名字必要时可使用缩写名字,但这时要注意缩写规则要一致,并且要但这时要注意缩写规则要一致,并且要给每一个名字加注释给每一个名字加注释。同时,在一个程。同时,在一个程序中,一个变量只应用于一种用途。序中,一个变量只应用于一种用途。n nNEW.BALANCE.ACCOUNTS.PAYAB
6、LE n nNBALAP n nN 第13页,共144页,编辑于2022年,星期三程序的注释程序的注释 n n夹在程序中的注释是程序员与日后的程夹在程序中的注释是程序员与日后的程序读者之间通信的重要手段。序读者之间通信的重要手段。n n注释决不是可有可无的。注释决不是可有可无的。n n一些正规的程序文本中,注释行的数一些正规的程序文本中,注释行的数量占到整个源程序的量占到整个源程序的13到到12,甚,甚至更多。至更多。n n注释分为序言性注释和功能性注释。注释分为序言性注释和功能性注释。第14页,共144页,编辑于2022年,星期三序言性注释(头文件)n n通常置于每个程序模块的开头部通常置于
7、每个程序模块的开头部分,分,它应当给出程序的整体说明它应当给出程序的整体说明,对于理解程序本身具有引导作用。对于理解程序本身具有引导作用。有些软件开发部门对序言性注释有些软件开发部门对序言性注释做了明确而严格的规定,要求程做了明确而严格的规定,要求程序编制者逐项列出。序编制者逐项列出。第15页,共144页,编辑于2022年,星期三头文件的内容头文件的内容n n 程序标题程序标题程序标题程序标题;n n 有关本模块有关本模块有关本模块有关本模块功能和目的功能和目的功能和目的功能和目的的的的的说明说明说明说明;n n 主要算法主要算法主要算法主要算法;n n 接口说明接口说明接口说明接口说明:包括
8、调用形式,参数描述,子程序清单;:包括调用形式,参数描述,子程序清单;:包括调用形式,参数描述,子程序清单;:包括调用形式,参数描述,子程序清单;n n 有关数据描述有关数据描述有关数据描述有关数据描述:重要的变量及其用途,约束或限制条件,以:重要的变量及其用途,约束或限制条件,以:重要的变量及其用途,约束或限制条件,以:重要的变量及其用途,约束或限制条件,以及其它有关信息;及其它有关信息;及其它有关信息;及其它有关信息;n n 模块位置模块位置模块位置模块位置:在哪一个源文件中,或隶属于哪一个软件包;:在哪一个源文件中,或隶属于哪一个软件包;:在哪一个源文件中,或隶属于哪一个软件包;:在哪一
9、个源文件中,或隶属于哪一个软件包;n n 开发简历开发简历开发简历开发简历:模块设计者,复审者,复审日期,修改日期及有:模块设计者,复审者,复审日期,修改日期及有:模块设计者,复审者,复审日期,修改日期及有:模块设计者,复审者,复审日期,修改日期及有关说明等。关说明等。关说明等。关说明等。第16页,共144页,编辑于2022年,星期三功能性注释n n功能性注释嵌在源程序体中,用以描述功能性注释嵌在源程序体中,用以描述其后的语句或程序段是在做什么工作,其后的语句或程序段是在做什么工作,或是执行了下面的语句会怎么样。而不或是执行了下面的语句会怎么样。而不要解释下面怎么做。要解释下面怎么做。n n例
10、如,例如,/*ADD AMOUNT TO TOTAL*/TOTAL=AMOUNTTOTAL不好。不好。第17页,共144页,编辑于2022年,星期三功能性注释n n如果注明把月销售额计入年度总额,便使读者理解如果注明把月销售额计入年度总额,便使读者理解如果注明把月销售额计入年度总额,便使读者理解如果注明把月销售额计入年度总额,便使读者理解了下面语句的意图:了下面语句的意图:了下面语句的意图:了下面语句的意图:/*ADD MONTHLY-SALES TO ANNUAL-TOTAL/*ADD MONTHLY-SALES TO ANNUAL-TOTAL*/*/TOTAL=AMOUNTTOTAL=AM
11、OUNTTOTALTOTALn n要点要点要点要点n n 描述一段程序,而不是每一个语句;描述一段程序,而不是每一个语句;n n 用缩进和空行,使程序与注释容易区别;用缩进和空行,使程序与注释容易区别;n n 注释要正确。注释要正确。第18页,共144页,编辑于2022年,星期三视觉组织空格、空行和移行n n恰当地利用恰当地利用空格空格,可以,可以突出运算的优先突出运算的优先性性,避免发生运算的错误。,避免发生运算的错误。n n例如例如,将表达式,将表达式(A17)ANDNOT(B49)ORC写成写成(A17)AND NOT(B49)OR Cn n自然的程序段之间可用自然的程序段之间可用空行空
12、行隔开;隔开;第19页,共144页,编辑于2022年,星期三视觉组织n n移行移行移行移行也叫做也叫做也叫做也叫做向右缩格向右缩格向右缩格向右缩格。它是指程序中的各行不必。它是指程序中的各行不必都在左端对齐,都从第一格起排列。这样做使程都在左端对齐,都从第一格起排列。这样做使程序完全分不清层次关系。序完全分不清层次关系。n n对于对于对于对于选择语句选择语句选择语句选择语句和和循环语句循环语句循环语句循环语句,把其中的程序段语句向右,把其中的程序段语句向右,把其中的程序段语句向右,把其中的程序段语句向右做做做做阶梯式移行阶梯式移行。使程序的逻辑结构更加清晰。使程序的逻辑结构更加清晰。n n例如
13、,两重选择结构嵌套,写成下面的移行形式,层例如,两重选择结构嵌套,写成下面的移行形式,层例如,两重选择结构嵌套,写成下面的移行形式,层例如,两重选择结构嵌套,写成下面的移行形式,层次就清楚得多。次就清楚得多。次就清楚得多。次就清楚得多。第20页,共144页,编辑于2022年,星期三视觉组织 IFIF()THENTHEN IF IF()THENTHEN ELSE ELSE ENDIF ENDIF ELSEELSE ENDIFENDIF第21页,共144页,编辑于2022年,星期三数据说明n数据说明的次序应该规范化n多个变量说明时最好按字典数顺序排列n对复杂结构用注解说明第22页,共144页,编辑
14、于2022年,星期三数据说明数据说明n n在设计阶段已经确定了数据结构的组织在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注及其复杂性。在编写程序时,则需要注意数据说明的风格。意数据说明的风格。n n为了使程序中数据说明更易于理解和维为了使程序中数据说明更易于理解和维护,必须注意以下几点:护,必须注意以下几点:1.数据说明的次序应当规范化数据说明的次序应当规范化 2.说明语句中变量安排有序化说明语句中变量安排有序化 3.使用注释说明复杂数据结构使用注释说明复杂数据结构第23页,共144页,编辑于2022年,星期三数据说明的次序应当规范化n n数据说明次序规范化,使数据属性容
15、易数据说明次序规范化,使数据属性容易查找,也有利于测试,排错和维护。查找,也有利于测试,排错和维护。n n原则上,数据说明的次序与语法无关,原则上,数据说明的次序与语法无关,其次序是任意的。但出于阅读、理解和其次序是任意的。但出于阅读、理解和维护的需要,最好使其规范化,使说明维护的需要,最好使其规范化,使说明的先后次序固定。的先后次序固定。第24页,共144页,编辑于2022年,星期三数据说明的次序应当规范化n n在在FORTRAN程序中程序中数据说明次序数据说明次序 常量说明常量说明 简单变量类型说明简单变量类型说明 数组说明数组说明数组说明数组说明 公用数据块说明公用数据块说明公用数据块说
16、明公用数据块说明 所有的文件说明所有的文件说明所有的文件说明所有的文件说明n n在类型说明中还可进在类型说明中还可进一步要求按如下顺序一步要求按如下顺序排列排列 整型量说明整型量说明整型量说明整型量说明 实型量说明实型量说明实型量说明实型量说明 字符量说明字符量说明字符量说明字符量说明 逻辑量说明逻辑量说明逻辑量说明逻辑量说明第25页,共144页,编辑于2022年,星期三说明语句中变量安排有序化n n当当多个变量名在一个说明语句中说明多个变量名在一个说明语句中说明时,时,应当对这些变量应当对这些变量按字母的顺序排列按字母的顺序排列。带。带标号的全程数据标号的全程数据(如如FORTRAN的公用块
17、的公用块)也应当按字母的顺序排列。也应当按字母的顺序排列。n n例如,把例如,把 integer size,length,width,cost,price写成写成 integer cost,length,price,size,width 第26页,共144页,编辑于2022年,星期三使用注释说明复杂数据结构n n如果设计了一个复杂的数据结构,应当如果设计了一个复杂的数据结构,应当使用注释来说明在程序实现时这个数据使用注释来说明在程序实现时这个数据结构的固有特点。结构的固有特点。n n例如例如,对对PL/1的链表结构和的链表结构和Pascal中用户中用户自定义的数据类型,都应当在注释中做自定义的
18、数据类型,都应当在注释中做必要的补充说明。必要的补充说明。第27页,共144页,编辑于2022年,星期三语句结构n每个语句应该简单直接,不应该为提高效率而把语句复杂化n使程序简单易懂n避免采用复杂的条件语句n不要用“否定”条件的条件语句n避免多重的循环嵌套或条件嵌套n用括号使逻辑表达式或算术表达式更为清晰n用空格及有意义的符号使语句内容清晰明确n反问自己“如果这程序不是我编的,我能看懂吗?”第28页,共144页,编辑于2022年,星期三语句结构n n在设计阶段确定了软件的逻辑流结构,在设计阶段确定了软件的逻辑流结构,但构造单个语句则是编码阶段的任务。但构造单个语句则是编码阶段的任务。语句构造力
19、求简单,直接,不能为了片语句构造力求简单,直接,不能为了片面追求效率而使语句复杂化。面追求效率而使语句复杂化。第29页,共144页,编辑于2022年,星期三语句结构n1.在一行内只写一条语句在一行内只写一条语句n在一行内只写一条语句,并且采取适当的移在一行内只写一条语句,并且采取适当的移行格式,使程序的逻辑和功能变得更加明确。行格式,使程序的逻辑和功能变得更加明确。n许多程序设计语言允许许多程序设计语言允许在一行内写多个语句在一行内写多个语句。但这种方式但这种方式会使程序可读性变差会使程序可读性变差。因而不可。因而不可取。取。第30页,共144页,编辑于2022年,星期三语句结构n n例如,有
20、一段排序程序例如,有一段排序程序例如,有一段排序程序例如,有一段排序程序FOR I:=1 TO NFOR I:=1 TO N1 DO BEGIN T:=I1 DO BEGIN T:=I;FOR J:=IFOR J:=I1 TO N DO IF AJAT THEN T:=JAT THEN T:=J;IF TI IF TI THEN BEGIN WORK:=ATTHEN BEGIN WORK:=AT;AT:=AIAT:=AI;AI:=WORKAI:=WORK;END ENDEND END;n n由于一行中包括了多个语句,掩盖了程序的循环由于一行中包括了多个语句,掩盖了程序的循环结构和条件结构,使其
21、可读性变得很差。结构和条件结构,使其可读性变得很差。第31页,共144页,编辑于2022年,星期三语句结构FOR I:=1 TO NFOR I:=1 TO N-1 DO 1 DO /改进布局改进布局改进布局改进布局 BEGIN BEGIN T:=I T:=I;FOR J:=I FOR J:=I1 TO N DO1 TO N DO IF AJ IF AJAT THEN T:=JAT THEN T:=J;IF TI THEN IF TI THEN BEGIN BEGIN WORK:=AT WORK:=AT;AT:=AI AT:=AI;AI:=WORK AI:=WORK;END END END EN
22、D;第32页,共144页,编辑于2022年,星期三语句结构n n2.程序编写首先应当考虑清晰性n n程序编写首先应当考虑清晰性,不要刻意追求技巧性,使程序编程序编写首先应当考虑清晰性,不要刻意追求技巧性,使程序编程序编写首先应当考虑清晰性,不要刻意追求技巧性,使程序编程序编写首先应当考虑清晰性,不要刻意追求技巧性,使程序编写得过于紧凑。写得过于紧凑。写得过于紧凑。写得过于紧凑。n n例如,有一个用例如,有一个用例如,有一个用例如,有一个用 C C 语句写出的程序段:语句写出的程序段:语句写出的程序段:语句写出的程序段:AI=AIAI=AIATAT;AT=AIAT=AIATAT;AI=AIAI=
23、AIATAT;n n此段程序可能不易看懂,有时还需用实际数据试验一下。此段程序可能不易看懂,有时还需用实际数据试验一下。此段程序可能不易看懂,有时还需用实际数据试验一下。此段程序可能不易看懂,有时还需用实际数据试验一下。n n实际上,这段程序的功能就是交换实际上,这段程序的功能就是交换实际上,这段程序的功能就是交换实际上,这段程序的功能就是交换AIAI和和和和ATAT中的内容。目的是为了节省一个中的内容。目的是为了节省一个中的内容。目的是为了节省一个中的内容。目的是为了节省一个工作单元。如果改一下:工作单元。如果改一下:工作单元。如果改一下:工作单元。如果改一下:WORK=ATWORK=AT;
24、AT=AIAT=AI;AI=WORKAI=WORK;就能让读者一目了然了。就能让读者一目了然了。就能让读者一目了然了。就能让读者一目了然了。第33页,共144页,编辑于2022年,星期三语句结构n n3.程序要能直截了当地说明程序员的用意。n n程序编写得要简单,写清楚,直截了当地说明程序员的用程序编写得要简单,写清楚,直截了当地说明程序员的用程序编写得要简单,写清楚,直截了当地说明程序员的用程序编写得要简单,写清楚,直截了当地说明程序员的用意。意。意。意。n n例如,例如,例如,例如,for(for(i i=1;=1;i i=n n;i i+)+)for(for(j j=1;=1;j j=n
25、 n;j j+)+)V V i i j j (i ij j)*()*(j ji i)除法运算()在除数和被除数都是整型量时,其结果除法运算()在除数和被除数都是整型量时,其结果除法运算()在除数和被除数都是整型量时,其结果除法运算()在除数和被除数都是整型量时,其结果只取整数部分,而得到整型量。只取整数部分,而得到整型量。只取整数部分,而得到整型量。只取整数部分,而得到整型量。第34页,共144页,编辑于2022年,星期三语句结构n n 当当当当 i ij j 时时时时,i i/j j=0=0 当当当当 j ji i 时时时时,j j/i i=0=0 得到的数组得到的数组得到的数组得到的数组V
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 实践 编程 幻灯片
限制150内