软件工程习题及解答3

  • 格式:doc
  • 大小:664.50 KB
  • 文档页数:29

第三章习题

一、选择题

1. 软件需求分析阶段的工作,可以分为以下4个方面:对问题的识别、分析与综合、编写需求分析文档以及( )。

供选择的答案:

A. 总结 B. 阶段性报告 C. 需求分析评审 D. 以上答案都不正确

2. 各种需求方法都有它们共同适用的( )。

供选择的答案:

A.说明方法 B.描述方式 C. 准则 D.基本原则

3. 软件需求分析的任务不应包括( A )。进行需求分析可使用多种工具,但( B )是不适用的。在需求分析中,分析员要从用户那里解决的最重要的问题是( C )。需求规格说明书的内容不应当包括( D )。该文档在软件开发中具有重要的作用,但其作用不应当包括( E )。

供选择的答案:

A. ① 问题分析 ② 信息域分析 ③ 结构化程序设计 ④ 确定逻辑模型

B. ① 数据流图 ② 判定表 ③ PAD图 ④

数据词典

C. ① 要让软件做什么 ② 要给该软件提供哪些信息

③ 要求软件工作效率如何 ④ 要让软件具有什么样的结构

D. ① 对重要功能的描述 ② 对算法的详细过程性描述

③ 软件确认准则 ④ 软件的性能

E. ① 软件设计的依据 ② 用户和开发人员对软件要“做什么”的共同理解

③ 软件验收的依据 ④ 软件可行性分析的依据

4. 原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于( A )系统。它从用户界面的开发入手,首先形成( B ),用户( C ),并就( D )提出意见,它是一种( E )型的设计过程。

供选择的答案:

A. ① 需求不确定性高的 ② 需求确定的 ③ 管理信息 ④ 决策支持

B. ① 用户界面使用手册 ② 用户界面需求分析说明书

③ 系统界面原型 ④ 完善的用户界面

C. ① 改进用户界面的设计 ② 阅读文档资料 ③ 模拟用户界面的运行 ④ 运行用户界面原型

D.① 同意什么和不同意什么 ② 使用和不使用哪一种编程语言

③ 程序的结构 ④ 执行速度是否满足要求

E.① 自外向内 ② 自顶向下 ③ 自内向外 ④

自底向上

二、简答题

1. 用逐步求精方法解决下述的更新顺序主文件的问题。

美国某杂志社需要一个软件,以更新存有该杂志订户姓名、地址等数据的顺序主文件。

共有插入、修改和删除等3种类型的事务,分别对应于事务代码1、2和3。也就是说,事务类型如下:

类型1:INSERT(插入一个新订户到主文件中)

类型2:MODIFY(修改一个已有的订户记录)

类型3:DELETE(删除一个已有的订户记录)

事务是按订户名字的字母顺序排序的。如果对一个订户既有修改事务又有删除事务,则已对那个订户的事务排好次序了,以便使修改发生在删除之前。

2. 分析图3.1所示的层次图,确定每个模块的内聚类型。

图3.1 计算多地点日平均温度的程序

3. 分析图3.2,确定模块之间的耦合类型。

图3.2 一个程序的模块互连图

在图3.2中已经给模块之间的接口编了号码,表3.1描述了模块间的接口。

表3.1 模块接口描述

4. 用面向数据流方法设计本书第2章第11题所述的工资支付系统的软件结构。

5. 用3种方法计算图3.3所示流图的环形复杂度。

图3.3 一个程序的流图

6. 下面列出的代码用重复执行的加法来计算两个正整数X和Y的乘积,请用Halstead方法预测程序的长度,并把预测出的长度与实际长度相比较。

Z=0;

While X>0

Z=Z+Y;

X=X-1;

End_while;

Print(Z); 7. 图3.4是用程序流程图描述的程序算法,请把它改画为等价的盒图。

图3.4 程序流程图

8. 某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。如果交易总金额少于1000元,则基本手续费为交易金额的8.4%;如果交易总金额在1000元到10000元之间,则基本手续费为交易金额的5%,再加34元;如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。当每股售价超过25元时,如果交易的股数零散(即,不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。

要求:

(1)用判定表表示手续费的计算方法;

(2)用判定树表示手续费的计算方法;

9. 画出下列伪码程序的程序流程图和盒图。

START

IF P THEN

WHILE q DO

F END DO

ELSE

BLOCK

g

n

END BLOCK

END IF STOP

图3.5 一个非结构化程序

10. 图3.5给出的程序流程图代表一个非结构化的程序,请问:

(1)为什么说它是非结构化的?

(2)设计一个与它等价的结构化程序。

(3)在(2)题的设计中你使用附加的标志变量flag了吗?若没用,请再设计一个使用flag的程序;若用了,请再设计一个不用flag的程序。

11. 研究下面给出的伪码程序,要求:

(1)画出它的程序流程图;

(2)它是结构化的还是非结构化的?说明你的理由;

(3)若是非结构化的,则

(a)把它改造成仅用三种控制结构的结构化程序;

(b)写出这个结构化设计的伪码;

(c)用盒图表示这个结构化程序。

(4)找出并改正程序逻辑中的错误。

COMMENT:PROGRAM SEARCHES FOR FIRST N REFERENCES

TO A TOPIC IN AN INFORMATION RETRIEVAL

SYSTEM WITH T TOTAL ENTRIES INTPUT N

I=O

MATCH=0

DO WHILE I≤T

I=I+1

IF WORD=KEYWORD

THEN MATCH=MATCH+1

STORE IN BUFFER

END

IF MATCH=N

THEN GOTO OUTPUT

END

END

IF N=0

THEN PRINT “NO MATCH”

OUTPUT:ELSE CALL SUBROUTINE TO PRINT BUFFER

INFORMATION

END

12. 研究图3.6给出的程序流程图,要求:

(1)写出它的伪码表示;

(2)设计一个等价的结构化程序;

(3)用另一种方法重做第(2)题。

图3.6 一个非结构化设计

13.从伪码转变为程序流程图或从程序流程图转变为伪码是否是唯一的?请说明理由。

14.用Ashcroft_Manna技术可以将非结构化的程序转换为结构化程序,图3.7是一个转换的例子。

(1)你能否从这个例子总结出Ashcroft_Manna技术的一些基本方法?

(2)进一步简化图3.7(b)给出的结构化设计。

(a)非结构化设计 (b)转化成的等价的结构化设计

图3.7 用Ashcroft_Manna技术的例子

15. 用Jackson图描绘下述的一列火车的构成: 一列火车最多有两个火车头。只有一个火车头时则位于列车最前面,若还有第二个火车头时,则第二个火车头位于列车最后面。火车头既可能是内燃机车也可能是电气机车。车厢分为硬座车厢、硬卧车厢和软卧车厢等3种。硬座车厢在车内所有车厢的前面部分,软卧车厢在所有车厢的后面部分。此外,在硬卧车厢和软卧车厢之间还有一节餐车。

第三章习题解答

一、选择题

1. 答案: C.

分析:作为需求分析阶段工作的复查手段,在需求分析的最后一步,应该对功能的正确性、完整性和清晰性,以及其它需求给予评价。一般,评审的结果都包括了一些修改意见,待修改完成后再经评审通过,才可进入设计阶段。

2. 答案: D.

分析:虽然各种分析方法都有独特的描述方法,但所有的分析方法还是有它们共同适用的基本原则。这些基本原则包括:

§ 需要能够表达和理解问题的信息域和功能域;

§ 要能以层次化的方式对问题进行分解和不断细化;

§ 要分别给出系统的逻辑视图和物理视图。

3. 答案:A. ③, B. ③, C. ①, D. ②, E. ④

分析:软件需求分析的任务是通过与用户的合作,了解用户对待开发系统的要求;根据对用户要求的系统所在的信息域的调查、分析,确定系统的逻辑模型;并对求解的问题做适当的分解,使之适合于计算机求解。需求分析的结果是软件需求规格说明书。

结构化程序设计是在详细设计和编码阶段所采用的技术,而不是需求分析阶段要采用的技术。在需求分析阶段,分析人员可以用数据流图描述系统的数据流的变换和流向,用数据词典定义在数据流图中出现的数据流、数据文件、加工或处理,用判定表表示复杂条件和动作组合的情况。但PAD图是在详细设计阶段使用的描述加工逻辑的工具,不适用于需求分析。此外,软件需求分析阶段只确定软件系统要“做什么”,完成对重要功能、性能、确认准则的描述,至于“怎么做”由后续的设计阶段完成,对算法的详细过程性描述也是在设计阶段给出。软件可行性分析应在需求分析之前,所以需求分析规格说明不能成为可行性分析的依据。

4. 答案:A. ① B. ③ C. ④ D. ① E. ①

分析:通常,原型是指模拟某种产品的原始模型。在软件开发中,原型是软件的一个早期可运行的版本,它反映最终系统的部分重要特性。

使用原型的原型化方法特别适用于需求不确定性较高的软件系统的开发。它的基本思想是根据用户给出的基本需求,通过快速实现构造出一个小型的可执行的模型,满足用户的基本要求,这就是系统界面原型。让用户计算机上实际运行这个用户界面原型,在试用的过程中得到亲身感受和受到启发,做出反应和评价,提出同意什么和不同意什么。然后开发者根据用户的意见对原型加以改进。随着不断试验、纠错、使用、评价和修改,获得新的原型版本,如此周而复始,逐步减少分析和通信中的误解,弥补不足之处,进一步确定各种需求细节,适应需求的变更,从而提高了最终产品的质量。

它是一种自外向内型的设计过程。

二、简答题

1. 答:解决任何问题之前都必须首先理解问题,对问题理解得越深入,解决起来也就越容易。为了获得对顺序主文件更新问题的直观、具体的认识,首先设想一个典型的主文件(称为旧的主文件)、一个事务文件和更新后得到的新的主文件及异常情况报告,如图3.8所示。

图3.8 典型地顺序主文件更新问题

为了简单起见,在图3.8中忽略了主文件和事务文件中所包含的订户地址信息。