第5页
励志 故事(5)
《软件工程》试题
一、从供选择的答案中选出应填入下列叙述中( )内的正确答案。
软件设计中划分程序模块通常遵循的原则是使各模块间的耦合尽可能( A 3 )。三种可能的模块耦合是:
( B 5 ),例如,一个模块直接引用另一个模块中的数据。
( C 6 ),例如,一个模块把开关量作为参数传送给另一个模块。
( D 1 ),例如,一个模块通过公共数据结构把数据传送给另一个模块。
其中, ( E 5 )的耦合性最强。
【供选择的答案】
A: ① 强 ② 适中 ③ 弱
B~E: ① 公共耦合 ② 数据耦合 ③ 逻辑耦合
④ 外部耦合 ⑤ 内容耦合 ⑥ 控制耦合
二、为高质量地开发软件项目,在软件结构设计时必须遵循( A3 )的原则,( B2 )建立软件系统的模块结构。并且应根据( C 3 )评价系统模块划分的质量。此外在模块设计时,应从5种基本的( D5 )出发,利用它们组合成一个模块的程序块结构。 要求每个( E1 )的结构应是单入口和单出口。
【供选择的答案】
A:① 质量控制 ② 程序优化 ③ 信息隐蔽 ④ 数据共享 ⑤ 模块通信
B:① 自底向上 ② 自顶向下 ③ 衍变的自顶向下 ④ 随机 ⑤ 回归
C:① 数据独立性 ② 程序独立性 ③ 模块独立性 ④ 可修改性 ⑤ 可理解性
D:① 数据结构 ② 处理结构 ③ 功能结构 ④ 成份 ⑤ 控制结构
E:① 程序块 ② 公共块 ③ 数据块 ④ 记录块 ⑤ 通信块
三、从下列叙述中选出5条关于好的程序设计风格的正确叙述。(在对的前面打√)
(1) 使用括号以改善表达式的清晰性。x
(2) 对递归定义的数据结构不要使用递归过程。x
(3) 尽可能对程序代码进行优化。v
(4) 不要修补不好的程序, 要重新写。v
(5) 不要进行浮点数的相等比较。v
(6) 应尽可能多地输出中间结果。x
(7) 利用数据类型对数据值进行防范。v
(8) 用计数方法而不是用文件结束符或输入序列结束符来判别输入的结束。x
(9) 程序中的注释是可有可无的。x
(10) 使用有意义的标识符。v
四、从下列叙述中选出5条关于软件测试的正确叙述。(在对的前面打√)
(1) 为了使得软件容易测试, 应该使用高级的程序设计语言编制程序。v
(2) 程序测试是一个程序的执行过程, 目的是为了发现软件中隐藏的错误。v
(3) 如果程序中连锁式连接了8个判定(IF)结构, 则程序中总的路径数达28 。v
(4) 白盒测试仅与程序的内部结构有关, 完全可以不考虑程序的功能要求。x
(5) 为了快速完成集成测试, 采用一次性集成方式是适宜的。v
(6) 对一批模块进行测试,发现错误多的模块中残留的错误将比其它的模块少。v
(7) 好的测试用例应能证明软件是正确的。v
(8) 边界值分析方法是取输入/输出等价类的边界值做为测试用例。v
(9) 等价类划分方法考虑了各等价类之间取值的组合情况下可能的结果。v
(10) 判定覆盖法可能查不出在判定中逻辑运算符使用有误时产生的错误。v
五、从下列叙述中选出5条有利于软件可维护性的正确叙述。(在对的前面打√)
(1) 在进行需求分析时需同时考虑如何实现可维护性问题。v
(2) 完成测试作业后,为了缩短源程序的长度应删去程序中的注解。x
(3) 尽可能在软件生产过程中保证各阶段文档的正确性。v
(4) 编程时应尽可能使用全局变量。x
(5) 选择时间效率和空间效率尽可能高的算法。v
(6) 尽可能利用硬件的特点。x
(7) 重视程序结构的设计,使程序具有较好的层次结构。v
(8) 使用维护工具或支撑环境。x
(9) 在进行概要设计时应加强模块间的联系。x
(10) 提高程序的可读性,尽可能使用高级语言编写程序。v
(11) 为了加快软件维护作业的进度,应尽可能增加维护人员的数目。x
六、下面是一段用赛德尔迭代法求解线性方程组的程序。其中A[n,n] 是方程组的系数矩阵, B[n]是方程组的右端项,X[n] 是方程组的解向量。eps是控制迭代精度的较小实数。imax是控制迭代的最大次数。flag是标志,=0,表示迭代不收敛;=1,表示迭代收敛。
for k := 1 to n do X[k] := 0.0;
X[n] := 1.0;
for i := 1 to imax do
begin flag := 1;
for j := 1 to n to
begin s := B[j];
for k := 1 to n do
begin
if j =k then s := s + X[k];
s := s-A[j, k] * X[k]
end;
if abs(X[j]-s) > (abs(s) + 1.0) * eps then flag := 0;
X[j] := s;
end;
if flag =1 then goto L1;
end;
L1:
(1) 试画出它的结构化的程序流程图。
(2) 将它改为N-S图。
(3) 计算它的McCabe环路复杂性。