欢迎来到天天文库
浏览记录
ID:39962645
大小:1.65 MB
页数:175页
时间:2019-07-16
《ch4软件编码和软件测试》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章软件编码和软件测试本章内容:l结构化程序设计(程序设计语言的选择程序设计风格)l软件测试目标l测试方法l测试步骤l设计测试方案l测试原则和测试策略l软件调试、验证与确认l软件测试文档重点:l程序设计风格l设计软件测试方案4.1结构化程序设计结构化程序设计(StructuredProgramming,SP)仅采用顺序、选择、重复三种基本控制结构;每种基本结构只有一个入口、一个出口;将这三种基本控制结构根据程序的逻辑,嵌套或组合成结构化程序,完成预定的功能。结构化程序设计的特点源程序有清晰性,并能较好地适合自顶向下或自底向上的程序设计技术。在详细设计阶段,使系统结构具有模块化和清
2、晰性的特性。在软件编码阶段,使软件易于理解、修改,便于重复使用。4.1.1程序设计语言的选择1.程序设计语言的分类(1)面向机器语言:机器语言和汇编语言。(2)高级程序设计语言2.高级语言选用的实用标准(1)项目的应用领域(2)软件开发环境(3)根据系统用户的要求来选择(4)软件开发人员的知识4.1.2程序设计风格源程序文档编写规则1.源程序文档编写时,其标识符名称、注解和程序布局等要合理。2.数据说明3.语句构造要简单直接4.输入输出语句5.程序效率程序设计主要应考虑的是程序的正确性、可理解性、可测试性和可维护性。程序的注释夹在程序中的注释是程序员与日后的程序读者之间通信的重要手
3、段。注释决不是可有可无的。一些正规的程序文本中,注释行的数量占到整个源程序的1/3到1/2,甚至更多。注释分为序言性注释和功能性注释。序言性注释通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身具有引导作用。有些软件开发部门对序言性注释做了明确而严格的规定,要求程序编制者逐项列出。有关项目包括:程序标题;有关本模块功能和目的的说明;主要算法;接口说明:包括调用形式,参数描述,子程序清单;有关数据描述:重要的变量及其用途,约束或限制条件,以及其它有关信息;模块位置:在哪一个源文件中,或隶属于哪一个软件包;开发简历:模块设计者,复审者,复审日期,修改日期及有关说
4、明等。功能性注释功能性注释嵌在源程序体中,用以描述其后的语句或程序段是在做什么工作,或是执行了下面的语句会怎么样。而不要解释下面怎么做。例如,/*ADDAMOUNTTOTOTAL*/TOTAL=AMOUNT+TOTAL不好。如果注明把月销售额计入年度总额,便使读者理解了下面语句的意图:/*ADDMONTHLY-SALESTOANNUAL-TOTAL*/TOTAL=AMOUNT+TOTAL要点描述一段程序,而不是每一个语句;用缩进和空行,使程序与注释容易区别;注释要正确。语句结构在设计阶段确定了软件的逻辑流结构,但构造单个语句则是编码阶段的任务。语句构造力求简单、直接,不能为了片
5、面追求效率而使语句复杂化。在一行内只写一条语句在一行内只写一条语句,并且采取适当的移行格式,使程序的逻辑和功能变得更加明确。许多程序设计语言允许在一行内写多个语句。但这种方式会使程序可读性变差。因而不可取。例如,有一段排序程序FORI:=1TON-1DOBEGINT:=I;FORJ:=I+1TONDOIFA[J]<A[T]THENT:=J;IFT≠ITHENBEGINWORK:=A[T];A[T]:=A[I];A[I]:=WORK;ENDEND;由于一行中包括了多个语句,掩盖了程序的循环结构和条件结构,使其可读性变得很差。FORI:=1TON-1DO//改进布局BEGINT:=I
6、;FORJ:=I+1TONDOIFA[J]<A[T]THENT:=J;IFT≠ITHENBEGINWORK:=A[T];A[T]:=A[I];A[I]:=WORK;ENDEND;程序编写首先应当考虑清晰性程序编写首先应当考虑清晰性,不要刻意追求技巧性,使程序编写得过于紧凑。例如,有一个用C语句写出的程序段:A[I]=A[I]+A[T];A[T]=A[I]-A[T];A[I]=A[I]-A[T];此段程序可能不易看懂,有时还需用实际数据试验一下。实际上,这段程序的功能就是交换A[I]和A[T]中的内容。目的是为了节省一个工作单元。如果改一下:WORK=A[T];A[T]=A[I
7、];A[I]=WORK;就能让读者一目了然了。程序要能直截了当地说明程序员的用意。程序编写得要简单,写清楚,直截了当地说明程序员的用意。例如,for(i=1;i<=n;i++)for(j=1;j<=n;j++)V[i][j]=(i/j)*(j/i)除法运算(/)在除数和被除数都是整型量时,其结果只取整数部分,而得到整型量。当i<j时,i/j=0当j<i时,j/i=0得到的数组当i≠j时V[i][j]=(i/j)*(j/i)=0当i=j时V[i][j]=(i/j)*(
此文档下载收益归作者所有