软件工程作业3-答案0903

发布时间:2011-10-30 12:27:11   来源:文档文库   
字号:

软件工程作业3(第811章)答案

一、 选择题

1. 结构化语言是介于自然语言和形式语言之间的一种(D)。

A.半形式语言B.计算机语言 C.低级语言 D.高级语言

2. 程序设计语言的技术特性不应包括(C)。

A、数据结构的描述性B、抽象类型的描述性

C、数据库的易操作性D、软件的可移植性

3. 程序的三种基本控制结构是(B)。

A.过程、子程序和分程序 B.顺序、选择和重复

C.递归、堆栈和队列 D.调用、返回和转移

4. 结构化程序设计主要强调的是(D)。

A.程序的规模B.程序的效率 C.程序设计语言的先进性 D.程序易读性

5. 下列关于功能性注释不正确的说法是(B)

A.功能性注释嵌在源程序中,用于说明程序段或语句的功能以及数据的状态

B.注释用来说明程序段,需要在每一行都要加注释

C.可使用空行或缩进,以便很容易区分注释和程序

D.修改程序也应修改注释

6. 下列关于效率的说法不正确的是(D)

A.效率是一个性能要求,其目标应该在需求分析时给出

B.提高程序效率的根本途径在于选择良好的设计方法,数据结构与算法

C.效率主要指处理机时间和存储器容量两个方面

D.程序的效率与程序的简单性无关

7. 结构化维护与非结构化维护的主要区别在于(B )

A.软件是否结构化 B.软件配置是否完整 C.程序的完整性 D.文档的完整性

8. 关于JAVA语言下列说法不正确的是(B)。

A.跨平台的 B.动态指针 C.解释型的 D.面向对象的

9. 使用白盒测试方法时,确定测试数据应根据(A)和指定的覆盖标准。

A程序内部逻辑 B.程序复杂结构

C.使用说明书 D.程序的功能

10. 确认测试主要涉及的文档是(A)。

A、需求规格说明书B、概要设计说明书

C、详细设计说明书D、源程序

11. 测试的关键问题是(D)。

A.如何组织对软件的评审 B.如何验证程序的正确性

C.如何采用综合策略 D.如何选择测试用例

12. 黑盒测试在设计测试用例时,主要研究(A)。

A.需求规格说明 B.详细设计说明

C.项目开发计划 D.概要设计说明与详细设计说明

13. 下面哪些测试属于黑盒测试(B)。

A、路径测试B、等价类划分 C、条件判断 D、循环测试

14. 在下述哪一种测试中,测试人员必须接触到源程序(B)。

A、功能测试 B、结构测试C、功能测试和结构测试 D、性能测试

15. 检查软件产品是否符合需求定义的过程称为(D)。

A、确认测试B、集成测试C、验收测试D、验证测试

16. 软件测试方法中,黑盒、白盒测试法是常用的方法,其中白盒测试主要用于测试(D)。

A、 结构合理性B、软件外部功能C、程序正确性D、程序内部逻辑

17. 软件维护中,因修改交互输入的顺序,没有正确的记录而引起的错误是(A)产生的副作用。

A、文档B、数据 C、编码D、设计

18. 以下属于软件维护阶段文档的是(C)

A、软件需求说明B、操作手册C、软件问题报告D、测试分析报告

19. 产生软件维护的副作用,是指(C)。

A、开发时的错误 B、隐含的错误

C、因修改软件而造成的错误 D、运行时误操作

20. 维护中,因误删除一个标识符而引起的错误是(C)副作用。

A、文档 B、数据 C、编码 D、设计

21. 可维护性的特性中,相互促进的(A)。

A、可理解性和可测试性B、效率和可移植性

C、效率和可修改性 D、效率和结构好

22. 软件维护的困难主要原因是(C

A、费用低 B、人员少 C、开发方法的缺陷 D、用户不配合

23. 软件维护费用高的主要原因是(C)。

A、人员少B、人员多C、生产率低D、生产率高

24. 为了适应软硬件环境变化而修改软件的过程是(C)

A、校正性维护 B、完善性维护 C、适应性维护D、预防性维护

25. 可维护性的特性中,相互矛盾的是(B)

A.可理解性与可测试性 B.效率与可修改性

C.可修改性和可理解性 D.可理解性与可读性

26. 各种不同的软件维护中,以(C)维护所占的维护量最小。

A、 纠错性维护B、代码维护C、预防性维护D、文档维护

27. 在变更控制中,(B)可以用来确保由不同用户所执行的并发变更。

A.异步控制B.同步控制C.存取控制D.基线控制

28. 变更控制是一项最重要的软件配置任务,其中检出和(A)处理实现了两个重要的变更控制要素,即存取控制和同步控制。

A.登入B.管理C.填写变更要求D.审查

29. 用图表示软件项目进度安排,下列说法中正确的是B

A.能够反映多个任务之间的复杂关系

B.能够直观表示任务之间相互依赖制约关系

C.能够表示哪些任务是关键任务

D.能够表示子任务之间的并行和串行关系

30. 基线可作为软件生存期中各开发阶段的一个检查点。当采用的基线发生错误时,可以返回到最近和最恰当的(C)上

A.配置项B.程序C.基线D.过程

二、 简答题

1. 为建立良好的编程风格应遵循什么原则?

答:1)节简化

①不使用不必要的变量和函数

②避免变量重名,变量重名可导致很难被发现的错误。

③尽量减小代码量。

④尽量减少代码的执行时间,提高执行效率。

⑤避免功能冗余的模块。

⑥尽量不使用全局变量。

2)模块化

①确保物理和逻辑功能密切相关。

②限定一个模块完成一个独立的功能,

提高模块的内聚度。

③检查代码的重复率,重复多的代码,

要抽出来作为一个单独的模块。

3)简单化

①采用直接了当的算法,避免使用技巧

性高和难懂的代码。

②使用简单的数据结构,避免使用多维

数组、指针和复杂的表。

③注意对象命名的一致性。

④以手工的方式简化算术和逻辑表达式。

4)结构化

①按标准化的次序说明数据;

②按字母顺序说明对象名

③使用读者明了的结构化程序部件;

④采用直截了当的算法;

⑤根据应用背景排列程序各个部分;

⑥不随意为效率而牺牲程序的清晰度和可读性;

⑦让机器多做烦琐的工作,如重复、库函数;

⑧用公共函数调用代替重复出现的表达式;

⑨避免循环、分支的嵌套层数过高;

⑩单入口单出口。

5)文档化(documentation

①有效、适当地使用注释。

②协调使用程序块注释和程序行注释。

③保持文档和程序的同步。

6)格式化(layout)

①始终采用统一缩进规则;

②适当插入括号表明运算次序、排除二义性;

③有效地使用空格符以区别程序的不同意群。

2. 什么是软件测试?

答:软件测试从广义上讲,是指软件产品生存周期内所有的检查、评审和确认活动。从狭义上讲,软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各个阶段的规格说明和程序内部结构而精心设计一批测试用例,用这些测试用例运行程序,以发现程序错误的过程。

3. 软件测试的原则是什么?

答:软件测试的原则有:

1) 应该把测试贯穿在整个开发过程之中。事实上,从需求分析阶段开始,每个阶段结束之前都要进行阶段审查,目的是尽早发现和纠正错误。

2) 每个测试用例都应该包括测试输入数据和这组数据输入作用下的预期输出结果。在实际操作中可以列出一张表格,包括每个测试用例的编号、类型、输入数据、预期输出结果、实际输出结果、出错原因分析。

3) 要对每个测试结果进行全面检查,不要漏掉已经出现的错误迹象。

4) 程序员应该尽量避免检查自己编写的代码。测试工作需要严格的工作作风,程序员在测试自己编写的代码时往往会带有一些倾向性,使得他们工作中常常出现一些疏漏。而且,程序员对设计规格说明书的理解错误而引入的错误更是难于发现。

5) 在设计测试用例时,应该包括有效的、期望的输入情况,也要包括无效的和不期望的输入情况。既能够验证程序正常运行的合理输入,也能够验证对异常情况处理的不合理输入数据以及临界数据。在测试程序时,人们常常过多地考虑合法的和期望的输入条件,以检查程序是否做了它应该做的事情,而忽视了不合法的和预想不到的输入条件。事实上,用户在使用系统时,输入一些错误指令和参数是经常发生的,如果软件遇到这种情况不能做出适当的反应,给出相应的提示信息,就可能会误导用户,甚至造成严重损失。

6) 软件中遗留的错误数量与已经发现的错误数量成正比。根据这个规律,对测试中发现错误成堆的模块更要仔细测试。例如,在某个著名的操作系统中,44%的错误仅与4%的模块有关。

7) 回归测试的关联性要特别引起注意,修改一个错误而引起更多错误的现象并不少见。

8) 测试程序时不仅要检查程序是否做了它应该做的事情,还要检查它是否做了不该做的事情。例如,工资软件中,软件只完成在编职工的工资计算和输出,不在编人员的工资是不进行计算和输出的。如果软件将不在编人员的工资信息也输出显然是不合适的。

9) 严格执行测试计划。在测试之前应该有明确的测试计划,内容包括:要测试的软件功能和内容、测试用例和预期结果、测试的进度安排、需要的工具和资源、测试控制方式和过程等。

10做好测试记录,为统计和维护提供基础数据。

4. 请说明集成测试、系统测试和验收测试有什么不同?

答:集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既验证“设计”,又验证“需求”。
系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。
验收测试与系统测试相似,主要区别是测试人员不同,验收测试由用户执行。

5. 简述单元测试的内容。

答:单元测试的内容有

1模块接口测试:对通过被测模块的数据流进行测试。为此,对模块接口,包括参数表、调用子模块的参数、全程数据、文件输入/输出操作都必须检查。

2局部数据结构测试:设计测试用例检查数据类型说明、初始化、缺省值等方面的问题,还要查清全程数据对模块的影响。

3路径测试:选择适当的测试用例,对模块中重要的执行路径进行测试。对基本执行路径和循环进行测试可以发现大量路径错误。

4错误处理测试:检查模块的错误处理功能是否包含有错误或缺陷。例如,是否拒绝不合理的输入;出错的描述是否难以理解、是否对错误定位有误、是否出错原因报告有误、是否对错误条件的处理不正确;在对错误处理之前错误条件是否已经引起系统的干预等。

5边界测试:要特别注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。

5) 此外,如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。这类信息对进行性能评价是十分有用的。

6. 什么是白盒测试?它适应哪些测试?

答:白盒测试也叫结构测试,测试者需要了解被测程序的内部结构。白盒测试通常根据覆盖准则设计测试用例,有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖和条件组合覆盖。

白盒测试适用与单元测试、集成测试、系统测试

7. 非渐增式测试与渐增式测试有什么区别?渐增式测试如何组装模块?

答:1)渐增式可以较早地发现模块界面之间的错误,非渐增式则要到最后将所有模块连接起来时才能发现此类错误。

2)非渐增式需要较多的人工

3)渐增式有利于排错。如果模块界面间有错,如果用非渐增式,这类错误到最后联合测试时才能发现,此时很难判断错误发生在哪一部分,但如果用渐增式,这类错误就较容易定位,它通常与最新加上去的模块有关。

4)渐增式比较彻底。

5)渐增式需要较多的机器时间。

6)非渐增式方式,开始时允许几个测试人员并行工作,对大型系统来说,是很有意义的。

8. 采用黑盒技术设计测试用例有哪几种方法?这些方法各有什么特点?

答:黑盒测试设计测试用例的方法有1)等价类划分法 特点是:a、测试的内容相同 b、一个等价类中的某个测试可以发现缺陷,那么这个等价类的其他测试也能发现缺陷 c、一个等价类中的某个测试不能发现缺陷,那么这个等价类的其它测试也不能发现缺陷2)边界值分析法 特点是:用边界值分析时时常收获较大,它是在等价类的边界上选择测试用例3)错误推测法 特点是:没有确定的步骤,很大程度上是凭借经验进行的 4)因果图法 特点是:考虑输入条件间的组合关系;考虑输出条件对输入条件的信赖关系;测试用例发现错误的效率高;能查出功能说明中的某些不一致或遗漏

9. 白盒测试法有哪些覆盖标准?试对它们的检错能力进行比较。

答:白盒测试的覆盖标准有:语句覆盖->判定覆盖->条件覆盖->判定/条件覆
->条件组合覆盖->路径覆盖 检错能力由弱到强

10. 根据下面程序代码,画出程序流程图,然后设计满足条件/判定覆盖、条件组合覆盖的测试用例。

BEGIN

T:=0

IF ( X>=80 AND Y>=80 )THEN

T:=1

ELSE IF ( X>=90 AND Y>=75 ) THEN

T:=2

ENDIF

IF (X>=75 AND Y>=90) THEN

T:=3

ENDIF

ENDIF

RETURN

测试用例:

条件/判定覆盖:

1 X=80 Y=80

2 X=90 Y=75

3 X=50 Y=50

条件组合覆盖

1 X=80 Y=80

2 X=80 Y=75

3 X=75 Y=80

4 X=75 Y=75

5 X=90 Y=75

6 X=90 Y=70

7 X=80 Y=75

8 X=80 Y=70

9 X=75 Y=90

10 X=75 Y=90

11 X=70 Y=90

12 X=70 Y=85

11. 软件的可维护性是软件设计师最关注的性能,谈谈为了获得软件良好的可维护性,在设计时应该注意哪些问题?

答:为获得软件的良好可维护性,在设计阶段应该做一些变更实验,检查系统的可维护性、灵活性和可移植性,设计时应该将今后可能变更的内容与其他部分分离开来,并且遵循高内聚、低偶合的原则。

12. 在软件文档中,你认为哪些文档对于软件的维护最重要?

需求分析文档、设计文档、程序文档对软件维护很重要

13. 软件维护时的源程序修改策略是什么?

答:软件维护时的源程序修改策略是:由于软件维护最终落实在修改源程序和文档上。为了正确、有效地修改源程序,通常要先分析和理解源程序,然后才能修改源程序,最后重新测试和验证源程序。

14. 软件项目计划包括那些内容?

答:软件项目计划的内容包括:

1.范围。对该软件项目的综合描述,定义起所要做的工作以及性能限制,它包括:

  (1)项目目标。

  (2)主要功能。

  (3)性能限制。

  (4)系统接口。

  (5)特殊要求。

  (6)开发概述。

2.资源。

  (1)人员资源。

  (2)硬件资源。

  (3)软件资源。

  (4)其他。

3.进度安排。

进度安排的好坏往往会影响整个项目的按期完成,因此这一环节是十分重要的。制定软件进度与其他工程没有很大的区别 ,其方法主要有:

  (1)工程网络图。

  (2)Gantt图。

  (3)任务资源表。

  (4)成本估算。

  (5)培训计划。

15.什么是软件配置管理?什么是基线?

答:配置管理能够系统地处理变更,从而使得软件系统可以随时保持其完整性。配置管理又可成为变更控制,可以用来评估提出的变更请求,跟踪变更,并保持系统在不同时间的状态。软件配置管理是一套规范、高效的软件开发基础结构。基线是:已经通过正式复审和批准的某规约或产品,它因此可以作为进一步开发的基础,并且只能通过正式的变化控制过程改变。

三、 应用题

1. 请读者参考能够找到的编程规范,设计一个C语言编程规范。

答: 文件结构

1.1 版权和版本的声明

版权和版本的声明位于头文件和定义文件的开头(参见示例1-1),主要内容有:

1)版权信息。

2)文件名称,标识符,摘要。

3)当前版本号,作者/修改者,完成日期。

4)版本历史信息。

/*

* Copyright (c) 2001,上海贝尔有限公司网络应用事业部

* All rights reserved.

*

* 文件名称:filename.h

* 文件标识:见配置管理计划书

* 摘要:简要描述本文件的内容

*

* 当前版本:1.1

* 作者:输入作者(或修改者)名字

* 完成日期:2001720

*

* 取代版本:1.0

* 原作者:输入原作者(或修改者)名字

* 完成日期:2001510

*/

示例1-1 版权和版本的声明

1.2 头文件的结构

头文件由三部分内容组成:

1)头文件开头处的版权和版本声明(参见示例1-1)。

2)预处理块。

3)函数和类结构声明等。

假设头文件名称为 graphics.h,头文件的结构参见示例1-2

本文来源:https://www.2haoxitong.net/k/doc/1466a1f4ba0d4a7302763a88.html

《软件工程作业3-答案0903.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式