|
2018-2019学年第一学期期末考试0 S. i1 `3 c! [* K( Z1 l8 o
《软件工程》(复习题)
* {* T! [( Y1 H" M2 R9 T$ \: ?3 x# Q4 y4 _# v
一、选择题
9 y. D3 |% D6 z根据McCabe方法,以下流图的环形复杂度为( )
8 p% r8 M3 a* Z( ^% H5 e. K
" f G# ]' r. O* a; V' d
6 |, G- s t* b) Q1 T1 A. 4 B. 5 C. 6 D. 7
6 m- M( u: D% y/ i @
1 Q/ q$ A+ t9 l9 D( @+ j/ ~# v7 X某银行为了使其网上银行系统能够支持信用卡多币种付款功能而进行扩充升级,这需要对数据类型稍微进行一些改变,这一状况需要对网上银行系统进行( )维护。6 q* i( E/ I. D2 A0 V0 S; ?% a
2 A. 正确性 B. 适应性 C.完善性 D. 预防性) G& {4 \; o; R- t3 I
. u% V5 a- C+ v% Z: A3以下关于软件系统文档的叙述中,错误的是( )。% u; f) b/ D+ r/ n* C& f4 z# ?4 o
A. 软件系统文档可以提高软件开发的可见度。
% e, G8 N1 `2 }9 x: k' j0 c" J B. 软件系统文档既包括有一定格式要求的规范文档,又包括系统建设过程中的各种来往文件、会议纪要等资料形成的不规范文档。
! n v, f& T# O9 I( u) ^0 T C. 软件系统文档不能提高软件开发的效率。
3 L: ~& m: i; Y# F D. 软件系统文档便于用户理解软件的功能、性能等各项指标。% Y# f& l3 b% l1 T
' K# B* D$ ^4 n1 u: K
给定如下代码:
1 N4 @% F2 J% u3 V5 n" Lint func(int x, int y, int n)% j7 r' ~- ^0 M( S) q$ h# `
{
( ]2 \8 k# w) J( V. n3 s7 r. B if (x != 0){
+ p. h$ |" d2 [. G8 r' j if (y == 0) n = n/x;2 o+ ~- T1 e* S4 Y+ L
else n = n/(x*y);) {4 ~" @+ } D7 p, }, t
} else {$ Q- ], n) u4 Y% a# X
if (y == 0) n = 0;
* P: |$ d8 c$ _. L else n = n/y;7 E; ]- h9 a/ f# Z4 c( g* S
}
0 Y2 A: d* q; t1 @% H) i return n;
* p5 M5 u' O. Z4 Y0 [' Z}5 ~: ~0 O, c) |5 i5 d" s* w& O
当用路径覆盖法进行测试时,至少需要设计( )个测试用例。
H. F1 z i% }- \4 A. 3 B. 4 C. 5 D. 67 @4 @/ I( L% A
" g K8 O2 n3 H5 N" ^& Q* i- |2 u
以下关于原型化开发方法的叙述中,不正确的是( )。
7 E9 f9 J' ~. C5 \& R6 x% N5 A.原型化方法适应于需求不明确的软件开发4 O; P1 r8 f% Z- T% }- |/ |
B.在开发过程中,可以废弃不用早期构造的软件原型
+ h/ F) M; P( l# @$ t% O- J C.原型化方法可以直接开发出最终产品
" G) N1 _! S; d/ w% K. g D.原型化方法利于确认各项系统服务的可用性
- K$ f4 j( V- z+ i2 C' @+ ]6 Y4 b7 i% X! L# x/ ]1 N6 N. _& g
程序的三种基本控制结构是( )。
9 g6 F( t( k+ i2 ^( t: S& F! ^( Z6 A. 递归、堆栈和队列 B. 顺序、选择和重复
% b9 b: C5 e. |+ |. r3 D C. 过程、子程序和代码块 D. 调用、返回和跳转
3 ?: J) c+ r' x* i: I7 T- ]
" H0 A+ L- x; v. ?# LUML的设计视图包含了类、接口和协作。其中,设计视图的静态方面由( )和( )表现;动态方面由交互图、( )表现。% C D# C: | c1 w0 t5 y
7 A.活动图 B. 状态图 C. 类图 D. 顺序图
1 k2 R, j: k" {+ g _/ K/ x8 A.顺序图 B. 对象图 C. 配置图 D. 通信图
( o- m+ U% Q( y9 A. 状态图和类图 B. 类图和顺序图" k$ X* t. d9 E k; I, Z) E- q
C. 对象图和状态图 D. 状态图和活动图$ M, X1 ?4 E' \8 }
% R4 \, ^2 k1 |& B( Y8 J# S
通常用( )作为描绘软件结构的文档。6 a% H- g& x; W( N
10 A.结构图 B. 数据流图 C. 层次图 D. PAD图7 G; O3 J3 N$ F
" q# q. \/ ~1 E9 T9 j在某企业员工管理系统中,假设员工年龄的输入范围为20~60,则根据等价类划分技术,下面划分正确的是( )。
# |9 I" R1 }, K* J' G0 c1 g11 A. 可划分为2个有效等价类,2个无效等价类
% D$ \! Z& M1 X D/ q: l2 @0 D( w B. 可划分为1个有效等价类,2个无效等价类
7 m- F0 M0 l8 p0 E6 ^1 j6 B C. 可划分为2个有效等价类,1个无效等价类
' S. d; @( E8 ~2 v0 r" s% C+ R D. 可划分为1个有效等价类,1个无效等价类5 ~; \, d! E) S$ O
, P Y; O9 `$ I7 b! X
( 12 )是一种很强的“拥有”关系,“部分”和“整体”的生命周期通常一样,整体对象完全支配其组成部分,包括它们的创建和销毁等;
' F" k k8 U, ]6 P! v" ]7 G1 H: V' n( 13 )同样表示“拥有”关系,但有时候“部分”对象可以在不同的“整体”对象之间共享,并且“部分”对象的生命周期也可以与“整体”对象不同,甚至“部分”对象可以脱离“整体”对象而单独存在。上述两种关系都是( 14 )关系的特殊种类。
# S V( J" ?: z12 A. 继承 B. 关联 C. 组合 D. 聚合. i, a6 b1 [3 @' e5 y
13 A. 继承 B. 关联 C. 组合 D. 聚合
2 q9 O8 M |& d' k, G! I8 R14 A. 继承 B. 关联 C. 组合 D. 聚合0 F# _2 O; j6 P1 m+ x# [
0 @( ~! f$ D7 H( g1 m' i6 v在面向对象分析与设计中,( 15 )是应用领域中的核心类,一般用于保存系统中的信息以及提供针对这些信息的相关处理行为;( 16 )是系统内对象和系统外参与者的联系媒介;( 17 )主要是协调上述两种类或对象之间的交互。* T. z& c4 |1 Z! ]- R" j. }
15 A. 分析类 B. 控制类 C. 边界类 D. 实体类1 W- P! j) G" v
16 A. 分析类 B. 控制类 C. 边界类 D. 实体类
4 M5 x, |: t1 K: s. }17 A. 分析类 B. 控制类 C. 边界类 D. 实体类' P& K3 Y* i$ t
3 z0 @: Y. X+ ]/ l) m2 m7 o
模块A直接访问模块B的内部数据,则模块A和模块B的耦合类型为( 18 )。9 v' Z" n$ a2 A/ |5 B* |. w' h& w
18 A. 公共耦合 B. 标记耦合 C. 内容耦合 D. 数据耦合
2 d9 l( `$ a) t7 P, v7 u& R0 }2 d+ P/ `2 I
通常在软件的( 19 )活动中无需用户的参与。
2 y& [8 [* \: R* n19 A. 需求分析 B. 维护 C. 测试 D. 编码
; s0 E* p. X. X F2 [# H$ f* b9 _+ R+ g1 A+ _+ ^9 {
某系统开发中重用了第三方组件,但无法获得该组件源代码,应采用( 20 )法对该组件进行测试。
' h7 F% m7 d3 u. v: `20 A. 黑盒测试 B. 基本路径 C. 分支覆盖 D. BRO测试. B, S Y/ w1 t; a0 f
2 F1 K w* ?: {! a软件是计算机系统中与硬件相互依存的另一部分,它是包括( 21 )、( 22 )及( 23 )的完整集合。其中,( 21 )是按事先设计的功能和性能要求执行的指令序列。( 22 )是使程序能够正确操纵信息的数据结构。( 23 )是与程序开发、维护和使用有关的图文材料。
- F* W6 c8 ^( o* P2 N6 a1 ^21选择的资料:
4 N! f/ Z3 Q) G: _! O8 i6 c ]7 c8 ]A. 数据 B. 程序 C. 用户使用手册 D. 图表, T( A T; b ` ^& T
22选择的资料:
8 e9 _- J- t/ F3 \A. 数据 B. 文档 C. 代码 D. 安装说明
# A$ u+ x% f/ R% m+ x23选择的资料:
& t7 D+ [/ @5 q1 M5 S, I+ EA. 程序 B. 数据 C. 外设 D. 文档& \+ Z9 B' Z/ U% ~& T- \9 S
) b3 Y' B6 y, g# x: u! e7 W
软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别、分析与综合、编写需求分析文档以及( 24 )。
! e/ A: x" i$ M24选择的资料:% C$ U) O2 V0 L9 \5 m) Q) {$ j* M
A. 总结 B. 阶段性报告 C. 需求分析评审 D. 以上资料都不正确; g' [6 T+ ]; J! N
7 `/ I* r* I% D; x: F7 D7 ?2 I
软件需求分析的任务不应包括( 25)。进行需求分析可使用多种工具,但( 26 )是不适用的。在需求分析中,分析员要从用户那里解决的最重要的问题是( 27)。需求规格说明书的内容不应当包括( 28)。该文档在软件开发中具有重要的作用,但其作用不应当包括( 29)。
3 N+ n) D$ n `/ |$ u% R25选择的资料:
" f" y9 @& x. p4 H8 }8 E8 ?7 W( V) S A. 问题分析 B. 信息域分析 C. 结构化程序设计 D. 确定逻辑模型
5 U- u) J6 p* M7 u9 z1 W26选择的资料:7 }7 [2 E" V0 y: u: B) M
A. 数据流图 B. 判定表 C. PAD图 D. 数据词典; O5 _8 C3 z3 w9 e4 R
27选择的资料:
' B1 p! a% o N: b4 a m# \( A A. 要让软件做什么 B. 要给该软件提供哪些信息8 {0 o% y7 ]2 i* S% v
C. 要求软件工作效率如何 D. 要让软件具有什么样的结构
/ g" i' @+ w+ O' P28选择的资料:/ I2 T' x: H/ T# e8 T/ Q- |
A. 对重要功能的描述 B. 对算法的详细过程性描述
) F- m! @. X6 a2 p5 ^C. 软件确认准则 D. 软件的性能" I, ` e- M: p8 g) b( ?
29选择的资料:' P# B$ i/ N# b" r' B. l4 w; T: B- l/ q
A. 软件设计的依据 B. 用户和开发人员对软件要“做什么”的共同理解% q P0 C8 R6 [
C. 软件验收的依据 D. 软件可行性分析的依据/ Y' r$ L R, t+ r+ V
* }2 ^' K0 J5 \: b6 ?! B
原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于( 30)系统。它从用户界面的开发入手,首先形成( 31 ),用户( 32,并就( 33)提出意见。
5 g7 I3 Q: j' D30的资料:
4 _# D4 i' H# h$ U" g5 XA. 需求不确定性高的 B. 需求确定的 C. 管理信息 D. 决策支持
8 I- o; F9 D% @1 r. Q31选择的资料:' V. s7 h% b! [+ F9 }
A. 用户界面使用手册 B. 用户界面需求分析说明书 C. 系统界面原型 D. 完善的用户界面- I, H! r) _7 @7 E- k" g
32择的资料:$ h% g+ \/ P, I- R5 |+ r
A. 改进用户界面的设计 B. 阅读文档资料
7 ]0 H' J- X) j* F4 b; |- w3 u. pC. 模拟用户界面的运行 D. 运行用户界面原型
# {& m# e3 |; a$ {3 o- W33资料:
& C$ H2 C$ e( o+ i0 H5 @7 UA. 同意什么和不同意什么 B. 使用和不使用哪一种编程语言- y8 A; c' t' [% F6 z
C. 程序的结构 D. 执行速度是否满足要求, X+ q. W% S+ F' g# S; ]
0 N6 d4 }3 Y G5 o9 ? A! S' b5 n7 K以下叙述中不符合程序设计风格指导原则的叙述是( 34)。3 i) u$ `8 u; y {
34案:
9 @0 I0 S7 e$ e$ \. kA. 嵌套的重数应加以限制 B. 不用可以省略的括号8 F' |( { K, t! |, v
C. 把常见的局部优化工作留给编译程序去做 D. 使用有意义的变量名
6 I1 e& m1 O- Y( P# C! |
; r6 _) v8 \& y, X( t软件测试的目的是( 35)。为了提高测试的效率,应该( 36。使用白盒测试方法时,确定测试数据应根据( 37)指定的覆盖标准。与设计测试数据无关的文档是( 38)。
# O5 S9 _/ y- Y8 I/ d V软件的集成测试工作最好由( 39)承担,以提高集成测试的效果。6 [! c" @! f- v1 M: Y: Q) k
供选择的资料:" X8 V @2 ~& r/ ?+ W
35选择的资料:1 f% w% D2 s1 j9 C$ V
A. 评价软件的质量 B. 发现软件的错误
' k$ K1 P( j: T- p MC. 找出软件中的所有错误 D. 证明软件是正确的4 E8 |2 F7 y, k& E6 ~, [
36择的资料:
! _4 C( B1 R# M$ lA. 随机地选取测试数据 B. 取一切可能的输入数据作为测试数据8 [5 ?0 {+ c. [9 ]7 f
C. 在完成编码以后制定软件的测试计划 D. 选择发现错误的可能性大的数据作为测试数据: h Z2 l6 I8 o' j! f% p+ f3 @
37择的资料:' o) P0 j" W: X% z
A. 程序的内部逻辑 B. 程序的复杂程度, ~5 L4 F) J+ E* u. Q
C. 使用说明书 D. 程序的功能% C$ S4 a# v! {: ?6 Z9 J; n
38择的资料:" _7 T$ }! i- g
A. 软件总体设计文档 B. 需求规格说明 C. 源程序 D. 项目开发计划( I# ?5 A1 p6 P% F
39择的资料:7 s0 G' R( n+ C) n% S- I: O
A. 该软件的设计人员 B. 该软件开发组的负责人% @" G: V3 _3 b6 h
C. 该软件的编程人员 D. 不属于该软件开发组的软件设计人员5 @/ |/ u- ~! s# d3 o5 S- ^
- A) [, P6 N& c" D5 z( u由RumBaugh等人提出的一种面向对象方法叫做对象模型化技术(OMT),即三视点技术,它要求把分析时收集的信息建立在三个模型中。第一个模型是( 40)它的作用是描述系统的静态结构,包括构成系统的对象和类,它们的属性和操作,以及它们之间的联系。第二个模型是( 41 ),它描述系统的控制逻辑,主要涉及系统中各个对象和类的时序及变化状况。该模型包括两种图, 即( 42 )和( 43 )。( 42 )描述每一类对象的行为,( 43 )描述发生于系统执行过程中的某一特定场景。第三个模型是( 44 ),它着重于描述系统内部数据的传送与处理,它由多个数据流图组成。 ( I( J6 V+ H7 H) F* h3 E
40择的资料:( Y2 X) y. V# N" z ?, N4 Q
A. 数据模型 B. 行为模型 C. 逻辑模型 D. 对象模型0 B8 P) H9 W! I' E1 G* G6 |
41选择的资料:
( x5 q8 b6 A5 ~! \( Q7 |A. 控制模型 B. 动态模型 C. 仿真模型 D. 功能模型- I4 w, Q: ], G. S
42选择的资料:
: c$ d% N2 R" ^( q4 cA. 对象图 B. 概念模型图 C. 状态迁移图 D. 数据流程图, S4 t: K: N# k. t9 m) _( S
43选择的资料:
$ \9 C e+ | x* j: \A. 事件追踪图 B. 控制流程图 C. 逻辑模拟图 D. 数据流程图
+ j- o2 v) B( C" S$ E; c( Z% ]% O44选择的资料:* X$ a/ u, \3 ?; y4 N( E
A. 功能模型 B. 行为模型 C.动态模型 D. 对象模型
) a9 Q5 s, y* W; s0 i [7 D4 `# ?* ?( \1 [! R) [
符合下列5个叙述的软件特性名称及顺序是( 45 )。
7 [7 X! g( Z0 S. E3 l8 `# Y ①. 软件从一个计算机系统或环境转移到另一个计算系统或环境的容易程度。$ J2 x" ^1 A3 C
②. 软件在需要它投入使用时能实现其指定的功能的概率。& @, C) u3 H6 y' ^
③. 软件使不同的系统约束条件和用户需求得到满足的容易程度。
& ^0 e+ K5 j5 B- Z ④. 在规定的条件下和规定的一段期间内,实现所指定的功能的概率。 V' H* S8 g, J" g. Z( i7 S8 T
⑤. 尽管有不合法的输入,软件仍能继续正常工作的能力。
$ Y& s$ R& n! _45选择的资料:
# U$ v9 |8 [% h2 B X. m( XA. 可测试性 可靠性 可理解性 可修改性 兼容性
3 _( I y) b% U% E& J' rB. 可移植性 可使用性 兼容性 可靠性 容错性
% ~0 `+ e4 j( d: |: F2 C5 G6 Y, }3 wC. 可移植性 可靠性 可修改性 可使用性 容错性
7 P; ?! P2 U5 m& r: t8 |$ OD. 一致性 可靠性 可移植性 可使用性 可修改性
) Y8 k) I8 P0 A. @; u |, s9 G3 Z
对于一个小型的软件开发项目,一个人就可以完成需求分析、设计、编码和测试工作。但随着软件项目规模增大,需要有多人共同参与同一软件项目的工作。当几个人共同承担软件开发项目中的某一任务时,人与人之间必须通过交流来解决各自承担任务之间的( 46 )问题,即通信问题。通信需花费时间和代价,会引起软件错误( 47 ),( 48 )软件生产率。如果一个软件开发小组有n个人,每两人之间都需要通信,则共有( 49 )条通信路径。因此,有人提出,软件开发小组的规模不能太大,人数不能太多,一般在( 50 )人左右为宜。
. L" g) N. g( W' j+ `4 {3 ~3 `, P5 n46选择的资料:* [7 H# @% G' r" f) M5 f. u. T
A. 分配 B. 管理 C. 接口 D. 协作
1 H( f; m. Q- K0 J: f5 F7 F47选择的资料:
9 M s6 K" o4 ^4 R" m( P8 OA. 降低 B. 增加 C. 不变 D.降低、增加和不变都有可能" e, ]) h2 U3 S f( G: K
48选择的资料:5 r- t. r3 `# B8 B) r
A. 降低 B. 增加 C. 不变 D.降低、增加和不变都有可能! S2 c0 @( \* k
49选择的资料:. [' W, X" {; X7 b- S
A. n(n+1)/2 B. n(n-1)/2 C. n(n-1)(n-2)/6 D. n2/25 G# x: Z: I+ f" S
50选择的资料:
7 J, J+ I1 n: |6 FA. 8~15 B. 1~2 C. 2~5 D. 2~8
/ ~% M+ a3 k- T, O! j' m& b3 z
- ?' j2 v7 m' j5 h3 C' X) I1 S7 Q! _* H [" o+ V& p* t1 ^8 x* j# A
二、判断正误
- j6 H2 a! w. S1 S, p
# |% a0 S$ v6 y- X+ a; Y5 G1. 软件项目的质量管理工作可以交给该项目的测试团队来做。
' }* A) J* h, T# e) w2. 使用等价划分法设计测试方案首先需要划分输入数据的等价类。 7 d3 q0 L3 x1 h* ^5 _8 b
3. 设计测试用例时,应该使每个测试方案只覆盖一个无效的等价类。 , Y$ f9 ]0 d# y
4. 软件工程基本原理提倡采用大而全的开发团队。
( s) [4 T' [6 O. D6 F5. 模块的控制域定义为受该模块内一个判定影响的所有模块的集合。 * G4 i: ~9 y5 J* u
6. 软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功运行的概率。 * i v% n4 @, L; H
7. 软件项目管理先于任何技术活动之前开始。
$ l' f# t3 Y+ {0 \1 e8. 可行性研究的目的是用最小的代价在尽可能短的时间内确定系统的架构。
! B6 @$ r6 H. ~, e$ ]7 c9. 在一段程序中已经发现的错误数目往往和尚未发现的错误数目成反比。 8 L7 ]* U3 G6 K# \1 v/ y6 Y
10. 软件生命周期由软件设计、软件开发和运行维护3个时期组成。. Q+ D2 ?7 x8 E8 K7 E
11.做功能测试或数据驱动测试,黑盒测试又称为结构测试或逻辑驱动测试。5 a, i4 W5 |: v* l8 V7 R9 \; ~5 X
12.指系统要记录和维护的信息;边界类指系统和外部要素间交互的边界;控制类指Use Case中行为的协调。7 x# u( h# P$ s) @4 d" [
13.试是软件质量保证的唯一手段。
; n2 T) c8 V1 R) k& i7 i) D14.中与计算机硬件特性有关的部分集成在一起容易导致系统可移植性的降低。& D/ I, O6 k( z5 Y3 x, u9 V( F/ y% e l
15.象分析是提取和整理用户需求,并建立问题域精确模型的过程。面向对象设计则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。
* v% h9 \" x+ l4 ?7 ?) G5 v- D- Y16.方法而不是用文件结束符或输入序列结束符来判别输入的结束,这样做是一种良好的程序设计风格。$ N2 M* Y3 R; D( d) Y9 y: X- }9 {
17.盖法则一定可以查出在判定中某些条件中关系运算符使用有误时产生的错误。
1 \4 | m( O* ^! N% ]( l2 Y4 V& f$ ~18.志一个模块内各个元素彼此结合的紧密程度,模块独立性由弱到强的同时模块内聚性由低到高的顺序是:功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、巧合内聚。0 T! M* @3 }) J+ ^& |. A! N
19.象方法学的要点:尽可能模拟人类习惯的思维方式,使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。以数据和信息为主线,把数据和处理相结合。6 i) }4 k2 [0 s& A+ h. c
20.划分法的主要思想是首先将所有的输入数据划分成若干个有效等价类,然后设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的等价类,重复这一步,直到所有的等价类都被覆盖为止。
8 k) X2 ` }7 B7 ^6 O21手册要使用专门术语,并充分地描述该软件系统的结构及使用方法。
! A9 e' K' p% y2 ]' o22.发时,一个错误发现得越晚,为改正它所付出的代价就越大。/ w2 U# l, W7 h+ V
23.析报告应把每个模块实际测试的结果,与软件需求规格说明书和概要设计说明书中规定的要求进行对照并作出结论。0 {4 V2 `0 e ~! @. n
24.发计划除去规定项目开发所需的资源、开发的进度等以外,还可以包括用户培训计划。
- A- j; A" ^" T5 Z5 j( U25究报告应评述为了合理地达到开发目标而可能选择的各种方案,以便用户抉择。因此,编写者不必提出结论。3 \! {3 h1 t4 g6 C. W' A
A9 a/ }4 q3 n0 ^4 e' K: @1 C
三、完成下列各题
( s& e/ U# t/ w9 S ~0 e+ y: l: o9 P" L( M& i
1. 谋学网(www.mouxue.com):软件配置管理。( Q( c- P! P7 W3 S0 ^ U6 H1 v
2. 软件规模估算的代码行方法存在哪些影响估算结果的问题? \# O: @- t" q. v+ A0 F9 H0 R
3. 根据如下工程网络图回答下列问题,设时间单位为天。
* K3 M1 q* J% F, Q' g; w ) Z* Z. [/ A: n$ @) `: ?! C+ S3 \
(1)事件J的最早开始时间是多少? 3 \$ j$ k( J7 }* U6 C
(2)事件G的最晚开始时间是多少?
' q/ z( M) a6 [( a$ Q: K& a% w8 ](3)给出该工程网络的关键路径。
{" M% T* p' j3 D( ~4 ]8 C(4)在不延误项目总工期的前提下,活动E-G最多可以推迟几天开始?
* x( o, J7 ` I, D1 {# C
7 V2 ^/ ~+ D& {+ ?# w4 假设某公司人力资源管理系统中有如下一段代码。根据代码,回答下列问题。
4 e# L8 Q& J% O(1)画出GetResult函数对应算法的判定树。+ N9 L/ Y) n% c- k
(2)计算GetResult函数的环形复杂度。+ D+ Q' `6 \9 K: D) F. v
(3)根据(2)的结果,指出该函数存在的问题。3 i! n% @) ^( r3 X* d. J4 M% N. l
(4)根据模块独立性的内聚度划分,该函数的内聚度属于哪种?
+ C7 [+ d# [# ^6 k( O(5)如何修改该函数,以达到较好的内聚度并解决(3)中的问题?
% ?& x) T* e. [# Q* y' Z(6)根据上述问题的结论试叙述模块内聚度与单元测试工作量之间的关系。8 @3 A- X5 c: T, h( y2 M
; I. D0 R) B9 _. Zvoid GetResult(Manager m, Request r), D- P0 \3 f8 F
{( D; a$ U) Z2 ]$ `* B! N
if (m.ManagerLevel == “经理”) {
. u2 q+ G- `0 @8 Y! M if (r.RequestType == “请假” && r.Number <= 2) {+ i; o/ ]* j9 H% K( w& m; R& P' b
cout << m.Name << “:” << r.RequestContent << “ 被批准”;
Z5 A: q, }3 k! j } else {4 K! J- d! D! _$ j
cout << m.Name << “:” << r.RequestContent << “ 我无权处理”;
Y# i A( Y) ?- M& u# k, b% [9 h }* O7 U0 S, c0 l- u+ l
}$ y( I1 t( o' z# V: b' X
else if (m.ManagerLevel == “总监”) {
' s& K7 j% q6 k2 S if (r.RequestType == “请假” && r.Number <= 5) {
- s) I' c# o$ r9 C cout << m.Name << “:” << r.RequestContent << “ 被批准”;- K6 i8 ^& S8 T: J% J) ?9 B
} else {- F9 K, b! \& p5 c7 t
cout << m.Name << “:” << r.RequestContent << “ 我无权处理”;
7 e7 R4 i6 [: I. v+ I# J: ^ }2 R8 D/ t! J; r/ V" p8 k
}( |5 o- [* ?0 A$ f. M
else if (m.ManagerLevel == “总经理”) {% \) \3 M( d! x% g
if (r.RequestType == “请假”) {5 L% x. V0 C8 Z9 }2 D# D c
cout << m.Name << “:” << r.RequestContent << “ 被批准”;
, U# v+ w" y0 S' c/ ? } else if (r.RequestType == “加薪” && r.Number <= 500) {
; S2 I0 V( h5 E2 j. S4 z8 t( y cout << m.Name << “:” << r.RequestContent << “ 被批准”;. q" H4 c+ ?. E- S
} else if (r.RequestType == “加薪” && r.Number > 500) {3 q4 C/ [ Y7 I2 |6 t0 K
cout << m.Name << “:” << r.RequestContent << “ 再说吧”;
$ _/ I& L5 Q+ Y7 { }
V4 g; B1 o [8 x; I7 D: \/ l }6 k% p# G% ], `% @
}
^# X% V0 t* ]0 d, B# L5 C7 N+ I3 c# O: D" h& c: ^( ]
5述瀑布模型的内容和特点。/ h6 t9 v' A, s# y1 l+ U# _
6.是软件维护,软件维护有哪些主要类型?试分别说明之。
; O# }5 v8 I2 U5 u/ T R2 e4 {5 @" ~7.是软件可靠性和可用性?假设用R(t)表示软件可靠性函数,A(t)表示软件可用性函数,对于允许修复并有一定修复能力的部门,R(t)≥A(t)成立还是A(t)≥R(t)成立? # H1 b+ W( D! S8 E1 i6 t: B
8.是软件体系结构风格?任意列举3种体系结构风格。( p. R. ^) K# Z6 Z9 \; M1 M* e# k
9述软件自顶向下集成测试的过程,说明这种集成的优缺点。7 K9 u( n, O: R& G
11. 如下工程网络图,请计算每个事件的最早时刻(EET)和最迟时刻(LET),重新画出带有EET和LET的工程网络图,找出其中的关键路径,并在重新画出的工程网络图中用括号及括号中的数字标出每个作业的机动时间。4 b: S3 J' d/ V. a. p
0 c" t9 @3 b; r! {/ x1 w$ D& e
" o' S/ Z s) L) a3 t/ R2 Z: {/ O L _* W
. f/ B0 ]: s: {
0 q) I. K: M; B! w* s, @* F% F
2 w3 \5 \* q* s/ a
. |/ c* h' G; ^1 w. Z( ?$ q3 [9 p% ~0 S, W: F6 X
1 ?' E- I& n0 q$ e9 x
; ]$ _$ n5 h3 p( a6 {0 l" ^- p4 B0 c& k @4 x4 A# c
$ b' }9 F7 c- E) `3 d6 U$ G% D) }
11.一个长度为48000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。经过一个月测试后,甲发现并改正20个错误,使MTTF达到8h。与此同时,乙发现24个错误,其中的6个甲也发现了。以后由甲一人继续测试这个程序。问:' t2 e* y( ^& r# n; \& t
(1)刚开始测试时程序中总共有多少个潜藏的错误?
$ M: S5 O! x8 b9 I3 G; @2 X0 ^(2)为使MTTF达到240h,必须再改正多少个错误?
% ~8 e. i4 m0 m y(注:评测部在评估时,作了如下三个假设:A. 在测试前,单位长度的故障个数ET / IT 为一常数,此常数基本上落在一个固定的范围内。其中IT 为被测程序的长度(即机器指令条数),ET 为被测程序中故障总数。B. 失效率正比于软件中剩余的(潜伏的)故障数,平均无故障时间MTTF与单位长度的剩余故障个数成反比,即 MTTF = 1/(K*εr )。其中εr 为单位长度剩余故障个数。C. 测试中发现的错误都得到了及时改正,在测试过程中没有引入新的错误。)
+ u( x5 B$ u0 r/ y0 C0 r
5 ~/ ^; a ?9 B4 Y12.述牙科诊所管理系统的用例模型(画出Use Case图)和对象模型(画出类图)。(10分)8 v& }2 k/ W1 R4 v5 }( g
王大夫在小镇上开了一家牙科诊所。他有一个牙科助手、一个牙科保健员和一个接待员。王大夫需要一个软件系统来管理预约。
3 T K+ J ~/ y' R. M4 `4 e, X当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到诊治。如果病人同意建议的时间,接待员将输入约定时间和病人的名字。系统将核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。
0 S4 X- i3 N+ t! F9 A系统能够按病人姓名和按日期进行查询,能够显示记录的病人数据和预约信息。接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病人的电话号码。接待员还可以打印出关于所有病人的每天和每周的工作安排。9 g; G( [( T0 L" n
& z" |6 l8 V' B' s
13.使用基本路径测试方法,设计测试下面用盒图所表示的程序的测试用例(分四步完成):% S& g2 a: h2 Y
) R( w) S/ T' c& v$ v9 @- g
6 `- d' w6 p9 ~- U0 q4 {
) _' c+ E* l6 k6 S3 G/ J
2 d7 O2 g) O8 [9 O3 Z# R( K$ I$ T6 q2 x: p$ Z" q" d- P& y( l
! p4 b$ U6 `$ Y: O7 n( B4 a8 X$ H
! r3 G A8 J! M1 [$ [: s5 N1 {* L+ f6 [6 i# A3 i4 Z t
/ E% d8 e7 ]5 ^9 |
b9 _' C8 g" o/ p
& D% `% Z) |1 B5 |7 |14.换分析方法,按照如下数据流图中所标出的传入部分、变换中心和传出部分,将数据流图转换成软件结构,要求写出具体变换的步骤。(5分)0 H( U3 ?/ ]# c9 I
0 x6 k# ]# S; z; |; A2 X: m$ |
' Y/ H* ]5 B( {5 M7 x
|
|