搜档网
当前位置:搜档网 › 软件工程2010年的试题集含答案

软件工程2010年的试题集含答案

习 题 答 案
习题一答案
一、选择题
1. 软件的主要特性是(A B C)。
A) 无形 B) 高成本
C) 包括程序和文档 D) 可独立构成计算机系统
2. 软件工程三要素是(B)。
A) 技术、方法和工具 B) 方法、工具和过程
C) 方法、对象和类 D) 过程、模型、方法
3. 包含风险分析的软件工程模型是(A)。
A) 螺旋模型 B) 瀑布模型 C) 增量模型 D) 喷泉模型
4. 软件工程的主要目标是(C)。
A) 软件需求 B) 软件设计 C) 风险分析 D) 软件实现
5. 下列属于面向对象开发方法的是(A B C D)。
A) Booch B) UML C) Coad D) OMT
6. 软件危机的主要表现是(B D)。
A) 软件成本太高 B) 软件产品的质量低劣
C) 软件开发人员明显不足 D) 软件生产率低下
7. 软件开发方法的主要工作模型有(A B C)
A) 螺旋模型 B) 循环模型 C) 瀑布模型 D) 专家模型
8. 软件工程的目标有(A B C)。
A) 易于维护 B) 低的开发成本
C) 高性能 D) 短的开发期
9. 软件工程学的目的和意义是(A D)。
A) 应用科学的方法和工程化的规范管理来指导软件开发
B) 克服软件危机
C) 作好软件开发的培训工作
D) 以较低的成本开发出高质量的软件
二、 判断题
1. 软件就是程序,编写软件就是编写程序。(×)
2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。(×)
3. 结构化方法的工作模型是使用螺旋模型进行开发。(×)
4. 结构化方法和OO方法都是一种面向过程的软件开发方法。(×)
5. 原型化开发方法包括生成原型和实现原型两个步骤。(×)
6. 面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。( √)
7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。(×)
8. 软件工具的作用是为了延长软件产品的寿命。(×)
9. 软件工程过程应该以软件设计为中心,关键是编写程序。(×)
10. RCP法与RSP法的主要区别是前者采用循环渐进的开发方式,原型将成为最终的产品,而后者原型将被废弃。(√)
三、简答题
1. 软件产品的特性是什么?
答:● 软件是一种逻辑产品,具有无形性;
 ● 软件产品的生产主要是研制;主要是脑力劳动;
 ● 软件不存在磨损和老化问题,但存在退化问题;
 ● 软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式;
● 软件具有“复杂性”,其开发和运行常受到计算机系统的限制。
2. 软件发展有几个阶段?各有何特征?
答:① 程序设计阶段。
硬件特征:价格贵、存储容量小、运行可靠性差。
软件特征:

只有程序、程序设计概念,不重视程序设计方法。
 ② 程序系统阶段。
硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。
软件特征:程序员数量猛增,开发人员素质低。
 ③ 软件工程阶段。
硬件特征:向超高速、大容量、微型化及网络化方向发展。
软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。
3. 什么是软件危机?其产生的原因是什么?
答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。软件危机主要表现在两个方面:
(1) 软件产品质量低劣,甚至开发过程就夭折。
(2) 软件生产率低,不能满足需要。
4. 什么是软件过程?有哪些主要的软件过程模型?它们各有哪些特点?
答:软件过程是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。软件过程模型是对软件开发实际过程的抽象和简化,是描述软件开发过程中各种活动如何执行的模型,因此又称为软件开发模型。
主要的软件过程模型有:瀑布模型、增量模型、螺旋模型、喷泉模型和基于知识的模型等。
⑴瀑布模型是经典的软件开发模型,将软件开发活动中的各项活动规定为依线性顺序连接的若干阶段,它简单易用,在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大的作用。但在软件开发实践中也逐渐暴露出它的缺点。它将一个充满回溯的软件开发过程硬性分割为几个阶段,无法解决软件需求不明确或者变动的问题。
⑵增量模型是一种非整体开发的模型。根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。
⑶螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:制定计划、风险分析、实施工程、客户评估。
⑷喷泉模型用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。软件开发过程有4个阶段,即分析、系统设计、软件设计和实现。各阶段相互重叠,以分析为基础,资源消耗成塔形,从高层

返回低层无资源消耗。强调增量开发,是对象驱动的过程,反映了对象的开发和重用过程。
⑸基于知识的模型也称为智能模型。通过领域的专家系统,可使需求说明更加完整、准确和无二义性。通过软件工程知识和特定应用领域的知识和规则的应用来提供开发的帮助。
5. 有哪些主要的软件开发方法?
答:主要的软件开发方法有:结构化开发方法、原型化开发方法和面向对象的开发方法。
6. 软件生存周期各阶段的主要任务是什么?
答:软件生存周期按瀑布模型分为6个阶段:
● 可行性研究与计划(确定系统的目标和规模,分析项目的可行性);
● 需求分析与规格说明(明确系统的规格和要求);
● 设计(包括概要设计和详细设计,将系统分解为模块);
● 编程(用程序语言实现每个模块,简单容易);
● 测试(发现并改正错误,分为模块测试、集成测试和系统联调三级);
● 运行维护(扩充功能、纠错等)。
7. 原型化方法的核心是什么?它具有哪些特点?
答:原型化方法的核心是,花费少量代价建立一个可运行的系统,使用户及早获得学习的机会。强调软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。它是一个循环的模型。速成原型法按以下步骤循环执行:
① 快速分析。② 构造原型。③ 运行和评价原型。④ 修改与改进。
习题二答案
一、 选择题
1. 需求分析的主要目的是(B C)。
A) 系统开发的具体方案
B) 进一步确定用户的需求
C) 解决系统是“做什么”的问题
D) 解决系统是“如何做”的问题
2. 需求分析的主要方法有(C D)。
A) 形式化分析方法 B) PAD图描述
C) 结构化分析(SA)方法 D) OOA法
3. 面向对象的分析方法主要是建立三类模型,即(D)。
A) 系统模型、E-R模型、应用模型
B) 对象模型、动态模型、应用模型
C) E-R模型、对象模型、功能模型
D) 对象模型、动态模型、功能模型
4. SA法的主要描述手段有(B)。
A) 系统流程图和模块图
B) DFD图、数据词典、加工说明
C) 软件结构图、加工说明
D) 功能结构图、加工说明
5. 画分层DFD图的基本原则有(A C D)。
A) 数据守恒原则
B) 分解的可靠性原则
C) 子、父图平衡的原则
D) 数据流封闭的原则
6. 在E-R模型中,包含的基本成分是(C)。
A) 数据、对象、实体
B) 控制、联系、对象
C) 实体、联系、属性
D) 实体、属性、联系
7. 画DFD图的主要目的是(A D)。
A) 作为需求分析阶段用户与开发者之间交流信息的工具
B) 对系统的数据结构进行描述
C) 对目标系统的层次结构进行描述
D) 作为分析和设计的工具
8. 数据字典是数据流图中所有元素的定

义的集合,一般由 (C) 四类条目组成。
A) 数据说明条目、控制流条目、加工条目、数据存储条目
B) 数据流条目、数据项条目、文件条目、加工条目
C) 数据源条目、数据流条目、数据处理条目、数据文件条目
D) 数据流条目、数据文件条目、数据池条目、加工条目
9. 在需求分析阶段主要采用图形工具来描述的原因是(B C)。
A) 图形的信息量大,便于描述规模大的软件系统
B) 图形工具能够极好地概括描述一个系统的信息,比文字叙述能够更好地表达重要的细节
C) 图形能够更加直观地描述目标系统,便于用户理解和交流,有利于开发者与用户之间达成一致的需求
D) 图形比文字描述简单、形象
二、 判断题
1. 在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案。 (×)
2. SA法是面向数据流,建立在数据封闭原则上的需求分析方法。 (√)
3. 需求管理主要是对需求变化的管理,即如何有效控制和适应需求的变化。 (√)
4. 在面向对象的需求分析方法中,建立动态模型是最主要的任务。 (×)
5. 加工小说明是对系统流程图中的加工进行说明。 (×)
6. 判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。 (×)
7. 需求分析的主要方法有SD法、OOA法及HIPO法等。 (×)
8. 分层的DFD图可以用于可行性分析阶段,描述系统的物理结构。 (×)
9. 信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R图。
(√)
10. 用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。 (√)
三、 简答题
1. 需求工程包括哪些基本活动?各项基本活动的主要任务是什么?
答:需求工程过程包括如下主要活动:
⑴ 获取需求。深入实际,在充分理解用户需求的基础上,获取足够多的问题领域的知识,积极与用户交流,捕捉、分析和修订用户对目标系统的需求,并提炼出符合解决领域问题的用户需求。需求获取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方法等。
⑵ 需求分析与建模。对已获取的需求进行分析和提炼,进行抽象描述,建立目标系统的概念模型,需求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。进一步对所建立的模型(原型)进行分析。需求模型的表现形式有自然语言

、半形式化(如图、表、结构化英语等)和形式化表示等三种。
⑶ 需求规格说明。对需求模型进行精确的、形式化的描述,为计算机系统的实现提供基础。
⑷ 确认需求。以需求规格说明为基础输入,通过符号执行、模拟或快速原型等方法,分析和验证需求规格说明的正确性和可行性,确保需求说明准确、完整地表达系统的主要特性,就是对需求规格说明与用户达成一致。其主要任务是冲突求解,包括定义冲突和冲突求解两方面。常用的冲突求解方法有:协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。
⑸ 需求管理。在整个需求工程过程中,贯穿了需求管理活动。需求管理主要包括跟踪和管理需求变化,支持系统的需求演进。由于客户的需要总是不断(连续)增长的,但一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化(变化)就成为软件管理的首要问题。对于传统的变化管理过程来说,其基本成分包括软件配置、软件基线和变化审查小组。当前的发展是软件家族法,即产品线方法。多视点方法也是管理需求变化的一种新方法,它可以用于管理不一致性,并进行关于变化的推理。进化需求是十分必要的。
2.简述抽取需求的主要方法,并比较它们的特点。
⑴面谈法。这是一种重要而直接简单,随时可使用的发现和获取需求的方法。面谈的对象主要有用户和领域专家:与用户面谈主要了解和提取需求,与领域专家面谈,是一个对领域知识的学习和转换过程。使用该方法时应注意面谈前要充分准备,面谈后认真分析总结,同时注意掌握面谈的人际交流技巧,才能取得好的效果。
⑵问卷法调查法。通过采用向用户发问卷调查表的方式,达到彻底弄清项目需求的一种需求获取方法。这是一种从多个用户处收集需求信息的有效方式,是对面谈法的补充。
⑶会议讨论法。所谓会议讨论法,是指开发方和用户方召开若干次需求讨论会议,达到彻底弄清项目需求的一种需求获取方法。这种方法适合于开发方不清楚项目需求的情况。
⑷原型法。对于某些试验性、探索性的项目,更是难于得到一个准确、无二义性的需求。而原型化方法(Prototyping Method)是获取这一类项目需求的有效方法。
⑸面向用例的方法。分析建立“用例”的过程,也就是提取需求的过程。
在实际应用中,常常将以上方法进行综合应用。
3. 客户的需要总是不断地增长,但是一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化就成为软件进化的首要问题。请说明需求变更的管理过程。
答:需求变更的管理是需求管理的核心

内容。其主要任务是对系统需求变更进行跟踪和控制。对传统的变化管理过程来说,其基本内容包括软件配置、软件基线和变更审查等。目前推出的新的管理方法有软件家族法,即软件产品线方法及多视点方法等。下图描述了需求变更的管理过程。

4. M公司的软件产品以实验型的新软件为主。用瀑布模型进行软件开发已经有近十年了,并取得了一些成功。若你作为一名管理人员刚加入M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理由。切记:副总裁不喜欢报告长度超过一页。
参考答案提示:
应先简述瀑布模型的缺点,它已不适宜开发实验型的软件。根据快速原型法的特点,说明它特别适合于开发探索型、实验型的软件。
5. 如何画分层数据流图?有哪些基本原则?
答:总的原则是:至顶而下,逐层分解(画分层数据流图)。逐层分解的画法可以控制每一层的复杂度。
顶层:将整个系统作为一个加工,描述系统边界(输入与输出)。
中间层:将某个加工分解为一组子加工,其中的子加工还需进一步分解。
底层:由不再进行分解的基本加工组成。
画分层数据流图的基本原则有:① 数据守恒与数据封闭原则。② 加工分解的原则。③ 子图与父图“平衡”的原则。④ 合理使用文件的原则。
6. 加工小说明有哪些描述方法?它们各有何优缺点?为什么不采用自然语言进行描述?
答:主要的描述方法有三种;结构化语言、判定表和判定树。
● 结构化语言:介于自然语言和形式语言(如谓词逻辑)之间的的一种半形式语言,它是自然语言的一个受限制的子集。是在自然语言的基础上加上一些约束,一般分为两层结构:外层语法较具体,为控制结构(顺序、选择、循环);内层较灵活,表达“做什么”。
常用结构化英语或结构化汉语表示,精确、简明扼要、文体灵活。结构化语言特点:简单,易学,少二义性,但不好处理组合条件。
● 判定表:适用于表述比较复杂的加工逻辑,如具有多项选择条件的操作。判定表是一种二维的表格,常用于较复杂的组合条件。通常由四部分组成,如教材表2-2所示。对用结构化语言不易处理的较复杂的组合条件问题,可使用判定表。
● 判定树:本质上与判定表相同,图形表示更易于理解。描述一般组合条件较清晰,但不易输入计算机。
7. 考察下图中子图、父图的平衡关系。

图1

图2

参考答案:
⑴ 显然,图1中子图与父图不平衡。
⑵ 图2中,如果有如下数据条目:
订货单=客户+账号+数量
则子、父图平衡。
8. 画出银行取款过程的用例图。问题

描述为:储户用存折取款,首先填写取款单,根据“ 银行卡”中的信息检验取款单与存折,如有问题,将问题反馈给储户,否则,登录“储户存款数据库”,修改相应数据,并更新“银行卡”,同时发出付款通知,出纳向储户付款。
参考答案:
分析所给出的需求,确定角色为:储户、存款数据库、存折、出纳。用例为:填写取款单、验证取款单与存折、银行卡管理、数据库管理、付款。






















习题三答案
一、 选择题
1. 模块的基本特征是(A C)。
A) 外部特征(输入/输出、功能) B) 内部特征(输入/输出、功能)
C) 内部特征(局部数据、代码) D) 外部特征(局部数据、代码 )
2. SD方法的设计总则是(C D)。
A) 程序简洁、操作方便 B) 结构清晰、合理
C) 模块内聚性强 D) 模块之间耦合度低
3. 软件设计的主要任务是(A B D)。
A) 将分析阶段获得的需求说明转换为计算机中可实现的系统;
B) 完成系统的数据结构和程序结构设计
C) 完成模块的编码和测试
D) 对模块内部的过程进行设计
4. 设计阶段应达到的目标有(A D)。
A) 提高可靠性和可维护性 B) 提高应用范围
C) 结构清晰 D) 提高可理解性和效率
5. 从工程管理的角度来看,软件设计分(D)两步完成。
A) 系统分析、模块设计 B) 详细设计、总体设计
C) 模块设计、详细设计 D) 总体设计、详细设计
6. 模块独立性准则定性指标(B D)来衡量。
A) 分解度 B) 耦合度 C) 屏蔽性 D) 内聚性
7. 用户界面设计的任务包括(A B C)。
A) 确定用户界面类型 B) 建立任务模型
C) 建立用户模型 D) 建立功能模型

二、判断题
1. 划分模块可以降低软件的复杂度和工作量,所以应该将模块分得越小越好。 (×)
2. 在网状结构中任何两个模块都是平等的,没有从属关系,所以在软件开发过程中常常被使用。(×)
3. 信息隐蔽原则有利于提高模块的内聚性。(√)
4. 中心变换型的DFD图可看成是对输入数据进行转换而得到输出数据的处理,因此可以使用事务分析技术得到初始的模块结构图。(×)
5. SD法是一种面向数据结构的设计方法,强调程序结构与问题结构相对应。 (×)
6. 当模块的控制范围是其作用范围的子集时,模块之间的耦合度较低。(×)
三、简答题
1. 请解释为什么需要体系结构设计。
答:软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、元素间的相互作用、指导元素集成的模式以及这些模式的约束组成。

软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。良好的体系结构是普遍适用的,它可以高效地处理各种各样的个体需求。
2. 集中式模型和分布式模型相比各有什么优缺点?
答:以集中式的仓库模型为例。其主要优点:
(1) 数据由某个子系统产生,并且被存储到仓库中,以便为另外一些子系统共享;
(2) 由于中央集中控制的缘故,共享数据能得到有效的管理,各子系统之间不需要通过复杂的机制来传递共享数据;
(3) 一个子系统不必关心其他的子系统是怎么使用它产生的数据;
(4) 所有的子系统都拥有一致的基于中央数据仓库的数据视图。如果新子系统也采用相同的规范,则将它集成于系统中是容易的。

但这种系统也有明显的缺陷:
(1) 虽然共享数据得到了有效的管理,但随之而来的问题是各子系统必须有一致的数据视图以便能共享数据,换句话说,就是各子系统之间为了能共享数据必须走一条折中的路线,这不可避免地会影响整个系统的性能。
(2) 一个子系统发生了改变,它产生的数据也可能发生结构上的改变。问题随之而来,其他的子系统如何能正确解析这些数据呢?所以为了达到共享的目的,数据翻译系统会被引入到整个系统当中。但这种翻译的代价是很高的,并且有时是不可能完成的。
(3) 中央数据仓库和各子系统的私有数据库必须有相同的关于备份、安全、访问控制和恢复的策略,这可能会影响子系统的效率。
(4) 集中式的控制使数据和子系统的分布变得非常困难甚至成为不可能。这里分布指的是将数据或子系统分散到不同的机器上。

分布式结构有这样的一些优势:
(1) 资源共享:系统中每个服务节点上的资源都可以被系统中的其他节点访问;
(2) 开放性高:系统可以方便地增删不同软硬结构的节点;
(3) 可伸缩性好:系统可以方便地增删新的服务资源以满足需要;
(4) 容错能力强:分布式系统中的信息冗余可以容忍一定程度的软硬故障;
(5) 透明性高:系统中的节点一般只需知道服务的位置而不必清楚系统的结构。

但分布式结构也存在着一些不足:
(1) 复杂性:分布式系统比集中式系统要复杂得多。集中式系统的性能主要依赖于主机的处理器能力,而分布式系统的性能则还会依赖于网络的带宽,这让情形变得更加复杂。
(2) 安全性:网络环境随时面临着各种威胁:病毒、恶意代码、非法访问等。如何保证安全性是一个让人头疼的问题。
(3) 可管理性:分布式系统的开放性造成了系统的异构性。显而易见,管理

异构的系统比管理主机系统要困难得多。
(5) 不可预知性:这主要指系统的响应时间。网络环境本身的特点决定了网络负载会明显地影响整个系统的响应时间。
3. 请举出一种集中式模型的实例,并图示它的结构。
答:请参考3.2.1“仓库模型”
4. 胖客户模型和瘦客户模型的区别是什么?它们分别被应用在什么样的场合?
答:在胖客户模型中,客户端应用负责用户界面和应用逻辑部分,因此它的工作比较繁重。一般的数据库应用都是属于这种结构。而与此相反,在瘦客户模型中,服务器负责了更多的工作,而客户端的工作就变得非常单纯。浏览器/Web服务器结构就属于瘦客户结构,而且常被称为B/S(Browser/Server)结构。
5.请举出一种分布式模型的实例,并图示它的结构。
答:请参考3.2.4“两层C/S模型”
6.请为一个公司的电子商务网站建设提出体系结构设计方案。
答:略。
7.分布式对象模型与客户-服务器模型有什么异同?
答:在C/S模型中,客户和服务器的“地位”是不“平等”的:客户只能向服务器提出服务请求,而服务器不能向客户提出服务请求,同时服务器之间可以互相提供服务。另外,客户一般要知道服务器在网络上的具体位置(服务器的域名或者IP地址),相反,服务器则不需要。这种差别在一定程度上限制了系统的灵活性和可扩展性。而在分布式对象结构中,服务的提供者是被称为“对象”(Object)的系统组件(System Component)。每个对象的地位在逻辑上是平等的,它们可以互相为对方提供所需的服务。在这种情况下,提供服务的对象就是服务器,而提出服务请求的对象就是客户。为了能够提供服务,每个对象都有一个服务接口。
8.请查阅相关的资料,写一篇对比CORBA和DCOM的报告。
答:略。
9.模块分解的最终目的是什么?
答:模块分解的目的是将系统“分而治之”,以降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。
10. 模块分解应该遵循什么样的标准?
答:按照“降低块间联系,提高块内联系”的设计总则对模块进行分解。具体从以下方面考虑:
(1) 尽可能建立功能模块;
(2) 消除重复功能;
(3) 模块的作用范围与控制范围,即当作用范围为控制范围的子集时,才能获得较低的块间联系;
(4) 模块的大小适当;
(5) 模块的扇入/扇出数不宜太多。
也可以用软件独立性的两个定性指标来度量模块分解的标准:
一是耦合性。用于描述模块之间联系的紧密程度。从三个方面衡量块间联系大小:①方式 (直接或间接)②类型(数据型、控制型、混合型)③数量(数

量越大,块间联系越紧密。
二是内聚性。用于描述模块内部联系的紧密程度。它是从功能的角度来度量模块内的联系。显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。功能型模块独立性最好。

11~17题答案略。
习题四答案
一、选择题
1. 面向对象程序设计的基本机制是(ABC)。
A) 继承 B) 消息 C) 方法 D) 结构
2. 下列属于面向对象的要素有(BCD)。
A) 分类性 B) 抽象 C) 共享 D) 封装
3. 下列选项中属于面向对象开发方法的有(ACD)。
A) Booch B) CAD C) Coad D) OMT
4. 下列属于Coad/Yourdon方法中面向对象的分析模型的层次有(AB)。
A) 主题层 B) 对象层 C) 应用层 D) 接口层
5. 一个类属性依其特征划分,其类型有(ABCD)。
A) 描述型 B) 定义型 C) 派生型 D) 参考型
6. 在进行面向对象分析时,所采用的模型有(ABC)。
A) 对象模型 B) 动态模型 C) 静态模型 D) 功能模型
7. 状态是对象属性的值的一种抽象,它的性质有(AB)。
A) 时间性 B) 持续性 C) 有序性 D) 有穷性
8. 数据流图中的处理必须用对象中的操作来实现,常见的操作有(ABCD)。
A) 查询 B) 动作 C) 活动 D) 访问
9. 建立继承关系时所采用的方式有(AC)。
A) 自顶向下 B) 从内到外 C) 自底向上 D) 从复杂到简单
10. 对象是人们要研究的任何事物,主要的对象类型有(ABCD)。
A) 有形实体 B) 作用 C) 事件 D) 性能说明

二、判断题
1. 面向对象的的方法是以类作为最基本的元素,它是分析问题和解决问题的核心。(×)
2. 类是指具有相同或相似性质对象的抽象,对象是抽象的类,类的具体化就是对象。(×)
3. 继承性是父类和子类之间共享数据结构和消息的机制,这是类之间的一种关系(×)。
4. 多态性增强了软件的灵活性和重用性,允许用更为明确、易懂的方式去建立通用软件,多态性和继承性相结合使软件具有更广泛的重用性和可扩充性。(√)
5. 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。(√)
6. 面向对象设计的主要目标是提高生产效率,提高质量和提高可维护性。(√)
7. 对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。(√)
8. 面向对象的分析是用面向对象的方法对目标系统的问题域空间进行理解、分析和反映。通过对象层次结构的组织确定解空间中应存在的对象和对象层次结构。(√)
9. 类的设计过程包括:确定类,确定关联类,确定属性,识别继承关系。(√)
10. 复用也叫重用或再

用,面向对象技术中的“类”是比较理想的可重用软构件,它有三种重用方式:实例重用、继承重用、多态重用。(√)
11. 主题是一种关于模型的抽象机制,它是面向对象模型的概貌,也是关于某个模型要同时考虑和理解的内容,主题起一种控制作用。(√)
12. 面向对象的分析由对象、结构、继承性和基于消息的通信构成。(×)
13. 支持继承性是面向对象程序设计语言和传统程序设计语言在语言机制方面的根本区别。(√)
14. 面向对象的分析过程主要包括三项内容:理解、表达和验证。(√)
三、 简答题
1.消息传递机制与传统程序设计模式中的过程调用相比,有何本质区别?
答:(1) 消息传递必须给出信道的信息,通常要指出明确的接收方。
(2) 由于接收方是一通信实体,具有保持状态的能力,所以同一发送方在不同时刻向同一接收方发送同样的信息,可因接收方的当前状态不同而得到不同的结果。
(3) 消息传递可以是异步的,发送方可以不必等待接收方返回信息就可以继续执行后面的操作,因而支持程序的并发和分布执行,而过程调用只能是同步的,本质上是串行的。
2.比较面向对象方法与结构化方法的特点,说明为什么面向对象方法比结构化方法更加优越。
答:结构化方法是以数据流和数据封闭性为基础的,由SA、SD和 SP三部分构成。该方法:
①无法实现从问题空间到解空间的直接映射。开发方法求解过程是先对应用领域(问题空间)进行分析,建立起问题空间的逻辑模型,再通过一系列复杂的转换和算法,构造计算机系统,获得解空间。
②无法实现高效的软件复用。结构化方法是面向过程的,将数据和处理过程(操作)分离,不仅增加了软件开发的难度,也难于支持软件复用。
③开发方法难以实现从分析到设计的直接过渡,从SA到SD要经过一系列复杂的变换。
而面向对象的方法以对象为核心,强调模拟现实世界中的概念而不是算法,尽量用符合人类认识世界的思维方式来渐进地分析、解决问题。
①使问题空间与解空间具有一致性,便于对软件开发过程所有阶段进行综合考虑,能有效地降低软件开发的复杂度,提高软件质量。
②软件开发各个阶段有机集成,有利于系统的稳定性。
③具有良好的重用性。面向对象的技术在利用可重用的软件成分构造新软件系统上具有很大的灵活性,由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性。继承性本身就是一种重用机制。
综上,显然面向对象方法比结构化方法更加优越。
3. Coad/Yourdon方法主要有面向对象分析(OOA)和面向对象设计(O

OD)。OOA概念模型由5个层次组成,请简述这5个层次。
答:OOA概念模型的5个层次分别是:
(1) 发现类及对象。描述如何发现类及对象。从应用领域开始识别类及对象,形成整 个应用的基础,然后,据此分析系统的责任。
(2) 识别结构。该阶段分为两个步骤。第一,识别“一般-特殊”结构,该结构捕获了识别出的类的层次结构;第二,识别“整体-部分”结构,该结构用来表示一个对象如何成为另一个对象的一部分,以及多个对象如何组装成更大的对象。
(3) 定义属性。其中包括定义类的实例(对象)之间的实例连接。
(4) 定义服务。其中包括定义对象之间的消息连接。
(5) 定义主题。主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,以便于理解。
4.面向对象的分析包括哪些主要活动?所建立的分析模型包括哪些类型的模型?
答:面向对象的分析过程分为论域分析和应用分析。论域分析过程是抽取和整理用户需求并建立问题域精确模型的过程。应用分析是将论域分析建立起来的问题论域模型,用某种基于计算机系统的语言来描述。面向对象的分析具体包括以下活动:
①获取用户基本需求。通常使用用例(User Case)来收集和描述。
②标识类和对象。包括标识类及对象的属性和操作。
③定义类的结构和层次。通常有一般与特殊 ( Generalization—Specialization)结构,整体与部分(Whole—Part)结构。
④ 建立类(对象)之间的关系,用“对象-关系模型”描述系统的静态结构。
⑤ 建立对象—行为模型,描述系统的动态行为。
所建立的分析模型包括:
①基本模型。是一个类图(class diagram),是以直观的方式表达系统最重要的信息。OOA基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。
②主题图(subject)。又称为子系统(subsystem),是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。
③交互图(interaction diagram) 是用例与系统成分之间的对照图。
主题图和交互图又称为补充模型。
5.面向对象设计的主要任务是什么?
答:面向对象的设计(Object-Oriented Design,OOD)是面向对象开发方法(OOSD)的核心阶段。是在OOA的基础上解决系统“如何做”的问题。主要任务包括:
⑴系统设计
系统设计的任务包括:将分析模型中紧密相关的类划分为若干子系统(也称为主题),子系统应该具有良好的接口,子系统中的类相互协作;标识问题本身的并发性,将各子系统分配给处理器,建立子系统之间的通信。
⑵对象设计
通过对象的认定和对象层次

结构的组织,确定解空间中应存在的对象和对象层次结构,并确定外部接口和主要的数据结构。
⑶设计优化
对设计进行优化,主要涉及提高效率的技术和建立良好的继承结构的方法。
6.为什么面向对象的方法能够有效地解决软件需求中存在的问题?
需求过程中存在两大难题,一是需求的确定是困难的,二是需求是不断变动的。尤其是对于一些大型软件系统,开发周期长,系统规模大,复杂性高。
面向对象的方法中,由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性。而且面向对象的方法是以对象为中心构造软件系统,而不是基于对系统功能进行分解来构造系统,当系统功能需求改变时不会引起系统结构的变化,使软件系统具有良好的稳定性和可适应性。
软件生存期各阶段所使用的方法、技术具有高度的连续性,对软件开发过程所有阶段进行综合考虑,能有效地降低软件开发的复杂度,提高软件质量,也便于需求的确定。
7. OMT方法明确提出了建模的概念,为什么在软件开发过程中需要进行建模?
答:OMT方法从不同而又相关的角度建立三类模型:对象模型、动态模型和函数模型,并为每一类模型提供了图形表示。
软件模型一般包括数学模型、描述模型和图形模型。在软件开发过程中进行建模,一是由于软件系统的复杂性和规模的不断增大,需要建立不同的模型对系统的各个层次更好地进行描述。模型具有的直观性及丰富的信息描述,便于开发人员与用户的交流。建立的模型为以后的系统维护和升级提供了文档。鉴于上述原因,在软件开发过程中建模,能够提高软件开发的效率和质量。
8.为什么说面向对象的方法为软件复用提供了良好的环境?
答:软件复用是将已有的软件成分用于构造新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。复用的软件成分也称为可复用构件(Reusable Component)。
对可复用组件一般有以下的要求:具有功能上的独立性与完整性;具有较高的通用性;具有较高的灵活性;具有严格的质量保证;具有较高的标准化程度。面向对象的方法对复用的支持主要反映在:
⑴面向对象方法可以保护在整个软件生存周期概念、原则、术语及表示法达到高度一致。这使面向对象方法不但能在各个级别支持软件复用,而且能对各个级别的复用形成统一、高效的支持,达到良好的全局效果。
⑵OOA基本模型体现了更高的抽象,更容易成为一个可复用的系统构架。
⑶所有的对象都用类作为其抽象描述。类作为一种可复用构件,在运用于不同系统时,不会出现

因该类对象实例不同而使系统模型有所不同的情况。
所以面向对象方法的主要概念及原则与软件复用的要求十分吻合。OO方法中的对象和类是系统的基本构成单位,它符合可复用构件所应具备的那些特性,如完整性、独立性、可标识性、一般性、抽象、封装等。尤其是面向对象方法的对象封装性,为软件复用技术提供了良好的条件。而继承机制本质上就是一种复用机制,因此面向对象方法为软件复用提供了一个良好的环境。

习题五答案
一、选择题
1. 下列不是模型元素的是(D)。
A) 关联 B) 聚合 C) 依赖 D) 笔记
2. UML具有扩展性,常见的扩展机制有(BCD)。
A) 修饰 B) 版类 C) 加标签值 D) 约束
3. UML语言支持的建模方式有(ABD)。
A) 静态建模 B) 动态建模 C) 模块化建模 D) 功能建模
4. 下列各种图可用于动态建模的有(ACD)。
A) 状态图 B) 类图 C) 序列图 D) 活动图
5. 下列属于状态的组成部分的有(AB)。
A) 名称 B) 活动 C) 条件 D) 事件
6. UML中包括的事件有(ABCD)。
A) 条件为真 B) 收到另一对象的信号
C) 收到操作调用 D) 时间表达式
7. 属性的可见性有(ABD)。
A) 公有的 B) 私有的 C) 私有保护的 D) 保护的
8. 用例之间的关系有(BCD)。
A) 友元 B) 扩展 C) 使用 D) 组合
9. 应用于通用化约束的方式有(ABCD)。
A) 完整 B) 不相交 C) 不完整 D) 覆盖
10. 消息的类型有(ABC)
A) 同步 B) 异步 C) 简单 D) 复杂
二、 判断题
1. UML建模语言是由视图、图、模型元素和通用机制构成的层次关系来描述的。 (√)
2. UML是一种建模语言,是一种标准的表示,是一种方法。 (×)
3. 泳道是一种分组机制,它描述了状态图中对象所执行的活动。 (×)
4. 同步消息和异步消息的主要区别是:同步消息的发送对象在消息发送后,不必等待消息处理,可立即继续执行,而异步消息则发送对象必须等待接收对象完成消息处理后,才能继续执行。(×)
5. 类图中的角色是用于描述该类在关联中所扮演的角色和职责的。 (√)
6. 类图用来表示系统中类和类与类之间的关系,它是对系统动态结构的描述。 (×)
7. 用例模型的基本组成部件是用例、角色和用例之间的联系。 (√)
8. 用例之间有扩展、使用、组合等几种关系。 (√)
9. 顺序图描述对象之间的交互关系,重点描述对象间消息传递的时间顺序。 (√)
10. 活动图显示动作及其结果,着重描述操作实现中所完成的工作以及用例实例或类中的活动。(×)
三、 简答题
1. 以图1(一个在学校首次报名的

UML 活动图)为例,说明如何绘制活动图。

图1 学校首次报名的UML活动图
答:要创建一个UML活动图,需要反复执行下列步骤。
(1) 定义活动图的范围。首先应该确定建模的范围,是对整个系统建模,还是一个子系统。一旦定义了作图的范围,应该在其顶部,用一个注释指明该图的标题和惟一的标识符,还可标注该图的时间及作者姓名。本题的建模范围是一个学校管理系统中的“报名”部分。
(2) 添加活动。活动是活动图的核心,活动是完成系统任务所必须执行的处理步骤。可从用例模型出发,对每个角色(actor)所驱动的主要用例引入一个活动,如果是对整个系统建模,应对每个主要流程引入一个活动。在“报名”的活动图中确定了“Fill out enrollment ”(填写报名表)、“Enroll in university”(登记入学)、“Obtain help to fill out forms”(帮助填写报名表)、“Attend university overview presentation”(参加介绍学校会议)等6个活动。
(3) 添加起点和结束点。每个活动图只能有一个起始点和多个结束点,结束点可以是所有活动的结束,也可以是对执行过程的终止。
(4) 添加活动间的转变。当一个活动结束时将进入下一个活动,称为活动转移。可标明活动转移的条件、引起活动转移的事件。如活动“填写报名表”有两个活动转移,当填写报名表不正确时,则转移到活动“帮助填写报名表”;当填写正确时,则转移到活动“登记入学 ”。
(5) 添加判断点。当对建模的逻辑需要做出一个判断时,需要添加判断点。例如,在图1中 ,在“Enroll in university”活动之后,还必须按照入学条件进行判断,满足条件的继续执行入学报到的活动,而不满足入学条件的则结束。
(6) 找出并行活动。若两个活动间没有直接的联系,而且它们都必须在第三个活动开始前结束,则它们是可以并行运行的。在图1中,用同步线描述系统任务中的并发活动,活动“Attend university overview presentation”(参加介绍学校会议)和“Enroll in seminars” (注册研讨班)及“Make initial tuition payment”(交付初始的学费)可并行执行,使用同 步线表示它们都要在结束整个流程前完成。
2. 简述扩展、包含和细化三种UML依赖关系的异同。
答:扩展、包含和细化都是描述了元素之间的依赖关系,但具体含义不同。
扩展(extend)关系是对基本用例在对某些“扩展点”的功能的增加。通过向被扩展的用例添加动作来扩展用例。
包含(include)关系表示一个元素为了实现或完成其全部的功能,需要用到已存在的另一个模型元素,本质上是一种使用关系。
细化关系是不同语义层(如分析和设计)之间模型元素的依赖关系,表示一

个元素对另一个因此细化关系可描述的语义范围较广,包括模型的逐步细化、优化、变换、模板、模型合成、框架组成等。
3. 软件开发为什么要使用UML建模?它有何特点?
答:软件开发的过程犹如雕琢一件工艺品,由无形到有形,由粗到细。鉴于软件系统的复杂性和规模的不断增大,项目失败的可能性也相应增加。需要建立不同的模型对系统的各个层次进行描述。
在长期的研究与实践中,人们越来越深刻地认识到,建立简明准确的表示模型是把握复杂系统的关键。模型是对事物的一种抽象,在软件开发过程中,建立各种模型,以便更透彻地了解系统的本质。由于UML以图形模型为主,模型的直观性及丰富的信息描述便于开发人员与用户的交流。建立的模型也为以后的系统维护和升级提供了文档。
总的来说,使用模型可以使人们从全局上把握系统的全貌及其相关部件之间的关系,可以防止过早地陷入各个模块的细节。因此,面向对象的分析与设计应该从建模开始。
UML是一种标准的图形化、可视化的建模型语言,UML的核心是建立系统的各类模型。其主要特点是:
⑴统一标准。UML统一了面向对象的主要流派Booch、OMT和OOSE等方法中的基本概念,已成为对象组织OMG的正式标准,并提供了标准的面向对象的模型元素的定义和表示。
⑵面向对象。UML集面向对象技术的众家之长。吸取了面向对象技术领域中其他流派的长处。
⑶可视化、表示能力强。系统的各种模型都能用UML的可视化模型清晰地表示,对系统描述能力强,模型蕴涵的信息丰富,可用于复杂软件系统的建模。
⑷独立于过程。UML是系统建模语言,独立于开发过程。
⑸易掌握、易用。UML的概念明确,建模表示法简洁明了,图形结构清晰,易于掌握使用。
正是由于UML具有上述优点,所以对于大型复杂系统的建模,UML是最合适的选择。
4. 简述UML实际建模过程。
答:UML建模过程是一个迭代过程。每次迭代都建立相应的模型。分为以下几个阶段:
① 分析阶段。建模的目的是捕捉系统的功能需求,分析、提取所开发系统的“客观世界”领域的类以及描述它们的合作关系。常以用例图为首选模型。
② 设计阶段。建模的目的是通过考虑实现环境,将分析阶段的模型扩展和转化为可行的技术实现方案。常建立以类图为主的静态模型,及包括状态模型、顺序模型、活动模型和合作模型等 动态模型。
③ 实现阶段。主要工作就是进行编码,同时对已构造的模型作相应的修正。
④ 配置阶段。通过模型描述所开发系统的软硬件配置情况建立配置模型。
⑤ 测试阶段。使用前几个阶段所构造的

模型来指导和协助测试工作。
5. 在UML中,状态图、协作图、活动图、顺序图在系统分析中各起到了什么作用?
答:状态图(State Diagram)用来描述一个特定对象在其生存周期或在某段时间内的所有可能的状态及其引起状态转移的事件。一个状态图包括一系列的状态以及状态之间的改变。例如订单的状态变化等,在实时系统中用得较多,还可以用于辅助设计用户界面。
顺序图(Sequence Diagram) 清晰地描述一组对象之间动态的交互关系、时间的约束关系,着重描述对象间消息传递的时间顺序,所以顺序图在实时系统中被大量使用。
当参与交互的对象数目增加,交互关系复杂时用顺序图描述会显得杂乱,协作图(Collaboration Diagram)从另一个角度来更好地描述相互协作的对象间的交互关系和链接(Link)关系。着重体现交互对象间的静态链接关系和协作关系。协作图也可以从顺序图生成。
活动图(Activity Diagram)是由状态图变化而来的,从系统任务的观点来看,系统的执行过程是由一系列有序活动组成的。活动图可以有效地描述整个系统的流程,描述了系统的全局的动态行为,且只有活动图是唯一能够描述并发活动的UML图。
6. 顺序图与协作图都是交互图,它们有何不同?所描述的主要系统特征是什么?
顺序图(Sequence Diagram) 重点描述某些对象间消息传递的时间顺序,对象间的通信和交互通过在对象的生命线之间传送的消息来表示。还常给出消息的说明信息及消息之间的时间限制及一些约束信息等。但当参与交互的对象数增加,交互关系复杂时难于表达清楚对象之间的交互关系。
协作图(Collaboration Diagram) 则着重体现交互对象间的静态链接关系和协作关系,不强调执行事件的顺序,而是强调为了完成某个任务,对象之间通过发送消息实现协同工作关系。可以有效地描述当参与对象数较多时的交互关系。
7. 状态图与活动图有何相同与不同之处?在建立系统模型时,应该如何使用这两类模型?
答:活动图(Activity Diagram)是由状态图变化而来的,它们各自用于不同的目的。状态图着重描述了对象的状态变化以及触发状态变化的事件。但是,从系统任务的观点看系统,它是由一系列有序活动组成的,活动图是从活动的角度描述系统任务,并且可以描述系统任务中的并发活动。活动图描述了系统中各种活动的执行顺序,刻画一个方法中所要进行的各项活动的执行流程。活动图显示动作及其结果,着重描述操作实现中完成的工作以及用例或对象内部的活动。
此外,在状态图中状态的变迁通常需要事件的触发,而活动图中一个活动结束后将立即进入下一个活动。
8. 什

么是抽象类?在建模时有时使用抽象类有什么好处?
答:抽象类是指没有实例的类,定义一些抽象的操作,即不提供实现方法的操作,只提供操作的特征,并标注{abstract}。如在建立类模型时,常将一些属性与操作类似的类作为一个抽象类的子类,使系统结构更加清晰,增加系统的可读性。
9. 以例5-5中图5.22“资源管理用例图”为例,说明<>和<>的区别。
答:在图5.22中,用例“删除资源”和“更新资源”与用例“查找资源”之间是<>的关系,<>本质上是一种使用关系,当一个用例包含另一个用例时,这两个用例之间就构成了使用关系。说明“删除资源”和“更新资源”的操作都需要首先“查找资源”。
扩展<>是向一个用例中加入一些新的动作后构成了另外一个用例,后者是继承前者的一些行为得来的。图5.22中,对用例“更新资源”中增加动作“清除技能”,得到用例“从资源中清除技能”,增加动作“指定技能”,得到用例“把技能指定给资源”,因此,用例“更新资源”与“从资源中清除技能”和“把技能指定给资源”之间的关系是<>。
10. 在分析和设计阶段都需要建立类图,试说明分析类图与设计类图的主要区别是什么。
答:在软件开发的不同阶段都使用类图,但这些类图表示了不同层次的抽象。在需求分析阶段,类图是研究领域的概念;在设计阶段,类图重点描述类与类之间的接口。
由于分析类图主要描述应用领域中的概念,它们的类可以从这些概念中得出,或者说分析类图中的类是从需求中获取的。
设计类图描述软件的接口部分,而不是软件的实现部分。面向对象开发方法非常重视区别接口与实现之间的差异,可以用一个类型(Type)描述一个接口,这个接口可能因为实现环境、运行特性或者用户的不同而具有多种实现方式。设计类图更易于开发者之间的相互理解和交流。设计类图通常是在分析类图的基础上进行细化和改进的。
11. 问题描述:储户用存折取款,首先填写取款单,根据“银行卡”中的信息检验取款单与存折,如有问题,将问题反馈给储户;否则,登录“储户存款数据库”,修改相应数据,并更新“帐卡”,同时发出付款通知,出纳向储户付款。
⑴ 建立系统的用例模型;
⑵ 建立角色和用例的描述模板。
答:⑴通过分析,确定系统的角色为:储户、存款数据库、存折、出纳。用例为:填写取款单、验证取款单与存折、银行卡管理、数据库管理、付款。

















⑵描述模板:
角色描述模板:

















用例描述模板:
用例名:验证

取款单与存折 执行者:储户、存折、存款数据库
目标: 根据“银行卡”中的信息检验取款单与存折。
功能描述:
1. 获取“银行卡”中的信息。
2. 检验取款单与存折信息。
3. 返回验证结果。
其他非功能需求: 高可靠性、实时性
主要步骤:
1. 储户填写取款单。
2. 根据银行卡信息,检验取款单与存折信息是否正确。
3. 若取款单与存折有问题,将信息返回给储户,否则登录“储户存款数据库”,修改相应数据,并更新“银行卡”。
相关用例:填写取款单、银行卡管理、数据库管理
相关信息:(优先级、性能、执行频率):
优先级:根据储户类型,决定处理的优先次序,VIP用户优先。
性能:实时性、高可靠性。

其他用例模板略。
12. 一个小型图书资料管理系统的主要功能有:图书资料的借出、归还、查询和管理,该系统有图书管理员和普通读者,普通读者要使用系统必须先注册。
图书管理员负责添加、更新和修改、删除图书资料,登记和查询图书的借阅、归还情况。读者可以按照作者或主题检索图书资料,还可以预订图书资料,即当新购买或有读者归还时,系统立即通知读者来借阅。
⑴ 确定系统的类,并定义其属性和操作;
⑵ 画出系统的分析类图。
参考答案:
⑴在分析系统需求的基础上,采用名词识别法与实体识别法,确定以下系统的类:
①Book类
该类标识一本书,其属性包括书名、作者、出版社等。

②User Information类
该类标识一个用户,其属性包括用户名、密码、用户类型等。

③Librarian类
该类是User Information类的子类,其操作包括查询读者信息,添加、删除、更新读者信息、查询书籍信息、添加、删除、更新书籍信息等。


④Borrower类
该类是User Information类的子类,其操作包括查询个人信息、修改密码等。

⑤System Manager类
该类是User Information类的子类,其操作包括查询图书管理员信息,添加、删除、更新图书管理员信息等。


⑥BorrowCriteria类
该类标识一条借书规则,其属性包括规则名,规则应用对象等。

⑦Info Database类
该类标识一个数据库,其属性有数据库名,其操作有读数据、写数据和查找数据。


⑧Communication类
该类实现各数据库间的数据传输,其操作包括建立通信套接字、绑定端口、建立连接、发送数据、接受数据等。



⑵系统的分析类图:
由于图书馆的多本书构成书库,增加BookDatabase类,与Book类之间是聚合关系。同样由于借书规则不止一条,增加CriteriaDatabase类,与BorrowCriteria类之间是聚合关系。

























13.为什么说RUP与UML密切结合,

能够开发出满足最终用户需要的高质量软件?
答:好的软件过程,是应用UML成功地进行软件开发的关键。在众多的软件开发过程中, RUP统一过程(Rational Unified Process)能够与UML最佳结合,不仅因为该过程的开发者也是UML的创立者,更因为RUP过程能够有效地测度工作进度,控制和改善工作效率。
RUP是最佳软件开发经验的总结,具有迭代式增量开发、使用实例驱动、以软件体系结构为核心的三个鲜明特点,还包括了软件开发中的6大经验:迭代式开发;管理需求;使用基于组件的软件体系结构;可视化建模;验证软件质量;控制软件变更。因此,RUP与UML密切结合,能够开发出满足最终用户需要的高质量软件。
14.分析RUP的二维开发模型,说明RUP的迭代开发过程。
答:在RUP中,软件开发生存周期根据时间和RUP的核心工作流划分为二维空间。横轴描述RUP开发过程的动态结构,纵轴描述RUP的静态组成部分。
⑴横轴把软件开发周期(Cycle)划分为起始(Inception)、演化(Elaboration)、构造(Construction)和提交(Transition) 四个连续的阶段(Pahse)。
⑵纵轴表示核心工作流。RUP中有商业建模、需求、分析和设计、实现、测试、部署、配置和变更管理、软件项目管理和环境9个核心工作流(Core Workflows):
RUP中的每个阶段都由一个或多个连续的迭代组成,每一个迭代都是一个完整的开发过程,产生一个可执行的产品版本,在每个阶段结束前都应有一个里程碑(MileStone)评估该阶段的工作,只有当阶段目标达到时才允许项目进入下一阶段,产生一个阶段里程碑。这是一种更灵活、风险更小的方法,是多次通过不同的开发工作流,这样可以更好地理解需求,构造一个健壮的体系结构,并最终交付一系列逐步完成的版本,称为一个迭代生存周期。
习题六答案
1.程序设计语言分为哪几类?
答:程序设计语言,按照语言级别可以分为两大类:低级语言和高级语言。
低级语言包括机器语言和汇编语言。低级语言依赖于特定的机器,其使用复杂、繁琐、费时、易出差错,因而程序编写也有一定的难度。
机器语言是表示成二进制形式的机器基本指令集,或者是操作码经过符号化的基本指令集,其存储由语言本身决定。汇编语言比机器语言更直观,是机器语言中地址部分符号化的结果,或进一步包括宏构造。
即便是现在汇编语言有着生产效率低、维护困难、容易出错的缺点,但是在实现与硬件系统接口部分时,仍然采用它,因为它易于实现接口,实现效率高。
高级语言的表示方法要比低级语言更接近于待解的问题,其特点是在一定程度上与具体机器无关,易学、易

相关主题