1.2 题型1 UML基本概念命题方向:本知识点主要考查UML通用机制的一些基本概念、用例及其关系的辨析,并能根据具体应用环境灵活运用这些基本概念。
【典型题1-1-1】 (2005上半年试题1)
● 在关于用例(use case)的描述中,错误的是 。
A.用例将系统的功能范围分解成许多小的系统功能陈述
B.一个用例代表了系统的一个单一的目标
C.用例是一个行为上相关的步骤序列
D.用例描述了系统与用户的交互
要点解析:
用例(use case)用来描述系统在对事件做出响应时所采取的行动,即它确定了一个与系统参与者进行交互、并由系统执行的动作序列。可见,一个用例本身并不是一个功能需求,它代表了系统的一个单一的目标,是一个行为上相关的步骤序列。
本试题选项D所描述的范围太广,不够准确。在UML规范中,参与者是指系统所涉及到的人,或者是用户在本系统中扮演的角色。一个参与者总是在系统的自动化边界之外。
解答此类试题的一般思路是理解用例的基本概念。
参考答案:D
考点链接1.1.1:用例的基本知识
出题概率:50~75% 考查难度:★★
用例(use case)是一组连续的操作,在参与者使用系统来完成某个过程时出现,即它确定了一个与系统参与者进行交互、并由系统执行的动作序列。注意,不要把用例理解成计算机进程或计算机进程的模型,也不要把用例理解成是一个功能点。
通常一个用例名称是从参与者的角度而非系统的角度来命名。其名称由2~3个词语组成,第一个是动词,第二个是名词,其后一般为形容词。例如,源于“客户”参与者的“购买衬衫”用例。
一个用例的基本获取步骤如图1-2所示。即:(1)定义所开发的应用系统的边界;(2)识别出该应用系统的所有参与者(或称为角色);(3)对每一个识别的角色分别确定①该角色参与的所有业务活动、②各种业务活动完成的事件序列、③激发上述每一事件的角色;(4)对第(3)步骤中的事件序列进行分析,去掉其中重复的事件序列;(5)用结构化的自然语言来描述第(4)步骤中的每一个事件序列,得到初步确定的每一个用例;(6)对第(5)步骤中的每一个用例进行分析和必要的重组,采用①包含(include)、②扩展(extend)和③泛化(generalization)等关系来表示用例之间的关系,最终得到所有的用例。
|
| 图1-2 获取用例的基本步骤 |
若从几个执行相同功能步骤的用例中,将公共步骤提取成独立的用例,那么这个提取出来的用例就称为抽象用例。它代表某种形式的“复用”,可以降低用例之间的冗余。
由某个更复杂的用例提取出来的事件序列所构成的用例称之为扩展用例,它可以简化原有用例并扩展其功能。
用例场景是对发生的单个用例或单个用例实例的叙述,即它是在用例中活动的某些特定顺序中的一个顺序。软件系统几乎都是用事件触发来控制流程的。事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。场景法就是通过用例场景描述业务操作流程,从用例开始到结束遍历应用流程上所有基本流(基本事件)和备选流(分支事件)。场景也被称作是用例的实例。
用例建模是指使用用例的方法来描述系统的功能需求的过程。其主要包括用例图和用例规约这两部分内容。其中,用例图描述的是关于系统功能的一个概述,它用于确定系统中所包含的参与者、用例和两者之间的对应关系。针对每一个用例都应该有一个用例规约文档与之相对应,该文档描述用例的细节内容。
使用用例分析方法就是要试图找到问题领域内所有相对独立的参与者和事件,并把业务流程当成是这些参与者和事件之间的交互结果(在UML规范中用活动图或序列图来描述)。
在用例模型中,可以使用构造型(Sterotype)<<use case>>来扩展标准UML包的语义。这个新的包 被称为用例包(Use Case Package),主要用于分类管理用例模型中的模型元素。另外,一个应用系统需要有多少个用例,这就涉及到用例的粒度问题。用例的粒度不但决定了用例模型级的复杂度,而且也决定了每一个用例内部的复杂度。通常应根据每个系统的具体情况,灵活地把握各个层次的复杂度,在尽可能保证整个用例模型的易理解性前提下决定用例的大小和数目。
【典型题1-2-2】 (2005上半年试题2、3)● 在用例建模的过程中,若几个用例执行了同样的功能步骤,这时可以把这些公共步骤提取成独立的用例。这种用例称为 (1) 。在UML的用例图上,将用例之间的这种关系标记为 (2) 。
(1) A.扩展用例 B.抽象用例
C.公共用例 D.参与用例
(2) A.association B.extends
C.uses D.inheritances
要点解析:
用例(use case)描述了一个与系统参与者进行交互、并由系统执行的动作序列。UML规范提供了用例之间包含(include)、扩展(extend)和泛化(generalization)等3种相关性的关系,各种关系功能及区别见表1-2。
表1-2 用例各种关系说明表
|
关 系 |
关 健 字 |
描 述 |
对 应 用 例 |
|
包含关系 |
include 或uses |
从两个或两个以上的原始用例中提取公共行为,或发现能够使用一个构件来实现某一用例的部分功能。意味着所包含的用例将始终出现 |
抽象用例 |
|
扩展关系 |
extend |
将较复杂的步骤提取成专门的用例,以便简化原始用例并扩展其功能的行为。扩展的出现是有条件的,并且每次并不一定出现 |
扩展用例 |
|
泛化关系 |
generalization |
描述了一般事物与该事物中特殊种类之间的关系,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系 |
(较少 使用) |
由以上分析可知,抽象用例是从几个执行相同功能步骤的用例中,将公共步骤提取而成的独立用例。可见抽象用例代表某种形式的“复用”,它是降低用例之间冗余的一种工具。例如,在一个“订单输入子系统”中,创建新订单和更新订单都需要核查用户帐号是否正确。那么,用例“创建新订单”、“更新订单”与用例“核查客户帐号”之间是一种包含(include)关系。
对于选项A的“关联(Association)”是两个或多个特定类之间的关系,它描述了这些类元的实例的联系。选项D的“继承(inheritances)”描述了子用例与父用例之间的一般关系。
解答此类试题的一般思路是识记用例的3种关系。
参考答案:(1)B;(2)C。
【典型题1-1-3】 (2005下半年试题3)● 当 时,用例是捕获系统需求最好的选择。
A.系统具有很少的用户 B.系统具有很少的接口
C.系统算法复杂,功能单一 D.系统有很多参与者
要点解析:
用例(use case)描述了一个与系统参与者进行交互、并由系统执行的动作序列。它是开发者与用户交流的工具,可用来定义系统的边界。当所开发的系统有很多参与者时,用例是捕获系统需求的最好选择。
解答此类试题的一般思路是理解用例的应用场合。
参考答案:D
【典型题1-1-4】 (2005下半年试题4)● 现有两个用例UC1和UC2。其中UC2是一个完整的用例,可被实例化,而UC1需要UC2中的事件流才可被实例化,且UC1指定了使用UC2的精确位置,则UC1和UC2间的关系是“ ”。
A.include B.extend
C.generalize D.call
要点解析:
注意本试题描述中的用词“精确位置”,说明用例UC1对用例UC2的实现很重要。由试题的关键信息“UC1需要UC2中的事件流才可被实例化”可知,作为一个完整的用例的UC2实现了用例UC1的部分功能。因此,应该使用包含(include)关系来表示用例UC1和UC2之间的关系。
如果一个用例明显混合了两种(或两种以上)的不同场景,即在具体情况可能发生多种活动,可将这个用例分为一个主用例和一个或多个辅助用例时,可以使用选项B的扩展关系(extend)来表示用例间的关系。
选项C的“generalize”在UML可解释成“泛化”;选项D的“call”可解释成“调用”。
解答此类试题的一般思路是消化和理解用例间各种关系的基本概念。
参考答案:A
【典型题1-1-5】 (2005下半年试题7)
● 下列关于UML叙述正确的是 。
A.UML是一种语言,语言的使用者不能对其扩展 B.UML仅是一组图形的集合
C.UML仅适用于系统的分析与设计阶段 D.UML是独立于软件开发过程的
要点解析:
UML是一种图形语言,用户可对该语言进行扩展,它贯穿于系统开发的整个生命周期,并且可独立于系统的开发过程。
解答此类试题的一般思路是记忆。
参考答案:D
思考与讨论:
在对某一主题进行描述辨误的题型中,需要特别注意选项中的“仅”、“只能”、“只有”、“都不”等绝对性的词语,往往含有这一类型选项的描述是不正确的。
【典型题1-1-6】 (2006下半年试题2、3)
● 在UML的通用机制中, (1) 用于把元素组织成组; (2) 是系统中遵从一组接口规范且付诸实现的物理的、可替换的软件模块。
(1) A.包 B.类
C.接口 D.构件
(2) A.包 B.类
C.接口 D.构件
要点解析:
在UML规范中,将包定义为用于把元素组织成组的通用机制。包含其他元素,如类、接口、构件、节点、协作、用例、图及其他的包。
UML中的构件是遵从一组接口并提供一组接口的实现,是组成事物的元素。它是可付诸实现物理的、可替换的软件模块。可见,包是一个构件的抽象化的概念,是把类元按照一定的规则分成组(或称为模块)。
解答此类试题的一般思路是识忆。
参考答案:(1)A;(2)D。
考点链接1.1.2:UML的事物
出题概率:25~40% 考查难度:★
UML的结构事物包括①类、②接口、③协作、④用例、⑤主动类、⑥构件、⑦节点等。各结构事物的定义见表1-3。
表1-3 UML各结构事物定义表
|
名 称 |
关 健 字 |
定 义 |
|
类 |
class |
是一组具有相同属性、操作、关系和语义的对象描述 |
|
接口 |
interface |
是描述类或构件的一个服务的操作 |
|
协作 |
collaboration |
描述了在一定的语境中一组对象以及实现某些行为的这些对象间的相互作用 |
|
用例 |
use case |
描述系统在对事件做出响应时所采取的行动,即它确定了一个与系统参与者进行交互、并由系统执行的动作序列 |
|
主动类 |
active class |
具有主观能动性的类 |
|
构件 |
component |
系统中遵从一组接口且提供其实现的物理的、可替换的部分 |
|
节点 |
node |
运行时的物理对象,代表一个计算机的资源,通常至少有存储空间和执行能力 |
对于表1-3中的“接口”,其作用有:①用于说明类或构件的某种服务的操作集合,并定义了该服务的实现;②用于一组操作名,并说明其特征标记和效用(注意不是“结构”);③为一组共同实现系统或部分系统的部分行为命名等。接口不为类或构件的操作提供实现,其操作列表可以包括类和构件的预处理信号。另外接口参与关联,但不能作为关联的出发点。它还可以泛化元素,子接口继承其祖先的全部操作并可以有新的操作,实现则被视为行为继承。
协作是动作过程中产生的一类类元。协作中有在运行时被对象和连接占用的槽,该协作槽也称为角色。角色描述了协作中对象或连接目的。
节点是位置(Location)的单位。其中,位置被定义为一个运行时实体在环境中的物理放置,如分布式环境中的对象或分栏。在UML规范中,位置是分散的。运行时的对象及构件实例可以驻留在节点上。
UML的行为事物主要包括交互(Interaction)和状态机(state machine)。其中,交互是协作中的一个消息集合,这些消息被类元角色通过关联角色交换。当协作在运行时,受类元角色约束的对象,通过受关联角色约束的连接交换消息实例。可见,作为行为事物,交互是一组对象之间为了完成一项任务(如操作),而进行通讯的一系列消息交换的行为。
状态机是一个状态和转换的图,作用是描述类元实例对事件接收的响应。状态机可以附属于某个类元(类或用例),还可以附属于协作和方法。
包(package)是UML的分组事物。它是一种把元素组织成组的通用机制,是一个构件(component)的抽象化概念。包中可以包含类、接口、构件、节点、协作、用例、图以及其他的包等元素。
注解(note)是UML的注释事物,它是一种附加定义,用于告知被注解对象的性质、特征、用途等。
【典型题1-1-7】 (2006下半年试题32)● 用例从用户角度描述系统的行为。用例之间可以存在一定的关系。在“某图书馆管理系统”用例模型中,所有用户使用系统之前必须通过“身份验证”。“身份验证”可以有“密码验证”和“智能卡验证”两种方式。“身份验证”、“密码验证”和“智能卡验证”之间是
关系。
A.关联 B.包含 C.扩展 D.泛化
要点解析:
通常在用例图中可使用关联(Association)、包含(include)、扩展(extend)和泛化(Generalization)等4种关系。当参与者与用例之间进行交互时,用例和参与者之间拥有选项A的“关联”关系。
在一个复杂系统中,不同的用例之间可能存在一些相同的行为,可将这些相同的行为提取出来单独组成一个用例。当其他用例使用该用例时,用例之间便形成了选项B的“包含”关系。
在用例的执行过程中,可能会出现异常行为,也可能会在不同的流程分支中选择执行。这时可以将异常行为或可选分支抽象成一个单独的扩展用例,它与主用例之间形成选项C的“扩展”关系。
选项D的“泛化(Generalization)”关系是描述用例之间一般与特殊关系的,不同的子用例代表了父用例的不同实现方法。“密码验证”、“智能卡验证”是“身份验证”两种不同的实现方法。它们与“身份验证”之间是泛化关系。
参考答案:D
【典型题1-1-8】 (2007下半年试题1)
● 采用UML分析用户需求时,用例UCl可以出现在用例UC2出现的任何位置,那么UCl和UC2之间的关系是 。
A.include B.extend
C.generalize D.call
要点解析:
用例之间的泛化关系类似于类之间的泛化关系。子用例继承父用例的行为与含义。子用例还可以增加或者覆盖父用例的行为。子用例可以出现在父用例出现的任何位置。本试题中,用例UCl可以出现在用例UC2出现的任何位置,那么UCl与UC2之间是选项C的“泛化(Generalization)”关系。注意,不是“用例UCl可以出现在用例UC2的任何位置”。
选项A的“包含(include)”关系,表示基础用例在它内部,说明某一位置上显式的合并是另一个用例的行为。被包含用例从不孤立存在,仅作为某些包含它的更大的基础用例的一部分出现。
选项B的“扩展(extend)”关系,表示基础用例在延伸用例间的一个位置上,隐式合并了另一个用例的行为。基础用例可以单独存在,但是在一定的条件下,它的行为可以被另一个用例的行为延伸。
选项D的“call”可解释成“调用”。
参考答案:C
【典型题1-1-9】
● UML用例图展示了各类actor与系统所提供的用例之间的连接。在银行储蓄管理信息系统中,属于外部actor的是 。
A.存折和存取款单 B.银行工作人员
C.储蓄客户 D.储蓄机
要点解析:
在UML用例图中,外部行为者(actor)是指那些可能使用用例的人或外部系统。在银行储蓄管理系统中,银行工作人员、储蓄客户、储蓄机均可能使用该信息系统中的某些用例。因此,它们都是该信息系统的外部行为者(actor)。
参考答案:A
【典型题1-1-10】
● 以下关于UML文档的叙述正确的是 。
A.描述了面向对象分析与设计的结果 B.指导开发人员如何进行面向对象设计
C.给出了软件的开发过程和设计流程 D.指导开发人员如何进行面向对象分析
要点解析:
UML文档仅是设计者与开发人员采用UML语言进行系统分析与设计的结果,并没有给出如何进行系统开发和采用哪种开发流程,它也不指导开发人员如何进行面向对象设计。
参考答案:A
【责任编辑:
夏书 TEL:(010)68476606】