级别: 中级 Will Jones, 软件工程师, IBM Jay Limburn, 资深软件工程师, IBM
2009 年 12 月 04 日 在本文中,学习怎样使用 User Interface Generator 提供的工具,来创建一个用户模型。模型遵循建模揭密中概括的原则,本文还描述了某个系统的用户怎样与模型相交流。该工具提供了对 Rational® Software Architect 现存 UML 建模功能的扩展,该扩展对于 UML 建模新手以及有经验的建模人员来说,都简化了用户的建模过程。学习怎样使用 User Interface Generator 来最小化学习曲线,以及显著降低创建用户模型所需要的时间。
引言
User Interface Generator,是 IBM® InfoSphere Master Data Management (MDM)Workbench 的一个构件,它可以帮助您快速构建一个统一建模语言(UML)用户模型。一旦模型完成,用户模型就可以用于生成一个完整的 Web 应用程序。User Interface Generator 对 Rational Software Architect 提供了一些扩展功能,支持您在对 UML 技术所知甚少的情况下,轻松创建一个用户模型。本文介绍了这些扩展功能,并展示了怎样使用这些功能,来快速创建一个有效的 UML 用户模型。在本文中的范例中,您将会:
- 使用扩展功能来为一个虚拟的出版机构创建一个简易的用户模型。
- 创建能够呈现出版机构内文章的对象。
- 对角色、目标建模,其中角色是定义谁来管理上述这些对象,目标是对上述对象执行操作所必须满足的。
为了能够完全跟的上本文中所举的例子,假设您已经在电脑上安装了 Rational Software Architect™(RSA)7.0.0.5 版本,或者更高版本,以及 User Interface Generator 工具。
创建一个新的用户模型
如前面的“建模揭秘”系列文章所述,用户模型中的元素就是使用 UML 构造型来表示的,例如 «user_object» (应用于类)以及 «primary_goal» (应用于属性)。用户建模工具以 UML 概述的形式,提供了所有的分组构造型,一般称作 User Modeling Profile 。因为这个分组的缘故,任何您所构建的用户模型必须拥有应用的概述。您可以使用 RSA 来手动对某个模型应用概述(如果您有一个现存的模型,而您想对这个模型添加用户建模实体,就可以这样做),或者您可以创建一个带有预应用概述的新模型。
从模板中创建一个用户模型
按照以下步骤,来从模板创建一个用户模型:
- 从菜单中选择 File>New>UML Model。
接着就会出现 New UML Wizard。
- 从 Standard Template 中选择以创建一个模型。
- 点击 Next。
- 从模板的列表中,选择 User Model 项目。
- 如果您愿意的话为您的模型选择一个名字。本文中所使用的模型叫做
Sample。
- 点击 Finish。
新的模型就被创建了。它拥有预应用的 User Modeling Profile,以及需要的导入的用户建模数据类型。
推广用户模型
在本章节中您将要:
定义团队和角色
从模型的“顶端”开始通常比较方便,您还需考虑一下在您的从事领域内存在哪些角色,以及他们在团队内是怎样相互合作的。对于例子中的模型,您可以使用以下的方法:
«user_team» Content Management
- «user_role» Author(作者)
- «user_role» Editor(编辑)
- «user_role» Publisher(出版人)
在您自己的图表中定义这些概念,这些图表位于您构建模型时创建的 User Roles 包中。注意,默认条件下,在用户模型中会创建一定量的包。这种结构会在用户模型内自动创建,以在模型中的不同构件之间提供一个逻辑隔离带。这样,就可以确保模型随着多次迭代规模和复杂性都成倍增长的情况下,仍然保持较高的维护性。我们推荐建模者使用这种包结构,并将不同的构件置于相关的包中。
创建一个新的图表
按照以下步骤来创建一个新的图表:
- 右键点击模型中的 User Roles 包。
- 从 Add Diagram 子菜单中,选择 Class Diagram 或者 Freeform Diagram。
这样,新的图表就在图表编辑器中创建并打开。
- 输入新图表的名字,本例中使用的是
UserRoles。
构建空白的图表并打开之后,您的模型结构应该类似于图 1 中所示的那样。
图 1. 用户角色图
现在您使用配置板来向新的图表添加角色。配置板由 RSA 提供,它支持图表节点与边缘的快速创建。它包含了归类到 drawers 中的一系列工具,如下所示。
图 2. RSA 建模配置板
在配置板中,展开 User Model drawer,如图 2 所示,如果它还没有展开的话。User Model drawer 包含了创建类的一系列工具,以及预应用的 User Modeling Profile 中的一些构造型,还有后面将会讨论到的其他一些项目。现在您只需创建一些角色。
从配置板中创建类
有两种方法,可以将元素从配置板中添加至 UML 图表,如下所述。
- 要么是:
- 点击 User Role 工具。
- 将鼠标移到您想要对象位于图表位置的地方。
- 点击图表。
- 新的 «user_role» 就创建出了。
- Or:
- 点击 User Role 工具,并将其拖拉到您想要角色位于的地方。
- 释放鼠标按钮。
- 新的 «user_role» 就创建出了。
一旦向图表完成了添加,您就有机会给新实体起一个名字。将其重命名为 Author。图 3 显示了新的 <user_role>
图 3. 新创建的 <user_role>
为了解释设置角色的目的,您应该给出一个定义。
向元素添加一个定义
按照以下方法,来向元素添加一个定义:
- 右键点击图表中的 Author«user_role»。
- 从菜单中选择 Add UML->UserModel->Definition。
这样,在 Author «user_role» 内就创建了一个带有 «definition» 构造型的属性。
您能够更改默认的 «definition»,并且应该这样做,以确保 Author «user_role» 得到合理的定义。
对 Editor and Publisher 角色重复上述操作,现在您的图表看起来应该类似于图 4。
图 4. 所有的 <user_roles>
此时,您要将角色分组到内容管理 «user_team» 中。使用配置板以创建 «user_team»,并给其起一个合适的名字。然后您应该给一个 «definition»,就像您对角色所做的那样。
您需要将 «user_team» 与它的组成角色联系起来。如“建模揭秘,第 1 部分: 从用户的角度创建系统规格说明书”中定义的那样,每一个联系都作为属于 «user_team» 的特征,与应用的 «member» 构造型一起呈现出来。两者之间的关系应该是从 «user_team» 到 «user_role» 的聚合关系(也叫共享关系)。您不需要记住所有这些信息,因为如果您使用的是 Dynamic Connection 工具,那么 RSA 会替您填充所有的细节信息。位于配置板中的 Dynamic Connection,将试着为您所连接的两个类生成一种关系。它甚至会注意到您是否混合了源类与目标类。
创建一个动态连接。
按照以下步骤来创建一个动态连接:
- 从配置板的 User Model drawer 中选择 Dynamic Connection 工具。
- 点击 Content Management «user_team»,并将关系拖拉到您想要将其联系的角色上。
- 释放鼠标按钮。
一个构造型以及聚合关系联系就创建起来了。
使用动态连接的工具,创建 «user_team» 和 Author «user_role» 之间的关系。
将剩余的角色与它们的 «user_team»联系起来,现在您的图表应该如图 5 所示。
图 5. 映射 <<user_role>> 对象的 <<user_team>>
目标与任务
既然团队和角色已经得到了定义,您就需要展示怎样与系统相交流。正如前面总结的那样,您可以将模型的这些部分分割到您自己的图表中。重复上述步骤来创建两个新的图表:
- User Goals 包内一个名为
User Goals的图表。
- User Tasks 包内一个名为
User Tasks的图表。
现在您的模型应该相似于图 6。
图 6. User Goal 与 User Task 图表
您需要定义目标。因为您刚刚设定的目标将会与角色联系起来。您需要刚刚创建的 User Goals 图表上已存在的角色。让我们从 Author «user_role» 开始。
将已存在的类拖拉到一个图表上
按照以下方法,来将已存在的类拖拉到一个图表上:
- 打开新创建的 User Roles 图表。
- 点击 Project Explorer 中的 Author «user_role» ,并将其拖拉到您想要它在图表中出现的地方。
- 释放鼠标按钮。
这样,已存在的 «user_role» 就添加至新图表中了。
用户建模工具使您能够创建与已存在类有关的新类。您不能将新类与已存在的类联系起来,您可以利用这个特性来节省时间,因为您知道将创建的新目标与已存在的角色联系起来。
从已存在的类中创建新类
按照以下方法来从已存在的类中创建新类:
- 右键点击 User Goals 图表中的 Author «user_role»。
- 从内容菜单中,选择 Add UML->UserModel->User Goal。
一个新的 «user_goal» 就创建起来,并与 «user_role» 按适当的关系联系起来。
此时对于所有您新创建的元素,您已经能够在构建新 «user_goal» 后对其进行重命名。将其重命名为 Write Articles。链接的特征可能仍然具有默认的名字 class1(或者与其相似的名字)。如果是这种情况,您应该将其重命名为 Write Articles。按照上面提到的相同步骤来向 «user_goal» 添加以下的定义:
您的 User Goals 图表看起来应该类似于图 7。
图 7. Author <<user_role>> 的 Write Articles <<user_goal>>
查看 Write Articles 特征。它拥有应用的 «primary_goal» 构造型。RSA 也决定了聚合关系的使用也是合适的,RSA 为它的功能与 Dynamic Connection 工具使用相同的逻辑规则,这样在添加新元素和链接已存在的元素时,都能节省不少的时间。
将编辑器与 Publisher <<user_roles>> 拖拉到相同的图表上,并添加以下剩余的目标 :
- 编辑器角色的 Manage Articles 目标。
- Publisher 角色的 Publish Articles 目标。
现在您的 User Goals 图表已经完成了,应该如图 8 所示。
图 8. <<user_role>> 对<<user_goal>>的映射
看起来接下来的逻辑步骤像是对这些目标的附加部分,让我们首先讨论一下模型的其他方面,以便利用 User Interface Generator 提供的其他工具。
构建一个词汇表
词汇表就是组成机构对象的集合,向词汇表添加 Glossary 包内名为 Glossary的图表,如下面所示。
图 9. Glossary 图表
接下来的一步是定义 Article «user_object»。您可以使用前面概括的方法来创建该对象。现在您要向空白的图表添加一个新的元素,所以这样做并没有什么好处。
图 10. Article <<user_object>>
通过添加带有 «user_attribute» 构造型的属性,您需要指出该 «user_object» 的定义。这样做最快的方式,是按从已创建元素创建新元素的方法,来使用内容菜单。
向类添加构造型属性
按照以下方法,来向某个类添加构造型属性:
- 右键点击 Article «user_object»。
- 从内容菜单中,选择 Add UML->UserModel->User Attribute。
新的 «user_attribute» 会添加至选中的类。
- 将 «user_attribute» 重命名为
Article ID。
使用以上的步骤,来在 Article «user_object» 内添加两个 «user_attributes»。将其命名为 Status和 Title。
您可以对 UML 模型内的对象应用多个构造型。两个可应用于 «user_attributes» 的有用构造型是 «dynamic_enum» 和 «identifier»。两个构造型都可以在 «user_object» 内得到有意义的应用。使用内容菜单来进行以下的操作(构造型的意义在“建模揭秘,第 1 部分: 从用户的角度创建系统规格说明书”中有解释):
- 对名为 Status 的 <user_attribute>应用 «dynamic_enum» 构造型。它用于追踪文章的进度,例如追踪它是出于起草阶段还是出版阶段。
- 向名为 Title 的 «user_attribute» 应用 «identifier» 构造型。它用于呈现文章的题目,以及所有文章对象的有意义的标识符。
在添加如上所示的属性之后,词汇图表应该如图 11 所示。
图 11. 完成的 Article 对象
在任务开始之前构建词汇表还有一个好处。很明显从目标以及 Article «user_object»,该系统的用户就能够执行简单的任务,例如添加新的文章,编辑已存在的文章,以及删除旧有的文章等等。任务可以称为 CRUD: Create,Read,Update 以及 Delete 操作。对 «user_object» 也有公共的操作,而 User Interface Generator 工具可以为您创建对象了。
向 «user_object» 添加 CRUD 操作
按照以下方法,向 «user_object» 添加 CRUD 操作:
- 右键点击 Article «user_object»。
- 从内容菜单中,选择 Add UML->UserModel->Default Tasks。
任务呈现了 «user_object» 附近已创建的 CRUD 操作。
大量的新对象将会创建起来。重新排列已创建的元素,根据它们的关系来将它们重命名,并为每一个元素添加定义。如下所示,您可以看到非语法形式表达的以下信息。
图 12. CRUD 任务
User Interface Generator 工具生成了四个 «user_tasks»,并将它们与 Article «user_object» 联系起来。每一个 CRUD 操作都有一项任务,对该任务应用的合适关键词添加有关系(«create»,«view»,«update»,«delete»)。.
«user_object_filter» 已经添加至图表,同时添加的还有两个 «select» 关系。它们显示拥有联系的任务(View,Update 以及 Delete)在执行特定任务的功能之前,首先必须选择一篇文章来执行操作。
注意我们刚刚创建的新任务,会自动在 User Tasks 包内生成,以维持模型的结构。
移动模型附近的语义元素
按照以下方法,来移动模型附近的语义元素 :
- 选择您想要移动至的 Project Explorer 的元素。
- 将元素移动到新位置处。
- 释放鼠标按钮。
元素将会重新定位,但是它仍然会出现在它以前所在的图表中。
模型现在已接近完成,只差目标与任务之间的联系了。此时您的模型应该类似于图 13。
图 13. 模型结构
将前面所有内容联系起来
剩下的最后一步,是指定由哪一项任务完成哪一个目标。通过打开 User Tasks 图表开始(就是我们在前面创建的 User Tasks 包)。从项目导航器中拖拉已存在的目标和任务到它上面。
使用 Dynamic Connection 工具来做出以下的关系:
- 创建遵循书写文章目标的文章。
- 管理文章,它与评审,删除以及更新文章有关。
- 出版文章需要文章的更新(因为需要的信息存储在文章的 Status «user_attribute» 中。
您最终得到的图表应该类似于图 14。
图 14. <<user_goal>>对<<user_task>> 的映射
该模型现在已经完成。它可以通过 User Interface Generator 向导。模型将会生成一个 Web 程序,该程序可以部署到一个支持的 Web 程序上,以提供包含角色、目标、任务的用户界面。
总结
在这篇文章中,您将会学到 User Interface Generator 提供的对 RSA 的用户建模特定扩展,是怎样让用户建模工作变得更加轻松的。使用文中提供的方法,对于不熟悉用户建模的人来说,可以降低复杂性以及学习曲线。User Interface Generator 工具很智能和实用的选择,可以构建用户模型,该模型可以用于生成基于角色的用户界面。
您可以确信您所创建的模型,能与 User Interface Generator 转换以及组成它们的程序很好的协调在一起。您不用担心一些细节信息,例如构造型和关键词。使用文中提供的特征能有效地提高效率,并让新用户了解建模更复杂的部分。
参考资料 学习
获得产品和技术
讨论
作者简介  | 
|  | Will Jones 在伦敦帝国大学的第四年学习,现在正准备进行计算机工程硕士。他是一名充满激情的软件工程师,最近的工作包括扩展 IBM 的 Rational Software Architect 以改善易用性和提升效率。H他已经提交了多个关于 Rational 软件交付平台方面的专利,覆盖了新的工具种类和特性,丰富了用户体验。在 IBM 工作之外,他喜欢参与各种开源软件,做了许多贡献。 |
 | 
|  | Jay Limburn,MBCS CITP,从 2000 年加入 IBM。他是一名 IBM Senior Inventor,目前是位于英国 Hursley 的软件部信息管理分部的一名高级软件工程师。作为在 User Interface Generator 方面的技术负责人,Jay 负责指导 User Interface Generator 的技术方向,并领导团队实现交付承诺。之前,Jay 在许多不同的软件部服务部门,主要在 Lotus 分部,进行面向客户的技术工作,他主要负责 WebSphere Portal Server 的技术咨询工作。他的专业技能领域包括模型驱动开发,解决方案交付和设计,以及 J2EE 技术。Jay 已经编写了许多有关这些主题的出版物,并申请了六项专利。 |
对本文的评价
|