IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Architecture  >

建模揭密,第 3 部分: 为用户模型扩展 UML

关联、关系和构造型

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

英文原文

英文原文


级别: 初级

Mandy Chessell, IBM 杰出工程师、杰出发明家, IBM
Larry Yusuf, 解决方案架构师, IBM

2008 年 9 月 19 日

本系列文章提供了关于如何构建用户模型的基本信息。在这第三篇文章中,了解用于扩展统一建模语言 (UML) 的用户模型的构造型和关系。用户模型是对一组人员和这些人员如何使用某个 IT 解决方案的描述。

引言

用户模型是对一组人员和这些人员如何使用某个 IT 解决方案的描述。这种类型的建模基于主要的可用性理论与实践,并允许解决方案架构师指定 IT 解决方案的外部设计元素,以便该解决方案对所有类型的用户都有用并可用。

本系列文章的第 1 部分 “从用户的角度创建系统规格说明书”介绍了用户模型以及它为什么可以帮助改进构建的系统的可用性。第 2 部分“构建用户模型”介绍了如何为支持安全 Web 资源访问的简单组件构建用户模型。

在本文中,您将了解用于扩展统一建模语言 (UML) 的用户模型的构造型和关系。





回页首


UML 基础

用户模型是使用 UML 构建的,它是用于描述 IT 系统设计的行业标准语言。它非常灵活,并允许您在许多抽象级别上对系统进行建模。

块 (Blob) 和线段 (line) 是 UML 的基本要素。表示设计中的概念,用于连接块的线段各自表示块之间的关系。可以使用箭头、基数和其他形状来修饰关系,以提供有关关系特征的更多信息。


图 1. 块和线段
块和线段

UML 中的块的形状反映了它们所属的广泛类别。

对于用户建模,(矩形)表示用户模型中的各种概念,例如用户角色、用户目标和用户任务。使用构造型来指定概念的类型。将构造型看作子类别。它在尖括号中显示 (<< >>)。

在大型模型中,每个构造型可以拥有一个图标(或修饰),以便于识别不同的构造型。图 2 中的示例显示了名为“资源所有者”(Resource Owner) 的概念,其拥有一个定义为用户角色的构造型。


图 2. 用户模型中的概念
用户模型中的概念

特性 (Attribute) 描述概念的属性,而构造型描述概念的属性的类型。在图 2 中,“Resource Owner”具有名为“Responsible for controlling the use of owned resources”的单个属性。该属性应用了 <<definition>> 构造型。





回页首


关系的类型

虽然 UML 支持 UML 类中的大量关系,但用户模型有更多限制。它们仅在选定的位置使用关联、依赖和泛化。

关联用于显示两个 UML 类之间以某种方式联系,通过在两个 UML 类之间画的线段表示。关联可以使用开放箭头和黑色或白色菱形来修饰,以提供有关关联类型的更多信息。表 1 说明了用户建模中最常见的四种类型的关联。


表 1. 关联
关联的名称外观含义
双向 没有箭头指示双向关联,表示两端都了解对方。

例如,双向关联经常用于两个用户角色之间,表示这两个用户角色之间需要进行通信。

定向 开放箭头指示关系是单向的。只有远离箭头的实例了解位于另一端的实例。
聚合 使用白色菱形指示,聚合关系表示靠近菱形的 UML 类有时维护对另一个类的实例的引用。但是,该 UML 类不拥有该实例,并且可以在不破坏任何元素的情况下打断关联。
组合 黑色菱形指示组合关系。远离菱形的 UML 类是另一个 UML 类的一部分或属于该 UML 类。

每个关联显示在关系中涉及各个 UML 类的多少个实例。关联的数目称为关系的基数,它表示为数字(例如 1)或数字范围(例如 1..7)。星号 (*) 用于表示“许多”。因此,1..* 表示“一个或以上”。如果单独使用星号,则是零个或以上的速记法。

基数在关系的两端表示。如果在 UML 类 A 和 B 之间存在关系,则位于关系 A 端的基数显示 B 连接到多少个 A。例如,如图 3 所示,一只猫有四条腿,而一条腿只能属于一只猫。


图 3. 关联示例
关联示例

构造型也适用于关联。通过属性窗格上的 Stereotypes 选项卡在关联的角色上设置构造型(在图 3 中:has、wears、cares for、lives with 和 eats),如图 4 所示。


图 4. 设置构造型
设置构造型

一旦应用,构造型就会显示在 Project Explorer 树视图中。图 5 显示了同一属性在应用 <<primary_goal>> 构造型前后的两种视图。


图 5. 应用 <<primary_goal>> 构造型前后
应用 <<primary_goal>> 构造型前后

依赖关系用于两个用户目标之间,其中一个用户目标的完成依赖于另一用户目标的完成。依赖关系在两个用户目标属于不同的用户角色时尤为重要,因为这是需要协作或移交工作的区域。依赖关系使用带有表示依赖方向的箭头的虚线表示。在图 6 的示例中,只有在其运行所在的基础设施可用时,应用程序才可用。


图 6. 依赖关系
依赖关系

泛化关系由连接两个 UML 类并带有封闭箭头的线段表示。它表示远离箭头的 UML 类是另一个 UML 类的具体化。在图 7 中,Java™ Developer 用户角色是具体化的 Developer 用户角色。


图 7. 具体化角色
具体化角色

具体化包含另一个类的所有关联和属性,加上一些与其连接的附加关联。如果具体化是使用与另一个 UML 类名称相同的关联建模的,则使用具体化的定义。





回页首


构造型和关系

这一部分提供的表介绍了在 UML 类上使用的构造型和用户模型中的关系类型。


表 2. 用户角色
用户角色

<<user_role>>

描述可以分配给个人或团队的相关职责集

属性
图标和构造型类型说明
<<definition>> - 对用户角色的简短描述
<<primary_goal>> 具有 <<user_goal>> 构造型的类定义用户角色的用户目标
<<assumed_skill>> 具有 <<skill_set>> 构造型的类定义担任用户角色的人员假定应具有的技能集

表 3. 用户目标
用户目标

<<user_goal>>

描述用户角色希望达到的最终状态。它说明用户角色执行任务的目的。

属性
图标和构造型类型说明
<<definition>> - 对用户目标的简短描述
<<measure>> - 如何根据目标衡量成果
<<target>> - 用于指示已成功实现目标的目标
<<subgoal>> 具有 <<user_goal>> 构造型的类指示此用户目标可通过实现引用的用户目标来部分地实现
<<supporting_task>> 具有 <<user_task>> 构造型的类指示此用户目标可通过执行此用户任务来实现

表 4. 用户团队
用户团队

<<user_team>>

合作以实现共同目标的用户角色分组

属性
图标和构造型类型说明
<<definition>> - 对用户团队的简短描述
<<member>> 具有 <<user_role>> 构造型的类团队中的用户角色
<<primary_goal>> 具有 <<user_goal>> 构造型的类团队的用户目标

表 5. 技能集
技能集

<<skill_set>>

描述可以构成课程或书籍一部分的相关技能集,或某个来自特定专业或学科的人员预期拥有的技能集。

属性
图标和构造型类型说明
<<definition>> - 对技能集的简短描述
<<skill>> - 与技能集关联的技能
<<glossary>> 具有 <<user_object>> 或 <<user_artifact>> 构造型的类引用的类是拥有此技能集的用户角色所理解的概念
<<nested_skill_set>> 具有 <<skill_set>> 构造型的类指示在此技能集中嵌套了技能集(必备技能)


表 6. 规程
规程

<<discipline>>

相关技能集的分组

属性
图标和构造型类型说明
<<definition>> - 对规程的简短描述
<<nested_skill_set>> 具有 <<skill_set>> 构造型的类。 技能集是本规程的一部分
<<nested_discipline>> 具有 <<discipline>> 构造型的类。 在此规程中嵌套了规程


表 7. 用户任务
用户任务

<<user_task>>

用户任务描述必须完成的一项工作

属性
图标和构造型类型说明
<<definition>> - 对用户任务的简短描述
<<subtask>> 具有 <<user_task>> 构造型的类指示引用的用户任务是此用户任务的实现的一部分
<<follow_on_task>> 具有 <<user_task>> 构造型的类表明用户在完成此任务后通常会执行引用的用户任务
<<action_target>> 具有 <<user_object>>、<<user_object_filter>> 或 <<user_artifact>> 构造型的类用户任务在引用类上作为其操作中的一个步骤运行。关联上的关键字描述了所执行的操作。用户对象和用户对象筛选器的关键字的示例包括:
  • <<create>> - 创建一个或多个实例。
  • <<update>> - 更新一个或多个实例。
  • <<view>> - 显示一个或多个实例以供检查。
  • <<browse>> - 显示一个或多个实例以供导航至嵌套对象。
  • <<delete>> - 删除一个或多个实例。
  • <<select>> - 从列表中选择一个或多个实例。
  • <<search>> - 从搜索中检索到一个或多个实例。
  • <<compare>> - 显示一个或多个用于比较的实例。
  • <<merge>> - 显示一个或多个用于比较的实例,并选择属性以创建合并原始实例的新实例。
  • <<reorganize>> - 由用户在内部对一个或多个实例进行重组。
用户工件的关键字的示例包括:
  • <<new>> - 在磁盘上创建一个或多个实例。
  • <<open>> - 打开一个或多个实例并显示其内容。
  • <<save>> - 将一个或多个实例的内容保存到磁盘上。
  • <<remove>> - 销毁一个或多个实例。
  • <<close>> - 用户不再使用用户工件。
  • <<file>> - <<save>> 和 <<close>> 的组合
此属性的基数描述在操作中涉及到引用类的多少个实例。
<<required_skill_set>> 具有 <<skill_set>> 构造型的类指示用户角色必须拥有引用的技能集才能执行此用户任务。


表 8. 用户域
用户域

<<user_domain>>

相关用户任务的逻辑分组。用户域可以由其他用户域组成。

属性
图标和构造型类型说明
<<definition>> - 对用户域的简短描述
<<nested_domain>> 具有 <<user_domain>> 构造型的类指示在此用户域中嵌套了用户域
<<nested_task>> 具有 <<user_task>> 构造型的类指示在此用户域中包含用户任务分组


表 9. 用户对象
用户对象

<<user_object>>

描述用户执行用户任务所必须理解的概念。对概念的理解源自用户角色所具有的技能集。

属性
图标和构造型类型说明
<<definition>> - 对用户对象的简短描述
<<taught_by>> 具有 <<skill_set>> 构造型的类此用户对象能够被具有此技能集的用户角色所理解。
<<action_source>> 具有 <<user_task>> 构造型的类引用的用户任务可以在此用户对象上操作。
<<user_attribute>>
  • 来自 UML 或某个模型库的基元类型
  • UML 枚举
  • 具有 <<user_object>> 或 <<user_datatype>> 构造型的类
用户感兴趣的此用户对象的属性
<<dynamic_enum>> 参见 <<user_attribute>>。只出现在同时具有 <<user_attribute>> 构造型的属性中。它指示此属性的允许值在运行时定义为列表。
<<identifier>> 参见 <<user_attribute>>。只出现在同时具有 <<user_attribute>> 构造型的属性中。它指示该属性为用户提供有关定位所含用户对象的实例的有用信息。


表 10. 用户数据类型
用户数据类型

<<user_datatype>>

用户属性的复杂类型

属性
图标和构造型类型说明
<<definition>> - 对用户数据类型的简短描述
<<user_attribute>>
  • 来自 UML 或某个模型库的基元类型
  • UML 枚举
  • 具有 <<user_object>> 或 <<user_datatype>> 构造型的类
用户感兴趣的属性
<<dynamic_enum>> 参见 <<user_attribute>>。只出现在同时具有 <<user_attribute>> 构造型的属性中。它指示此属性的允许值在运行时定义为列表。


表 11. 用户对象筛选器
用户对象筛选器

<<user_object_filter>>

来自用户对象的属性的受限列表。与用户任务一起使用以显示它使用哪些属性。

属性
图标和构造型类型说明
<<definition>> - 对用户对象筛选器的简短描述
<<filtered_object>> 具有 <<user_object>> 构造型的类。 引用的用户对象通过此用户对象筛选器进行过滤。
<<user_attribute>>
  • 来自 UML 或某个模型库的基元类型
  • UML 枚举
  • 具有 <<user_object>>、<<user_object_filter>> 或 <<user_datatype>> 构造型的类
用户感兴趣的引用用户对象的属性
<<dynamic_enum>> 参见 <<user_attribute>>。只出现在同时具有 <<user_attribute>> 构造型的属性中。它指示此属性的允许值在运行时定义为列表。
<<identifier>> 参见 <<user_attribute>>。只出现在同时具有 <<user_attribute>> 构造型的属性中。它指示该属性为用户提供有关定位所含用户对象的实例的有用信息。


表 12. 用户工件
用户工件

<<user_artifact>>

用户创建或使用的物理资产,通常是文件


属性
图标和构造型类型说明
<<definition>> - 对用户工件的简短描述
<<taught_by>> 具有 <<skill_set>> 构造型的类此用户工件能够被具有此技能集的用户角色所理解。
<<action_source>> 具有 <<user_task>> 构造型的类引用的用户任务可以在此用户对象上操作。
<<user_attribute>>
  • 来自 UML 或某个模型库的基元类型
  • UML 枚举
  • 具有 <<user_object>> 或 <<user_datatype>> 构造型的类
用户感兴趣的此用户工件的属性。如果用户工件是文件,那么它可以是文件的属性或文件包含的内容。
<<dynamic_enum>> 参见 <<user_attribute>>。只出现在同时具有 <<user_attribute>> 构造型的属性中。它指示此属性的允许值在运行时定义为列表。
<<identifier>> 参见 <<user_attribute>>。只出现在同时具有 <<user_attribute>> 构造型的属性中。它指示该属性为用户提供有关定位所含用户工件的实例的有用信息。





回页首


总结

本文提供了在用户建模中使用的 UML 建模元素的目录。因为用户建模只需要少量的 UML 知识,所以解决方案架构师可以专注于模型的内容。





回页首


致谢

特别感谢我们的同事审阅了本文并提供了极好的评论和反馈,尤其是 Rebecca Schaller、David Radley、Iain Duncan 和 Dan Wolfson。



参考资料

学习

获得产品和技术
  • 获取免费的 架构师工具包系列,了解最新的 IBM 企业架构师开发工具技术文档和资源。

  • 下载 IBM 产品评估版,获得来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。

讨论


作者简介

作者照片

Mandy Chessell,系英国皇家工程学会会员(FREng)、特许工程师资格(CEng),及英国计算机协会成员(FBCS)。她从 1987 年开始在 IBM 任职。她是 IBM 杰出工程师(IBM Distinguished Engineer)、IBM 杰出发明人(IBM Master Inventor)以及 IBM 技术研究院(IBM Academy of Technology)的成员。目前,她正担任 IBM 软件部信息解决方案部门(Information Management division)的首席架构师(Lead Architect)。在先前担任的职位上,她为 CICS、Encina、TxSeries、Component Broker 以及 WebSphere 等产品开发了许多新功能。她还提交了 40 项专利、当中的 15 项已经获得批准。在她的技术职责之外,Mandy 还参与了在于增强 IBM 技术人员技术活力的倡议活动。这些活动包括了辅导、为员工技术职业发展以及晋升委员会服务,领导创新项目以及组织 Women in Technology 活动等等。在 IBM 之外,Mandy 还是英国皇家工程学会(Royal Academy of Engineering)的会员,以及英国谢菲尔德大学(University of Sheffield)的客座教授。在 2001 年,她成为了第一位获得英国皇家工程学会银质奖章的女性。她还曾在 2000 入选由美国 MIT 的 Technology Review 杂志评选的 “TR100” 青年发明家。目前,由于她为创新人群的推动工作,她还获得了英国女性发明家(British Female Innovators)称号、Inventors Network (BFIIN) 的“Building Capability”奖,以及 BlackBerry “2006 Best Woman in Technology - Corporate Sector” 奖。


作者照片

Larry Yusuf 是 Software Group Strategy and Technology 的一名解决方案架构师,并开发了将组织上下文和用户透视图引入复杂软件解决方案体系结构和设计的全面设计技术。他领导了填补软件组合空缺的集成外接程序的开发。在早期工作中,他曾致力于新兴技术、解决方案开发和测试。他拥有业务集成解决方案、模型驱动的开发、面向模式的软件开发和事件管理方面的经验。他广泛从事关于这些主题的写作和演讲,并申请了七项专利。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?







回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款