- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 实现;通常把编码和测试统称为实现。
所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。
软件测试在软件生命周期中横跨两个阶段。
通常在编写出每个模块之后就对它做单元测试。
在这个阶段结束之后,对软件系统还应该进行各种综合测试,通常由专门的测试人员承担这项工作。
通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。调试是测试阶段最困难的工作。
在对测试结果进行收集和评价的时候,使用故障率数据,估计软件将来出现故障的情况并预测软件的可靠性。 ;通常把编码和测试统称为实现。
所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。
作为软件工程过程的一个阶段,编码是对设计的进一步具体化,因此,程序的质量主要取决于软件设计的质量。;在开发大型软件系统的漫长过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无缺,
我们力求在每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正差错;但是,经验表明审查并不能发现所有差错,此外在编码过程中还不可避免地会引入新的错误。;如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分差错,则这些差错迟早会在生产过程中暴露出来。
测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。;软件测试在软件生命周期中横跨两个阶段。
(1)通常在编写出每个模块之后就对它做必要的测试(称为单元测试)。
(2)在这个阶段结束之后,对软件系统还应该进行各种综合测试。;
大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上。
因此,必须高度重视软件测试工作,绝不要以为写出程序之后软件开发工作就接近完成了,实际上,大约还有同样多的开发工作量需要完成。;防不胜防的软件错误 ——
例:1963年, 美国, 飞往火星的火箭爆炸, 损失1千万美元.
原因: FORTRAN循环 DO 5 I = 1, 3 误写为 DO 5 I = 1.3;软件测试技术要求不高,至少比编程容易多了
;把证明程序无错??作测试目的不仅是不正确的,
完全做不到的,而且对做好测试没有任何益处
,甚至是十分有害的.
软件测试要设法使软件发生故障,暴露软件错误。
测试的“成功”与“失败”
;“测试的目的是说明程序正确地执行它应有的功能” 这种说法正确吗?;仅就测试而言,它的目标是发现软件中的错误。
软件工程的根本目标是开发出高质量的完全符合用户需要的软件,因此,通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。
在对测试结果进行收集和评价的时候,软件所达到的可靠性也开始明朗了。;7.1 编码7.1.1 选择程序设计语言;程序设计语言的划代: ;选择语言的理想标准:
为了使程序容易测试和维护以减少软件的总成本,所选用的高级语言应该有理想的模块化机制,以及可读性好的控制结构和数据结构;
为了便于调试和提高软件可靠性,语言特点应该使编译程序能够尽可能多地发现程序中的错误;
为了降低软件开发和维护的成本,选用的高级语言应该有良好的独立编译机制。 ;主要的实用标准:
系统用户的要求
可以使用的编译程序
可以得到的软件工具
工程规模
程序员的知识
软件可移植性要求
软件的应用领域;7.1.2 编码风格;例1:注释;例2:视觉组织——空格;例3:视觉组织——移行;2. 数据说明
数据说明的次序应该标准化。
当多个变量名在一个语句中说明时,应该按字母顺序排列这些变量。
如果设计时使用了一个复杂的数据结构,则应该用注解说明用程序设计语言实现这个数据结构的方法和特点。 ;例4:数据说明标准化;3. 语句构造
不要为了节省空间而把多个语句写在同一行;
尽量避免复杂的条件测试;
尽量减少对“非”条件的测试;
避免大量使用循环嵌套和条件嵌套;
利用括号使逻辑表达式或算术表达式的运算次序清晰直观。 ;例5:一行一条语句; FOR I:=1 TO N-1 DO
BEGIN
T:=I;
FOR J:=I+1 TO N DO
IF A[J]A[T] THEN T:=J;
IF TI THEN
BEGIN
WORK:=A[T];
A[T]:=A[I];
A[I]:=WORK;
END
END;;例6:强调清晰性;例7:简单直接;例8:避免不必要的转移;例9:避免使用空ELSE和IF…THEN IF…语句;例10:
文档评论(0)