1
 软件工程
1.12 附录 部分习题参考答案

附录 部分习题参考答案

第1章

一、选择题

1.C 2.C

第2章

一、选择题

1.A 2.B

二、填空题

1.主要生存周期过程;支持生存周期过程;组织的生存周期过程

2.需求分析;软件设计;软件测试

3.软件过程改进

三、判断题

1.√ 2.×

第3章

一、选择题

1.D 2.C 3.A 4.A 5.B 6.A 7.D

二、填空题

1.数据流图;数据字典 2.数据流 3.判定树 4.数据的流向

三、简答题

1.需求分析主要有两个任务:第一是通过对问题及其环境的理解、分析和综合建立分析模型;第二是在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达出来。需求分析的任务就是为了明确要开发的是一个什么样的系统,而不是怎么去实现这个系统。

2.需求分析步骤有需求获取、需求提炼、需求描述、需求验证。

四、综合题

判定表结果如下。

img180

第4章

一、选择题

1.C 2.D 3.A 4.A 5.B 6.A 7.D 8.B 9.C 10.D 11.C 12.C 13.D 14.B 15.B

二、填空题

1.低耦合;高内聚 2.概要设计;详细设计 3.算法 4.模块

5.系统结构设计;数据设计 6.调用 7.变换分析设计;事务分析设计

8.通信内聚 9.公共耦合 10.数据耦合

三、名词解释

模块化指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有模块按某种方法组装起来成为一个整体,完成整个系统所要求的功能。

模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。

抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同特性而暂不考虑它的细节,不考虑其他因素。

四、简答题

1.模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。

2.详细设计的基本任务包括:

①为每个模块进行详细的算法设计;

②为模块内的数据结构进行设计;

③对数据库进行物理设计;

④其他设计;

⑤编写详细设计说明书;

⑥评审。

3.详细设计的描述方法有图形、表格和语言,其中图形常用结构化程序流程图、盒图和PAD(问题分析图)作为描述工具,语言则常用过程设计语言(PDL)作为工具。

4.

img181

第5章

一、选择题

1.A 2.D 3.A 4.D

二、填空题

1.软件调试 2.源程序文档化;数据说明;语句结构

三、判断题

1.√ 2.× 3.√

第6章

一、选择题

1.D 2.AB 3.D 4.A 5.AEB 6.BD 7.AH 8.D

二、综合题

(1)A对应的类Artist,B对应的类Song,C对应的类Band,D对应的类Musician,E对应的类Track,F对应的类Album。

(2)①处的多重度为0..*;②处的多重度为2..*;③处的多重度为0..1;④处的多重度为1..*;⑤处的多重度为1..*;⑥处的多重度为1。

(3)

img182

第7章

一、选择题

1.C 2.C 3.D 4.C 5.BG 6.A 7.D 8.A 9.B 10.B

二、简答题

1.首先要舍弃与系统责任无关的事物,保留与系统责任有关的事物。其次,舍弃与系统责任有关的事物中与系统责任无关的特征。判断事物及其特征是否与系统责任相关的准则是:该事物是否向系统提供了一些服务或需要系统描述它的某些行为,同时还要考虑将问题域中的事物映射到什么对象及如何对对象进行分类。

2.(1)发现需求中的动词。

系统分析员在系统需求中分检出相应的名词作为候选的类对象。可以使用类似的方法,在系统需求中分检出相应的动词,作为类中可能使用的服务,通过这种方法能够发现类对象的一些服务。(2)访问对象属性操作。

在对象模型中,对类中定义的每个属性都是可以访问的,应该提供访问这些属性的服务。因此,需要定义访问这些属性的读/写操作。这些操作在对象模型中没有显式地表示出来,而是隐含在属性内。

(3)来自事件驱动的操作。

发往对象的事件驱动修改对象状态(属性值),对象被驱动后的行为可定义为一个操作,并通过执行该操作提供相应的服务。也就是说,当对象接收到事件时,在事件驱动下完成相应的服务。

3.动态模型描述对象和关系的状态、状态转换的触发事件,以及对象的服务(行为)。要建立动态模型首先要编写脚本,从脚本中提取事件,画出UML图的顺序图(也称为事件跟踪图),再画出对象的状态转换图。

4.功能模型描述了系统内的“功能”性质,说明系统发生了什么,直接地反映了用户对目标系统的需求,表示系统内的计算过程中如何根据输入值推导出输出值,无须考虑其计算值的次序。数据流图可以清楚地说明与状态有关的处理过程。在建立系统对象模型和动态模型的基础上,分析其处理过程,将数据和处理结合在一起而不是分离开来。这就是面向对象分析的独特之处。数据流图的处理对应于状态图中的活动或动作,数据流对应于对象图中的对象或属性。

5.(1)模块化。

面向对象开发方法很自然地支持了把系统分解成模块的设计原则:对象就是模块。它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。

(2)抽象。

面向对象方法不仅支持过程抽象,而且支持数据抽象。

(3)低耦合。

在面向对象的方法中,对象是最基本的模块,因此,耦合度主要指不同对象之间相互关联的紧密程度。低耦合是设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其他部分的影响降到最低程度。交互耦合和继承耦合。

(4)高内聚。

服务内聚、类内聚、一般-特殊内聚。

(5)复用性。

尽量使用已有的类(包括开发环境提供的类库及以往开发类似系统时创建的类),如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。

6.面向对象设计的主要技术包括子系统划分、问题域子系统设计、人-机界面子系统设计、任务管理子系统设计、数据管理子系统设计和类设计。

7.面向对象程序设计语言的主要技术特点有多重继承、封装、重用性、类库、强类型和弱类型、内存管理、打包、元数据、可视化开发环境。

8.在选择面向对象程序设计语言时需要考虑如下因素:程序设计语言的应用领域、算法与计算的复杂性、数据结构的复杂性和效率、未来能否占主导地位、可重用性、类库和开发环境、对用户学习面向对象分析、设计和编码技术所能提供的培训服务;在使用这个面向对象语言期间能提供的技术支持;能提供给开发人员使用的开发工具、开发平台、发行平台;对机器性能和内存的需求;集成已有软件的容易程度等。

9.面向对象分析的测试和面向对象设计的测试是对分析结果和设计结果进行的测试,主要是针对分析设计产生的文本,是软件开发前期的关键性测试。面向对象编程的测试主要是针对编程风格和程序代码实现进行的测试,其主要的测试内容在面向对象单元测试和面向对象集成测试中体现。面向对象单元测试是对程序内部具体单一的功能模块的测试,是进行面向对象集成测试的基础。面向对象集成测试主要对系统内部的相互关系和服务进行测试,面向对象的集成测试不但要基于面向对象的单元测试,更要参见面向对象设计或面向对象设计测试结果。面向对象系统测试是基于面向对象集成测试的最后阶段的测试,主要以用户需求为测试标准,需要借鉴面向对象分析或面向对象分析测试结果。上述各阶段的测试构成了一个相互作用的整体,但是各个测试的主体、方向和方法各不相同。

面向对象测试的工具有Logiscope、LoadRunner、WinRunner等。

第8章

1.D; C; F; H; B; C; C; E

2.A; D; A; D; H; E; F; M; O; K

3.B; F; B; K; E; G; F

4.B; B; C; C; F; H; N; M

5.D; F; G; G; E

6.B; C; A; F; I; O; P; R; I; I; T; V

7.C; F; E; I; N; M; S

8.B; A; C; C; J; G; J; I

9.B; C; F; I; J; G; G; I; G; G

10.B; D; G; F; E

第9章

一、选择题

1.A 2.C 3.C 4.A

二、填空题

1.提高软件可靠性、可维护性和可移植性;提高软件人员的技术水平;提高软件生产率;降低软件产品的成本和运行维护成本;缩短软件开发周期

2.国际标准;国家标准;行业标准;企业(机构)标准;项目(课题)标准

3.开发文档;管理文档;用户文档

三、判断题

1.√ 2.× 3.√