ImageVerifierCode 换一换
格式:DOCX , 页数:51 ,大小:186.67KB ,
资源ID:15797666      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15797666.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件工程导论第7章编码和单元测试Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件工程导论第7章编码和单元测试Word文档下载推荐.docx

1、目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。 软件测试在软件生命周期中横跨两个阶段。通常在编写出每个模块之后就对它做必要的测试(称为单元测试),模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同一个阶段。在这个阶段结束之后,对软件系统还应该进行各种综合测试,这是软件生命周期中的另一个独立的阶段,通常由专门的测试人员承担这项工作。 大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40以上,在极端情况,测试那种关系人的生命安全的软件所花费的成本,可能相当于软件工程其他开发步骤总成本的3倍到5倍。因此,必须高度重视软件测试工作,绝不要

2、以为写出程序之后软件开发工作就接近完成 了,实际上,大约还有同样多的开发工作量需要完成。 仅就测试而言,它的目标是发现软件中的错误,但是,发现错误并不是最终目的。软件工程的根本目标是开发出高质量的完全符合用户需要的软件,因此,通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。调试是测试阶段最困难的工作。 在对测试结果进行收集和评价的时候,软件所达到的可靠性也开始明朗了。软件可靠性模型使用故障率数据,估计软件将来出现故障的情况并预测软件的可靠性。7.1 编 码7.1.1 选择程序设计语言 程序设计语言是人和计算机通信的最基本的工具,它的特点必然会影响人的思维和解题方式,会影响人和计算机

3、通信的方式和质量,也会影响其他人阅读和理解程序的难易程度。因此,编码之前的一项重要工作就是选择一种适当的程序设计语言。 适宜的程序设计语言能使根据设计去完成编码时困难最少,可以减少需要的程序测试量,并且可以得出更容易阅读和更容易维护的程序。由于软件系统的绝大部分成本用在生命周期的测试和维护阶段,所以容易测试和容易维护是极端重要的。 使用汇编语言编码需要把软件设计翻译成机器操作的序列,由于这两种表示方法很不相同,因此汇编程序设计既困难又容易出差错。一般说来,高级语言的源程序语句和汇编代码指令之间有一句对多句的对应关系。统计资料表明,程序员在相同时间内可以写出的高级语言语句数和汇编语言指令数大体相

4、同,因此用高级语言写程序比用汇编语言写程序生产率可以提高好几倍。高级语言一般都容许用户给程序变量和子程序赋予含义鲜明的名字,通过名字很容易把程序对象和它们所代表的实体联系起来;此外,高级语言使用的符号和概念更符合人的习惯。因此,用高级语言写的程序容易阅读,容易测试,容易调试,容易维护。 总的说来,高级语言明显优于汇编语言,因此,除了在很特殊的应用领域(例如,对程序执行时间和使用的空间都有很严格限制的情况;需要产生任意的甚至非法的指令序列;体系结构特殊的微处理机,以致在这类机器上通常不能实现高级语言编译程序),或者大型系统中执行时间非常关键的(或直接依赖于硬件的)一小部分代码需要用汇编语言书写之

5、外,其他程序应该一律用高级语言书写。 为了使程序容易测试和维护以减少软件的总成本,所选用的高级语言应该有理想的模块化机制,以及可读性好的控制结构和数据结构;为了便于调试和提高软件可靠性,语言特点应该使编译程序能够尽可能多地发现程序中的错误;为了降低软件开发和维护的成本,选用的高级语言应该有良好的独立编译机制。 上述这些要求是选择程序设计语言的理想标准,但是,在实际选择语言时不能仅仅使用理论上的标准,还必须同时考虑实用方面的各种限制。下面是主要的实用标准: (1)系统用户的要求。如果所开发的系统由用户负责维护,用户通常要求用他们熟悉的语言书写程序。 (2)可以使用的编译程序。运行目标系统的环境中

6、可以提供的编译程序往往限制了可以选用的语言的范围。 (3)可以得到的软件工具。如果某种语言有支持程序开发的软件工具可以利用,则目标系统的实现和验证都变得比较容易。 (4)工程规模。如果工程规模很庞大,现有的语言又不完全适用,那么设计并实现一种供这个工程项目专用的程序设计语言,可能是一个正确的选择。 (5)程序员的知识。虽然对于有经验的程序员来说,学习一种新语言并不困难,但是要完全掌握一种新语言却需要实践。如果和其他标准不矛盾,那么应该选择一种已经为程序员所熟悉的语言。 (6)软件可移植性要求。如果目标系统将在几台不同的计算机上运行,或者预期的使用寿命很长,那么选择一种标准化程度高、程序可移植性

7、好的语言就是很重要的。 (7)软件的应用领域。所谓的通用程序设计语言实际上并不是对所有应用领域都同样适用,例如,FORTRAN语言特别适合于工程和科学计算,COBOI。语言适合于商业领域应用,c语言和Ada语言适用于系统和实时应用领域,LISP语言适用于组合问题领域,PROLOG语言适于表达知识和推理。因此,选择语言时应该充分考虑目标系统的应用范围。7.1.2 编码风格 源程序代码的逻辑简明清晰、易读易懂是好程序的一个重要标准,为了做到这一点,应该遵循下述规则。 1.程序内部的文档 所谓程序内部的文档包括恰当的标识符、适当的注解和程序的视觉组织等等。 选取含义鲜明的名字,使它能正确地提示程序对

8、象所代表的实体,这对于帮助阅读者理解程序是很重要的。如果使用缩写,那么缩写规则应该一致,并且应该给每个名字加注解。 注解是程序员和程序读者通信的重要手段,正确的注解非常有助于对程序的理解。通常在每个模块开始处有一段序言性的注解,简要描述模块的功能、主要算法、接口特点、重要数据以及开发简史。插在程序中间与一段程序代码有关的注解,主要解释包含这段代码的必要性。对于用高级语言书写的源程序,不需要用注解的形式把每个语句翻译成自然语言,应该利用注解提供一些额外的信息。应该用空格或空行清楚地区分注解和程序。注解的内容一定要正确,错误的注解不仅对理解程序毫无帮助,反而会妨碍对程序的理解。 程序清单的布局对于

9、程序的可读性也有很大影响,应该利用适当的阶梯形式使程序的层次结构清晰明显。2.数据说明虽然在设计期间已经确定了数据结构的组织和复杂程度,然而数据说明的风格却是在写程序时确定的。为了使数据更容易理解和维护,有一些比较简单的原则应该遵循。 数据说明的次序应该标准化(例如,按照数据结构或数据类型确定说明的次序)。有次序就容易查阅,因此能够加速测试、调试和维护的过程。 当多个变量名在一个语句中说明时,应该按字母顺序排列这些变量。 如果设计时使用了一个复杂的数据结构,则应该用注解说明用程序设计语言实现这个数据结构的方法和特点。 3.语句构造 设计期间确定了软件的逻辑结构,然而个别语句的构造却是编写程序的

10、一个主要任务。构造语句时应该遵循的原则是,每个语句都应该简单而直接,不能为了提高效率而使程序变得过分复杂。下述规则有助于使语句简单明了: 不要为了节省空间而把多个语句写在同一行;尽量避免复杂的条件测试;尽量减少对“非”条件的测试;避免大量使用循环嵌套和条件嵌套;利用括号使逻辑表达式或算术表达式的运算次序清晰直观。 4.输入输出 在设计和编写程序时应该考虑下述有关输入输出风格的规则:对所有输入数据都进行检验;检查输入项重要组合的合法性;保持输入格式简单;使用数据结束标记,不要要求用户指定数据的数目;明确提示交互式输入的请求,详细说明可用的选择或边界数值;当程序设计语言对格式有严格要求时,应保持输

11、入格式一致;设计良好的输出报表;给所有输出数据加标志。 5.效率 效率主要指处理机时间和存储器容量两个方面。虽然值得提出提高效率的要求,但是在进一步讨论这个问题之前应该记住3条原则:首先,效率是性能要求,因此应该在需求分析阶段确定效率方面的要求。软件应该像对它要求的那样有效,而不应该如同人类可能做到的那样有效。其次,效率是靠好设计来提高的。第三,程序的效率和程序的简单程度是一致的,不要牺牲程序的清晰性和可读性来不必要地提高效率。下面从三个方面进一步讨论效率问题。 (1)程序运行时间 源程序的效率直接由详细设计阶段确定的算法的效率决定,但是,写程序的风格也能对程序的执行速度和存储器要求产生影响。

12、在把详细设计结果翻译成程序时,总可以应用下述规则:写程序之前先简化算术的和逻辑的表达式;仔细研究嵌套的循环,以确定是否有语句可以从内层往外移;尽量避免使用多维数组;尽量避免使用指针和复杂的表;使用执行时间短的算术运算;不要混合使用不同的数据类型;尽量使用整数运算和布尔表达式。 在效率是决定性因素的应用领域,尽量使用有良好优化特性的编译程序,以自动生成高效目标代码。 (2)存储器效率 在大型计算机中必须考虑操作系统页式调度的特点,一般说来,使用能保持功能域的结构化控制结构,是提高效率的好方法。 在微处理机中如果要求使用最少的存储单元,则应选用有紧缩存储器特性的编译程序,在非常必要时可以使用汇编语

13、言。 提高执行效率的技术通常也能提高存储器效率。提高存储器效率的关键同样是“简单”。 (3)输入输出的效率 如果用户为了给计算机提供输入信息或为了理解计算机输出的信息,所需花费的脑力劳动是经济的,那么人和计算机之间通信的效率就高。因此,简单清晰同样是提高人机通信效率的关键。 硬件之间的通信效率是很复杂的问题,但是,从写程序的角度看,却有些简单的原则可以提高输入输出的效率。例如:所有输入输出都应该有缓冲,以减少用于通信的额外开销;对二级存储器(如磁盘)应选用最简单的访问方法;二级存储器的输入输出应该以信息组为单位进行;如果“超高效的”输入输出很难被人理解,则不应采用这种方法。 这些简单原则对于软

14、件工程的设计和编码两个阶段都适用。7.2软件测试基础 本节讲述软件测试的基本概念和基础知识。 表面看来,软件测试的目的与软件工程所有其他阶段的目的都相反。软件工程的其他阶段都是“建设性”的:软件工程师力图从抽象的概念出发,逐步设计出具体的软件系统,直到用一种适当的程序设计语言写出可以执行的程序代码。但是,在测试阶段测试人员努力设计出一系列测试方案,目的却是为了“破坏”已经建造好的软件系统竭力证明程序中有错误不能按照预定要求正确工作。 当然,这种反常仅仅是表面的,或者说是心理上的。暴露问题并不是软件测试的最终目的,发现问题是为了解决问题,测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。但是,仅就测试本身而言,它的目标可能和许多人原来设想的很不相同。7.2.1 软件测试的目标 什么是测试?它的目标是什么

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1