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

developerWorks 中国  >  Rational  >

使用 Rational Software Architect 和 User Interface Generator 来构建一个用户模型

developerWorks
文档选项

未显示需要 JavaScript 的文档选项

英文原文

英文原文


级别: 中级

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 来手动对某个模型应用概述(如果您有一个现存的模型,而您想对这个模型添加用户建模实体,就可以这样做),或者您可以创建一个带有预应用概述的新模型。

从模板中创建一个用户模型

按照以下步骤,来从模板创建一个用户模型:

  1. 从菜单中选择 File>New>UML Model

    接着就会出现 New UML Wizard。

  2. Standard Template 中选择以创建一个模型。
  3. 点击 Next
  4. 从模板的列表中,选择 User Model 项目。
  5. 如果您愿意的话为您的模型选择一个名字。本文中所使用的模型叫做 Sample
  6. 点击 Finish

    新的模型就被创建了。它拥有预应用的 User Modeling Profile,以及需要的导入的用户建模数据类型。





回页首


推广用户模型

在本章节中您将要:

定义团队和角色

从模型的“顶端”开始通常比较方便,您还需考虑一下在您的从事领域内存在哪些角色,以及他们在团队内是怎样相互合作的。对于例子中的模型,您可以使用以下的方法:

«user_team» Content Management

  • «user_role» Author(作者)
  • «user_role» Editor(编辑)
  • «user_role» Publisher(出版人)

在您自己的图表中定义这些概念,这些图表位于您构建模型时创建的 User Roles 包中。注意,默认条件下,在用户模型中会创建一定量的包。这种结构会在用户模型内自动创建,以在模型中的不同构件之间提供一个逻辑隔离带。这样,就可以确保模型随着多次迭代规模和复杂性都成倍增长的情况下,仍然保持较高的维护性。我们推荐建模者使用这种包结构,并将不同的构件置于相关的包中。

创建一个新的图表
按照以下步骤来创建一个新的图表:

  1. 右键点击模型中的 User Roles 包。
  2. 从 Add Diagram 子菜单中,选择 Class Diagram 或者 Freeform Diagram

    这样,新的图表就在图表编辑器中创建并打开。

  3. 输入新图表的名字,本例中使用的是 UserRoles

构建空白的图表并打开之后,您的模型结构应该类似于图 1 中所示的那样。


图 1. 用户角色图
显示用户角色的图表

现在您使用配置板来向新的图表添加角色。配置板由 RSA 提供,它支持图表节点与边缘的快速创建。它包含了归类到 drawers 中的一系列工具,如下所示。


图 2. RSA 建模配置板
 RSA 建模配置板

在配置板中,展开 User Model drawer,如图 2 所示,如果它还没有展开的话。User Model drawer 包含了创建类的一系列工具,以及预应用的 User Modeling Profile 中的一些构造型,还有后面将会讨论到的其他一些项目。现在您只需创建一些角色。

从配置板中创建类
有两种方法,可以将元素从配置板中添加至 UML 图表,如下所述。

  • 要么是:
    1. 点击 User Role 工具。
    2. 将鼠标移到您想要对象位于图表位置的地方。
    3. 点击图表。
    4. 新的 «user_role» 就创建出了。
  • Or:
    1. 点击 User Role 工具,并将其拖拉到您想要角色位于的地方。
    2. 释放鼠标按钮。
    3. 新的 «user_role» 就创建出了。

一旦向图表完成了添加,您就有机会给新实体起一个名字。将其重命名为 Author。图 3 显示了新的 <user_role>


图 3. 新创建的 <user_role>
创建好的  <user_role>

为了解释设置角色的目的,您应该给出一个定义。

向元素添加一个定义
按照以下方法,来向元素添加一个定义:

  1. 右键点击图表中的 Author«user_role»。
  2. 从菜单中选择 Add UML->UserModel->Definition

    这样,在 Author «user_role» 内就创建了一个带有 «definition» 构造型的属性。

您能够更改默认的 «definition»,并且应该这样做,以确保 Author «user_role» 得到合理的定义。

对 Editor and Publisher 角色重复上述操作,现在您的图表看起来应该类似于图 4。


图 4. 所有的 <user_roles>
所有的  <user_roles>

此时,您要将角色分组到内容管理 «user_team» 中。使用配置板以创建 «user_team»,并给其起一个合适的名字。然后您应该给一个 «definition»,就像您对角色所做的那样。

您需要将 «user_team» 与它的组成角色联系起来。如“建模揭秘,第 1 部分: 从用户的角度创建系统规格说明书”中定义的那样,每一个联系都作为属于 «user_team» 的特征,与应用的 «member» 构造型一起呈现出来。两者之间的关系应该是从 «user_team» 到 «user_role» 的聚合关系(也叫共享关系)。您不需要记住所有这些信息,因为如果您使用的是 Dynamic Connection 工具,那么 RSA 会替您填充所有的细节信息。位于配置板中的 Dynamic Connection,将试着为您所连接的两个类生成一种关系。它甚至会注意到您是否混合了源类与目标类。

创建一个动态连接。
按照以下步骤来创建一个动态连接:

  1. 从配置板的 User Model drawer 中选择 Dynamic Connection 工具。
  2. 点击 Content Management «user_team»,并将关系拖拉到您想要将其联系的角色上。
  3. 释放鼠标按钮。

    一个构造型以及聚合关系联系就创建起来了。

使用动态连接的工具,创建 «user_team» 和 Author «user_role» 之间的关系。

将剩余的角色与它们的 «user_team»联系起来,现在您的图表应该如图 5 所示。


图 5. 映射 <<user_role>> 对象的 <<user_team>>
 映射 user_role 对象的 user_team

目标与任务

既然团队和角色已经得到了定义,您就需要展示怎样与系统相交流。正如前面总结的那样,您可以将模型的这些部分分割到您自己的图表中。重复上述步骤来创建两个新的图表:

  • User Goals 包内一个名为 User Goals的图表。
  • User Tasks 包内一个名为 User Tasks的图表。

现在您的模型应该相似于图 6。


图 6. User Goal 与 User Task 图表
 User Goal 以及 User Task 图表

您需要定义目标。因为您刚刚设定的目标将会与角色联系起来。您需要刚刚创建的 User Goals 图表上已存在的角色。让我们从 Author «user_role» 开始。

将已存在的类拖拉到一个图表上
按照以下方法,来将已存在的类拖拉到一个图表上:

  1. 打开新创建的 User Roles 图表。
  2. 点击 Project Explorer 中的 Author «user_role» ,并将其拖拉到您想要它在图表中出现的地方。
  3. 释放鼠标按钮。

    这样,已存在的 «user_role» 就添加至新图表中了。

用户建模工具使您能够创建与已存在类有关的新类。您不能将新类与已存在的类联系起来,您可以利用这个特性来节省时间,因为您知道将创建的新目标与已存在的角色联系起来。

从已存在的类中创建新类
按照以下方法来从已存在的类中创建新类:

  1. 右键点击 User Goals 图表中的 Author «user_role»
  2. 从内容菜单中,选择 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>>
Author user_role 写作文章的 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_role 对 user_goal 的映射

看起来接下来的逻辑步骤像是对这些目标的附加部分,让我们首先讨论一下模型的其他方面,以便利用 User Interface Generator 提供的其他工具。

构建一个词汇表

词汇表就是组成机构对象的集合,向词汇表添加 Glossary 包内名为 Glossary的图表,如下面所示。


图 9. Glossary 图表
 Glossary 图表

接下来的一步是定义 Article «user_object»。您可以使用前面概括的方法来创建该对象。现在您要向空白的图表添加一个新的元素,所以这样做并没有什么好处。


图 10. Article <<user_object>>
 文章 user_object

通过添加带有 «user_attribute» 构造型的属性,您需要指出该 «user_object» 的定义。这样做最快的方式,是按从已创建元素创建新元素的方法,来使用内容菜单。

向类添加构造型属性
按照以下方法,来向某个类添加构造型属性:

  1. 右键点击 Article «user_object»
  2. 从内容菜单中,选择 Add UML->UserModel->User Attribute

    新的 «user_attribute» 会添加至选中的类。

  3. 将 «user_attribute» 重命名为 Article ID

使用以上的步骤,来在 Article «user_object» 内添加两个 «user_attributes»。将其命名为 StatusTitle

您可以对 UML 模型内的对象应用多个构造型。两个可应用于 «user_attributes» 的有用构造型是 «dynamic_enum» 和 «identifier»。两个构造型都可以在 «user_object» 内得到有意义的应用。使用内容菜单来进行以下的操作(构造型的意义在“建模揭秘,第 1 部分: 从用户的角度创建系统规格说明书”中有解释):

  • 对名为 Status 的 <user_attribute>应用 «dynamic_enum» 构造型。它用于追踪文章的进度,例如追踪它是出于起草阶段还是出版阶段。
  • 向名为 Title 的 «user_attribute» 应用 «identifier» 构造型。它用于呈现文章的题目,以及所有文章对象的有意义的标识符。

在添加如上所示的属性之后,词汇图表应该如图 11 所示。


图 11. 完成的 Article 对象
 Completed Article 对象

在任务开始之前构建词汇表还有一个好处。很明显从目标以及 Article «user_object»,该系统的用户就能够执行简单的任务,例如添加新的文章,编辑已存在的文章,以及删除旧有的文章等等。任务可以称为 CRUD: Create,Read,Update 以及 Delete 操作。对 «user_object» 也有公共的操作,而 User Interface Generator 工具可以为您创建对象了。

向 «user_object» 添加 CRUD 操作
按照以下方法,向 «user_object» 添加 CRUD 操作:

  1. 右键点击 Article «user_object»
  2. 从内容菜单中,选择 Add UML->UserModel->Default Tasks

    任务呈现了 «user_object» 附近已创建的 CRUD 操作。

大量的新对象将会创建起来。重新排列已创建的元素,根据它们的关系来将它们重命名,并为每一个元素添加定义。如下所示,您可以看到非语法形式表达的以下信息。


图 12. CRUD 任务
CRUD 任务

User Interface Generator 工具生成了四个 «user_tasks»,并将它们与 Article «user_object» 联系起来。每一个 CRUD 操作都有一项任务,对该任务应用的合适关键词添加有关系(«create»,«view»,«update»,«delete»)。.

«user_object_filter» 已经添加至图表,同时添加的还有两个 «select» 关系。它们显示拥有联系的任务(View,Update 以及 Delete)在执行特定任务的功能之前,首先必须选择一篇文章来执行操作。

注意我们刚刚创建的新任务,会自动在 User Tasks 包内生成,以维持模型的结构。

移动模型附近的语义元素
按照以下方法,来移动模型附近的语义元素 :

  1. 选择您想要移动至的 Project Explorer 的元素。
  2. 将元素移动到新位置处。
  3. 释放鼠标按钮。

    元素将会重新定位,但是它仍然会出现在它以前所在的图表中。

模型现在已接近完成,只差目标与任务之间的联系了。此时您的模型应该类似于图 13。


图 13. 模型结构
 模型结构




回页首


将前面所有内容联系起来

剩下的最后一步,是指定由哪一项任务完成哪一个目标。通过打开 User Tasks 图表开始(就是我们在前面创建的 User Tasks 包)。从项目导航器中拖拉已存在的目标和任务到它上面。

使用 Dynamic Connection 工具来做出以下的关系:

  • 创建遵循书写文章目标的文章。
  • 管理文章,它与评审,删除以及更新文章有关。
  • 出版文章需要文章的更新(因为需要的信息存储在文章的 Status «user_attribute» 中。

您最终得到的图表应该类似于图 14。


图 14. <<user_goal>>对<<user_task>> 的映射
user_goal 对 user_task 的映射

该模型现在已经完成。它可以通过 User Interface Generator 向导。模型将会生成一个 Web 程序,该程序可以部署到一个支持的 Web 程序上,以提供包含角色、目标、任务的用户界面。





回页首


总结

在这篇文章中,您将会学到 User Interface Generator 提供的对 RSA 的用户建模特定扩展,是怎样让用户建模工作变得更加轻松的。使用文中提供的方法,对于不熟悉用户建模的人来说,可以降低复杂性以及学习曲线。User Interface Generator 工具很智能和实用的选择,可以构建用户模型,该模型可以用于生成基于角色的用户界面。

您可以确信您所创建的模型,能与 User Interface Generator 转换以及组成它们的程序很好的协调在一起。您不用担心一些细节信息,例如构造型和关键词。使用文中提供的特征能有效地提高效率,并让新用户了解建模更复杂的部分。



参考资料

学习
  • User Interface Generator 是 MDM Workbench 的一个组件,作为 IBM InfoSphere Master Data Management Server 的一部分。

  • MDM Workbench 空间包括许多文章和讨论区,对于 MDM Workbench 和 User Interface Generator 的用户有很多有用的信息。

  • Rational library 中,可以了解更多有关 User Interface Generator User Guide 的信息。在 RSA Infocenter 中,使用安装的工具,查看章节 "Creating UI’s with the User Interface Generator"。

获得产品和技术

讨论


作者简介

Will Jones photo

Will Jones 在伦敦帝国大学的第四年学习,现在正准备进行计算机工程硕士。他是一名充满激情的软件工程师,最近的工作包括扩展 IBM 的 Rational Software Architect 以改善易用性和提升效率。H他已经提交了多个关于 Rational 软件交付平台方面的专利,覆盖了新的工具种类和特性,丰富了用户体验。在 IBM 工作之外,他喜欢参与各种开源软件,做了许多贡献。


Jay Limburn 照片

Jay Limburn,MBCS CITP,从 2000 年加入 IBM。他是一名 IBM Senior Inventor,目前是位于英国 Hursley 的软件部信息管理分部的一名高级软件工程师。作为在 User Interface Generator 方面的技术负责人,Jay 负责指导 User Interface Generator 的技术方向,并领导团队实现交付承诺。之前,Jay 在许多不同的软件部服务部门,主要在 Lotus 分部,进行面向客户的技术工作,他主要负责 WebSphere Portal Server 的技术咨询工作。他的专业技能领域包括模型驱动开发,解决方案交付和设计,以及 J2EE 技术。Jay 已经编写了许多有关这些主题的出版物,并申请了六项专利。




对本文的评价








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