《软件工程案例教程》李军国主编习题答案 下载本文

附录A 习题答案1

第1章习题答案

一、判断题

题号 1 答案 Y 2 Y 3 Y 4 Y 5 N 6 Y 7 Y 8 N 9 N 10 11 12 13 N N Y Y 二、填空题

题号 1 2 3 4 5 6 7 8 9 A 方法 程序 程序开发环境 汇编语言 汇编语言 结构式 需求定义 系统界面原型 需求分析 B 工具 数据 需求分析 高级语言 高级语言 模块化 设计 运行用户界面原型 概要设计 C 过程 文档 概要设计 使用和维护 同意什么和不同意什么 详细设计 D 详细设计 自外向内 三、简答题

1. 软件的特点:

① 软件具有抽象性。 ② 软件与硬件的生产方式不同。 ③ 软件与硬件的维护方式不同。 ④ 软件具有复杂的逻辑性。 ⑤ 软件的成本较高。

⑥ 软件的使用和社会因素有关。 2. 软件危机产生的原因:

①用户需求不明确。 ②缺乏正确的理论指导。 ③软件开发规模越来越大。 ④软件开发复杂度越来越高。 3. 软件危机的主要表现:

① 软件开发进度难以预测。 ② 软件开发成本难以控制。 ③ 用户对产品功能难以满足。 ④ 软件产品质量无法保证。 ⑤ 软件产品难以维护。

⑥ 软件缺少适当的文档资料。 4. 软件工程学的基本原则有哪些:

① 抽象。 ② 信息隐蔽。 ③ 模块化。 ④ 局部化。

附录A 习题答案2

⑤ 确定性。 ⑥ 一致性。 ⑦ 完备性。 ⑧ 可验证性。

5 什么是软件的生命周期?

答案:软件与任何一个事物一样,有它的孕育、诞生、成长、成熟、衰亡的生存过程。这就是软件的生存周期。

6 软件工程过程有哪几个基本过程活动?试说明之。 答案:软件工程过程的基本过程活动有4步:

① 软件规格说明(需求定义)。规定软件的功能及其运行的限制; ② 软件设计与开发(设计开发)。产生满足规格说明的软件; ③ 软件确认(测试)。确认软件能够完成客户提出的要求; ④ 软件演进(维护)。为满足客户的变更要求,软件必须在使用的过程中演进。

四、综合题

1. 详细说明软件生命周期分哪几个阶段?

答案:软件生命周期主要分为6个阶段:软件项目计划、软件需求分析和定义、软件设计、程序编码、软件测试,以及运行维护。

(1) 软件项目计划 :在这一步要确定软件工作范围,进行软件风险分析,预计软

件开发所需要的资源,建立成本与进度的估算。根据有关成本与进度的限制分析项目的可行性。

(2) 软件需求分析和定义 :在这一步详细定义分配给软件的系统元素。可以用以

下两种方式中的一种对需求进行分析和定义。一种是正式的信息域分析,可用于建立信息流和信息结构的模型,然后逐渐扩充这些模型成为软件的规格说明。另一种是软件原型化方法,即建立软件原型,并由用户进行评价,从而确定软件需求。

(3) 软件设计 :软件的设计过程分两步走。第一步进行概要设计,以结构设计和

数据设计开始,建立程序的模块结构,定义接口并建立数据结构。此外,要使用一些设计准则来判断软件的质量。第二步做详细设计,考虑设计每一个模块部件的过程描述。经过评审后,把每一个加细的过程性描述加到设计规格说明中去。

(4) 程序编码 :在设计完成之后,用一种适当的程序设计语言或CASE工具生成源

程序。应当就风格及清晰性对代码进行评审,而且反过来应能直接追溯到详细设计描述。

(5) 软件测试 :单元测试检查每一单独的模块部件的功能和性能。组装测试提供

了构造软件模块结构的手段,同时测试其功能和接口。确认测试检查所有的需求是否都得到满足。在每一个测试步骤之后,要进行调试,以诊断和纠正软件的故障。 (6) 软件维护 :为改正错误,适应环境变化及功能增强而进行的一系列修改活动。

与软件维护相关联的那些任务依赖于所要实施的维护的类型。

2. 试论述瀑布模型软件开发方法的基本过程。

答案:瀑布模型规定了各项软件工程活动,包括:制定软件项目计划,进行需求分析和定义,软件设计,程序编码,测试及运行维护。并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。然而软件开发的实践表明,上述各

附录A 习题答案3

项活动之间并非完全是自上而下,呈线性图式。实际情况是,每项开发活动均应具有以下特征:

(1) 从上一项活动接受本项活动的工作对象,做为输入; (2) 利用这一输入实施本项活动应完成的内容;

(3) 给出本项活动的工作成果,做为输出传给下一项活动; (4) 对本项活动实施的工作进行评审。若其工作得到确认,则继续进行下一项

活动,否则返回前项,甚至更前项的活动进行返工。

附录A 习题答案4

第2章习题答案

一、判断题

题号 1 答案 N 2 Y 3 N 4 N 5 N 6 7 8 9 10 11 12 13 Y Y Y Y Y Y N Y 二、选择题

题号 1 答案 C 2 D 3 A 4 C 5 C 6 C 7 A 8 9 B D 三、填空题

题号 1 2 3 4 5 A 多对一 业务模型 访谈 加工 名称 B 一对多 功能模型 问卷调查 数据的原点或终点 别名或编号 C 性能模型 情景分析 数据流 分类 D 接口模型 构造原型 .数据存储文件 描述 E 何处使用 四、简答题

1 可行性研究主要做4个方面的研究:

① 经济可行性:进行成本∕效益分析。从经济角度判断系统开发是否“合算”。 ② 技术可行性:进行技术风险评价。从开发者的技术实力、以往工作基础、问题的复杂性等出发,判断系统开发在时间、费用等限制条件下成功的可能性。 ③ 法律可行性:确定系统开发可能导致的任何侵权、妨碍和责任。

④ 方案的选择:评价系统或产品开发的几个可能的候选方案。最后给出结论意见。2 需求获取难的原因是:

① 用户需求具有动态性(不稳定性)。 ② 用户需求具有模糊性(不准确性)。 ③ 对需求达成一致的艰难性。

④ 管理体制、机构设置处在变革中。 ⑤ 软件书籍没有将需求分析讲清楚。

3. 需求分析的原则:

① 解决逻辑问题:需求分析是对问题的识别和说明,要回答“做什么”,而不是“怎么做”。 ② 以运行环境为基础:需求分析工作应以具体的运行环境为基础,实事求是。 ③ 用户参与的原则:需求分析工作是系统分析人员同用户不断交互的过程。 ④ 构造高质量的需求规格说明:需求规格说明是需求分析工作重要的完成标志。 4. 需求分析的任务有:

① 画出目标系统的组织机构模型。 ② 画出目标系统业务操作流程图。 ③ 画出目标系统的数据流图。 ④ 列出目标系统的功能点列表,即功能模型。

附录A 习题答案5

⑤ ⑥ ⑦ ⑧ ⑨

列出系统的性能点列表,即性能模型。 列出目标系统的接口列表,即接口模型。 确定目标系统的运行环境,即环境模型。 目标系统的界面约定,即界面模型。

分析与评估开发工期、费用、进度、风险等。

5 数据流图的作用:

数据流图可以用来抽象地表示系统或软件。它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。 6 数据词典的作用:

分析模型中包含了对数据对象、功能和控制的表示。在每一种表示中,数据对象和控制项都扮演一定的角色。为表示每个数据对象和控制项的特性,建立了数据词典。数据词典精确地、严格地定义了每一个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。

附录A 习题答案6

第3章习题答案

一、判断题

题号 1 答案 N 2 N 3 N 4 Y 5 Y 6 7 8 9 10 11 12 13 14 Y Y Y Y Y N Y Y Y 15 Y 16 Y 二、选择题

题号 1 答案 B 2 C 3 D 4 A 5 D 6 A 7 B 8 C 三、填空题

题号 1 2 3 4 5 6 7 8 9 10 11 12 A SD方法 耦合 一个 DDL 基本表 原子性 SA 图示 PDL 防卫性 客户层 高内聚 B Jackson方法 内聚 数据型 DML 代码表 原始性 SP 语言 人 一致性 应用层 低耦合 C OOD方法 标准调用 DCL 中间表 演绎性 表格 冗余性 数据层 作用范围 D 少 临时表 稳定性 控制范围 四、简答题

1. 模块的基本属性:

① 功能:描述该模块做什么? ② 逻辑:描述模块内部怎么做? ③ 状态:模块使用时的环境和条件。 ④ 接口:指模块的输入与输出。

2. 软件设计的具体任务:

① 制定规范 ② 结构设计

③ 处理方式结构设计 ④ 数据结构及数据库设计 ⑤ 可靠性设计(质量设计) ⑥ 编写软件设计文档 ⑦ 设计审查和复审 ⑧ 详细设计

3. 模块化的特征:

① 抽象:用层次的方式构造和分析复杂系统。

附录A 习题答案7

② 逐步求精:帮助开发人员把精力集中在与当前开发阶段最相关的那些问题上。 ③ 信息隐蔽:如果一个模块内包含的信息(过程和数据) 不允许外部的模块访问的

话,其它模块不能对其访问。

④ 局部化:把一些关系密切的软件元素物理地放得彼此靠近。

4. 软件设计优化的准则:

① 划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性。模块划分的准则:“将相关的各部分放在一起,无关的东西不要放在一起。” ② 模块的大小要适中。

③ 模块的接口要简单、清晰、含义明确,便于理解,易于实现、易于测试和维护。 ④ 一个模块的作用范围应在其控制范围之内,且判定所在的模块,应与受其影响的模块在层次上尽量靠近。

⑤ 软件结构的深度、宽度、扇入、扇出应适当。

⑥ 力求设计单入口和单出口的模块,避免“病态连接”,以防止内容耦合。 ⑦ 设计功能可预测模块的划分,应防止功能过分局限。

5. 结构化设计的优点:

① 减少设计复杂性。将大化小,使复杂问题简单化。 ② 结构独立。将程序划分成多个相对独立的模块。 ③ 模块功能单一化,可使软件设计获得最大的益处。 ④ 易于进行软件修改。 ⑤ 易于开发和维护。

⑥ 加强了代码的可重用性。

五、综合题

1. ③、⑤、④、②、⑥、⑦、①

2. ③、⑥、④、⑦、②、⑤、①

附录A 习题答案8

第4章习题答案

一、填空题

题号 1 2 3 4 5 6 A 类 子类 封装性 对象模型 分析模型 视图 B 对象 操作 多态 动态模型 设计模型 图 C 功能模型 测试模型 通用机制 D 二、简答题

1. 面向对象是:Coad和 Yourdon给出的定义:“面向对象(Object Oriented,OO)=对象

(Object)+类(Classification)+继承(Inheritance)+通信(Communication with Messages)”。

2. 面向对象基本特征是:面向对象技术的基本特征主要是抽象性、封装性、继承性和多态

性。

3. 软件开发过程指:软件开发过程就是将软件系统所涉及到的应用领域和业务范围(现实

世界)的问题空间和用于解决某些问题的软件系统的解空间之间的映射。 4. 传统软件开发方法存在的问题:

(1) 问题空间不能直接映射到解空间 (2) 软件复用程度低

(3) 分析不能直接过渡到设计 (4) 软件可维护性差 (5) 软件不满足用户需要

5. 面向对象开发方法的特点:

(1) 对软件开发过程所有阶段进行综合考虑。 (2) 软件生存期各阶段所使用的方法、技术具有高度的连续性,用符合人类认识

世界的思维方式来分析、解决问题。 (3) 增强系统稳定性 (4) 具有良好的可复用性

6. 统一建模语言:UML是具有指定的建模元素(图式符号),严格的语法(构图规则),明

确的语义(逻辑含义)的建模语言,是面向对象技术领域内占主导地位的标准建模语言。 7. Coda/Yourdon方法的面向对象设计模型:Coda/Yourdon方法的OOD模型是在OOA模型

5个层次(主题层、类与对象层、结构层、属性层和服务层)基础上,建立4个组元的设计模型:问题域组元(PDC)、人机交互组元(HIC)、任务管理组元(TMC)和数据管理组元(DMC)。 8. 简述UML视图结构:

(1)用例视图:描述系统的外部特性、系统功能等。

附录A 习题答案9

(2)逻辑视图:描述系统设计特征。

(3)进程视图:表示系统内部的控制机制。 (4)配置视图:描述系统的物理配置特征。

(5)实现视图:表示系统的实现特征,常用构件图表示。

三、综合题

1. 类、属性、操作、继承、多态、封装及抽象类的概念:(举例略) 1) 类,又称对象类(Object Class),是一组具有相同属性和相同操作的对象的集合。 2) 类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。 3) 类具有操作,它是对象的行为的抽象,操作实现的过程称为方法。

4) 继承是类间的基本关系,它是基于层次关系的父类和子类之间共享数据和操作的一种机制。

5) 多态是指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。 6) 封装是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。

7) 抽象类是没有实例的类,它把一些类组织起来,提供一些公共的行为,但并不需要使用这个类的实例,而仅使用其子类的实例。 2. 面向对象开发方法及每个方法的特点: (1)Booch方法

Booch方法描述了面向对象的软件开发方法的基础问题,指出面向对象开发是一种根本不同于传统的功能分解的设计方法。Booch方法的开发模型包括静态模型和动态模型,Booch方法偏向于系统的静态描述,对动态描述支持较少。 (2)Coda/Yourdon方法

在Coda/Yourdon方法中,对于一个复杂问题建立问题域的分析模型,构造和评审OOA概念模型的顺序由5个层次组成,OOD模型是在OOA模型5个层次基础上,建立4个组元的设计模型。该方法简单、易学。 (3)OMT方法

OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型。从3个不同而又相关的角度建立了三类模型,三类模型描述的角度不同,却又相互联系。 (4)OOSE方法

OOSE的开发活动主要分为三类:分析、构造和测试。OOSE将面向对象的思想应用于软件工程中,建立五个模型。OOSE方法的最大特点是面向用例,建立了Use Case 模型。OOSE方法比较适合支持商业工程和需求分析。

附录A 习题答案10

第5章习题答案

一、判断题

题号 1 答案 N 2 Y 3 Y 4 Y 5 Y 6 7 8 9 10 11 12 13 14 Y Y Y Y Y Y Y Y Y 15 Y 二、填空题

题号 1 2 3 4 5 6 7 A 对象层 主题图 流程图 发现潜在对象 初步确定 分析 选择 B 关系层 交互图 IPO图 筛选对象 筛选 选择 精炼 C 伪码 为对象分类 完善 构造 D 三、简答题

1. 面向对象分析:

面向对象分析就是运用面向对象的方法进行需求分析,其主要任务是分析和理解问题域,找出相应的描述问题域和系统责任所需的类及对象,分析它们的内部构成好外部关系,正确地抽象为规范的对象,定义其内部结构和外部消息传递关系,建立问题域精确模型的过程。

2. 面向对象分析的模型的构成:

(1) 基本模型:基本模型是一个类图。构成类图的元素所表达的模型信息,分为

三个层次:对象层、特征层和关系层。 (2) 补充模型:补充模型有主题图和交互图。 (3) 详细说明

3. 面向对象分析的过程:

(1) 获取客户对系统的需求 (2) 标识类和对象 (3) 定义类的结构和层次 (4) 建造对象-关系模型 (5) 建立对象-行为模型

4. 确定服务:

(1) 确定访问对象属性的操作 (2) 来自事件驱动的操作

附录A 习题答案11

(3) 处理对应的操作 (4) 消除冗余操作

5. 动态模型:

对于一个系统来说,功能模型指明了系统应该“做什么”,而动态模型则明确规定了“什么时候做”。即在何种状态下、接受了什么事件的触发,来确定对象的可能事件的顺序。

6. 准备脚本:

在建立动态模型的过程中,脚本是指在某一执行期间内系统中的对象(或其他外部设备)与目标系统之间发生一个或多个典型的互换信息时产生的事件,所互换的信息值就是该事件的参数,对于各事件,应确定触发事件的动作对象和该事件的参数。 7. 准备事件跟踪图:

事件跟踪图能形象、清晰地表示事件序列以及事件与对象的关系。在事件跟踪图中,一条竖线代表一个类和对象,每个事件用一条水平的箭头线表示,箭头方向从事件的发送对象指向接受对象。事件按照先后顺序排列,时间从上向下递增。 8. 确定基本系统模型图:

基本系统模型是用来确定系统的边界和输入/输出数据流的,表明一个计算如何从输入值得到输出值,表明值之间的依赖关系及相关的功能,它不考虑计算的次序。 9. 面向对象分析的目的:

面向对象分析的目的是对客观世界的系统进行建模,是定义所有与待解决问题相关的类。完成对所求解问题的分析,确定系统“作什么”,并建立系统的模型。 10. 面向对象分析的基本任务:

面向对象分析的基本任务是运用面向对象的方法,软件工程师和用户必须充分沟通,以了解基本的用户需求,对问题域和系统责任进行分析和理解。 11. 为建立分析模型,要运用的基本原则:

(1) 建立信息域模型; (2) 描述功能; (3) 表达行为; (4) 划分功能、数据、行为模型,揭示更多的细节; (5) 用早期的模型描述问题的实质,用后期的模型给出实现的细节。

12. 建立对象-行为模型的步骤:

(1) 评估所有的用例,完全理解系统中交互的序列。 (2) 标识驱动交互序列的事件,理解这些事件如何和特定的对象相关联。 (3) 为每个用例创建事件轨迹(event trace)。 (4) 为系统建造状态机图。 (5) 复审对象—行为模型,以验证准确性和一致性。

四、综合题

1.完成实例《图书管理系统》面向对象的分析过程,包括:静态模型、动态模型和功能模型。 系统需求:

在图书馆管理系统中,要为每个借阅者建立一个账户,并给借阅者发放借阅卡(借阅卡号,借阅者名),账户存储借阅者的个人信息、借阅信息以及预定信息。

持有借阅卡的借阅者可以借阅书刊、返还书刊、查询书刊信息、预定书刊并取消预定,但这些操作都是通过图书管理员进行的,也即借阅者不直接于系统交互,而是图书

附录A 习题答案12

管理员充当借阅者的代理与系统交互。

在借阅书刊时,需要输入所借阅的书刊名、书刊的ISBN/ISSN号,然后输入借阅者的图书卡号和借阅者名,完成后提交所填表格,系统验证借阅者所借阅的书刊是否存在,若存在,则借阅者可借出书刊,建立并在系统中存储借阅记录。

借阅者还可预定该书刊,一旦借阅者预定的书刊可以获得,就将书刊直接寄给预定人。另外,不考虑书刊的最长借阅期限,假设借阅者可以无限期地保存所借阅的书刊。 答:分析模型

附录A 习题答案13

第6章习题答案

一、判断题

题号 1 答案 Y 2 Y 二、填空题

题号 1 2 3 4 5 6 A 知识 问题域 实例 模块化 限定交互时间 B 方法和标准 人机交互 继承 信息隐藏 指定窗口和报表 C 软件成分 任务管理 多态 可复用 设计命令层次 D 数据管理 简洁化 系统设计 对象设计 三、简答题

1. 优化对象设计:

(1)确定优先级 (2)提高效率 (3)调整继承关系 2. 设计内部结构:

(1)确定遗漏的属性和操作 (2)指定类型,声明可见性 3. 面向对象启发规则是:

① 设计结果应该清晰易懂

② 一般-特殊结构的深度应适当 ③ 设计简单类 ④ 使用简单的协议 ⑤ 使用简单的操作 ⑥ 把设计变动减至最小 4. 面向对象设计:

面向对象设计是面向对象方法在软件设计阶段应用与扩展的结果,就是根据在问题域中已建立的分析模型,运用面向对象技术进行系统软件设计,并且补充实现的细节部分,如人机界面、数据存储、任务管理等,形成符合成本和质量要求的、抽象的系统实现方案,在求解域中建立设计模型。 5. 设计任务管理子系统:

任务管理的设计包括:确定要执行的任务并识别它的特征、确定任务的优先级、创建协调任务来协调所有其他任务、为每个任务设计对象,并定义它们之间的关系。

附录A 习题答案14

6. 设计数据管理子系统:

数据管理子系统也称数据管理部分。数据存储管理是建立在某种数据存储管理系统之上,提供了数据在数据管理系统中存储和检索对象的基本结构,是系统存储或检索对象的基本设施。 7. 对全局资源管理:

全局资源包括物理资源(磁盘驱动器、处理器、通信线路)或逻辑资源(数据库、对象)。不但有访问权限的问题,还有访问冲突的问题。所以,应该标识全局资源,并制定访问它们的策略。 8. 选择控制流机制:

分析模型中所有交互行为都表示为对象之间的事件。系统设计必须从多种方法中选择某种方法来实现软件的控制。 9. 设计边界条件:

设计中的大部分工作都与系统稳定的状态行为有关。但必须考虑边界条件:系统如何启动、初始化、关闭以及故障处理。 10. 评审:

分析模型与设计模型映射,每个需求和每个系统设计问题都提到了,模型不包括任何冲突,能够实现,由非系统设计人员能够看懂模型。 11. 对象设计:

系统分析确定了问题域对象,以及它们之间的关系、相关的属性、操作。系统设计确定了子系统和大多数重要的求解域对象。 12. 设计关联:

根据应用系统中的使用方式来确定实现关联的策略。可以选定一个统一实现所有关联的全局性的策略,或者对不同的关联选择不同的实现策略。 13. 设计接口:

接口提供了一种方法,把对象基于操作的功能说明与具体实现区分开来,使得任何依赖和使用接口的客户不必依赖于接口的具体实现,有利于接口实现的替换。 14. 设计类中服务:

设计类中的服务是面向对象设计的一项重要内容。需要综合考虑对象模型、动态模型和功能模型,才能正确确定类中应有的服务。 15. 面向对象设计中存在下述3种内聚形式:

① 服务内聚:一个服务应该完成一个且仅完成一个任务。

② 类内聚: 设计类的原则是,一个类应该只有一个功能,它的属性和服务应该是高内聚的。

③ 层内聚:又称一般-特殊内聚。

16. 客户/服务器(Client-service)交互方式和平等伙伴(Peer-to-peer)交互方式:

① 客户/服务器(Client-service)交互方式:在客户/服务器关系中,作为“客户”的子系统调用作为“服务器”的子系统,执行某些服务后并返回结果。

② 平等伙伴(Peer-to-peer)交互方式:在该交互方式中,每个子系统都可能调用其他子系统,因此,每个子系统都必须了解其他子系统的接口,子系统间必须相互了解接口。

四、综合题

1. 分析模型与设计模型的区别:

附录A 习题答案15

分析模型 概念模型,回避了实现问题; 对设计是通用的; 对类型有3种构造型; 不太形式化; 开发费用较低; 层数少; 勾画系统的设计轮廓; 主要通过研讨会等方式创建; 可能不需要在整个生命周期内都做维护; 设计模型 物理模型,是实现蓝图; 针对特定的实现; 对类型有任意数量的构造型(依赖于实现语言); 比较形式化; 开发费用较高; 层数多; 进行系统设计; 设计模型和实现模型需双向开发; 在整个生命周期内都应该维护

2. 文件管理系统、关系数据库管理系统和面向对象数据库管理系统三种数据存储管理模式的优缺点:

(1)文件管理系统

A. 主要优点:

a) 使用它长期保存数据具有成本低和简单等特点 b) 数据按字节流存储,适合于存储大容量数据。

B. 主要缺点:

a) 文件操作的级别低,操作繁琐,实现比较困难,为提供适当的抽象级

别还必须编写额外的代码。

b) 文件管理系统是操作系统的一个组成部分,不同操作系统的文件管理

系统往往有明显差异。

(2)关系数据库管理系统

A. 主要优点:

a) 提供了各种最基本的数据管理功能。 b) 为多种应用提供了一致的接口。 c) 支持标准化的语言。

B. 主要缺点:

a) 运行开销大。

b) 不能满足高级应用的需求。 c) 与程序设计语言的连接不自然。

(3)面向对象数据库管理系统

A. 在关系数据库的基础上,将对象和关系作为数据储存,加强了一些操作功能。 B. 面向对象程序设计语言中扩充了数据库的功能。

附录A 习题答案16

C. 从面向对象方法本身出发来设计数据库。 D. 查询比关系数据库慢。

3. 实例《图书管理系统》面向对象的设计过程。 系统需求:

在图书馆管理系统中,要为每个借阅者建立一个账户,并给借阅者发放借阅卡(借阅卡号,借阅者名),账户存储借阅者的个人信息、借阅信息以及预定信息。

持有借阅卡的借阅者可以借阅书刊、返还书刊、查询书刊信息、预定书刊并取消预定,但这些操作都是通过图书管理员进行的,也即借阅者不直接于系统交互,而是图书管理员充当借阅者的代理与系统交互。

在借阅书刊时,需要输入所借阅的书刊名、书刊的ISBN/ISSN号,然后输入借阅者的图书卡号和借阅者名,完成后提交所填表格,系统验证借阅者所借阅的书刊是否存在,若存在,则借阅者可借出书刊,建立并在系统中存储借阅记录。

借阅者还可预定该书刊,一旦借阅者预定的书刊可以获得,就将书刊直接寄给预定人。另外,不考虑书刊的最长借阅期限,假设借阅者可以无限期地保存所借阅的书刊。 设计模型:

附录A 习题答案17

第7章习题答案

一、判断题

题号 1 答案 Y 2 Y 二、选择题

题号 1 答案 D 三、填空题

题号 1 2 3 4 A 程序运行时间 代码行度量法 文档化 自顶向下 B 存储器效率 McCabe环形复杂性度量 规范化 单入口单出口 C 输入/输出效率 Halstead复杂行度量 结构化 D 可视化 四、简答题

1. 简述程序设计语言的三种类型及特点?

机器语言,汇编语言:依赖于机器,面向机器 高级语言:独立于机器,面向过程或面向对象

面向问题语言:独立于机器,非过程式语言(4GL)

1. 程序设计语言基本成分是什么?

答:基本成份可归纳为四种:数据成分、运算成分、控制成分、传输成分。 ① 数据成分:指明该语言能接受的数据,用来描述程序中的数据。如各种类型的变量、数组、指针、记录等。 ② 运算成分:它指明该语言允许执行的运算,用来描述程序中所需进行的运算。如 + 、- 、* 、/ 等。 ③ 控制成分:它指明该语言允许的控制结构,人们可利用这些控制成分来构造程序中的控制逻辑。 ④ 传输成分:它指明该语言允许的数据传输方式,在程序中可用它进行数据传输。 2. 良好的面向对象程序设计风格有哪些准则?

既包括传统的程序设计风格准则,也包括为适应面向对象方法所特有的概念(例如,继承性)而必须遵循的一些新准则:提高可重用性、提高可扩充性和提高健壮性。

五、综合题

1. 如何选择适合项目的面向对象程序设计语言

开发人员在考虑面向对象语言的选择时,除了语言自身特点外也应考虑以下一些实际因素:

(1) 将来能否占主导地位 (2) 可重用性

(3) 类库和开发环境

附录A 习题答案18

(4) 其他因素:对用户学习面向对象分析、设计和编码技术所能提供的培训服务水

平;在使用面向对象语言时所能提供的技术支持资源;能提供给开发人员使用的开发工具、平台和发布平台,对及其性能和内存的需求,集成已有软件的方便程度等等。

2. 请分别画出顺序结构、选择结构、循环结构的结构示意图

真AP假P真假BABA顺序结构条件选择结构while循环结构

3. 考虑提高程序效率,必须明确的三条原则是?

程序的效率是指程序的执行速度及程序所需占用的内存的存储空间。程序编码是最后提高运行速度和节省存储的机会,因此在此阶段不能不考虑程序的效率。在讨论提高效率的要求,应该明确三条原则:

① 效率是一个性能要求,目标应在需求分析阶段给出。

② 追求效率要建立在不损害程序可读性或可靠性基础之上, 要先使程序正确,再提高程序效率;先使程序清晰,再提高程序效率。

③ 提高程序效率的根本途径在于选择良好的设计方法、 良好的数据结构与算法,而不是靠编程时对程序语句做调整。

4. 为什么要进行程序复杂性度量?

① 随着软件项目开发规模的不断扩大,要保证软件产品质量难度也越来越大,单凭以往的程序开发经验很难保证软件产品质量及开发的顺利进行,需要对产品及开发产品的过程进行度量,这就是软件度量。

② 程序复杂性度量是软件度量的重要组成部分,是指理解和处理程序的难易程度,主要针对模块内程序的复杂性。它直接关联到软件开发费用的多少,开发周期的长短和软件内部潜伏错误的多少。对程序进行复杂性度量可以减少程序复杂性,提高软件的简单性和可理解性,并使软件开发费用减少,开发周期缩短,软件内部潜藏错误减少。 5. 对照本章内容,对自己熟悉的一门程序设计语言,尝试分析和总结其基本成分和技术特点。并编写包括输入输出,数据运算,注释的程序,长度不小于500行。

6. 对照本章程序设计风格的内容,尝试修改代码。

附录A 习题答案19

第8章习题答案

一、选择题

题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 C B D D A 1 C 16 2 D 17 D 位号 1 2 3 题号 18 19 20 C 21 1 A 2 A 位号 1 2 答案 A B C B C D C C A D B C 答案 B C C 二、简答题

1. 软件测试的目的是什么?

答:测试的目的:

(1) 测试是一个为了发现程序中的错误为目的的程序执行过程;

(2) 一个好的测试用例是能最大限度地找到迄今为止尚未发现的错误; (3) 成功的测试是能发现了那些尚未发现的错误。 2. 什么是黑盒测试?有哪些常用的黑盒测试方法?

黑盒测试法是依据软件的需求规格说明书,检查程序功能是否满足需求的要求,主要的黑盒测试方法有:等价类划分,边界值分析,错误推测法,因果图法和场景法。 3. 什么是白盒测试?有哪些常用的白盒测试方法

白盒测试主要针对于程序内部逻辑和数据流程的测试,因此白盒测试的测试用例设计需要了解程序的内部逻辑。常用的白盒测试方法主要有逻辑覆盖法、基本路径测试法。 4. 验证与确认之间的区别:

验证是检验开发出来的软件产品和设计规格说明书的一致性,即是否满足软件厂商的生产要求,保证生产出的产品是高质量的产品。确认就是检验产品功能的有效性,即是否满足用户的真正需求,确认是用户需要的产品。

因为设计规格说明书本身有可能存在错误,即便软件产品中某个功能实现的结果和设计规格说明书完全一致,但也可能不是用户需要的,因为设计规格说明书一开始就对用户需求的理解错了,所以仅仅进行验证测试是不充分的,还要进行确认测试, 5. 软件测试应该划分几个阶段?各个阶段应重点测试的内容是什么?

答:大体上来说可分为单元测试、集成测试、系统测试、验收测试;每个阶段又分为确定测试计划,测试设计,设计测试用例,实施测试,进行测试报告五个步骤:。

1) 单元测试对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。

2) 集成测试软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。

3) 系统测试,系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。

附录A 习题答案20

4) 验收测试,在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集.

5) 回归测试,回归测试是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。

三、综合题:

1. 程序功能说明书指出,某程序的输入条件为:每个学生可以选修1至3门课程,试用黑盒法设计测试用例。

(1)按等价分类法设计测试用例(要求列出设计过程) (2)按边界值分析法设计测试用例。 (3)按错误推测法设计测试用例 答:

合理等价类 ①选修1门 ②选修2门 ③选修3门

输入数据 2 0 >3 预期结果 输入有效 输入无效 输入无效 覆盖范围 ①②③ ④ ⑤ 不合理等价类 ④没选课 ⑤选3门以上 (2):边界值法值是1,3,所以测试用例为0,1,3,4。 (3):错误推测法设计的测试用例:空、空格、12、a、a1、1¥、null 2. 设被测试的程序段为:找出实现(1)语句覆盖;(2)条件覆盖;(3)判定覆盖至少要选择的数据组。

Begin可供选择的测试数据组为: s1 ;x y if (x=0) and (y>2)Ⅰ 0 3 then s2;Ⅱ 1 2 if (x<1) or (y=1)Ⅲ -1 2 then s3 ;Ⅳ 3 1 s4 ; end 答:(1)Ⅰ (2) Ⅰ,Ⅳ (3) Ⅰ,Ⅱ

3. 随意选择一个物品,根据所学的软件测试技术、方法和内容对其进行测试。如水杯、电梯等。

测试项目:杯子

需求测试:查看杯子使用说明书 界面测试:查看杯子外观

附录A 习题答案21

功能度:用水杯装水看漏不漏;水能不能被喝到 安全性:杯子有没有毒或细菌

可*性:杯子从不同高度落下的损坏程度

可移植性:杯子再不同的地方、温度等环境下是否都可以正常使用 兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等 易用性:杯子是否烫手、是否有防滑措施、是否方便饮用

用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述

疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案

例二)放24小时检查泄漏时间和情况等

压力测试:用根针并在针上面不断加重量,看压强多大时会穿透 跌落测试: 杯子加包装(有填充物),在多高的情况摔下不破损

震动测试:杯子加包装(有填充物),六面震动,检查产品是否能应对恶劣的铁路\\公路\\

航空运输

测试数据:测试数据具体编写此处略(最讨厌写测试数据了)。其中应用到:场景法、

等价类划分法、因果图法、错误推测法、边界值法等方法

期望输出:该期望输出需查阅国标、行标以及用户的需求。

附录A 习题答案22

第9章习题答案

一、判断题

题号 1 答案 Y 2 Y 3 Y 4 Y 5 Y 6 7 8 Y Y Y 二、选择题

题号 1 2 3 4 5 6 7 8 9 10 位号 1 2 1 2 3 1 2 3 4 5 1 2 3 1 2 1 2 1 2 3 答案 B F B F C B D E A F E C G E A B A C A B A C 题号 10 位号 1 2 3 4 答案 F C F E 三、填空题

题号 1 2 3 4 5 6 7 A 劳动量 劳动量 产品 程序 类推 风险 增加 B 工作量 生产率 240 自顶向下 越多 降低 C 开发全过程 自底向上 越大 越多 D 差别 E 专家判定技术 三、简答题

1.简述软件开发成本估算的方法?

① 自顶向下估算法 ② 自底向上估算法 ③ 差别估算法 ④ 专家判定技术估算法 ⑤ 经验模型估算法 2.编制进度计划的步骤?

① 进度编制 ② 资源调整 ③ 成本预算 ④ 计划优化调整 ⑤ 计划基线

3.简述软件工程各阶段工作量的分配?

阶段 需求分析与设计 占开发时间的百分比 25 40 附录A 习题答案23

概要设计 详细设计 编码设计 单元测试 组装测试和确认测试 组装测试和确认测试 系统维护 6 7 7 5 5 5 40 40 20 附录A 习题答案24

第10章习题答案

一、判断题

题号 1 答案 N 2 N 3 N 4 Y 5 Y 二、选择题

题号 1 答案 A 2 C 3 B 4 A 5 B 6 A 7 A 8 D 三、填空题

题号 1 A 及时性 B 准确性 C 完整性 D 可理解性 四、简答题

1. 简述软件项目团队的几种组织模式?

① 项目型、 ② 职能型、 ③ 矩阵型。

2. 简述软件项目团队组织的原则?

① 尽早落实责任。要尽早指定专人负责软件开发,使他有权进行管理,并对任务的完成负责。 ② 减少接口。开发过程中人员之间的联系是必不可少的,但应注意,组织的工作效率是和完成任务中存在的人际联系数目成反比的。 ③ 责权均衡。软件经理人员所负的责任不应比委任给他的权力还大。 3. 简述程序设计小组的组织形式?

① 主程序员制小组(chief programmer team) ② 民主制小组(democratic team) ③ 层次式小组(hierarchical team) 4. 简述软件项目人员配备的原则?

① 人员的配备必须要为项目的目标服务。

② “以岗定员”保证人员配备的效率,充分利用人力资源,不能以人定岗。

项目处于不同的实施阶段,所需要的人力资源的种类、数量、质量是不同的,要安排一定比例的临时人员,根据项目的需要加入或者退出,节约人力资源成本。

附录A 习题答案25

第11章 习题答案

一、判断题

题号 1 答案 Y 2 Y 3 Y 4 N 5 Y 二、选择题

题号 1 位号 答案 D 2 A 3 C 4 C 5 B 6 B 1 A 7 2 A 3 D 8 B 9 A 三、填空题

题号 1 A 《GB∕T 11457-1995 软件工程术语》 配置管理计划 配置标识 信息收集 风险参照水准 风险参照水准 风险识别 B 《ISO∕IEC12207-1995 信息技术―软件生存期过程》 变更管理 唯一性 度量尺度 成本 崩溃点 风险估计 C D 《ISO 9000-3:1997质量管理和质巴比奇量保证标准第三部分:ISO 9001:(W.Babich) 1994在计算机软件开发、供应和维护中的使用指南》 可追溯性 风险的评价标准 进度 区域 风险驾驭和监控 风险的级别 性能 2 3 4 5 6 7 四、简答题

1. 简述处理风险的策略?

① 风险避免(或缓解); ② 风险监控; ③ 风险管理 ④ 意外事件计划。

2. 四个风险因素的定义。

① 性能风险——产品能满足需求且符合其使用目的的不确定程度。 ② 成本风险——能够维持项目预算的不确定程度。 ③ 支持风险——软件易于改错、适应和增强的不确定程度。 ④ 进度风险——能够实现项目进度计划且产品能按时交付的不确定程度。 3. 简述软件配置管理的基本目标?

① 软件配置管理的各项工作是有计划进行的。 ② 被选择的项目产品得到识别,控制并且可以被相关人员获取。 ③ 已识别出的项目产品的更改得到控制。 ④ 使相关组别和个人及时了解软件基准的状态和内容。 4. 简述软件配置管理的内容和基本目标?

① 版本控制:版本控制是全面实行软件配置管理的基础,可以保证软件技术状态的一

附录A 习题答案26

致性。 ② 变更控制:进行变更控制是至关重要的。但是要实行变更控制也是一件令人头疼的事情。 ③ 过程支持:软件工程过程概念和软件工程支持技术的结合可以作为一个管理变更的规则(或过程)。

5. 简述软件配置管理过程的核心流程?

① CCB 设定研发活动的初始基线; ② CMO 根据软件配置管理规划设立配置库和工作空间,为执行软件配置管理就阿做好准备; ③ 开发人员按照统一的软件配置管理策略,根据获得的授权的资源进行项目的研发工作; ④ SIO 按照项目的进度集成组内开发人员的工作成果,并构建系统,推进版本的演进; ⑤ CCB 根据项目的进展情况,审核各种变更请求,并适时的划定新的基线,保证开发和维护工作有序的进行。

6. 简述软件配置管理的关键活动?

① 配置项(Software Configuration Item,SCI)识别 ② 工作空间管理 ③ 版本控制 ④ 变更控制 ⑤ 配置状态报告 ⑥ 配置审计

7. 配置控制委员会(CCB)具体职责?

① 定制开发子系统; ② 定制访问控制; ③ 制定常用策略;

④ 建立、更改基线的设置,审核变更申请; ⑤ 根据配置管理员的报告决定相应的对策。

附录A 习题答案27

第12章习题答案

一、判断题

题号 1 2 答案 Y Y 二、选择题

题号 1 2 3 4 5 6 答案 B C D A F F C D B F D C D 三、填空题

题号 1 2 3 4 5 A 注重问题 重诊断,轻评估 关键过程域 过程 软件过程 B 强调知识创新 重实施,轻宣传 最低 技术 软件过程性能 C 鼓励参与 重实施,轻宣传 人员 软件过程能力 D 领导层的统一 三方参与 E 计划不断地改进 软件过程成熟度 软件能力成熟度等级 6 软件能力成熟度模型 关键过程域 关键实践 附录A 习题答案28

第13章习题答案

一、简答题

1、 软件工程标准有何作用?举例说明有哪些软件工程标准。

(1)软件工程标准作用: 在开发一个软件时,需要将项目和人员划分成不同的层级和不同的分工,这些层次和分工存在着相互配合的问题;同时,在开发项目的各个部分以及各开发阶段之间也都存在着许多联系和衔接问题。那么把这些错综复杂的关系协调好,就需要有一系列统一的约束和规定;并且在软件开发项目取得阶段成果或最后完成时,还需要进行阶段评审和验收测试;投入运行的软件,其在运行中出现的问题或正常的维护也需要对软件进行全面的理解。这些理解就像一门语言的语法规则一样,都需要提供统一的规范和标准,使得各项工作都能有章可循。

(2)软件工程标准:

1)过程标准:与开发一个产品或从事一项服务的一系列活动或操作有关。如方法、技术以及度量等。

2)产品标准:涉及软件工程事务的格式和内容。如需求、设计、部件、描述、计划以及报告等。

3)专业标准:涉及软件工程的所有方面,如职别、道德准则、认证、特许以及课程等。

4)记法标准:论述了再软件工程行业范围内,以惟一的一种方式进行交流的方法。如术语、表示法以及语言等。

2、 软件工程标准可分成哪些层次?试举例说明。

根据软件工程标准制定的机构和标准适用的范围有所不同,它可分为5个级别,即国际标准、国家标准、行业标准、企业(机构)标准及项目(课题)标准。 3、 软件质量认证有何作用?

ISO9000标准是一系统性的标准,涉及的范围、内容广泛,强调对各部门的职责权限进行明确划分、计划和协调,而使企业能有效地、有秩序地开展各项活动,保证工作顺利进行。它强调管理层的介入,明确制定质量方针及目标,并通过定期的管理评审达到了解公司的内部体系运作情况,及时采取措施,确保体系处于良好的运作状态的目的。它强调纠正及预防措施,消除产生不合格或不合格的潜在原因,防止不合格的再发生,从而降低成本。它强调不断地审核及监督,达到对企业的管理及运作不断地修正及改良的目的。

4、 如何理解GB/T8567-2006计算机软件文档编制规范对软件工程的实质意义。

对软件的开发过程和管理过程应编制的主要文档及其编制的内容、格式规定了基本要求;本标准原则上适用于所有类型的软件产品的开发过程和管理过程。

附录A 习题答案29

第14章习题答案

一、简答题

1、软件文档的意义是什么?

文档(document)是指某种数据媒体和其中所记录的数据。它具有永久性,并可以由人或机器阅读,通常仅用于描述人工可读的东西。在软件工程中,文档常常用来表示对活动、需求、过程或结果进行描述、定义、规定、报告或认证的任何书面或图示的信息。它们描述和规定了软件设计和实现的细节,说明使用软件的操作命令。文档也是软件产品的一部分,没有文档的软件就不称其为软件。软件文档的编制(documentation)在软件开发工作中占有突出的地位和相当大的工作量。高质量、高效率地开发、分发、管理和维护文档对于转让、变更、修正、扩充和使用文档,对于充分发挥软件产品的效益有着重要的意义。 2、软件文档的主要作用?

软件文档的作用主要体现在以下各方面: 1)管理依据

2)任务之间联系的凭证 3)质量保证 4)培训与参考 5)软件维护支持 6)历史档案

学生可根据所学,所想展开说明。 3、软件文档的分类有哪些?

规定文档类型和内容,软件文档归入如下三种类别:

开发文档——描述开发过程本身; 产品文档——描述开发过程的产物; 管理文档——记录项目管理的信息。

4、软件文档编写是的常用工具有哪些?

常用的文档编写工作主要包括以下几种: ? 文字处理工具-MS WORD ? 表格设计工具- MS EXCEL

? 电子简报制作工具- MS POWERPOINT ? 项目管理工具- MS PROJECT ? 绘图工具软件- MS VISIO

? 图片编辑工具-MS OFFICE PICTURE MANAGER

附录A 习题答案30

第15章习题答案

一、简答题

1、 可行性研究报告的编写目的是什么?

可行性研究报告的编写目的是:它是项目初期策划的结果,它分析了项目的要求、目标和环境;提出了几种可供选择的方案;并从技术、经济和法律各方面进行了可行性分析。 2、 需求分析的目标是什么?

需求分析的基本任务是要准确地定义新系统的目标,为了满足用户需求,回答系统必须“做什么”的问题,从而获得需求规格说明书。 3、 软件测试计划的编写目的是什么?

软件项目的测试计划是描述测试目的、范围、方法和软件测试的重点等的文档。对于验证软件测试计划,软件产品的可接受程度编写测试计划文档是一种有用的方式。详细地测试计划可以帮助测试项目组之外的人了解为什么和怎样验证产品。它非常有用但是测试项目组之外的人却很少去读它。软件测试计划作为软件项目计划的子计划,在项目启动初期是必须规划的。在越来越多公司的软件开发中,软件质量日益受到重视,测试过程也从一个相对独立的步骤越来越紧密嵌套在软件整个生命周期中,这样,如何规划整个项目周期的测试工作;如何将测试工作上升到测试管理的高度都依赖于测试计划的制定。测试计划因此也成为测试工作的赖于展开的基础。

4、 用户手册的作用是什么?

描述手工操作该软件的用户应如何安装和使用,是为用户操作的软件而开发的,具有要求联机用户输人或解释输出显示的用户界面。