软件工程实用教程第三版 郭宁主编 课后习题及答案

第一章 软件工程引论

1. 在下列选项中,(D )不是软件的特征。

A . 系统性与复制性 B. 可靠性与一致性 C. 抽象性与智能型 D.有形性与可控性

2. 软件是一种(B )产品。

A . 有形 B. 逻辑 C. 物质 D. 消耗

3. 软件工程是一种(A )分阶段实现的软件程序开发方法。

A. 自顶向下 B. 自底向上 C. 逐步求精 D. 面向数据流

4. 与计算机科学的理论研究不同,软件工程是一门(B )学科。

A . 理论性 B. 工程性 C. 原理性 D. 心理性

5. 软件工程与计算机科学性质不同,软件工程着重于(C )。

A . 原理探讨 B. 理论研究 C. 建造软件系统 D. 原理性的理论

6. 下列说法正确的是(B )

A. 软件工程的概念于20世纪50年代提出

B. 软件工程的概念于20世纪60年代提出

C. 20世纪70年代出现了客户机/服务器技术

D. 20世纪80年代软件工程学科达到成熟

7. 软件工程方法学中的软件工程管理是其中的一个重要内容,它包括软件管理学和软件工

程经济学,它要达到的目标是(D )

A . 管理开发人员,以开发良好的软件

B . 采用先进的软件开发工具,开发优秀的软件

C . 消除软件危机,达到软件生产的规模效益

D . 以基本的社会效益为基础,工程化生产软件

第二章 软件生命周期及开发模型

1. 软件生命周期包括可行性分析和项目开发计划、需求分析、总体设计、详细分析、编码、

(B )、维护等活动。

A . 应用 B. 测试 C. 检测 D. 以上答案都不正确

2. 软件生命周期模型有多中,下列项目中, (C )不是软件生命周期模型。

A . 螺旋模型 B. 增量模型 C. 功能模型 D. 瀑布模型

3. 软件生命周期中时间最长的阶段时(D )

A . 需求分析阶段 B. 总体设计阶段 C. 测试阶段 D. 维护阶段

4. 瀑布模型是一种(D )

A. 软件开发方法 B.软件生存周期 C.程序设计方法学 D.软件生存周期模型

5. 软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为(A )

A. 瀑布模型 B.对象模型 C.螺旋模型 D.层次模型

6. 在结构化的瀑布模型中,(D )阶段定义的标准将成为软件测试中系统测试阶段的目标

A. 详细设计阶段 B.总体设计阶段 C.可行性研究阶段 D.需求分析

7. 增量模型是一种(B )的模型

A. 整体开发 B.非整体开发 C.灵活性差 D.较晚产生工作软件

8. (C )是指模拟某种产品的原始模型

A. 模型 B.最初模型 C.原型 D.进化模型

9. 建立原型的目的不同,实现原型的途径也有所不同,下列不正确的类型是(B )

A. 用于验证软件需求的原型 B.垂直原型 C.用于验证设计方案的原型 D.用于演化出目标系统的原型

10. 原型化方法是一种(A )型的设计过程。

A. 在外向内 B.自顶向下 C.自内向外 D.自底向上

11. 对于原型的使用建议,以下说法不正确的是(C )

A. 对于开发周期很长的项目,能够使用原型 B.在系统的使用可能变化较大、不能相

对稳定是,能够使用原型 C.缺乏开发工具,或对原型的可用工具不了解的时候,能够使用原型D. 开发者对系统的某种设计方案的实现无信心或无十分的把握时,能够使用原型

12. 原型模型的主要特点之一是(B )

A. 开发完毕才见到产品 B.及早提供工作软件 C.及早提供全部完整软件 D.开发完毕

才见到工作软件

第三章 结构化需求分析

1. 需求工程的主要目的是(C )

A. 制定系统开发的具体方案 B.进一步确定系统的需求 C.解决系统是“做什么的为题”

D. 解决系统是“如何做的问题”

2. 需求分析的任务不包括(B )

A. 问题分析 B.系统设计 C.需求分析 D.需求评审

3. 软件分析的第一步要做的工作是(A )

A. 定义系统的目标 B.定义系统的功能模块 C.分析用户需求 D.分析系统开发的可行

4. 可行性研究的目的是用最小的代价在尽可能短的时间内确定问题的(A )

A. 能否可解 B.工程进度 C.开发计划 D.人员配置

5. 需求分析最终结果是产生(B )

A. 项目开发计划 B.需求规格说明书 C.设计说明书 D.可行性分析报告

6. 在结构化分析方法中,(C )是表达系统内部数据运动的图形化技术

A. 数据字典 B.实体关系图 C.数据流图 D.状态转换图

7. DFD 中的每个加工至少需要(D )

A. 一个输入流 B.一个输出流 C.一个输入或输出流 D.一个输入流和一个数处理

8. 需求分析的主要方法有(C )

A. 形式化分析方法 B. PAD图描述 C.结构化分析方法 D.程序流程图

9. SA 法的主要描述手段有(B )

A. 系统流程图和模块图 B.DFD图、数据字典、加工说明C. 软件结构图、加工说明D.

功能结构图、加工说明

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

需求分析文档以及(C )

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

第四章 结构化软件设计

1. 在面向数据流的软件设计方法中,一般将信息里与分为(D )

A . 数据流和控制流 B. 变换流和控制流 C. 事务流和控制流 D. 变换流和事务流

2. 耦合度可以分为七级,其中最松散的耦合是(A )

A. 非直接耦合 B.数据耦合 C.特征耦合 D.控制耦合

3. 当模块中包含复杂的条件组合,只有(A )能够清晰的表达出各种动作之间的对应关系

A. 判定表和判定树 B.盒图 C.流程图 D.关系图

4. 一个软件的宽度是指其控制的(C )

A. 模块数 B.层数 C.跨度 D.厚度

5. 面向数据流的软件设计方法可将(C )映射成软件结构

A. 控制结构 B.模块 C.数据流 D.事务流

第五章 面向对象的需求分析

1. 采用UML 进行软件建模的过程中,类图是系统的一种静态视图,用(B )可明确表示两

类事物之间存在的整体/部分形式的关联关系。

A. 依赖关系 B.聚合关系 C.泛化关系 D.实现关系

2. 在UML 语言中,图中的a 、b 、c 三中图形符号按照顺序分别表示(C )

Kim, Keehyun

Kim, HyunsooJung, Yoontae

A. 边界对象、实体对象、控制对象 B. 实体对象、边界对象、控制对象 C. 控制对象、

实体对象、边界对象 D. 边界对象、控制对象、实体对象

3. 不同的对象收到同一消息可以产生完全不同的结果,这一现象叫做(B )

A. 继承 B. 多态 C. 动态绑定 D. 静态绑定

第六章面向对象的软件设计

1. 下面哪种设计模式定义了对象间的一种一对多的依赖关系,以便当一个对象的状态发生

改变时,所有依赖于它的对象都得到通知并自动刷新(D )

A.Adapter (适配器) B.Iterator(迭代器) C.Prototype (原型) D. Observer (观察者)

2. UML 中有多种类型的图,其中,(B )对系统的使用方式进行了分类;()显示了类及其

相互关系;()显示了人或对象的活动,其方式类似于流程图;通信图显示了在某种情况下对象之间发送的消息;()与通信图类似,但强调的是顺序而不是连接。

A.用例图、顺序图、类图、活动图 B.用例图、类图、活动图、顺序图 C.类图、顺序图、

活动图、用例图 D. 活动图、顺序图、用例图、类图

3. UML 类图的类与类之间的关系有5种:继承、依赖、关联、组合和聚合,若类A 需要使

用标准数学函数类库中提供的功能,那么类A 与标准类库中提供的类之间存在(A )关系

A. 依赖 B.关联 C.聚合 D. 组合

第七章软件测试技术

1. 用边界值分析法,假定1

A. X=1,X=100 B. X=0,X=1,X=100,X=101 C. X=2,X=99 D.X=0,X=101

2. 下列关于软件验收测试的合格通过准则错误的是(C )

A. 软件需求分析说明书中定义的所有功能已全部实现 B. 所有测试项没有 C. 立项审批表、需求分析文档、设计文档和编码实现不一致 D.验收测试工件齐全

3. 以下关于集成测试的内容正确的有(D )

① 集成测试也叫组装测试或者联合测试 ② 测试在把各个模块连接起来的时候,穿越

模块接口的数据是否会丢失 ③ 测试一个模块的功能是否会对另一个模块的功能产生不利影响 ④ 测试各个子功能组合起来,能否达到预期要求的父功能 ⑤ 测试全局数据结构是否有问题 ⑥ 测试单个模块的误差累积起来,是否会放大,从而达到不能接受的程度

A. ①②④⑤⑥B. ②③④⑤⑥C. ①②③⑤⑥ D.以上全部正确

4. 为了提高测试的效率,应该(D )

A . 随机的选取测试数据 B. 取一切可能的输入数据作为测试数据 C. 在完成编码以

后制定软件的测试计划 D. 选择发现错误的可能性大的数据作为测试数据

5. 软件调试的目的是(A )

A. 找出错误所在并改正之 B.排除存在错误的可能性 C.对错误性质进行分类 D.统计

出错的次数

6. 单元测试一般以白盒为主,测试的依据是(A )

A. 模块功能规格说明 B. 系统模块结构图 C. 系统需求规格说明 D. 统计出错的次

7. 下次关于α、β测试的描述中正确的是(C )

A. α测试不需要用户代表参加 B.β测试不是验收测试的一种 C.α测试可以有用户

代表参加 D. β测试是系统测试的一种

8. 软件测试的目的是(B )

A. 评价软件的质量 B.发现软件的错误 C.找出软件中所有的错误 D.证明软件是正确

9. 软件测试用例主要由输入数据和(C )两部分组成

A. 测试计划 B.测试规则 C.预期输出结果 D.以往测试记录分析

10. 在黑盒测试中,着重检查输入条件组合的方法是(D )

A. 等价类划分法 B.边界值分析法 C.错误推测法 D.因果图法

第八章软件维护技术

1. 随着软硬件环境变化而修改软件的过程是(B )

A. 校正性维护 B. 适宜性维护 C. 完善性维护 D. 预防性维护

2. 为了提高软件的可维护性,在编码阶段应注意(B )

A. 保存测试用例和数据 B. 提高模块的独立性 C. 文档的副作用 D. 养成好的程序设

计风格

3. 为提高系统性能而进行的修改属于(C )

A.纠正性维护 B.适应性维护 C.完善性维护 D.测试性维护

4. 软件生命周期中,(D )阶段所站的工作量最大

A.分析阶段 B.设计阶段 C.编码阶段 D.维护阶段

5. 系统维护中要解决的为题来源于(D )

A.系统分析阶段 B.系统设计阶段 C.系统实施阶段 D.上述3个阶段(A 、B 、C )都包括

6. 软件维护的副作用,是指(C )

A. 开发时的错误 B. 隐含的错误 C. 因修改软件而造成的错误 D. 运行时的误操作

第一章软件工程引论

1.

2.

3.

4.

5. 软件工程出现的主要原因是软件危机的出现。√ 文档是软件产品的一部分,没有文档的软件就不能称为软件。√ 软件危机的主要表现是软件需求量迅速增加,软件价格上升。× 一个成功的项目唯一应该提交的就是运行程序法。× 与计算机科学的理论研究不同,软件工程是一门原理性学科。×

第二章软件生命周期及开发模型

1. 瀑布模型和增量模型都属于整体开发模型。×

2. 原型模型可以有效地适应用户需求的动态变化。×

3. 螺旋模型在瀑布模型和增量模型的基础上增加了风险分析活动。√

4. 软件过程改进也是软件工程的范畴。√

5. 在软件开发中采用原型系统策略的主要困难是成本问题。×

第三章结构化需求分析

1.

2.

3.

4. 需求分析的主要目的是制定软件开发的具体方案。× 用户对软件需求的描述不精确,往往是产生软件危机的原因之一。√ 分层的DFD 图可以用于可行性分析阶段,描述系统的物理结构。× 在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获取第

一手资料,并从中提取有价值的需求。√

5. 需求规格说明数描述了系统每个功能的实现。×

第四章结构化软件设计

1. 在同一用户界面中,所有的菜单选择,命令输入、数据显示和其它功能应采用不同的形

式和风格。×

2. 最高的耦合度是数据耦合。√

3. 编程中应采用统一的标准和约定,降低程序的复杂性。√

4. 流程图也称为框图程序,是程序最常用的一种表示法。√

5. 理想的人机界面应针对具有典型个性的特定的一类用户设计。√

6. 重视程序结构的设计,能是程序具有较好的层次结构。√

7. 软件过程不用遵循“自上而下,逐步求精”的原则和单入口单出口的结构化设计思想。

×

8. 软件开发、设计几乎都是从头开始,成本和进度很难估计。√

9. 耦合度是对软件结构中模块间关联程度的一种度量。在设计软件是应追求耦合尽可能紧

密的系统。×

10. SD 法是一种面向数据结构的设计方法,强调程序结构与问题结构相适应。×

第五章面向对象的需求分析

1. 边界对象表示了系统与参与者之间的接口。在每一个用例中,该对象从参与者处收集信

息,并将之转换为一种实体对象和控制对象使用的形式。√

2. 采用面向对象的方法开发软件的过程中,抽取和整理用户需求并建立问题域精确模型的

过程叫面向对象分析。√

3. 继承仅仅允许单重继承,即不允许一个子类有多个父类。×

第六章面向对象的软件设计

1. 面向对象程序设计应该在面向对象分析之前,因为只有产生了设计结果才可以对其进行

分析。×

2. 面向对象设计产生的结果在形式上可以与面向对象分析产生的结果类似,例如都可以使

用UML 表达。√

第七章软件测试技术

1. 软件测试就是为了验证软件功能的实现是否正确,是否完成既定目标的活动,所以软件

测试在软件工程而后期才开始具体的工作。×

2. 发现错误多的模块,可能残留在模块中的错误也多。√

3. 测试人员在测试过程中发现一处问题,如果问题影响不大,而自己有可以修改,应立即

将此问题正确修改,以加快、提高开发的进程。×

4. 路径测试不属于单元测试的内容。√

5. 测试只要做到语句覆盖和分支覆盖,就可以发现程序中的所有错误。×

6. 软件测试只能发现错误,但不能保证测试后的软件没有错误。√

7. 集成测试是有最终用户来实施的。×

8. 所有的逻辑覆盖标准中,查错能力最强的语句覆盖。×

9. 等价类划分方法能够有效的检测输入条件的各种组合可能引起的错误。×

10. 验收检测方法需要考察模块间接口和各模块之间的联系。×

第八章软件维护技术

1.

2.

3.

4.

5.

维护申请报告是一种由用户产生的文档,它用作计划维护任务的基础。× 维护阶段是软件生存周期中时期最短的阶段,也是花费精力和费用最少的阶段。× 在软件维护中,因修改软件而导致出现错误或其它情况成为维护的副作用。√ 为了提高软件的可维护性和可靠性而对软件进行的修改称为适应性维护。× 维护的副作用有编码副作用、数据副作用、文档副作用3种。√

第一章软件工程引论

1. 什么是软件危机?它和软件工程有什么关系?

答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

2. 简述软件和软件工程的定义以及软件工程的形成过程。

答:软件是与计算机系统操作有关的程序、规程、规则及其文档和数据的统称。软件由两部分组成:一是机器可执行的程序和有关的数据;二是与软件开发、运行、维护、使用和培训有关的文档。

软件工程是指导计算机软件开发和维护的工程学科。它强调按照软件产品的生产特性,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前最好的技术结合起来,以便经济地开发出高质量的软件并有效地维护它。 软件工程的发展经历了以下3个阶段。

第一阶段:20世纪70年代,—传统软件工程时代。

第二阶段:20世纪80年代,—过程软件工程时代。

第三阶段:进入20世纪90年代以后,—构件软件工程时代。

3. 软件工程的目标是什么?如何解决多目标之间的矛盾?

答:软件工程的目标:软件开发成本较低。软件功能能够满足用户的需求。软件性能较好。软件可靠性高。软件易于使用、维护和移植。能按时完成开发任务,并及时交付使用。

有些目标之间是相互补充的,如易于维护和高可靠性之间、功能强与可用性之间;有些目标是彼此相互冲突的,如若只考虑降低开发成本,很可能同时也降低了软件的可靠性,如果一味追求提高软件的性能,可能造成开发出的软件对硬件的依赖性较强,从而影响到软件的可移植性;不同的应用对软件质量的要求不同,如对实时系统来说,其可靠性和效率比较重要;对生命周期较长的软件来说,其可移植性、可维护性比较重要,所以,应该根据不同的系统需求决定个目标之间的重要性。

4. 在软件开发中软件开发工具有什么作用?

答:软件开发工具是指用来辅助软件开发、维护和管理的软件。现代软件工程方法得以实施的重要保证是软件开发工具和环境。软件开发工具使软件在开发效率、工程质量、减少软件开发对人的依赖性等多方面得到改善

5. 什么是软件支持过程?它与软件工程方法学有何关系?

答:软件过程是指生产满足需求且达到工程目标的软件产品所涉及的一系列相关活动,

它覆盖了需求分析、系统设计、实施以及支持维护等各个阶段。

软件过程有各种分类方法。按性质划分软件过程可概括为基本过程类、支持过程和组织过程类。可见软件支持过程是软件过程中的一种。

6. 在软件工程知识体系中,将软件工程划分为哪些知识域?

答:SWEBOK 将软件工程知识体系划分为10个知识域,分为两类过程。一类是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;另一类是支持过程,包括软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法、软件质量。

7. B.W.Boehm 提出的软件工程基本原则的作用是什么?

答:1.采用分阶段的生命周期计划,以实现对项目的严格管理

2.坚持进行阶段评审,以确保软件产品质量

3.实行严格的产品控制,以适应软件规格的变更

4.采用现代程序设计技术

5.软件成果能清楚地审查

6.开发小组人员应该少而精

7.承认不断改进软件工程实践的必要性

第二章软件生命周期及开发模型

1. 简述什么是软件生命周期。根据国家标准《计算机软件开发规范》,软件生命周期主要

包括哪几个阶段?

答:作为工程化的一般特征,软件产品和其他工业产品一样,软件产品也包括设计、生产、使用和消亡几个阶段,并称之为软件的生命周期,即指软件产品从功能确定、设计、开发成功、投入使用,并在使用中不断修改、完善,直至被新的软件所替代,而停止该软件使用的全过程。国家标准GB8566—1988《计算机软件开发规范》将软件生命周期划分为几个阶段:可行性研究、项目计划、需求分析、总体设计、详细设计、编码实现(包括单元测试、集成测试、确认测试)、系统运行和维护。这几个阶段又可以归纳为3个阶段,即软件定义阶段,软件开发阶段和软件运行维护阶段。

2. 瀑布模型有哪些特点?对于里程碑,你有哪些认识?

答:1970年W.Royce 最早提出瀑布模型。答:瀑布模型的特点:(1). 线性化模型结构;(2). 各阶段具有里程碑特征;(3). 基于文档的驱动;(4). 严格的阶段评审机制。其中的里程碑是指瀑布模型中的阶段只能逐级到达、不能跨越;每个阶段都有明确的任务,都需要产生确定的成果。由于瀑布模型是一种线性模型,要求项目严格按规程推进,必须等到所有开发工作全部完成以后才能获得可以交付的软件产品。因此,瀑布模型不太适用于用户需求经常变更的软件项目。

瀑布模型是一种基于里程碑的阶段过程模型,它所提供的里程碑式的工作流程,为软件项目按规程管理提供了便利。例如,按阶段制订项目计划,分阶段进行成本核算,进行阶段性的评审等。这为提高软件产品质量提供了有效保证。

3. 试说明原型模型的两种实现方案各有什么特点,各适用于哪些情况。

答:原型可以分为3类。

1)抛弃式原型:这种原型在目的达到后即被抛弃,原型不作为最终产品,如上所述。

2)进化式原型:这类原型的形成和发展是逐步完成的,它是高度动态迭代和高度动态循环,每次迭代都要对系统重新进行需求规格说明、重新设计、重新实现和重新评价,所以是对付变化最为有效的方式。

3)增量式模型:系统是一次一段地增量构造,与演化式原型的最大区别在于增量式开

4.

5.

6.

7.

8. 发是在软件总体设计基础上进行的。 一般认为,只有大型项目才采用螺旋模型,原因是什么? 答:螺旋模型的优越性在于它吸收了“进化”的概念,使得开发人员和用户对每一个演化层出现的风险均有所了解,并对此做出反应。但使用该模型需要丰富的风险评估经验和专门知识,如果项目风险较大又未及时发现,势必造成重大损失。实际上,对软件项目进行风险分析也需要费用,假如项目风险分析费用过高,甚至超过了项目的开发费用,显然就不合适了。一般大型项目才有较高的风险,才有进行详细风险分析的必要。因此,这种模型比较适合大型的软件项目。 为什么说构建复用模型是一种有利于软件按工业流程生产的过程模型? 答:对象技术将事物实体封装成包含数据和数据处理方法的对象,并抽象为类。经过适当的设计和实现的类也可称为构件。由于构件具有一定的通用性,可以在不同的软件系统中被复用。在基于构件复用的软件开发中,软件由构件装配而成,这就如同用标准零件装配汽车一样。构件复用技术,它能带来更好的复用效果,并且具有工程特性,更能适应软件按工业流程生产的需要。 敏捷方法的价值观和原则与传统的方法有哪些联系和区别? 答:相对于“非敏捷”,敏捷不仅是体现在有效地响应变化,它还包括鼓励程序员团队与业务专家之间的紧密协作、面对面地沟通(认为比书面的文档更有效)、强调可运行软件的快速交付而不是中间产品,敏捷过程提倡可持续开发。建立紧凑而自我组织型的团队,能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。 从产品角度看,敏捷方法适用于需求萌动并且快速改变的情况,如系统有比较高的关键性、可靠性、安全性方面的要求,则可能不完全适合;从组织结构的角度看,组织结构的文化、人员、沟通则决定了敏捷方法是否适用。 有什么情况下会建议不用敏捷方法来开发软件系统? 从产品角度看,敏捷方法适用于需求萌动并且快速改变的情况,如系统有比较高的关键性、可靠性、安全性方面的要求,则可能不完全适合;从组织结构的角度看,组织结构的文化、人员、沟通则决定了敏捷方法是否适用。 具有原型化的瀑布模型具有什么特点?他和瀑布模型最大的不同是什么?

答:为了克服瀑布模型的问题,可以在需求阶段或设计阶段平行地进行几次快速建立原型的工作。原型开发后,可以获得更为清晰的需求反馈信息,既可以消除风险或减少不确定性,又可以采用平行瀑布模型方式。在瀑布模型的各阶段间转换时,可以适当并行扩展各阶段的开发工作。例如,在需求分析完成60%时,就可以开始进行这60%已完成分析部分的设计工作,同时并行进行其余40%的需求分析。

第三章结构化需求分析

1. 简述什么是需求分析?需求分析的任务是什么?

答:需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。 基本任务: ⑴问题识别:双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求;分析与综合,导出软件的逻辑模型;编写文档:包括编写" 需求规格说明书"," 初步用户使用手册"," 确认测试计划"," 修改完善软件开发计划"

2. 在进行可行性研究时,向用户推荐的方案中应清楚的表明什么?

答:可行性研究主要集中在以下4个方面。

1)经济可行性:进行开发成本的估算及可能取得效益的评估,确定目标系统是否值得投资开发。

3.

4.

5.

6. 2)技术可行性:对目标系统进行功能、性能和限制条件的分析,确定在现有资源的条件下,技术风险有多大,系统是否能实现。这里,资源包括已有的或可以提供的硬件、软件资源,现有技术人员的技术水平与已有的工作基础。 3)操作可行性:系统的操作方式能否在用户的组织内行得通,以及对目标系统可能会涉及的政策、责任等问题做出决定。 4)社会可行性:主要分析项目对社会的影响,从方针政策、经济结构、法律和制度等社会因素方面考虑项目开发的合理性和意义。 总之,可行性研究最根本的任务是对以后的行动方针提出建议。如果问题没有可行的解,分析员应该建议停止这项开发工程,以避免时间、资源、人力和金钱的浪费;如果问题值得解,分析员应该推荐一个较好的解决方案,并且为工程制定一个初步的计划。 需求工程包含哪些内容时,如何写好需求规格说明? 答:需求工程指应用工程化方法、技术和规格来开发和管理软件的需求。需求工程的目标是获取高质量的软件需求。需求工程突出了工程化原则,强调以系统化、条理化和重复化的方法进行软件需求的相关活动,从而增强管理性和降低需求开发的成本。需求工程由需求开发活动和需求管理过程组成。一个好的需求规格说明应符合以下要求:1)正确性。每一项需求都必须准确地陈述其要开发的功能。即需求规格说明对系统功能、行为、性能等的描述必须与用户的期望相吻合,这是软件系统真正需要完成可达到的。2)完整性。需求规格说明应该包括软件要完成的全部任务,每一项需求都必须是在已知系统和环境的权能和限制范围内可以实施,不能遗漏任何必要的需求信息。3)必要性。每一项需求都应把客户真正所需要的和最终系统所需遵从的标准记录下来。4)划分优先级。给每项需求、特性或使用实例分配一个实施优先级以指明它在特定产品中所占的分量。5)无二义性。对所有需求说明的读者都只能有一个明确统一的解释,由于自然语言极易导致二义性,所以尽量把每项需求用简洁明了的语言表达出来。6)可验证性。需求规格说明中描述的需求都可以运用一些可行的手段对其进行验证和确认。 用户需求调查主要有哪些方法? 答:获取需求是需求分析的基础,要在获得详实调查资料的基础之上才能进行需求分析。需求获取包括了一系列的方法和活动,如研究资料法、问卷调查法、用户访谈和实地观察法等。需求分析人员可以使用这些方法、技术进行收集、确认用户的需求。 数据字典的作用是什么?它有哪些基本条目? 答:数据流图和数据字典一起构成了系统的逻辑模型。没有数据字典,数据流图就不严格;没有数据流图,数据字典也没有作用。数据字典的重要用途是作为分析阶段的工具。在数据字典中建立严密一致的定义有助于改进分析人员和用户之间的通信,避免许多误解的发生。数据字典也有助于改进不同的开发人员或不同的开发小组之间的通信。同样,将数据流图中的每个元素的精确定义放在一起,就构成了系统的、完整的需求规格说明的主体。 数据字典还作为连接软件设计、实现和进化阶段的开发机构的信息存储。在软件设计阶段,数据字典是存储文件或数据库设计的基础。在实施阶段,还可参照数据字典描述数据。随着系统的改进,字典中的信息也会发生变化,新的信息会随时加入进来。数据字典对下列4类元素进行定义:数据项;数据流;数据存储(文件);加工。 需求规格说明书的主要内容是什么?它的作用是什么?

答:软件需求规格说明(Software Requirement Specification,SRS )是需求工程最终产生的结果,必须用一种统一的方式将它们编写成可视文档,包含了软件的功能需求和非功

能需求。需求规格说明是项目相关人员对要开发的软件系统达成的共识,是进行系统设计、实现、测试和验收的基本依据,也是整个软件开发过程中最重要的文件。软件需求规格说明的主要内容有:

7. 结构化分析方法?结构化分析方法的结果是什么?

答:结构化分析(Structured Analysis,SA )是由美国Yourdon 公司提出的适用于分析典型的数据处理系统的,以结构化的方式进行系统定义的分析方法。这个方法通常与L.Constantine 提出的结构化设计(Structured Design ,SD )方法衔接起来使用,即所谓的SASD 方法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。Yourdon 方法首先用结构化分析(SA )对软件进行需求分析,然后用结构化设计(SD )方法进行总体设计,最后是结构化编程(Structured Programming,SP )。

第五章面向对象的需求分析

1. 简述对象与类之间的联系与区别。

答:对象(Object )是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。类(Class )是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。具体来说,类由数据和方法集成,它是关于对象性质的描述,包括外部特性和内部实现两个方面。类是具有相同属性和行为的一组相似对象的抽象,在现实世界中并不能真正存在。类好比是一个对象模板,根据需要用它可以产生多个对象(即类的实例) 。因此类所代表的是一个抽象的概念或事物,类是静态概念;在客观世界中实际存在的是类的实例,即对象,对象是动态概念。类是对象的抽象,有了类之后,对象则是类的具体化,是类的实例。

2. 试描述继承性与多态性的作用。

答:继承(Inheritance )是面向对象方法学中的核心概念,它是指从一个类的定义中可以派生出另一个类的定义,被派生出的类(子类)可以自动拥有父类的全部属性和服务。继承简化了人们对现实世界的认识和描述,在定义子类时不必重复定义那些已在父类中定义过的属性和服务,只要说明它是某个父类的子类,并定义自己特有的属性和服务即可。继承机制是组织构造和复用类的一种工具,如果将用面向对象方法开发的类作为可复用构件,那么在开发新系统时可以直接复用这个类,还可以将其作为父类,通过继承

而实现复用。复用减少了程序的代码量和复杂度,提高了软件的质量和可靠性,软件的维护修改也变得更加容易。

多态性(Polymorphism )是指同名的方法或操作在不同类型的对象中有各自相应的实现。

在存在继承关系的一个类层次结构中,不同层次的类可以共享一个操作,但却有各自不同的实现。当一个对象接收到一个消息请求时,它根据其所属的类,动态地选用在该类中定义的操作。多态性机制不但为软件的结构设计提供了灵活性,减少了信息冗余,明显提高了软件的可复用性和可扩充性。

3. 通过看图回答下面的问题。

在图所示的用例图中:

① X1、X2和X3表示用例中的什么?

② 已知UC3是抽象用例,那么X1可通过图中哪些用例与系统进行交互?

③ 图中哪个用例时UC4的可选部分,哪个用例是UC4的必须部分?

答:X1、X2和X3表示用例中的角色(或参与者)。已知UC3是抽象用例,那么X1可通过

图中的UC4、UC1用例与系统进行交互。UC2是UC4的可选部分,UC5是UC4的必须部分。

第六章面向对象的软件设计

1. 说明面向对象的集成测试包含哪些内容。

答:面向对象系统是由对象到子系统、再到系统的集成。通常是松耦合的,系统中没有一个明显的顶层,即面向对象系统没有严格的层次控制结构,相互调用的功能也分散在不同的类中,类通过消息的相互作用申请和提供服务。此外,

面向对象程序具有动态性,

程序的控制流往往无法确定。因此,增量式集成测试不再适用,只能采用基于操作的集成测试。面向对象的集成测试关注系统的结构和内部的相互作用,可以分成两步进行:先进行静态测试,再进行动态测试。

面向对象基于操作的集成测试策略有两种:基于线程的测试和基于使用的测试。

基于线程的测试把相应系统的一个输入或一个事件所需要的那些类集成起来。分别集成并测试每个线程,同时应用回归测试以保证不产生副作用。

基于使用的测试首先测试几乎不使用服务器类的那些类(称为独立类),把独立类都测试完之后,再测试使用独立类的下一个层次的类(称为依赖类)。对依赖类的测试一个层次一个层次地持续进行下去,直至把软件系统构造完为止

2. 举例说明各种程序设计语言的特点及适用范围。

答:以常见的一些编程语言为例:

FORTRAN 语言,它不仅面向科学计算,数据处理能力也极强。适用于科学工程计算 Pascal 语言,具有很强的数据和过程结构化能力,它语言简明,数据类型丰富,程序结构严谨。它是第一个体现结构化编程思想的语言。用于描述结构化算法和科学计算, 操作系统的编写

C 语言:功能强大,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符,它还具有汇编语言的某些特征,使程序运行效率高。可用于许多领域,特别是在操作系统等方面有较大优势。

Coble 语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开、数据描述与算法描述分开。结构严谨层次分明,广泛用于商业数据处理。

SQL:结构化查询语言,用于对数据库进行存取管理。

汇编语言和Ada 语言,主要用于实时处理和编写系统软件。

Prolog 、Lisp 语言。Lisp 是一种函数型语言, 特别适用于组合问题中符号运算和表处理,用于定理证明、树的搜索和其他问题的求解。Prolog 是一种逻辑型语言,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的句子组成,比较接近与自然语言。这两种语言主要用于人工智能系统开发。

C++、Java 语言, 是面向对象的设计语言,用于面向对象的方开发软件。

3. 选择面向对象程序设计时应考虑哪些因素?

答:纯面向对象程序设计语言着重支持面向对象方法研究和快速原型的实现,而混合型面向对象程序设计语言的目标则是提高运行速度和使传统程序员容易接受面向对象的思想。成熟的面向对象程序设计语言一般都是提供丰富的类库和强有力的开发环境。除此之外,开发人员在选择面向对象程序设计语言时,还应考虑可复用性、类库和开发环境以及一些其他的因素。语言、开发环境和类库这3个因素综合起来,共同决定了可复用性。考虑类库时,不仅应该考虑是否提供了类库,还应考虑库中提供了哪些有价值的类。在选择编程语言时还应考虑的因素有为用户学习面向对象分析、设计和编程技术所能提供的培训服务;在使用面向对象程序设计语言期间能提供的技术支持;能提供给开发人员使用的开发工具、开发平台和发布平台;对机器性能和内存的需求;集成已有软件的容易程度等。

第七章软件测试技术

1. 简述软件测试的步骤。

答:首先要分别完成每个单元(模块)的测试任务,以确保每个模块能正常工作。然后把已经测试过的模块组装起来,进行集成测试。完成集成测试以后,要对开发工作初期制定的确认准则进行检验。完成确认测试以后,为检验它能否与系统的其他部分协调工作,还需要进行系统测试。软件测试步骤如下。

1)制订测试计划。该计划被批准后转向第2)步。

2)设计测试用例。该用例被批准后转向第3)步。

3)如果满足“启动准则”,那么执行测试。

4)撰写测试报告。

5)消除软件缺陷。如果满足“完成准则”,那么正常结束测试。

2. 简述黑盒测试和白盒测试的方法并举例说明。

答:

1)黑盒测试也称功能测试或数据驱动测试。在测试时,把程序看作一个不能打开的黑盒子,它是在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。 黑盒测试技术是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。黑盒测试能够发现的错误类型包括:功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止错误等。黑盒测试技术主要包括等价类划分、边界值分析、因果图、错误推测等方法。

2)白盒测试也称结构测试或逻辑驱动测试,它是在已知程序内部结构的情况下设计测试用例的测试方法。在使用白盒测试方法时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,对所有逻辑路径进行测试,得出测试数据。白盒测试的主要技术有逻辑驱动、路径测试等,主要用于软件验证、检验语法错误、编译错误、性能问题、逻辑问题、判定条件问题和编程规范等。

3. 软件测试分为哪几个阶段?每个阶段分别测试哪些内容?

答:根据软件开发流程,软件测试工作可以分为单元测试、集成测试、系统测试和验收测试。单元测试是对软件中的基本组成单位进行的测试,验证每个模块是否满足系统设计说明书的要求。集成测试是将已测试过的模块组合成子系统,重点测试各模块之间接口和联系。系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。验收测试是根据需求规格说明书中定义的全部功能和性能要求,确认软件是否达到了要求。

第八章软件维护技术

1. 为什么说软件维护是不可避免的?

答:为了保证软件在运行期间正常运行,延长软件的使用寿命,发挥良好的社会效益和经济效益,软件维护必不可少

2. 软件可维护性与哪些因素有关?采用哪些因素能提高软件可维护性?

答:决定软件可维护性的质量属性主要有以下几个方面。

可理解性。可理解性是指人们通过阅读源代码和相关文档,了解程序功能、结构、接口和内部过程的容易程度。一个可理解的程序应该具备模块化、结构化、风格一致化(代码风格与设计风格一致)、易识别化(使用有意义的数据名和过程名),以及文档完整化等一些特性。

可测试性。可测试性是指论证程序正确性的容易程度。程序复杂度越低,证明其正确性就越容易。而且测试用例设计得合适与否,取决于对程序的理解程度。因此,一个可测试的程序应当是可理解的、可靠的和简单的。

可修改性。可修改性是指程序容易修改的程度。一个可修改的程序应当是可理解的、通用的、灵活的和简单的。其中通用性是指程序适用于各种功能变化而无需修改。灵活性

3.

4.

5.

6. 是指能够容易地对程序进行修改。 试说明软件文档与软件可维护性的关系。 答:由于文档是对软件的总目标、程序各组成部分之间的关系、程序设计策略以及程序实现过程的历史数据等的说明和补充,因此,文档对提高程序的可理解性有着重要作用。即使是一个十分简单的程序,要想高效率地维护它就需要编制文档来解释其目的及任务。 对于程序维护人员来说,要想对程序编制人员的意图重新改造,并对今后变化的可能性进行估计,也必须建立完整的维护文档。 简述软件维护工作过程。为什么说软件维护过程是一个简单的软件开发过程? 答:在软件维护阶段,变更、完善软件的活动包括:提出维护申请;论证维护申请;制定维护方案;进行维护活动;建立维护文档;评价维护结果。由此可见,完成一项软件维护任务,又好似重复了软件开发的全过程。 什么是软件维护的副作用?如何防止软件维护的副作用? 答:维护副作用是指由于修改而导致的错误或其他多余动作的发生。3类主要副作用: 修改代码的副作用 一般可在回归测试过程中对修改代码的副作用造成的软件故障进行查找和改正。 修改数据的副作用 完善的设计文档可以限制修改数据的副作用。这种文档描述了数据结构,并提供了一种把数据元素、记录、文件和其他结构与软件模块联系起来的交叉对照表。 修改文档的副作用 在软件再次交付使用之前,对整个软件配置进行评审将大大减少修改文档的副作用。 如何保证和提高软件维护的质量和效率?

答提高软件的可维护性,可以从两方面来考虑:一方面,在软件开发期的各个阶段,各项开发活动进行的同时,应该时时处处努力提高软件的可维护性,保证软件产品在发布之日具有高水准的可维护性;另一方面,在软件维护期进行维护活动的同时,也要兼顾提高软件的可维护性,更不能对可维护性产生负面影响。具体的提高软件可维护性的技术途径主要有以下4个方面:建立完整的文档; 明确质量标准; 采用易于维护的技术和工具; 加强可维护性评审。

UML 图解

1. 一个公司可以雇佣多个人,某个人在同一时刻只能为一家公司服务。每个公司只有一个总经理,总经理下有多个部门经理管理公司的雇员,公司的雇员只归一个经理管理。请为上面描述的关系建立类模型,注意捕捉类之间的关联并标明类之间的多重性。

2. 在一个习题库下,各科老师可以在系统中编写习题及标准答案,并将编写的习题和答案加入题库中,或者从题库中选取一组习题组成向学生布置的作业,并在适当的时间公布答案。学生可以在系统中完成作业,也可以从题库中选择更多的习题练习。老师可以通过系统检查学生的作业,学生可以在老师公布答案后对自己的练习进行核对。阅读这一情境,分析出该系统所包括的实体类并适当添加属性,绘制出分析类图。

3. 某银行系统的取款用例执行顺序如下,工作人员输冬取款单,输入后,银行系统请求银行数据库匹配用户,进行身份验证,验证通过后,数据库注销相应存款,返回注销完成信息,银行系统在存折上打印取款记录。请根据以上信息绘制顺序图。

4. 在某一学生指纹考勤系统中,有一个用例名为“上课登记”。此用例允许学生在上课前使用系统识别自己的指纹信息进而识别自己的身份,同时系统可以将登录信息存储在数据库中。 系统生成一个关于该登记学生及当前日期、时间的新记录,并将该记录保存到数据库中。请根据以上描述绘制“上课登记”用例的顺序图。

5. 某银行系统存款处理过程如下。

①系统将存款单上的存款金额分别记录在存折和账目文件中;

②将现金存人现金库;

③最后将打印后的存折还给储户;

请分析此交互过程所涉及的系统对象,并结合存款处理流程绘制协作图。

6. 医院拟引入一款患者监护系统。基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等) ,定时记录病人情况,以形成患者日志。当某个病人的生理信号超出医生规定的安全范围时,向值班护士发出警告信息。此外,护士在需要时还可以要求系统打印出某个指定病人的病情报告。请根据以上描述,绘制患者监护系统的状态图。

7. 当手机开机时,它处于空闲状态,当用户使用电话呼叫某人时,收集进入拨号状态。如果呼叫成功,即电话接通,手机就处于通话状态;如果呼叫不成功,如对方线路有问题或关机,则拒绝接听。这时手机停止呼叫,重新进入空闲状态,手机进入空闲状态下被呼叫,手机进入响铃状态(ringing);如果用户接听电话(pick),手机处于通话状态;如果用户未做出任何反应,可能他没有听见铃声,手机一直处于响铃状态,如果用户拒绝来电,手机回到空闲状态。请按以上描述绘制出使用手机的状态图。

8. 某学生选课系统的查询课程用例如下,学生首先进入选课系统,然后输入要查询的课程名,系统验证输入的课程名是否存在,若存在,跳转到对应的显示课程信息的页面;若不存在,则给出提示信息,返回选课页面。请根据以上描述绘制活动图。

9. 在机票预订系统中,使用系统的用户必须先注册一个自己的账号,其过程为输入注册信息、验证信息完整、提交信息、系统进行验证(是否重名等) ,如果验证均通过,则注册成功,否则失败。请根据以上描述,对用户注册用例画出活动图。

10. 某个自助售货机系统的用户购买汽水的交互过程如下。

①用户投币,系统接收到硬币后显示出机器中的商品余量信息。 ②用户选择其中一种汽水,系统处理后将该种汽水释放。 请绘制此交互过程的协作图。

第一章 软件工程引论

1. 在下列选项中,(D )不是软件的特征。

A . 系统性与复制性 B. 可靠性与一致性 C. 抽象性与智能型 D.有形性与可控性

2. 软件是一种(B )产品。

A . 有形 B. 逻辑 C. 物质 D. 消耗

3. 软件工程是一种(A )分阶段实现的软件程序开发方法。

A. 自顶向下 B. 自底向上 C. 逐步求精 D. 面向数据流

4. 与计算机科学的理论研究不同,软件工程是一门(B )学科。

A . 理论性 B. 工程性 C. 原理性 D. 心理性

5. 软件工程与计算机科学性质不同,软件工程着重于(C )。

A . 原理探讨 B. 理论研究 C. 建造软件系统 D. 原理性的理论

6. 下列说法正确的是(B )

A. 软件工程的概念于20世纪50年代提出

B. 软件工程的概念于20世纪60年代提出

C. 20世纪70年代出现了客户机/服务器技术

D. 20世纪80年代软件工程学科达到成熟

7. 软件工程方法学中的软件工程管理是其中的一个重要内容,它包括软件管理学和软件工

程经济学,它要达到的目标是(D )

A . 管理开发人员,以开发良好的软件

B . 采用先进的软件开发工具,开发优秀的软件

C . 消除软件危机,达到软件生产的规模效益

D . 以基本的社会效益为基础,工程化生产软件

第二章 软件生命周期及开发模型

1. 软件生命周期包括可行性分析和项目开发计划、需求分析、总体设计、详细分析、编码、

(B )、维护等活动。

A . 应用 B. 测试 C. 检测 D. 以上答案都不正确

2. 软件生命周期模型有多中,下列项目中, (C )不是软件生命周期模型。

A . 螺旋模型 B. 增量模型 C. 功能模型 D. 瀑布模型

3. 软件生命周期中时间最长的阶段时(D )

A . 需求分析阶段 B. 总体设计阶段 C. 测试阶段 D. 维护阶段

4. 瀑布模型是一种(D )

A. 软件开发方法 B.软件生存周期 C.程序设计方法学 D.软件生存周期模型

5. 软件开发中常采用的结构化生命周期方法,由于其特征而一般称其为(A )

A. 瀑布模型 B.对象模型 C.螺旋模型 D.层次模型

6. 在结构化的瀑布模型中,(D )阶段定义的标准将成为软件测试中系统测试阶段的目标

A. 详细设计阶段 B.总体设计阶段 C.可行性研究阶段 D.需求分析

7. 增量模型是一种(B )的模型

A. 整体开发 B.非整体开发 C.灵活性差 D.较晚产生工作软件

8. (C )是指模拟某种产品的原始模型

A. 模型 B.最初模型 C.原型 D.进化模型

9. 建立原型的目的不同,实现原型的途径也有所不同,下列不正确的类型是(B )

A. 用于验证软件需求的原型 B.垂直原型 C.用于验证设计方案的原型 D.用于演化出目标系统的原型

10. 原型化方法是一种(A )型的设计过程。

A. 在外向内 B.自顶向下 C.自内向外 D.自底向上

11. 对于原型的使用建议,以下说法不正确的是(C )

A. 对于开发周期很长的项目,能够使用原型 B.在系统的使用可能变化较大、不能相

对稳定是,能够使用原型 C.缺乏开发工具,或对原型的可用工具不了解的时候,能够使用原型D. 开发者对系统的某种设计方案的实现无信心或无十分的把握时,能够使用原型

12. 原型模型的主要特点之一是(B )

A. 开发完毕才见到产品 B.及早提供工作软件 C.及早提供全部完整软件 D.开发完毕

才见到工作软件

第三章 结构化需求分析

1. 需求工程的主要目的是(C )

A. 制定系统开发的具体方案 B.进一步确定系统的需求 C.解决系统是“做什么的为题”

D. 解决系统是“如何做的问题”

2. 需求分析的任务不包括(B )

A. 问题分析 B.系统设计 C.需求分析 D.需求评审

3. 软件分析的第一步要做的工作是(A )

A. 定义系统的目标 B.定义系统的功能模块 C.分析用户需求 D.分析系统开发的可行

4. 可行性研究的目的是用最小的代价在尽可能短的时间内确定问题的(A )

A. 能否可解 B.工程进度 C.开发计划 D.人员配置

5. 需求分析最终结果是产生(B )

A. 项目开发计划 B.需求规格说明书 C.设计说明书 D.可行性分析报告

6. 在结构化分析方法中,(C )是表达系统内部数据运动的图形化技术

A. 数据字典 B.实体关系图 C.数据流图 D.状态转换图

7. DFD 中的每个加工至少需要(D )

A. 一个输入流 B.一个输出流 C.一个输入或输出流 D.一个输入流和一个数处理

8. 需求分析的主要方法有(C )

A. 形式化分析方法 B. PAD图描述 C.结构化分析方法 D.程序流程图

9. SA 法的主要描述手段有(B )

A. 系统流程图和模块图 B.DFD图、数据字典、加工说明C. 软件结构图、加工说明D.

功能结构图、加工说明

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

需求分析文档以及(C )

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

第四章 结构化软件设计

1. 在面向数据流的软件设计方法中,一般将信息里与分为(D )

A . 数据流和控制流 B. 变换流和控制流 C. 事务流和控制流 D. 变换流和事务流

2. 耦合度可以分为七级,其中最松散的耦合是(A )

A. 非直接耦合 B.数据耦合 C.特征耦合 D.控制耦合

3. 当模块中包含复杂的条件组合,只有(A )能够清晰的表达出各种动作之间的对应关系

A. 判定表和判定树 B.盒图 C.流程图 D.关系图

4. 一个软件的宽度是指其控制的(C )

A. 模块数 B.层数 C.跨度 D.厚度

5. 面向数据流的软件设计方法可将(C )映射成软件结构

A. 控制结构 B.模块 C.数据流 D.事务流

第五章 面向对象的需求分析

1. 采用UML 进行软件建模的过程中,类图是系统的一种静态视图,用(B )可明确表示两

类事物之间存在的整体/部分形式的关联关系。

A. 依赖关系 B.聚合关系 C.泛化关系 D.实现关系

2. 在UML 语言中,图中的a 、b 、c 三中图形符号按照顺序分别表示(C )

Kim, Keehyun

Kim, HyunsooJung, Yoontae

A. 边界对象、实体对象、控制对象 B. 实体对象、边界对象、控制对象 C. 控制对象、

实体对象、边界对象 D. 边界对象、控制对象、实体对象

3. 不同的对象收到同一消息可以产生完全不同的结果,这一现象叫做(B )

A. 继承 B. 多态 C. 动态绑定 D. 静态绑定

第六章面向对象的软件设计

1. 下面哪种设计模式定义了对象间的一种一对多的依赖关系,以便当一个对象的状态发生

改变时,所有依赖于它的对象都得到通知并自动刷新(D )

A.Adapter (适配器) B.Iterator(迭代器) C.Prototype (原型) D. Observer (观察者)

2. UML 中有多种类型的图,其中,(B )对系统的使用方式进行了分类;()显示了类及其

相互关系;()显示了人或对象的活动,其方式类似于流程图;通信图显示了在某种情况下对象之间发送的消息;()与通信图类似,但强调的是顺序而不是连接。

A.用例图、顺序图、类图、活动图 B.用例图、类图、活动图、顺序图 C.类图、顺序图、

活动图、用例图 D. 活动图、顺序图、用例图、类图

3. UML 类图的类与类之间的关系有5种:继承、依赖、关联、组合和聚合,若类A 需要使

用标准数学函数类库中提供的功能,那么类A 与标准类库中提供的类之间存在(A )关系

A. 依赖 B.关联 C.聚合 D. 组合

第七章软件测试技术

1. 用边界值分析法,假定1

A. X=1,X=100 B. X=0,X=1,X=100,X=101 C. X=2,X=99 D.X=0,X=101

2. 下列关于软件验收测试的合格通过准则错误的是(C )

A. 软件需求分析说明书中定义的所有功能已全部实现 B. 所有测试项没有 C. 立项审批表、需求分析文档、设计文档和编码实现不一致 D.验收测试工件齐全

3. 以下关于集成测试的内容正确的有(D )

① 集成测试也叫组装测试或者联合测试 ② 测试在把各个模块连接起来的时候,穿越

模块接口的数据是否会丢失 ③ 测试一个模块的功能是否会对另一个模块的功能产生不利影响 ④ 测试各个子功能组合起来,能否达到预期要求的父功能 ⑤ 测试全局数据结构是否有问题 ⑥ 测试单个模块的误差累积起来,是否会放大,从而达到不能接受的程度

A. ①②④⑤⑥B. ②③④⑤⑥C. ①②③⑤⑥ D.以上全部正确

4. 为了提高测试的效率,应该(D )

A . 随机的选取测试数据 B. 取一切可能的输入数据作为测试数据 C. 在完成编码以

后制定软件的测试计划 D. 选择发现错误的可能性大的数据作为测试数据

5. 软件调试的目的是(A )

A. 找出错误所在并改正之 B.排除存在错误的可能性 C.对错误性质进行分类 D.统计

出错的次数

6. 单元测试一般以白盒为主,测试的依据是(A )

A. 模块功能规格说明 B. 系统模块结构图 C. 系统需求规格说明 D. 统计出错的次

7. 下次关于α、β测试的描述中正确的是(C )

A. α测试不需要用户代表参加 B.β测试不是验收测试的一种 C.α测试可以有用户

代表参加 D. β测试是系统测试的一种

8. 软件测试的目的是(B )

A. 评价软件的质量 B.发现软件的错误 C.找出软件中所有的错误 D.证明软件是正确

9. 软件测试用例主要由输入数据和(C )两部分组成

A. 测试计划 B.测试规则 C.预期输出结果 D.以往测试记录分析

10. 在黑盒测试中,着重检查输入条件组合的方法是(D )

A. 等价类划分法 B.边界值分析法 C.错误推测法 D.因果图法

第八章软件维护技术

1. 随着软硬件环境变化而修改软件的过程是(B )

A. 校正性维护 B. 适宜性维护 C. 完善性维护 D. 预防性维护

2. 为了提高软件的可维护性,在编码阶段应注意(B )

A. 保存测试用例和数据 B. 提高模块的独立性 C. 文档的副作用 D. 养成好的程序设

计风格

3. 为提高系统性能而进行的修改属于(C )

A.纠正性维护 B.适应性维护 C.完善性维护 D.测试性维护

4. 软件生命周期中,(D )阶段所站的工作量最大

A.分析阶段 B.设计阶段 C.编码阶段 D.维护阶段

5. 系统维护中要解决的为题来源于(D )

A.系统分析阶段 B.系统设计阶段 C.系统实施阶段 D.上述3个阶段(A 、B 、C )都包括

6. 软件维护的副作用,是指(C )

A. 开发时的错误 B. 隐含的错误 C. 因修改软件而造成的错误 D. 运行时的误操作

第一章软件工程引论

1.

2.

3.

4.

5. 软件工程出现的主要原因是软件危机的出现。√ 文档是软件产品的一部分,没有文档的软件就不能称为软件。√ 软件危机的主要表现是软件需求量迅速增加,软件价格上升。× 一个成功的项目唯一应该提交的就是运行程序法。× 与计算机科学的理论研究不同,软件工程是一门原理性学科。×

第二章软件生命周期及开发模型

1. 瀑布模型和增量模型都属于整体开发模型。×

2. 原型模型可以有效地适应用户需求的动态变化。×

3. 螺旋模型在瀑布模型和增量模型的基础上增加了风险分析活动。√

4. 软件过程改进也是软件工程的范畴。√

5. 在软件开发中采用原型系统策略的主要困难是成本问题。×

第三章结构化需求分析

1.

2.

3.

4. 需求分析的主要目的是制定软件开发的具体方案。× 用户对软件需求的描述不精确,往往是产生软件危机的原因之一。√ 分层的DFD 图可以用于可行性分析阶段,描述系统的物理结构。× 在用户需求分析时观察用户手工操作过程不是为了模拟手工操作过程,而是为了获取第

一手资料,并从中提取有价值的需求。√

5. 需求规格说明数描述了系统每个功能的实现。×

第四章结构化软件设计

1. 在同一用户界面中,所有的菜单选择,命令输入、数据显示和其它功能应采用不同的形

式和风格。×

2. 最高的耦合度是数据耦合。√

3. 编程中应采用统一的标准和约定,降低程序的复杂性。√

4. 流程图也称为框图程序,是程序最常用的一种表示法。√

5. 理想的人机界面应针对具有典型个性的特定的一类用户设计。√

6. 重视程序结构的设计,能是程序具有较好的层次结构。√

7. 软件过程不用遵循“自上而下,逐步求精”的原则和单入口单出口的结构化设计思想。

×

8. 软件开发、设计几乎都是从头开始,成本和进度很难估计。√

9. 耦合度是对软件结构中模块间关联程度的一种度量。在设计软件是应追求耦合尽可能紧

密的系统。×

10. SD 法是一种面向数据结构的设计方法,强调程序结构与问题结构相适应。×

第五章面向对象的需求分析

1. 边界对象表示了系统与参与者之间的接口。在每一个用例中,该对象从参与者处收集信

息,并将之转换为一种实体对象和控制对象使用的形式。√

2. 采用面向对象的方法开发软件的过程中,抽取和整理用户需求并建立问题域精确模型的

过程叫面向对象分析。√

3. 继承仅仅允许单重继承,即不允许一个子类有多个父类。×

第六章面向对象的软件设计

1. 面向对象程序设计应该在面向对象分析之前,因为只有产生了设计结果才可以对其进行

分析。×

2. 面向对象设计产生的结果在形式上可以与面向对象分析产生的结果类似,例如都可以使

用UML 表达。√

第七章软件测试技术

1. 软件测试就是为了验证软件功能的实现是否正确,是否完成既定目标的活动,所以软件

测试在软件工程而后期才开始具体的工作。×

2. 发现错误多的模块,可能残留在模块中的错误也多。√

3. 测试人员在测试过程中发现一处问题,如果问题影响不大,而自己有可以修改,应立即

将此问题正确修改,以加快、提高开发的进程。×

4. 路径测试不属于单元测试的内容。√

5. 测试只要做到语句覆盖和分支覆盖,就可以发现程序中的所有错误。×

6. 软件测试只能发现错误,但不能保证测试后的软件没有错误。√

7. 集成测试是有最终用户来实施的。×

8. 所有的逻辑覆盖标准中,查错能力最强的语句覆盖。×

9. 等价类划分方法能够有效的检测输入条件的各种组合可能引起的错误。×

10. 验收检测方法需要考察模块间接口和各模块之间的联系。×

第八章软件维护技术

1.

2.

3.

4.

5.

维护申请报告是一种由用户产生的文档,它用作计划维护任务的基础。× 维护阶段是软件生存周期中时期最短的阶段,也是花费精力和费用最少的阶段。× 在软件维护中,因修改软件而导致出现错误或其它情况成为维护的副作用。√ 为了提高软件的可维护性和可靠性而对软件进行的修改称为适应性维护。× 维护的副作用有编码副作用、数据副作用、文档副作用3种。√

第一章软件工程引论

1. 什么是软件危机?它和软件工程有什么关系?

答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。概括地说,软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。

2. 简述软件和软件工程的定义以及软件工程的形成过程。

答:软件是与计算机系统操作有关的程序、规程、规则及其文档和数据的统称。软件由两部分组成:一是机器可执行的程序和有关的数据;二是与软件开发、运行、维护、使用和培训有关的文档。

软件工程是指导计算机软件开发和维护的工程学科。它强调按照软件产品的生产特性,采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前最好的技术结合起来,以便经济地开发出高质量的软件并有效地维护它。 软件工程的发展经历了以下3个阶段。

第一阶段:20世纪70年代,—传统软件工程时代。

第二阶段:20世纪80年代,—过程软件工程时代。

第三阶段:进入20世纪90年代以后,—构件软件工程时代。

3. 软件工程的目标是什么?如何解决多目标之间的矛盾?

答:软件工程的目标:软件开发成本较低。软件功能能够满足用户的需求。软件性能较好。软件可靠性高。软件易于使用、维护和移植。能按时完成开发任务,并及时交付使用。

有些目标之间是相互补充的,如易于维护和高可靠性之间、功能强与可用性之间;有些目标是彼此相互冲突的,如若只考虑降低开发成本,很可能同时也降低了软件的可靠性,如果一味追求提高软件的性能,可能造成开发出的软件对硬件的依赖性较强,从而影响到软件的可移植性;不同的应用对软件质量的要求不同,如对实时系统来说,其可靠性和效率比较重要;对生命周期较长的软件来说,其可移植性、可维护性比较重要,所以,应该根据不同的系统需求决定个目标之间的重要性。

4. 在软件开发中软件开发工具有什么作用?

答:软件开发工具是指用来辅助软件开发、维护和管理的软件。现代软件工程方法得以实施的重要保证是软件开发工具和环境。软件开发工具使软件在开发效率、工程质量、减少软件开发对人的依赖性等多方面得到改善

5. 什么是软件支持过程?它与软件工程方法学有何关系?

答:软件过程是指生产满足需求且达到工程目标的软件产品所涉及的一系列相关活动,

它覆盖了需求分析、系统设计、实施以及支持维护等各个阶段。

软件过程有各种分类方法。按性质划分软件过程可概括为基本过程类、支持过程和组织过程类。可见软件支持过程是软件过程中的一种。

6. 在软件工程知识体系中,将软件工程划分为哪些知识域?

答:SWEBOK 将软件工程知识体系划分为10个知识域,分为两类过程。一类是开发与维护过程,包括软件需求、软件设计、软件构造、软件测试和软件维护;另一类是支持过程,包括软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法、软件质量。

7. B.W.Boehm 提出的软件工程基本原则的作用是什么?

答:1.采用分阶段的生命周期计划,以实现对项目的严格管理

2.坚持进行阶段评审,以确保软件产品质量

3.实行严格的产品控制,以适应软件规格的变更

4.采用现代程序设计技术

5.软件成果能清楚地审查

6.开发小组人员应该少而精

7.承认不断改进软件工程实践的必要性

第二章软件生命周期及开发模型

1. 简述什么是软件生命周期。根据国家标准《计算机软件开发规范》,软件生命周期主要

包括哪几个阶段?

答:作为工程化的一般特征,软件产品和其他工业产品一样,软件产品也包括设计、生产、使用和消亡几个阶段,并称之为软件的生命周期,即指软件产品从功能确定、设计、开发成功、投入使用,并在使用中不断修改、完善,直至被新的软件所替代,而停止该软件使用的全过程。国家标准GB8566—1988《计算机软件开发规范》将软件生命周期划分为几个阶段:可行性研究、项目计划、需求分析、总体设计、详细设计、编码实现(包括单元测试、集成测试、确认测试)、系统运行和维护。这几个阶段又可以归纳为3个阶段,即软件定义阶段,软件开发阶段和软件运行维护阶段。

2. 瀑布模型有哪些特点?对于里程碑,你有哪些认识?

答:1970年W.Royce 最早提出瀑布模型。答:瀑布模型的特点:(1). 线性化模型结构;(2). 各阶段具有里程碑特征;(3). 基于文档的驱动;(4). 严格的阶段评审机制。其中的里程碑是指瀑布模型中的阶段只能逐级到达、不能跨越;每个阶段都有明确的任务,都需要产生确定的成果。由于瀑布模型是一种线性模型,要求项目严格按规程推进,必须等到所有开发工作全部完成以后才能获得可以交付的软件产品。因此,瀑布模型不太适用于用户需求经常变更的软件项目。

瀑布模型是一种基于里程碑的阶段过程模型,它所提供的里程碑式的工作流程,为软件项目按规程管理提供了便利。例如,按阶段制订项目计划,分阶段进行成本核算,进行阶段性的评审等。这为提高软件产品质量提供了有效保证。

3. 试说明原型模型的两种实现方案各有什么特点,各适用于哪些情况。

答:原型可以分为3类。

1)抛弃式原型:这种原型在目的达到后即被抛弃,原型不作为最终产品,如上所述。

2)进化式原型:这类原型的形成和发展是逐步完成的,它是高度动态迭代和高度动态循环,每次迭代都要对系统重新进行需求规格说明、重新设计、重新实现和重新评价,所以是对付变化最为有效的方式。

3)增量式模型:系统是一次一段地增量构造,与演化式原型的最大区别在于增量式开

4.

5.

6.

7.

8. 发是在软件总体设计基础上进行的。 一般认为,只有大型项目才采用螺旋模型,原因是什么? 答:螺旋模型的优越性在于它吸收了“进化”的概念,使得开发人员和用户对每一个演化层出现的风险均有所了解,并对此做出反应。但使用该模型需要丰富的风险评估经验和专门知识,如果项目风险较大又未及时发现,势必造成重大损失。实际上,对软件项目进行风险分析也需要费用,假如项目风险分析费用过高,甚至超过了项目的开发费用,显然就不合适了。一般大型项目才有较高的风险,才有进行详细风险分析的必要。因此,这种模型比较适合大型的软件项目。 为什么说构建复用模型是一种有利于软件按工业流程生产的过程模型? 答:对象技术将事物实体封装成包含数据和数据处理方法的对象,并抽象为类。经过适当的设计和实现的类也可称为构件。由于构件具有一定的通用性,可以在不同的软件系统中被复用。在基于构件复用的软件开发中,软件由构件装配而成,这就如同用标准零件装配汽车一样。构件复用技术,它能带来更好的复用效果,并且具有工程特性,更能适应软件按工业流程生产的需要。 敏捷方法的价值观和原则与传统的方法有哪些联系和区别? 答:相对于“非敏捷”,敏捷不仅是体现在有效地响应变化,它还包括鼓励程序员团队与业务专家之间的紧密协作、面对面地沟通(认为比书面的文档更有效)、强调可运行软件的快速交付而不是中间产品,敏捷过程提倡可持续开发。建立紧凑而自我组织型的团队,能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。 从产品角度看,敏捷方法适用于需求萌动并且快速改变的情况,如系统有比较高的关键性、可靠性、安全性方面的要求,则可能不完全适合;从组织结构的角度看,组织结构的文化、人员、沟通则决定了敏捷方法是否适用。 有什么情况下会建议不用敏捷方法来开发软件系统? 从产品角度看,敏捷方法适用于需求萌动并且快速改变的情况,如系统有比较高的关键性、可靠性、安全性方面的要求,则可能不完全适合;从组织结构的角度看,组织结构的文化、人员、沟通则决定了敏捷方法是否适用。 具有原型化的瀑布模型具有什么特点?他和瀑布模型最大的不同是什么?

答:为了克服瀑布模型的问题,可以在需求阶段或设计阶段平行地进行几次快速建立原型的工作。原型开发后,可以获得更为清晰的需求反馈信息,既可以消除风险或减少不确定性,又可以采用平行瀑布模型方式。在瀑布模型的各阶段间转换时,可以适当并行扩展各阶段的开发工作。例如,在需求分析完成60%时,就可以开始进行这60%已完成分析部分的设计工作,同时并行进行其余40%的需求分析。

第三章结构化需求分析

1. 简述什么是需求分析?需求分析的任务是什么?

答:需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。 基本任务: ⑴问题识别:双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求;分析与综合,导出软件的逻辑模型;编写文档:包括编写" 需求规格说明书"," 初步用户使用手册"," 确认测试计划"," 修改完善软件开发计划"

2. 在进行可行性研究时,向用户推荐的方案中应清楚的表明什么?

答:可行性研究主要集中在以下4个方面。

1)经济可行性:进行开发成本的估算及可能取得效益的评估,确定目标系统是否值得投资开发。

3.

4.

5.

6. 2)技术可行性:对目标系统进行功能、性能和限制条件的分析,确定在现有资源的条件下,技术风险有多大,系统是否能实现。这里,资源包括已有的或可以提供的硬件、软件资源,现有技术人员的技术水平与已有的工作基础。 3)操作可行性:系统的操作方式能否在用户的组织内行得通,以及对目标系统可能会涉及的政策、责任等问题做出决定。 4)社会可行性:主要分析项目对社会的影响,从方针政策、经济结构、法律和制度等社会因素方面考虑项目开发的合理性和意义。 总之,可行性研究最根本的任务是对以后的行动方针提出建议。如果问题没有可行的解,分析员应该建议停止这项开发工程,以避免时间、资源、人力和金钱的浪费;如果问题值得解,分析员应该推荐一个较好的解决方案,并且为工程制定一个初步的计划。 需求工程包含哪些内容时,如何写好需求规格说明? 答:需求工程指应用工程化方法、技术和规格来开发和管理软件的需求。需求工程的目标是获取高质量的软件需求。需求工程突出了工程化原则,强调以系统化、条理化和重复化的方法进行软件需求的相关活动,从而增强管理性和降低需求开发的成本。需求工程由需求开发活动和需求管理过程组成。一个好的需求规格说明应符合以下要求:1)正确性。每一项需求都必须准确地陈述其要开发的功能。即需求规格说明对系统功能、行为、性能等的描述必须与用户的期望相吻合,这是软件系统真正需要完成可达到的。2)完整性。需求规格说明应该包括软件要完成的全部任务,每一项需求都必须是在已知系统和环境的权能和限制范围内可以实施,不能遗漏任何必要的需求信息。3)必要性。每一项需求都应把客户真正所需要的和最终系统所需遵从的标准记录下来。4)划分优先级。给每项需求、特性或使用实例分配一个实施优先级以指明它在特定产品中所占的分量。5)无二义性。对所有需求说明的读者都只能有一个明确统一的解释,由于自然语言极易导致二义性,所以尽量把每项需求用简洁明了的语言表达出来。6)可验证性。需求规格说明中描述的需求都可以运用一些可行的手段对其进行验证和确认。 用户需求调查主要有哪些方法? 答:获取需求是需求分析的基础,要在获得详实调查资料的基础之上才能进行需求分析。需求获取包括了一系列的方法和活动,如研究资料法、问卷调查法、用户访谈和实地观察法等。需求分析人员可以使用这些方法、技术进行收集、确认用户的需求。 数据字典的作用是什么?它有哪些基本条目? 答:数据流图和数据字典一起构成了系统的逻辑模型。没有数据字典,数据流图就不严格;没有数据流图,数据字典也没有作用。数据字典的重要用途是作为分析阶段的工具。在数据字典中建立严密一致的定义有助于改进分析人员和用户之间的通信,避免许多误解的发生。数据字典也有助于改进不同的开发人员或不同的开发小组之间的通信。同样,将数据流图中的每个元素的精确定义放在一起,就构成了系统的、完整的需求规格说明的主体。 数据字典还作为连接软件设计、实现和进化阶段的开发机构的信息存储。在软件设计阶段,数据字典是存储文件或数据库设计的基础。在实施阶段,还可参照数据字典描述数据。随着系统的改进,字典中的信息也会发生变化,新的信息会随时加入进来。数据字典对下列4类元素进行定义:数据项;数据流;数据存储(文件);加工。 需求规格说明书的主要内容是什么?它的作用是什么?

答:软件需求规格说明(Software Requirement Specification,SRS )是需求工程最终产生的结果,必须用一种统一的方式将它们编写成可视文档,包含了软件的功能需求和非功

能需求。需求规格说明是项目相关人员对要开发的软件系统达成的共识,是进行系统设计、实现、测试和验收的基本依据,也是整个软件开发过程中最重要的文件。软件需求规格说明的主要内容有:

7. 结构化分析方法?结构化分析方法的结果是什么?

答:结构化分析(Structured Analysis,SA )是由美国Yourdon 公司提出的适用于分析典型的数据处理系统的,以结构化的方式进行系统定义的分析方法。这个方法通常与L.Constantine 提出的结构化设计(Structured Design ,SD )方法衔接起来使用,即所谓的SASD 方法,也可称为面向功能的软件开发方法或面向数据流的软件开发方法。Yourdon 方法首先用结构化分析(SA )对软件进行需求分析,然后用结构化设计(SD )方法进行总体设计,最后是结构化编程(Structured Programming,SP )。

第五章面向对象的需求分析

1. 简述对象与类之间的联系与区别。

答:对象(Object )是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。类(Class )是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。具体来说,类由数据和方法集成,它是关于对象性质的描述,包括外部特性和内部实现两个方面。类是具有相同属性和行为的一组相似对象的抽象,在现实世界中并不能真正存在。类好比是一个对象模板,根据需要用它可以产生多个对象(即类的实例) 。因此类所代表的是一个抽象的概念或事物,类是静态概念;在客观世界中实际存在的是类的实例,即对象,对象是动态概念。类是对象的抽象,有了类之后,对象则是类的具体化,是类的实例。

2. 试描述继承性与多态性的作用。

答:继承(Inheritance )是面向对象方法学中的核心概念,它是指从一个类的定义中可以派生出另一个类的定义,被派生出的类(子类)可以自动拥有父类的全部属性和服务。继承简化了人们对现实世界的认识和描述,在定义子类时不必重复定义那些已在父类中定义过的属性和服务,只要说明它是某个父类的子类,并定义自己特有的属性和服务即可。继承机制是组织构造和复用类的一种工具,如果将用面向对象方法开发的类作为可复用构件,那么在开发新系统时可以直接复用这个类,还可以将其作为父类,通过继承

而实现复用。复用减少了程序的代码量和复杂度,提高了软件的质量和可靠性,软件的维护修改也变得更加容易。

多态性(Polymorphism )是指同名的方法或操作在不同类型的对象中有各自相应的实现。

在存在继承关系的一个类层次结构中,不同层次的类可以共享一个操作,但却有各自不同的实现。当一个对象接收到一个消息请求时,它根据其所属的类,动态地选用在该类中定义的操作。多态性机制不但为软件的结构设计提供了灵活性,减少了信息冗余,明显提高了软件的可复用性和可扩充性。

3. 通过看图回答下面的问题。

在图所示的用例图中:

① X1、X2和X3表示用例中的什么?

② 已知UC3是抽象用例,那么X1可通过图中哪些用例与系统进行交互?

③ 图中哪个用例时UC4的可选部分,哪个用例是UC4的必须部分?

答:X1、X2和X3表示用例中的角色(或参与者)。已知UC3是抽象用例,那么X1可通过

图中的UC4、UC1用例与系统进行交互。UC2是UC4的可选部分,UC5是UC4的必须部分。

第六章面向对象的软件设计

1. 说明面向对象的集成测试包含哪些内容。

答:面向对象系统是由对象到子系统、再到系统的集成。通常是松耦合的,系统中没有一个明显的顶层,即面向对象系统没有严格的层次控制结构,相互调用的功能也分散在不同的类中,类通过消息的相互作用申请和提供服务。此外,

面向对象程序具有动态性,

程序的控制流往往无法确定。因此,增量式集成测试不再适用,只能采用基于操作的集成测试。面向对象的集成测试关注系统的结构和内部的相互作用,可以分成两步进行:先进行静态测试,再进行动态测试。

面向对象基于操作的集成测试策略有两种:基于线程的测试和基于使用的测试。

基于线程的测试把相应系统的一个输入或一个事件所需要的那些类集成起来。分别集成并测试每个线程,同时应用回归测试以保证不产生副作用。

基于使用的测试首先测试几乎不使用服务器类的那些类(称为独立类),把独立类都测试完之后,再测试使用独立类的下一个层次的类(称为依赖类)。对依赖类的测试一个层次一个层次地持续进行下去,直至把软件系统构造完为止

2. 举例说明各种程序设计语言的特点及适用范围。

答:以常见的一些编程语言为例:

FORTRAN 语言,它不仅面向科学计算,数据处理能力也极强。适用于科学工程计算 Pascal 语言,具有很强的数据和过程结构化能力,它语言简明,数据类型丰富,程序结构严谨。它是第一个体现结构化编程思想的语言。用于描述结构化算法和科学计算, 操作系统的编写

C 语言:功能强大,支持复杂的数据结构,可大量运用指针,具有丰富灵活的操作运算符及数据处理操作符,它还具有汇编语言的某些特征,使程序运行效率高。可用于许多领域,特别是在操作系统等方面有较大优势。

Coble 语言,它具有极强的数据定义能力,程序说明与硬件环境说明分开、数据描述与算法描述分开。结构严谨层次分明,广泛用于商业数据处理。

SQL:结构化查询语言,用于对数据库进行存取管理。

汇编语言和Ada 语言,主要用于实时处理和编写系统软件。

Prolog 、Lisp 语言。Lisp 是一种函数型语言, 特别适用于组合问题中符号运算和表处理,用于定理证明、树的搜索和其他问题的求解。Prolog 是一种逻辑型语言,它提供了支持知识表示的特性,每一个程序由一组表示事实、规则和推理的句子组成,比较接近与自然语言。这两种语言主要用于人工智能系统开发。

C++、Java 语言, 是面向对象的设计语言,用于面向对象的方开发软件。

3. 选择面向对象程序设计时应考虑哪些因素?

答:纯面向对象程序设计语言着重支持面向对象方法研究和快速原型的实现,而混合型面向对象程序设计语言的目标则是提高运行速度和使传统程序员容易接受面向对象的思想。成熟的面向对象程序设计语言一般都是提供丰富的类库和强有力的开发环境。除此之外,开发人员在选择面向对象程序设计语言时,还应考虑可复用性、类库和开发环境以及一些其他的因素。语言、开发环境和类库这3个因素综合起来,共同决定了可复用性。考虑类库时,不仅应该考虑是否提供了类库,还应考虑库中提供了哪些有价值的类。在选择编程语言时还应考虑的因素有为用户学习面向对象分析、设计和编程技术所能提供的培训服务;在使用面向对象程序设计语言期间能提供的技术支持;能提供给开发人员使用的开发工具、开发平台和发布平台;对机器性能和内存的需求;集成已有软件的容易程度等。

第七章软件测试技术

1. 简述软件测试的步骤。

答:首先要分别完成每个单元(模块)的测试任务,以确保每个模块能正常工作。然后把已经测试过的模块组装起来,进行集成测试。完成集成测试以后,要对开发工作初期制定的确认准则进行检验。完成确认测试以后,为检验它能否与系统的其他部分协调工作,还需要进行系统测试。软件测试步骤如下。

1)制订测试计划。该计划被批准后转向第2)步。

2)设计测试用例。该用例被批准后转向第3)步。

3)如果满足“启动准则”,那么执行测试。

4)撰写测试报告。

5)消除软件缺陷。如果满足“完成准则”,那么正常结束测试。

2. 简述黑盒测试和白盒测试的方法并举例说明。

答:

1)黑盒测试也称功能测试或数据驱动测试。在测试时,把程序看作一个不能打开的黑盒子,它是在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。 黑盒测试技术是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。黑盒测试能够发现的错误类型包括:功能不对或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止错误等。黑盒测试技术主要包括等价类划分、边界值分析、因果图、错误推测等方法。

2)白盒测试也称结构测试或逻辑驱动测试,它是在已知程序内部结构的情况下设计测试用例的测试方法。在使用白盒测试方法时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,对所有逻辑路径进行测试,得出测试数据。白盒测试的主要技术有逻辑驱动、路径测试等,主要用于软件验证、检验语法错误、编译错误、性能问题、逻辑问题、判定条件问题和编程规范等。

3. 软件测试分为哪几个阶段?每个阶段分别测试哪些内容?

答:根据软件开发流程,软件测试工作可以分为单元测试、集成测试、系统测试和验收测试。单元测试是对软件中的基本组成单位进行的测试,验证每个模块是否满足系统设计说明书的要求。集成测试是将已测试过的模块组合成子系统,重点测试各模块之间接口和联系。系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。验收测试是根据需求规格说明书中定义的全部功能和性能要求,确认软件是否达到了要求。

第八章软件维护技术

1. 为什么说软件维护是不可避免的?

答:为了保证软件在运行期间正常运行,延长软件的使用寿命,发挥良好的社会效益和经济效益,软件维护必不可少

2. 软件可维护性与哪些因素有关?采用哪些因素能提高软件可维护性?

答:决定软件可维护性的质量属性主要有以下几个方面。

可理解性。可理解性是指人们通过阅读源代码和相关文档,了解程序功能、结构、接口和内部过程的容易程度。一个可理解的程序应该具备模块化、结构化、风格一致化(代码风格与设计风格一致)、易识别化(使用有意义的数据名和过程名),以及文档完整化等一些特性。

可测试性。可测试性是指论证程序正确性的容易程度。程序复杂度越低,证明其正确性就越容易。而且测试用例设计得合适与否,取决于对程序的理解程度。因此,一个可测试的程序应当是可理解的、可靠的和简单的。

可修改性。可修改性是指程序容易修改的程度。一个可修改的程序应当是可理解的、通用的、灵活的和简单的。其中通用性是指程序适用于各种功能变化而无需修改。灵活性

3.

4.

5.

6. 是指能够容易地对程序进行修改。 试说明软件文档与软件可维护性的关系。 答:由于文档是对软件的总目标、程序各组成部分之间的关系、程序设计策略以及程序实现过程的历史数据等的说明和补充,因此,文档对提高程序的可理解性有着重要作用。即使是一个十分简单的程序,要想高效率地维护它就需要编制文档来解释其目的及任务。 对于程序维护人员来说,要想对程序编制人员的意图重新改造,并对今后变化的可能性进行估计,也必须建立完整的维护文档。 简述软件维护工作过程。为什么说软件维护过程是一个简单的软件开发过程? 答:在软件维护阶段,变更、完善软件的活动包括:提出维护申请;论证维护申请;制定维护方案;进行维护活动;建立维护文档;评价维护结果。由此可见,完成一项软件维护任务,又好似重复了软件开发的全过程。 什么是软件维护的副作用?如何防止软件维护的副作用? 答:维护副作用是指由于修改而导致的错误或其他多余动作的发生。3类主要副作用: 修改代码的副作用 一般可在回归测试过程中对修改代码的副作用造成的软件故障进行查找和改正。 修改数据的副作用 完善的设计文档可以限制修改数据的副作用。这种文档描述了数据结构,并提供了一种把数据元素、记录、文件和其他结构与软件模块联系起来的交叉对照表。 修改文档的副作用 在软件再次交付使用之前,对整个软件配置进行评审将大大减少修改文档的副作用。 如何保证和提高软件维护的质量和效率?

答提高软件的可维护性,可以从两方面来考虑:一方面,在软件开发期的各个阶段,各项开发活动进行的同时,应该时时处处努力提高软件的可维护性,保证软件产品在发布之日具有高水准的可维护性;另一方面,在软件维护期进行维护活动的同时,也要兼顾提高软件的可维护性,更不能对可维护性产生负面影响。具体的提高软件可维护性的技术途径主要有以下4个方面:建立完整的文档; 明确质量标准; 采用易于维护的技术和工具; 加强可维护性评审。

UML 图解

1. 一个公司可以雇佣多个人,某个人在同一时刻只能为一家公司服务。每个公司只有一个总经理,总经理下有多个部门经理管理公司的雇员,公司的雇员只归一个经理管理。请为上面描述的关系建立类模型,注意捕捉类之间的关联并标明类之间的多重性。

2. 在一个习题库下,各科老师可以在系统中编写习题及标准答案,并将编写的习题和答案加入题库中,或者从题库中选取一组习题组成向学生布置的作业,并在适当的时间公布答案。学生可以在系统中完成作业,也可以从题库中选择更多的习题练习。老师可以通过系统检查学生的作业,学生可以在老师公布答案后对自己的练习进行核对。阅读这一情境,分析出该系统所包括的实体类并适当添加属性,绘制出分析类图。

3. 某银行系统的取款用例执行顺序如下,工作人员输冬取款单,输入后,银行系统请求银行数据库匹配用户,进行身份验证,验证通过后,数据库注销相应存款,返回注销完成信息,银行系统在存折上打印取款记录。请根据以上信息绘制顺序图。

4. 在某一学生指纹考勤系统中,有一个用例名为“上课登记”。此用例允许学生在上课前使用系统识别自己的指纹信息进而识别自己的身份,同时系统可以将登录信息存储在数据库中。 系统生成一个关于该登记学生及当前日期、时间的新记录,并将该记录保存到数据库中。请根据以上描述绘制“上课登记”用例的顺序图。

5. 某银行系统存款处理过程如下。

①系统将存款单上的存款金额分别记录在存折和账目文件中;

②将现金存人现金库;

③最后将打印后的存折还给储户;

请分析此交互过程所涉及的系统对象,并结合存款处理流程绘制协作图。

6. 医院拟引入一款患者监护系统。基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等) ,定时记录病人情况,以形成患者日志。当某个病人的生理信号超出医生规定的安全范围时,向值班护士发出警告信息。此外,护士在需要时还可以要求系统打印出某个指定病人的病情报告。请根据以上描述,绘制患者监护系统的状态图。

7. 当手机开机时,它处于空闲状态,当用户使用电话呼叫某人时,收集进入拨号状态。如果呼叫成功,即电话接通,手机就处于通话状态;如果呼叫不成功,如对方线路有问题或关机,则拒绝接听。这时手机停止呼叫,重新进入空闲状态,手机进入空闲状态下被呼叫,手机进入响铃状态(ringing);如果用户接听电话(pick),手机处于通话状态;如果用户未做出任何反应,可能他没有听见铃声,手机一直处于响铃状态,如果用户拒绝来电,手机回到空闲状态。请按以上描述绘制出使用手机的状态图。

8. 某学生选课系统的查询课程用例如下,学生首先进入选课系统,然后输入要查询的课程名,系统验证输入的课程名是否存在,若存在,跳转到对应的显示课程信息的页面;若不存在,则给出提示信息,返回选课页面。请根据以上描述绘制活动图。

9. 在机票预订系统中,使用系统的用户必须先注册一个自己的账号,其过程为输入注册信息、验证信息完整、提交信息、系统进行验证(是否重名等) ,如果验证均通过,则注册成功,否则失败。请根据以上描述,对用户注册用例画出活动图。

10. 某个自助售货机系统的用户购买汽水的交互过程如下。

①用户投币,系统接收到硬币后显示出机器中的商品余量信息。 ②用户选择其中一种汽水,系统处理后将该种汽水释放。 请绘制此交互过程的协作图。


相关内容

  • 大学课后习题答案
  • [大学四年100万份资料大集合] http://www.3che.com/forum.php?mod=viewthread&tid=7083&fromuid=582866 新视野大学英语课后习题答案1-4册全集 http://www.3che.com/forum.php?mod=vi ...

  • 大学课本课后习题答案
  • 注册可用 公共课程 http://www.10xiao.com/forum-6-1.html 新视野大学英语读写教程第四册答案 http://www.10xiao.com/thread-7-1-1.html 新视野大学英语读写教程第三册答案 http://www.10xiao.com/thread- ...

  • 超多大学课后习题答案与大家分享啦~~
  • 超多大学课后习题答案与大家分享啦~~.txt男人应该感谢20多岁陪在自己身边的女人.因为20岁是男人人生的最低谷,没钱,没事业:而20岁,却是女人一生中最灿烂的季节.只要锄头舞得好,哪有墙角挖不到?2500份课后答案,很值得收藏,这里只介绍了一部分. 还有很多,可以去课后答案网(http://bbs ...

  • 2015年英语类3D电子书(题库)
  • 2015年英语类3D电子书(题库)共428种 英语类考试 大学英语考试 大学英语四级               1.[圣才视频]大学英语四级考试真题解析班(网授)[免费下载] 8.[3D题库]2015年12月大学英语四级题库[历年真题+章节题库+模拟试题][免费下载] ...

  • 新闻发布制度与新闻发言人教学大纲
  • <新闻发布制度与新闻发言人>课程教学大纲 课程编号 课程类别:选修课 授课对象:本科生 开课学期:第六学期 学 分:2分 主讲教师:周建明 指定教材:刘建明<新闻发布概论>,清华大学出版社,2006年1月 考核方式:考试(开卷) 教学目的:通过本课程学习,使学生全面了解新闻发 ...

  • 扬州大学研究生招生专业目录
  • 五.扬州大学2012年硕士研究生招生学科.领域主要参考书目 (一)学术型硕士研究生 001社会发展学院 010101马克思主义哲学: <马克思主义哲学原理>(上.下)肖前等主编,中国人民大学出版社:<当代中国马克思主义哲学理论问题研究>陈晓明等著,江苏人民出版社:<西方 ...

  • 金融联考一些基础性参考教材
  • 联考一些基础性参考教材 经济学原理: <西方经济学>(第三版),中国人民大学出版社,2005,高鸿业主编 <西方经济学简明教程>(第四版)尹伯成 上海人民出版社价格:24元 <西方经济学学习与教学手册>,中国人民大学出版社,2005,高鸿业主编 <现代西方经 ...

  • 2017苏州大学考研资料与专业综合解析
  • 2017苏州大学考研资料与专业综合解析 专业名称.代码:世界经济[020105] 所属门类代码.名称:经济学[02] 所属一级学科代码.名称:理论经济学[0201] 所属学院:东吴商学院 世界经济学专业介绍: 世界经济学是理论经济学一级学科下属的二级学科之一,世界经济学是一门前沿性和综合性很强的理论 ...

  • 大学英语4课后习题答案
  • Unit 4 Section A. The Telecommunications Revolution <读写教程 IV>: Ex. II, p. 95 1. The living standards in the developing world will be greatly imp ...