内容


Hello World,第 1 部分

Rational Software Architect

设计一个简单的电话簿应用程序

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: Hello World,第 1 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:Hello World,第 1 部分

敬请期待该系列的后续内容。

预备知识

关于本系列

本系列是用于那些想要 IBM 软件产品高层次概述的初学者。各模块设计用来介绍产品,并让您对进一步的探究感兴趣。练习只覆盖基本概念,但足够让您入门。

关于本教程

本教程将向您介绍 Rational® Software Architect,并利用内行经验为您突出 Rational Software Architect 的一些基本特性。练习中一步步指导您利用 UML 图设计应用程序,在 Web 页上发布模型信息,以及利用 Rational Software Architect 将设计转换为 Java™。

必要条件

本教程是用于那些初始级别的应用程序设计者,但您必须大概熟悉 Eclipse 开发环境的使用。

要运行本教程中的实例,您需要安装 IBM Rational Software Architect

要观看本教程中的演示,您的浏览器必须允许 JavaScript 并且必须安装有 Macromedia Flash Player 6 或更高版本。您可以在此链接处下载最新的 Flash Player http://www.macromedia.com/go/getflashplayer/

动画演示

如果您是第一次遇到包含演示的 developerWorks 教程,那么这里有一些您需要了解的东西:

  • 演示是观看教程中所描述的相同步骤的可选择的方法。要观看动画演示,单击“显示 demo显示 demo”链接。演示将出现在新的浏览器窗口中。
  • 每个演示的底部都包含一个导航条。使用导航条来暂停、退出、回退,或快进。
  • 演示是 800 x 600 象素的。如果这是您的屏幕的最大分辨率,或者比您的屏幕的分辨率高,那么您只能利用滚动条观看演示的一些区域。
  • 您的浏览器必须允许 JavaScript,并且必须安装有 Macromedia Flash Player 6 或更高版本。

介绍

IBM Rational Software Architect 是一个将架构、设计,和开发统一于一个工具中的集成设计和开发工具。它包括以下内容的全部功能:

  • Rational Application Developer —— 一个让您进行 J2EE 开发、XML、Web 服务开发等的开发工具
  • Rational Software Modeler —— 一个让您使用统一建模语言(Unified Modeling Language,UML)标记符可视化地对系统和应用程序建模的建模工具

Rational Software Architect 统一了它们,并建立在开源且可扩展的 Eclipse 平台之上,其利用了许多行业标准。

Rational Software Architect 主要由软件架构师和开发团队中的高级开发人员来使用,用于指定并维护应用程序的软件架构的所有方面。它对 UML 2.0 的支持让用户利用标准的标记符来获取并沟通应用程序架构的所有方面。用户可以使用模式和转换来定义并实现他们的应用程序。

Rational Software Architect 支持一系列大范围的特性,这些特性将它自己与其竞争者区分开来。以下的表格强调了一些关键的区分特性。以下的练习中例举了前三个。该练习将带着您使用 UML 图设计一个应用程序,将模型信息发布到 Web 页上,并利用 Rational Software Architect 将设计转换为 Java。要进一步提高您的技能,参考 参考资料以了解更多信息。

表 1。Rational Software Architect 的一些关键特性

特性益处
UML 2.0 对分析和设计的建模支持使用用例、类、活动、复合结构、状态机、通信、组件,及部署图。 UML 2.0 允许您使用许多不同的涉众都认识的标准标记符来获取并互通应用程序架构的所有方面。
由 UML 设计生成 HTML、PDF,及 XML 报告。 生成可以由团队成员或其他涉众回顾的报告和文档。
使用转换来生成 Java 代码、C++,或企业级 JavaBean 代码 将从设计模型生成代码的可重复工作自动化。可以定制转换,裁减代码生成模式来适应组织的需求。
通过UML 类图编辑 Java 代码、EJB 代码,和数据库对象。 使用 UML 标记符来提供对 Java 代码、EJB 代码,和数据库对象的抽象视图,用以简化新的和现有应用程序的开发和理解。
利用 UML 2.0 序列图可视化 Java 方法。 使用 UML 2.0 序列图来了解 Java 方法的执行流。
WS-I 遵从 Web 服务和面向服务的体系结构。 集成您的业务应用程序。
应用并编辑模式和转换。 使组织可以获取并促进可以用于增加软件开发的可预测性和可重复性的“方法”。编辑和应用功能在“开发可重用性”和“使用重用性进行开发”方面对团队进行支持。
资产浏览器用于访问可重用资产。 支持 OMG 可重用资产规范并支持浏览包含可重用资产的存储库的用户。可以将存储库构建成便于找到的资产的结构。
开放 API,用以支持建模环境的定制和扩展。UML 概要文件生成,以及编辑定制存储于 UML 模型中的属性。组织可以开发插件,为其环境和过程定制分析和设计工具。支持创建允许厂商开发集成的生态系统。
根据上下文敏感的及动态的过程指导来为 Software Architect 进行 RUP 配置。 当工具使用工作时,动态地提供过程指导和用户辅助。

Rational Software Architect 怎样适合 SOA?

面向服务的体系结构(Service Oriented Architecture,SOA)是一个用于建立分布式系统的架构风格,这些系统可以以服务的形式交付应用程序功能,这些服务由最终用户应用程序使用或用于构建其他服务。它可以使客户通过组装新的和现有服务来快速简便地创建成熟的应用程序和解决方案。企业中的每个业务功能都可以以服务的形式实现,这些服务可以与其他服务集成,满足企业的业务需求。每个行业中的企业都在寻找着能够快速有效地响应变化的市场情况的方法。为实现该层次的业务灵活性,许多企业正在通过开发面向服务的应用程序来实现 SOA。

利用 IBM SOA Foundation —— 一个集成的基于开放标准的,面向服务的体系结构的软件、最佳实践,和模式的集合 —— 很容易对 SOA 入门。组成 IBM SOA Foundation 的软件支持包含建模、组装、部署和管理四个阶段的 SOA 生命周期中的每个阶段。对所有这些生命周期阶段的支持是为 SOA 项目提供指导和监督的治理及过程。

图 1. SOA 生命周期
SOA 生命周期

IBM Rational Software Architect,作为一个健壮且成熟的设计和开发工具,是 IBM SOA Foundation 的一部分,并支持 SOA 生命周期的建模阶段。它是 SOA 参考架构的开发服务的一部分,并为企业提供进行面向服务的应用程序建模时所需的工具。

图 2. SOA 参考架构
SOA 参考架构
SOA 参考架构

Rational Software Architect 令软件架构师利用开放标准的统一建模语言(Unified Modeling Language,UML)可视化地建模并设计灵活的服务架构,并且从分析和设计到实现,自动化地应用用于 SOA 的设计模式。此外,有许多新的 SOA 设计资源作为 Rational Software Architect 插件,用于在面向服务的领域内进一步帮助用户进行解决方案设计。请参考 参考资料以了解更多信息。

什么是 UML?

UML 由 Object Management Group (OMG) 于 1997 年首先发布,最近正升级为 2.0 版本。UML 设计用于为开发团体带来稳定且通用的,可以用于开发并建立应用程序的设计语言。它是建模语言,并且是独立于程序设计语言的。

UML 提供使用许多不同的涉众所认识的标准标记符来让用户获取并互通应用程序架构的所有方面的各种图。有 13 种正式的 UML 2.0 图,每个图都是表现系统不同方面的不同视图:

  • 活动图
  • 类图
  • 通信图
  • 组件图
  • 复合结构图
  • 部署图
  • 交互概述图
  • 对象图
  • 包图
  • 序列图
  • 状态机图
  • 时序图
  • 用例图

在下面的练习中,我们将了解如何创建用例图类图,以及序列图,然后用 Rational Software Architect 发布并转换设计。

设计一个电话簿应用程序

在此练习中,您将设计一个非常简单的电话簿应用程序,如图 3 所示,存储了稍候将检索的用户输入的电话号码。

图 3. 电话簿应用程序
电话簿应用程序
电话簿应用程序

开始:

  1. 如果还没有,就启动 Rational Software Architect:在 Windows 中选择 Start > Programs > IBM Rational > IBM Rational Software Architect > Rational Software Architect
  2. 出现一个询问工作区目录的窗口。选择 OK 接受默认值。

创建 UML 工程

首先创建名为 MyPhoneBookUMLProject 的 UML 工程:

  1. 在工作区中,选择File > New > Project > Other
  2. 选择 UML Project 并选择 Next
  3. 输入 MyPhoneBookUMLProject 作为工程名,并选择 Next
  4. 输入 Phone Book UML Model 作为 UML Model 的文件名,取消选择 Create a default diagram in the new model,然后选择 Finish

创建用例图

用例图将系统行为建模,并帮助获取需求。它识别系统和角色之间的交互,并定义系统的范围。

参与者
代表一个与系统交互的用户角色。用户可以是一个人类用户、组织、机器,或其他外部系统。
用例
描述系统实现用户目标的功能。用例必须生成一个可观察的结果,即系统用户的值。

用例图中显示的用例和参与者描述了系统干什么,以及参与者如何使用系统,而不是系统内部如何运行。要关联参与者和用例,您可以生成一个 关联关系 来指示两个模型单元之间的连接。

对于我们简单的电话簿应用程序,假设只有一个参与者,Any User,它可以执行下面针对系统的两个用例:

添加一个条目
使用所提供的应用程序使用界面,输入一个唯一的用户名和密码。系统处理输入的数据并存储。
搜索一个电话号码
使用所提供的应用程序用户界面输入一个独特的人名来检索一个电话号码。系统定位电话号码并将其返回给参与者。

创建列出了两个用例的用例图:

  1. 在 Model Explorer 视图中,右键单击Phone Book UML Model,并选择 Add Diagram > Use Case Diagram
    图 4. 添加一个用例图
    添加一个用例图
    添加一个用例图
  2. 输入 User Case Diagram 作为生成的图的名称来替代默认名称 Diagram1。现在您可以通过从 Palette 向图中添加各种模型单元来绘制用例图。
    图 5. 添加模型单元
    添加模型单元
    添加模型单元
  3. 在 Palette 中选择 Actor,然后在图中任何位置单击来创建角色。将其命名为 Any User
  4. 在 Palette 中选择 Use Case,然后在图中任何位置来创建用例。将其命名为 Add an entry
  5. 类似地,创建另一个称为 Search for a phone number的用例。
  6. 在 Palette 中选择Association。从角色Any User 到用例 Add an entry 绘制关联关系线,来计划两个模型单元之间的关系。
  7. 类似地,创建参与者Any User 和用例 Search for a phone number之间的另一个关联关系。
  8. 完整的用例图应看起来类似图 6。选择 Ctrl-S 来保存图。
    图 6. 完整的用例图
    完整的用例图
    完整的用例图

创建类图

类图是系统的蓝图。使用类图来对组成系统的对象建模,以显示对象之间的关系,并描述那些对象做什么,及它们提供的服务。

使用 Model-View-Controller (MVC) 架构模式设计简单的电话簿应用程序,如图 7所示。(参见参考资料 来了解 MVC 的信息。)创建以下三个类:

  • PhoneBookModel —— 管理电话簿条目并获取应用程序状态的类。状态改变的时候,它通知 PhoneBookView,它之后将根据应用程序的状态刷新用户界面。
  • PhoneBookView —— 根据应用程序的状态管理面向用户的图形或文本界面,并在检索到输入时,通知 PhoneBookController 的类。
  • PhoneBookController —— 控制整个应用程序操作的类。它改变应用程序模型状态并更新基于用户输入的数据模型。

本练习的目的是显示设计应用程序时对 Rational Software Architect 的使用。设计本身不是焦点,你可以用不同的设计继续进行。

图 7. MVC 设计
MVC 设计
MVC 设计

让我们创建一个反映图 7 中设计的类图。

  1. 在 Model Explorer 视图中,右键单击 Phone Book UML Model 并选择Add Diagram > Class Diagram
  2. 输入 Class Diagram 作为已生成图的名称,以替代默认名称 Diagram1。
  3. 在 Palette 中选择 Class,然后在图中任何位置单击,生成一个类。命名为 PhoneBookModel
  4. 右键单击已生成的类 PhoneBookModel 并选择 Add UML > Operation 来创建该类的方法。将其命名为 setState
  5. 类似地,创建表 2 中显示的其余单元。在没有任何程序设计语言假设的情况下选择操作名。

    表 2。类信息

    操作
    PhoneBookModel addAnEntry
    searchPhoneNumber
    getSearchResult
    getState
    PhoneBookView stateHasChanged
    changeView
    getUserInput
    PhoneBookController userHasInput
    start
  6. 现在创建一些关联来将这三个类联系起来。如图 8 中所示,在 Palette 中单击 Association] 旁边的箭头,并选择 Directed Association
    图 8. 直接的关联关系
    电话簿应用程序
  7. 画一条从类 PhoneBookControllerPhoneBookModel (顺序是重要的)的直接关联关系线,以设计这两个类之间的 Directed Association 关系。直接的关联关系意味着第一个意识到后者,但不是其他途径。
  8. 类似地,创建以下关系:
    • 在类PhoneBookModelPhoneBookView之间创建关联关系。
    • 在类PhoneBookViewPhoneBookController之间创建关联关系。

    没有方向的关联关系意味着两个连接类都可以意识到对方。

  9. 完整的类图应类似于图 9。选择 Ctrl-S 保存图。
    图 9. 完整的类图
    完整的类图
    完整的类图

创建序列图

UML 中的序列图显示交互实例之间消息的编排顺序。它包含由生命线代表的交互和在交互中随时间交换的消息。

在此部分中,您将实现用例“Search for a phone number”并利用序列图显示相关的交互。用例开始于参与者 Any User,它利用了 PhoneBookView 所提供的界面来请求搜索。PhoneBookView 通知 PhoneBookController 有关用户的请求。PhoneBookController 更新存储在 PhoneBookModel 中的数据模型。因为存在一个模型管理,PhoneBookModel 通知 PhoneBookView,它应该刷新用户界面来反映应用程序的最新状态。

  1. 在 Model Explorer 视图中,右键单击 Phone Book UML Model 并选择 Add Diagram > Sequence Diagram
  2. 输入 Sequence Diagram 作为已生成图的名称,替代默认名称 Diagram1。
  3. 从 Model Explorer 视图中将角色 Any User 拖拽到图中,用于创建角色的实例,如图 10 所示。类似地,通过拖拽到图中,创建 PhoneBookView、PhoneBookController 和 PhoneBookModel 实例。
    图 10. 将模型单元拖拽到序列图中
    将模型单元拖拽到序列图中
    将模型单元拖拽到序列图中
  4. 在 Palette 中选择 Asynchronous Message 。如图 11 所示,点击 any User: Any User 下面的线,然后是 phoneBookView:PhoneBookView 下面的线。
    图 11. 创建消息线
    创建消息线
    创建消息线
  5. 在下来菜单中选择操作 PhoneBookView::getUserInput()
    图 12. 为消息线选择操作
    为消息线选择操作
    为消息线选择操作
  6. 类似地,生成表 3 中所示的以下异步消息线。要创建调用自身的异步消息,简单地直接点击实例条,不用任何拖拽。

    表 3。序列图的消息线

    来源实例到达实例操作
    phoneBookViewphoneBookControllerPhoneBookController::userHasInput()
    phoneBookControllerphoneBookModelPhoneBookModel::searchPhoneNumber()
    phoneBookControllerphoneBookModelPhoneBookModel::setState()
    phoneBookModelphoneBookViewPhoneBookView::stateHasChanged()
    phoneBookViewphoneBookModelPhoneBookModel::getSearchResult()
    phoneBookViewphoneBookViewPhoneBookView::changeView()
  7. 完整的序列图应类似于图 13。选择 File > Save All 来保存所有修改。
    图 13. 完整的序列图
    完整的序列图
    完整的序列图

发布设计

通过发布模型信息,您可以与那些没有建模工具的人分享。Rational Software Architect 支持两个发布功能:

  • 向 Web 页发布模型
  • 发布模型信息报告

将您的设计发布到 Web 页:

  1. 在 Model Explorer 视图中选择 Phone Book UML Model。选择 Modeling > Publish > Web
    图 14. 向 Web 页发布设计
    向 Web 页发布设计
  2. 指定已生成的 UML 文件的目标位置,例如 C:\HelloWorldSeries\RSA_Web,来自于下载,并选择 OK。模型发布为存储在指定位置上的 HTML 文件。
  3. 利用 Web 浏览器打开文件 C:\HelloWorldSeries\RSA_Web\index.html。
    图 15. 发布的 Web 页
    发布的 Web 页
    发布的 Web 页
  4. 选择链结Phone Book UML Model
  5. 单击单元链结和图来导航到已发布模型。
    图 16. 发布的电话簿 UML 模型
    发布的电话簿 UML 模型
    发布的电话簿 UML 模型

UML 到 Java 的转换

转换功能是 Rational Software Architect 的关键特性。您可以将设计从 UML 转换为 C++、CORBA、EJB 代码、JACL、Java 代码,等等,并且提前开始实现阶段。在本部分中,您将把 UML 设计转换为 Java 代码,在这些代码中您可以添加程序设计细节并运行应用程序。

  1. 在 Model Explorer 视图中,右键单击 Phone Book UML Model 并选择 Transforms > UML to Java
  2. 选择 Create new Target Container..
  3. 在 New Java Project 面板中,输入 PhoneBookJavaProject 作为 Java 工程的名字,并选择Create separate source and output folder。选择 Finish
  4. 选择 Run 开始转换。
  5. 在 Model Explorer 视图中,自动生成了一个 Java 工程 PhoneBookJavaProject,下面有三个 Java 文件。
    图 17. 生成的 Java 工程
    电话簿应用程序
    电话簿应用程序

让我们看看下面显示的 PhoneBookController.java。已生成的类有两个属性,phonebookmodelphonebookview,分别作为直接关联和关联关系的结果。早先您在绘制类图的时候添加的两个方法(userHasInputstart)也生成了。

您可以修改文件,根据设计基础架构实现应用程序。实现示例在 下载 部分中。它实现了命令行界面并将电话条目存储在本地文件中。

该设计仅展示了基础架构,其可以导致许多不同的实现。例如,您可以生成一个 GUI 界面来替代命令行界面,用 EJB 组件存储数据来替代文件,或者使用 Observer 模式实现通告机制。所提供的实现示例只是实现设计的方法之一。

现在复制并粘贴实现示例。

  1. 选择 File > Save All 以保存所有内容。
  2. 选择 PhoneBookController,然后选择Run > Run As ... > Java Application 来以 Java 应用程序运行电话簿实现。
  3. 到 Console 视图,如图 18 所示,并与应用程序交互。验证可以执行先前讨论的两个用例,Add an entrySearch for a phone number。记住,用例的目的是定义系统的行为并获得需求。实现满足需求,并如期望的那样工作是很重要的。
    图 18. 运行示例电话簿应用程序
    运行示例电话簿应用程序
    运行示例电话簿应用程序

总结

本教程介绍了 Rational Software Architect,并且强调了一些基本特性。练习向您展示如何利用 UML 图设计应用程序,如何将模型信息发布到 Web 页上,以及如何使用 Rational Software Architect 将设计转换成 Java。

本系列下一部分,将向您介绍 Rational Application Developer。


下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational, Java technology
ArticleID=157431
ArticleTitle=Hello World,第 1 部分: Rational Software Architect
publish-date=07042006