软件工程教材习题答案

发布时间 : 星期日 文章软件工程教材习题答案更新完毕开始阅读

《软件工程——理论与实践》(第2版)习题答案

层,所以驱动模块只需模拟向被测模块传递数据,接收或打印从被测模块返回的数据等功能,比编写桩模块容易。还能够尽早查出底层涉及较复杂的算法和实际的I/O模块中的错误。

缺点:只有当系统所有模块全部组装完成,才能看到系统完整的结构,才能测试系统的主控功能。

3. 渐增式与非渐增式有何区别?为什么通常采用渐增式?

答:非渐增式是将所有的模块一次连接起来,简单、易行,节省机时,但测试过程中难于查错,发现错误也很难定位,测试效率低。

渐增式是将模块一个一个地连入系统,每连入一个模块,都要对新子系统进行测试。这种组装测试方案虽然用机时多,但比较非渐增式容易查出错误及进行错误定位,有利于查出模块接口部分的错误,测试效率高。因此通常采用渐增式。

4. 什么是α测试和β测试?

答:α测试是在开发机构的监督下,在确认测试阶段后期由个别用户对软件进行测试,目的是评价软件的FLURPS(功能、局域化、可使用性、可靠性、性能和支持性),注重界面和特色。

β测试是在进行了α测试的基础上,由支持软件预发行的客户对FLURPS进行测试,主要目的是测试系统的可支持性,是在软件产品正式发布前的测试。

5. 黑盒法与白盒法的区别是什么?各自运用在什么情况下?

答:白盒法测试又称结构测试或逻辑驱动测试。必须考虑程序内部结构和内部特性,针对特定条件或与循环集设计测试用例,对软件的主要逻辑路径进行测试。一般主要用于模块测试。

黑盒法测试又称功能测试或基于规格说明的测试。这种方法是从用户观点出发,测试时把被测程序当作一个黑盒,不考虑程序内部结构和内部特性,测试者只知道该程序输入和输出之间的关系或程序的功能的情况下,依靠能够反映着这一关系和程序功能需求规格的说明书,来确定测试用例和推断测试结果的正确性。一般用于集成测试、确认测试及功能测试、系统测试等。

6.软件测试与其他软件开发活动相比具有什么样的特点?

答:软件测试的目标在于,以最小的工作量和成本,尽可能多地发现软件系统中存在的各种错误和缺陷,以确保软件系统的正确性和可靠性。其主要特点是:

⑴ 软件测试的开销大。按照Boehm的统计,软件测试的开销大约占总成本的30%~50%。 ⑵ 不能进行“穷举”测试。只有将所有可能的情况都测试到,才有可能检查出所有的错误,但这是不可能的。

⑶ 软件测试难度大。既然不能进行 “穷举”测试,又要查出尽可能多的错误,随着软件的规模和复杂度不断增加,软件测试工作的难度越来越大。

测试也是一种开发活动,但鉴于软件测试的以上特点,它比其他软件开发活动更加复杂、困难和重要,且无论怎样强调它的重要性都不过分。

7.软件测试通常包含哪几个基本步骤?

答:软件测试通常应该对需求、总体设计、详细设计、编码实现各个阶段所获得的开发产品进行测试,软件测试应该贯穿于整个软件开发的全过程。

软件测试过程按测试的先后次序可分为以下步骤进行:单元测试、集成测试、确认测试和系统测试,最后进行验收测试。

⑴单元测试。完成每个模块的测试,尽可能发现模块内部的错误。单元测试主要采用白盒测试法。

⑵集成测试。把已测试过的模块按照一定顺序组装起来,构成软件系统。主要采用黑盒测试法。但对发现错误较多的新子系统,还可能采用白盒法进行回归测试。

⑶确认测试:检验所开发的软件能否满足所有功能和性能需求的最后手段,通常均采用黑盒测试法。

29

《软件工程——理论与实践》(第2版)习题答案

⑷系统测试:完成确认测试以后,检验它能否与系统的其他部分(如硬件,数据库及操作人员)协调工作,需要进行系统测试。

⑸验收测试:检验软件产品质量的最后一道工序是验收测试。与前面讨论的各种测试活动的不同之处主要在于它突出了客户的作用,同时软件开发人员也应有一定程度的参与。

8.软件调试有哪些方法?各自有什么特点?

答:常见的软件调试策略包括:试探法、归纳法、演绎法、回溯法和对分法等。

⑴试探法。一种比较原始的调试策略。它的基本思想是通过分析软件系统运行过程中大量数据信息、中间结果的变化情况来查找错误发生的原因、确定错误发生的位置。该方法简单、易行,但调试效率低,只适用于结构比较简单的小型系统。

⑵归纳法。一种由特殊到一般的逻辑推理方法。根据软件测试所取得的个别错误数据,错误线索着手,通过分析这些线索之间的关系而发现错误。

⑶演绎法。一种由一般到特殊的逻辑推理方法。根据已有的测试数据,设想所有可能的出错原因,然后通过测试逐一排除不正确、不可能的出错原因,最后证明剩余的错误的合理性,确定错误发生的位置。

⑷回溯法。从软件系统中发现错误位置开始,沿着程序的控制流程往回追踪程序代码,直至找到错误发生的位置或范围。回溯法对于规模较小的软件系统而言是一种比较有效的调试策略,但不适宜较大型的软件。

⑸对分查找法。在程序中插入某些变量关键点的正确值,检查程序的运行结果,在插入点以后的运行正确,则错误发生在插入点的前半部分;反之,错误发生在插入点的后半部分。不断对分缩小错误范围,进行错误定位。

9.面向对象的测试与传统的测试有什么相同和不同之处?

答:⑴传统的测试要在编码之后才进行,主要测试的对象是程序代码。而面向对象的测试既在没有代码的情况下进行测试,也在有代码的情况下进行测试,是一种被应用在开发过程不同阶段的活动,是与开发过程密切相关而又分离出来的过程,贯穿软件开发的全过程。

⑵面向对象的测试更关注对象而不是像传统的测试仅完成输入输出的单一功能,强调需求或设计的测试,验证和确认规格说明的有效性和正确性。一般采用静态走查和动态的场景模拟等方法,保证了需求和设计的高质量。

⑶由于测试对象不同,如传统测试中的单元测试,对应面向对象的测试中的类测试,类测试包括:类属性的测试、类操作的测试、可能状态下对象测试。根据面向对象的主要特性,在测试策略和方法上有所区别。通常面向对象的测试更加困难,例如类间的继承性可能给测试带来新的困难,继承性层次的测试需要更彻底的测试方法。

⑷在面向对象的测试中,一些常用的传统测试技术,如白盒法、黑盒法仍然可以使用。 10.面向对象的集成测试与传统的集成测试有何区别?

答:传统测试方法中的集成测试,主要采用黑盒法,按照自顶向下和自底向上的集成策略对模块进行组装测试。

面向对象的集成测试即交互测试,要检测类相互作用时才会产生的错误,即交互测试只关心系统的结构和内部的相互作用。对类进行交互测试,以确定它们能否在一起共同工作。交互测试的重点是要确保那些已经单独测试过的类的对象,相互间能够正确地传送消息。而面向对象的软件没有层次控制结构,一次集成一个操作到类中(传统的增量集成方法)是不可能的。

通常采用两种不同的策略:

⑴ 基于线程的测试(thread-based testing),集成对回应系统的一个输入或事件所需的一组类,每个线程被集成并分别测试。

⑵ 基于使用的测试(use-based testing),先测试独立类(几乎不使用服务器的类),然后测试下一层使用独立类的类(依赖类)。通过对依赖类层次的测试,逐步构造新的子系统,最后构造完整的

30

《软件工程——理论与实践》(第2版)习题答案

系统。

习题九答案

一、选择题

1. 软件维护的类型有(A B C D)。

A) 完善性维护 B) 纠错性维护 C) 适应性维护 D) 预防性维护 2. 各种软件维护的类型中最重要的是(A B)。

A) 完善性维护 B) 纠错性维护 C) 适应性维护 D) 预防性维护 3. 以下属于完善性维护的有(B D)。

A) 解决开发时未能测试各种可能条件带来的问题 B) 增加联机求助命令

C) 缩短系统的应答时间,使其达到特定要求 D) 为软件的运行增加监控设施

4. 进行系统修改时可能会产生维护的副作用,它们可能有(A B C)。 A) 修改数据的副作用 B) 修改错误后,又引入了新的错误 C) 修改代码的副作用 D) 文档资料的副作用 5. 确定可维护性的因素主要有(B C D)。

A) 文档 B) 可理解性 C) 可修改性 D) 可测试性 6. 软件维护阶段所产生的文档主要有(A B)。 A) 软件问题报告 B) 软件修改报告 C) 软件修改申请报告 D) 测试报告 7. 表达计划安排的主要工具有(A B D)。 A) PERT图 B) 甘特图 C)DFD图 D) 进度表

二、判断题

1. 软件维护只需要校正性维护、适应性维护和完善性维护。(×) 2. 软件维护总工作量可用公式表示为:M = P + K*EXP(D-C)。(×) 3. 生产性活动包括分析评价、修改设计、编写程序代码和设计约束。(×) 4. 改进程序的执行效率不会引入错误。(×) 5. 强调简明性的程序出错率低。(√)

6. 用面向对象方法开发的软件系统,可维护性好。(√)

三、简答题

1. 为什么要进行软件维护?

答:软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。一个中等规模的软件,如果其开发过程需要一两年时间,则它投入使用以后,其运行时间可能持续5~10年之久。在这个维护阶段中,人们需要着手解决开发阶段尚未解决的问题,同时,还解决维护工作本身所产生的问题。做好软件的维护工作不仅能够排除软件中存在的错误,使它能够正常工作,而且还可以使它扩充功能,提高性能,为用户带来新的效益。维护阶段的花费约占整个软件生存周期花费的67%。因此,应充分认识到维护现有软件的重要意义。

2. 怎样防止维护的副作用?

答:修改代码所产生的副作用一般可以在退化测试过程中对其造成系统的故障进行查明和纠

31

《软件工程——理论与实践》(第2版)习题答案

正;完善设计文档资料可以限制修改数据的副作用,在文档中描述了数据结构,并提供了一种把数据元素、记录、文件以及其他结构与系统模块联系起来的交叉对照表;在软件系统再次交付使用之前,对整个软件配置进行复审,将能大大减少文档资料的副作用。

3. 什么是软件的可维护性?可维护性度量的特性是什么?

答:软件的可维护性是指维护人员为纠正软件系统出现的错误或缺陷,以及为满足新的要求而理解、修改和完善软件系统的难易程度。可维护性是所有软件系统都应具备的特点。在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审。

可维护性度量的特性主要有可理解性、可测试性和可修改性。可理解性被定义为人们通过阅读源代码和文档了解软件系统的结构、接口、功能、内部过程以及如何运行的难易程度;可测试性被定义为诊断和测试系统的难易程度;可修改性被定义为修改软件系统的难易程度;它们是密切相关的。

4. 提高可维护性的方法有哪些?

答:在软件工程的每一阶段都应该努力提高系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进行复审。

在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明。在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界面。

在软件设计的复审中,应从便于修改、模块化和功能独立的目标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。

在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。

在软件系统交付使用前的每一测试步骤中都应给出需要进行预防性维护部分的提示。 在完成每项维护工作后,都应对软件维护本身进行仔细认真的复审。 为了从根本上提高软件系统的可维护性,人们正试图通过直接维护软件规格说明来维护软件 ,同时也在大力发展软件重用技术。

5. 软件的可维护性与哪些因素有关?在软件开发过程中采取哪些才能提高软件产品的可维护性?

答:略。

习题十答案

1. 什么是软件开发工具?按照功能可以将软件开发工具分成哪几大类?

答:软件开发工具是用来辅助软件的开发、维护、管理和支持等活动的计算机程序系统。它的目的是为了提高软件生产效率和改进软件质量,为软件开发活动提供自动化的开发工具和环境。

按功能软件开发工具可以分为以下几种:(1) 编程工具;(2) 分析和设计工具;(3) 软件维护工具;(4) 版本控制工具;(5) 项目管理工具;(6) 文档管理工具;(7) 软件配置管理工具;(8) 测试管理工具。

2. 列出你常用的软件开发工具,并按照本章的分类标准对其进行分类。 答:略。

3. 集成化的CASE环境相对于彼此独立的软件开发工具有哪些明显的优势? 答:集成化的CASE环境具有如下优势:

(1) 软件开发过程中的所有信息都采用统一的存储格式,集中统一存储在共享的中心数据库中,使得在软件工具之间、开发人员之间、开发活动的各个过程之间可以方便而高效地进行数据的共享

32

联系合同范文客服:xxxxx#qq.com(#替换为@)