软件工程课件复习试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【试题实例】
《软件工程》试题
一、从供选择的答案中选出应填入下列叙述中()内的正确答案。

Strong
软件设计中划分程序模块通常遵循的原则是使各模块间的耦合尽可能( A )。

三种可能的模块耦合是:
( B ),例如,一个模块直接引用另一个模块中的数据。

( C ),例如,一个模块把开关量作为参数传送给另一个模块。

( D ),例如,一个模块通过公共数据结构把数据传送给另一个模块。

其中, ( E )的耦合性最强。

【供选择的答案】
A:①强②适中③弱
B~E:①公共耦合②数据耦合③逻辑耦合
④外部耦合⑤内容耦合⑥控制耦合
二、为高质量地开发软件项目,在软件结构设计时必须遵循( A )的原则,( B )建立软件系统的模块结构。

并且应根据( C )评价系统模块划分的质量。

此外在模块设计时,应从5种基本的( D )出发,利用它们组合成一个模块的程序块结构。

要求每个( E )的结构应是单入口和单出口。

【供选择的答案】
A:①质量控制②程序优化③信息隐蔽④数据共享⑤模块通信
B:①自底向上②自顶向下③衍变的自顶向下④随机⑤回归
C:①数据独立性②程序独立性③模块独立性④可修改性⑤可理解性
D:①数据结构②处理结构③功能结构④成份⑤控制结构
E:①程序块②公共块③数据块④记录块⑤通信块
三、从下列叙述中选出5条关于好的程序设计风格的正确叙述。

(在对的前面打√)
(1) 使用括号以改善表达式的清晰性。

(2) 对递归定义的数据结构不要使用递归过程。

(3) 尽可能对程序代码进行优化。

(4) 不要修补不好的程序, 要重新写。

(5) 不要进行浮点数的相等比较。

(6) 应尽可能多地输出中间结果。

(7) 利用数据类型对数据值进行防范。

(8) 用计数方法而不是用文件结束符或输入序列结束符来判别输入的结束。

(9) 程序中的注释是可有可无的。

(10) 使用有意义的标识符。

四、从下列叙述中选出5条关于软件测试的正确叙述。

(在对的前面打√)
(1) 为了使得软件容易测试, 应该使用高级的程序设计语言编制程序。

(2) 程序测试是一个程序的执行过程, 目的是为了发现软件中隐藏的错误。

(3) 如果程序中连锁式连接了8个判定(IF)结构, 则程序中总的路径数达28 。

(4) 白盒测试仅与程序的内部结构有关, 完全可以不考虑程序的功能要求。

(5) 为了快速完成集成测试, 采用一次性集成方式是适宜的。

(6) 对一批模块进行测试,发现错误多的模块中残留的错误将比其它的模块少。

(7) 好的测试用例应能证明软件是正确的。

(8) 边界值分析方法是取输入/输出等价类的边界值做为测试用例。

(9) 等价类划分方法考虑了各等价类之间取值的组合情况下可能的结果。

(10) 判定覆盖法可能查不出在判定中逻辑运算符使用有误时产生的错误。

五、软件需求分析的任务不应包括( A )。

进行需求分析可使用多种工具,但( B )是不适用的。

在需求分析中,分析员要从用户那里解决的最重要的问题是( C )。

需求规格说明书的内容不应当包括( D )。

该文档在软件开发中具有重要的作用,但其作用不应当包括( E )。

供选择的答案:
A. ①问题分析②信息域分析③结构化程序设计④确定逻辑模型
B. ①数据流图②判定表③PAD图④数据词典
C. ①要让软件做什么②要给该软件提供哪些信息
③要求软件工作效率如何④要让软件具有什么样的结构
D. ①对重要功能的描述②对算法的详细过程性描述
③软件确认准则④软件的性能
E. ①软件设计的依据②用户和开发人员对软件要“做什么”的共同理解
③软件验收的依据④软件可行性分析的依据
六、从供选择的答案中选出应填入下面有关软件测试的叙述的()内的正确答案。

软件测试方法可分为黑盒测试法和白盒测试法两种。

黑盒测试法是通过分析程序的( A )来设计测试用例的方法。

除了测试程序外,它还适用于对( B )阶段的软件文档进行测试。

白盒测试法是根据程序的( C )来设计测试用例的方法。

除了测试程序外,它也适用于对( D )阶段的软件文档进行测试。

白盒法测试程序时常按照给定的覆盖条件选取测试用例。

( E )覆盖比( F )覆盖严格,它使得每一个判定的每一条分支至少经历一次。

(G )覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值。

(H )覆盖比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。

单元测试一般以(I )为主,测试的依据是(J )。

供选择的答案:
A, C:①应用范围②内部逻辑③功能④输入数据
B, D:①编码②软件详细设计③软件总体设计④需求分析
E, F, G, H:①语句②判定③条件④判定/条件
⑤多重条件⑥路径
I:①白盒法②黑盒法
J:①模块功能规格说明②系统模块结构图③系统需求规格说明
七、`对于一个小型的软件开发项目,一个人就可以完成需求分析、设计、编码和测试工作。

但随着软件项目规模增大,需要有多人共同参与同一软件项目的工作。

当几个人共同承担软件开发项目中的某一任务时,人与人之间必须通过交流来解决各自承担任务之间的( A )问题,即通信问题。

通信需花费时间和代价,会引起软件错误( B ),( C )软件生产率。

如果一个软件开发小组有n个人,每两人之间都需要通信,则共有( D )条通信路径。

假设一个人单独开发软件,生产率是5000行/人年,且在每条通信路径上耗费的工作量是250行/人年。

若4个人组成一个小组共同开发这个软件,则小组中每个人的软件生产率为( E )。

若小组有6名成员,则小组中每个成员的软件生产率为( F )。

因此,有人提出,软件开发小组的规模不能太大,人数不能太多,一般在(G )人左右为宜。

供选择的答案:
A. ①分配②管理③接口④协作
B, C. ①降低②增加③不变
D. ①n(n+1)/2 ②n(n-1)/2 ③n(n-1)(n-2)/6 ④n2/2
E, F. ①4875 ②4375 ③4625 ④5735
G. ①8~15 ②1~2 ③2~5 ④2~8
八、阅读下列关于软件可靠性方面的叙述,回答问题1和问题2。

软件的可靠度可定义为:在假定输入和硬件不发生错误的前提下,对于给定的环境和给定的输入,在指定的时间内能完成规定任务的概率。

某软件中心的评测部为了评估已开发实现的应用软件ASP的可靠性,决定采用软件可靠性的错误播种模型来进行测试和评估。

评测部在评估时,作了下列三个假设:
(1) 在测试前,单位长度的故障个数E T/ I T为一常数,此常数基本上落在一个固定的范围内。

其中I T为被测程序的长度(即机器指令条数),E T为被测程序中故障总数。

(2) 失效率正比于软件中剩余的(潜伏的)故障数,平均无故障时间MTTF与单位长度的剩余故障个数成反比,即MTTF = 1/(K*εr )。

其中εr 为单位长度剩余故障个数,K的典型值现取为200。

(3) 测试中发现的错误都得到了及时改正,在测试过程中没有引入新的错误。

评测部对ASP软件人为地植入了10个错误,即N S= 10,在开始测试的一小段时间内,发现了160个固有故障,即n = 160,又发现了植入的故障2个,即n S = 2,被测程序ASP的长度(机器指令条数)为105。

问题1:用故障播种(植入)的数学模型,估算出被测程序ASP的固有故障的个数N的值。

如果通过测试一段时间后,发现的固有错误个数为E D= 795时,请估算此程序的平均无故障时间MTTF值。

问题2:若要求把此MTTF再提高4倍,应至少再排除多少个固有错误? 请简要地列出有关计算式。

参考答案
一、答案:A. ③ B.⑤ C. ⑥ D. ① E. ⑤
二、答案:A. ③ B. ② C. ③ D. ⑤ E. ①
三、答案:正确的叙述有:(1)、(4)、(5)、(7)、(10)
说明:(1) 利用括号可以明确地规定表达式中各运算符的优先顺序,这样可以提供表达式运算的清晰性,因此是对的。

(4) 对于不好的程序,一是程序逻辑混乱以致理解困难,二是隐藏错误多,三是错误定位和修改容易出问题,所以修修补补,越补越糟,不如重新写。

(5) 浮点数的运算有其近似性,两个浮点数可能会非常接近但永远不会相等,所以做浮点数的相等比较可能不会有结果。

(7) 利用数据类型来检查数据值,这是静态分析的一种手段,叫做类型分析,因此是对的。

(10) 使用有意义的标识符,可以提高程序的可读性,因此是对的。

其它的叙述都不对。

(2) 对递归定义的数据结构,应当使用递归过程来解决基于这种数据结构的应用问题。

(3) 程序代码的优化工作应交给编译器来做,程序设计时应首先考虑程序代码的清晰性、简明性、可读性、正确性、以至于可维护性。

(6) 输出中间结果只是在调试程序时才有用,其它时候输出大量中间结果,不但浪费资源,而且给使用者造成麻烦。

(8) 从文件输入数据时,应当使用文件结束符来判断输入的结束,使用计数方法判断输入结束不一定是最佳方式。

(9) 程序中的注释是必须的,不是可有可无的。

四、答案:正确的叙述有:(1)、(2)、(3)、(4)、(8)。

说明:(1) 使用高级语言编写的程序模块化、结构化程度都比较好,可读性强,容易测试。

(2) 程序测试本身应当是一个程序的执行过程,而不是静态的逻辑分析,其目的是发现程序中潜藏的错误。

(3) 连锁式分支结构有n个判定,其路径数有2n条,因此当n = 8时程序中总的路径数有28条。

(4) 白盒测试基于程序的内部结构设计测试用例,可以不考虑程序的功能要求。

(8) 由于在等价类的边界上最容易出错,所以边界值分析方法选取输入∕输出等价类的边界值作为测试用例,可以有效地查错。

不正确的叙述,如(5) 采用一次性集成方式进行模块组装,往往成功的可能性低,而且出现错误时,不容易确定在什么地方出了问题,因此应采用增殖式集成方式,可以把出错的范围局限到少数模块中间。

(6) 测试的实践表明,对一批模块进行测试,发现错误多的模块中残留的错误也多,因此必需注意这一现象,
弄清哪些模块问题发现得多,对这些模块重点测试。

(7) 好的测试用例是能够发现新错误的测试用例,发现不了问题的测试用例就不是好的测试用例,用它们做测试是浪费时间和金钱。

(9) 等价类划分法是选择输入等价类的代表值作为测试用例,而因果图法才是考虑了各等价类之间取值的组合情况及可能的结果来设计测试用例的。

(10) 语句覆盖法可能查不出在判定中逻辑运算符使用有误时产生的错误。

而判定覆盖法则可能查不出在判定中某些条件中关系运算符使用有误时产生的错误。

五、答案:A. ③ B. ③ C. ① D. ② E. ④
分析:软件需求分析的任务是通过与用户的合作,了解用户对待开发系统的要求;根据对用户要求的系统所在的信息域的调查、分析,确定系统的逻辑模型;并对求解的问题做适当的分解,使之适合于计算机求解。

需求分析的结果是软件需求规格说明书。

结构化程序设计是在详细设计和编码阶段所采用的技术,而不是需求分析阶段要采用的技术。

在需求分析阶段,分析人员可以用数据流图描述系统的数据流的变换和流向,用数据词典定义在数据流图中出现的数据流、数据文件、加工或处理,用判定表表示复杂条件和动作组合的情况。

但PAD图是在详细设计阶段使用的描述加工逻辑的工具,不适用于需求分析。

此外,软件需求分析阶段只确定软件系统要“做什么”,完成对重要功能、性能、确认准则的描述,至于“怎么做”由后续的设计阶段完成,对算法的详细过程性描述也是在设计阶段给出。

软件可行性分析应在需求分析之前,所以需求分析规格说明不能成为可行性分析的依据。

六、A. ③ B. ④ C. ② D. ② E. ② F. ①G. ④H. ⑤I. ①J. ①
软件测试方法可分为黑盒测试法和白盒测试法两种。

黑盒测试法是基于程序的功能来设计测试用例的方法。

除了测试程序外,它还适用于对需求分析阶段的软件文档进行测试。

白盒测试法是根据程序的内部逻辑来设计测试用例的方法。

除了测试程序外,它也适用于对软件详细设计阶段的软件文档进行测试。

白盒法测试程序时常按照给定的覆盖条件选取测试用例。

判定覆盖比语句覆盖严格,它使得每一个判定的每一条分支至少经历一次。

判定/条件覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值。

多重条件覆盖,也叫组合条件覆盖,比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。

单元测试一般以白盒法为主,测试的依据是系统的模块功能规格说明。

七、A. ③, B. ②, C. ①, D. ②, E. ③, F. ②, G. ④。

对于一个小型的软件开发项目,一个人就可以完成需求分析、设计、编码和测试工作。

但是,随着软件开发项目规模的增大,就会有更多的人共同参与同一软件项目的工作。

例如10个人1年可以完成的项目,若让1个人干10年是不行的。

因此,需要多人组成开发小组共同参加一个项目的开发。

但是,当几个人共同承担软件开发项目中的某一任务时,人与人之间必须通过交流来解决各自承担任务之间的接口问题,即所谓通信问题。

通信需花费时间和代价,会引起软件错误增加,降低软件生产率。

若两个人之间需要通信,则称在这两个人之间存在一条通信路径。

如果一个软件开发小组有n个人,每两人之间都需要通信,则总的通信路径有n(n-1)/2条。

假设一个人单独开发软件,生产率是5000行/人年。

若4个人组成一个小组共同开发这个软件,则需要6条通信路径(图(a))。

若在每条通信路径上耗费的工作量是250行/人年。

则小组中每个人的软件生产率降低为
5000-6×250/4 =5000-375 =4625 行/人年。

如果小组有6名成员,通信路径增加到15条(图(b))。

每条通信路径消耗的工作量不变,则小组中每个成员的软件生产率降低为
5000-15×250/6 =5000-625 =4375 行/人年。

从上述简单分析可知,一个软件任务由一个人单独开发,生产率最高;而对于一个稍大型的软件项目,一个人单独开发,时间太长。

因此软件开发小组是必要的。

有人提出,软件开发小组的规模不能太大,人数不能太多,一般在2~8人左右为宜。

八、答案:
〖问题1〗利用故障播种(植入)模型,被测程序ASP 的固有故障个数N 的值为:
N = N S * n / n S = 10 * 160 / 2 = 800 (个故障)。

根据Shooman 模型:
〖问题2〗把此MTTF 再提高4倍,则MTTF = 500,有
得: E C (t) = 799
因此,只要再排除799 - 795 = 4个固有错误,MTTF 就可再提高4倍。

100)
795800(20010(t))E K(E I MTTF 5
C T T =-=-=500))
Ec(t 800(20010(t))E K(E I MTTF 5
C T T =-=-=。

相关文档
最新文档