标题：Rational Rose
简介
就像一个戏剧导演设计一个剧本一样，一个软件设计师使用Rational Rose，以演员（数字）、使用拖放式符号的程序表中的有用的案例元素（椭圆）、目标（矩形）和消息/关系（箭头）设计各种类，来创造（模型）一个应用的框架。当程序表被创建时，Rational Rose记录下这个程序表然后以设计师选择的C++， Visual Basic，Java， Oracle8，CORBA或者数据定义语言（Data Definition Language）来产生代码。
Rose现在已经退出市场，不过仍有一些公司在使用。IBM推出了Rational Software Architect来替代Rational Rose。
内容
Rational Rose包括了统一建模语言（UML），OOSE，以及OMT。其中统一建模语言（UML）由Rational公司3位世界级面向对象技术专家Grady Booch、Ivar Jacobson、和Jim Rumbaugh通过对早期面向对象研究和设计方法的进一步扩展而得来的，它为可视化建模软件奠定了坚实的理论基础。同时这样的渊源也使Rational Rose力挫当前市场上很多基于UML可视化建模的工具，例如Microsoft的Visio2002、Oracle的Designer2000，还有PlayCase 、CA BPWin、CA ERWin、Sybase PowerDesigner等等。
Rational Rose 是一个完全的、具有能满足所有建模环境（Web开发，数据建模，Visual Studio和 C++ ）灵活性需求的一套解决方案。Rose 允许开发人员，项目经理，系统工程师和分析人员在软件开发周期内在将需求和系统的体系架构转换成代码，消除浪费的消耗，对需求和系统的体系架构进行可视化，理解和精练。通过在软件开发周期内使用同一种建模工具可以确保更快更好的创建满足客户需求的可扩展的、灵活的并且可靠的应用系统。
特征
Rational Rose的两个受欢迎的特征是它的提供反复式发展和来回旅程工程的能力。Rational Rose允许设计师利用反复发展（有时也叫进化式发展），因为在各个进程中新的应用能够被创建，通过把一个反复的输出变成下一个反复的输入。（这和瀑布式发展形成对比，在瀑布式发展中，在一个用户开始尝试之前整个工程被从头到尾的完成。）然后,当开发者开始理解组件之间是如何相互作用和在设计中进行调整时,Rational Rose能够通过回溯和更新模型的其余部分来保证代码的一致性，从而展现出被称为"来回旅程工程"的能力，Rational Rose是可扩展的，可以使用可下载附加项和第三方应用软件，它支持COM/DCOM (ActiveX)，JavaBeans 和 Corba组件标准.
用途
Rational Rose是基于UML的可视化建模工具。UML全称叫Unified Modeling Language，顾名思义，UML是一种语言，一种表示法，一种交流沟通的工具，特别适用于软件密集型系统的表示。
UML的统一性（Unified）表现为以下几点：
（1）、 UML是人类思想和计算机代码的一个连接桥梁
我们知道，计算机能直接识别的语言就是二进制的CPU指令，早期工程师们都是直接输入这些指令让计算机直接执行的，效率不高；
后来就出现了更好理解的汇编语言，之后就出现了各种各样更加容易理解和编写，更加接近人类语言的计算机高级语言、VB、DELPHI、JAVA等。
（2）、 UML所定义的概念和符号可用于软件开发的分析、设计和实现的全过程，软件开发人员不必在开发过程的不同阶段进行概念和符号的转换。
（3）、 UML所用的语言元素基本都是图形化的，便于理解和沟通，不但开发人员之间可以用来交流，客户和开发人员之间也可以用它作为交流的工具。
目前版本的Rational Rose可以用来做以下一些工作：
1、对业务进行建模（工作流）；
2、建立对象模型（表达信息系统内有哪些对象，它们之间是如何协作完成系统功能的）；
3、对数据库进行建模，并可以在对象模型和数据模型之间进行正、逆向工程，相互同步；
4、建立构件模型（表达信息系统的物理组成，如有什么文件、进程、线程、分布如何等等）；
5、生成目标语言的框架代码，如VB、JAVA、DELPHI等。
核心uml
（1）、 uml的发展历程 
  uml◇公认的面向对象建模语言出现于70年代中期。
◇多种建模语言的出现：booch 1993 、oose 、omt _2 、ooa/ood。
◇uml 建模语言的形成，成为工业界的标准（1996年）。
其发展历程可用下图形象表示：
（2）、 uml(unified modeling language) 的具体内容
客观世界是一个复杂的巨系统，需要从不同的角度来考察，才能真正理解这个系统。为了能支持从不同角度来考察系统，标准建模语言uml定义了下列5类、共9种模型图，下面图表作了基本的描述：
类型
图名
描述
用例图
用例图
从用户角度描述系统的功能，并指出各功能的操作者。
静态图
类图
用于定义系统的类，包括描述类之间的联系（如关联、依赖、聚合等）以及类的内部结构，即类的属性和操作。因此类图是描述系统中类的静态结构，即它描述的是一种静态关系，在系统的整个生命周期都是有效的。
包图
包或类组成，主要表示包与包、或包与类之间的关系。包图用于描述系统的分层结构。
行为图
状态图
描述一类对象的所有可能状态以及事件发生时状态的转移条件。通常状态图是对类图的补充。
活动图
描述为满足用例要求所要进行的活动以及活动间的约束关系。使用活动图可以很方便地表示并行活动。
交互图
序列图
用以显示对象之间的动态合作关系。它强调对象之间消息发送的顺序，同时也显示对象之间的交互过程。
协作图
同序列图是等价的，但着重描述对象间的协作关系。
实现图
构件图
描述代码部件的物理结构及各部件之间的依赖关系。一个部件可能是一个资源代码部件、一个二进制部件或一个可执行部件。 它包含逻辑类或实现类的有关信息。部件图有助于分析和理解部件之间的相互影响程度。
配置图
定义系统中软硬件的物理体系结构。它可以显示实际的计算机和设备（用节点表示）以及它们之间的连接关系，也可显示连接的类型及部件之间的依赖性。在节？?行软件单元的对应关系。
1、 用例图
以订单管理系统的用例模型部分为例进行说明。 
  用例图由于他们具有略微不同的特征，因此将普通客户从 Internet 客户中分离开来是非常有用的。然而，因为 Internet 客户的确显示了一个客户具有的所有特征，所以您可以说 Internet 客户是客户的一个特例，并且能够通过主角泛化关系来指示。
在本图中，具体用例分别是“电话订购”（由客户主角发出）和“Internet 订购”（由 Internet 客户发出）。这些用例都是更普通的“订购”用例的变形。在本示例中，“订购”用例是一个抽象用例。“请求目录”用例代表一个可选行为段，它不是“订购”用例主要目标的组成部分。它已经被分离出来，形成了一个抽象用例，用于简化“订购”用例。“提供客户数据”用例是一个已分离出的行为段。它之所以被分离出来，是因为它是一个独立功能，只有它的结果才能影响“订购”用例。“供给客户数据”用例还可以在其他用例中复用。“请求目录”用例和“供给客户数据”用例在本示例中都属于抽象用例。 
  Rational Rose包含用例的行为插入到基本用例中的一个位置。
当执行基本用例的用例实例达到基本用例中定义扩展点的位置时，将对相应扩展关系的条件进行评估。如果条件成立，或者如果没有条件，用例实例将遵循扩展用例（或者扩展用例中与扩展点相对应的插入段）。如果扩展关系的条件不成立，就不执行扩展。
  Rational Rose扩展表示一种可选行为
用例实例
2、 类图
3、 包图
4、 序列图
在序列图中可以有对象和 
  序列图主角实例，以及说明它们如何交互的消息。序列图描述了在参与交互的对象中所发生的事件（从激活的角度来说明），以及这些对象如何通过相互发送消息进行通信。您可以为用例事件流的各种不同形式制作序列图。 5、 协作图
  协作图协作图中可以有对象和主角实例，以及描述它们之间关系和交互的连接和消息。通过说明对象间如何通过互相发送消息来实现通信，协作图描述了参与对象中发生的情况。您可以为用例事件流的每一个变化形式制作一个协作图。
  状态图6、 状态图状态机用于对模型元素的动态行为进行建模，更具体地说，就是对系统行为中受事件驱动的方面进行建模。状态机专门用于定义依赖于状态的行为（即根据模型元素所处的状态而有所变化的行为）。其行为不会随着其元素状态发生变化的模型元素不需要用状态机来描述其行为（这些元素通常是主要负载管理数据的被动类）。
状态机由状态组成，各状态由转移链接在一起。状态是对象执行某项活动或等待某个事件时的条件。转移是两个状态之间的关系，它由某个事件触发，然后执行特定的操作或评估并导致特定的结束状态。图 1 描绘了状态机的各种元素。
7、 活动图
  活动图一个活动图可能包括以下元素： 
· 活动状态表示在工作流程中执行某个活动或步骤。 
· 转移表示各种活动状态的先后顺序。这种转移可称为完成转移。它不同于一般的转移，因为它不需要明显的触发器事件，而是通过完成活动（用活动状态表示）来触发。 
· 决策，为其定义了一组警戒条件。这些警戒条件决定在活动完成后将执行一组备选转移中的哪一个转移。您也可以使用判定图标来表示线程重新合并的位置。决策和警戒条件使您能够显示业务用例的工作流程中的备选线程。 
· 同步示意条用于显示平行分支流。同步示意条使您能够显示业务用例的工作流程中的并行线程。 
8、 构件图
由下图可以看出系统的源代码和运行组件。
利用该图，负责编译和部署系统的人员知道有哪些代码库，编译代码时生成哪些执行文件；开发人员知道有哪些代码库，相互间有什么关系；组件的依赖性使编译人员知道正确的编译顺序
  部署图9、 部署图部署图考虑应用程序的实际部署，包括网络部署和组件在网??含处理器、设备、进程和处理器与设备之间的连接。
部署图显示网络上的所有节点、节点间的连接和每个节点上运行的进程。
数据库建模
Rose提供了一个叫“Data Modeler”的工具，利用它可用将对象模型转换成数据模型，也可以将现有的数据模型转换成对象模型，从而实现两者之间的同步。
具体来说，Data Modeler可以：
1、将对象模型转换成数据模型，即将类映射到数据库的表，构成传统的ER图；（Data Modeler | Transform to Data Model）
2、将数据模型转换成对象模型；（Data Modeler | Transform to Object Model）
3、利用数据模型生成数据库DDL，也可以直接连接到数据库里，对数据库产生结果；（Data Modeler | Forward Engineer）
4、从现有数据库或DDL文件里生成数据模型；（Data Modeler | Reverse Engineer）
5、将数据模型同DDL文件或现有数据库进行比较；（Data Modeler | Compare to。。。）
注意：一个类能被转化为一个数据库表，它的persistence属性必须是transient
建模特点
1.保证模型和代码高度一致。
2.支持多种语言。
3.为团队开发提供强有力的支持。
4.支持模型的Internet发布。
5.生成使用简单且定制灵活的文档。
6.支持关系型数据库的建模。
使用技巧
1、 units control  rational rose单元控制用来把一个包，在多人协作分析设计的时候特别有用。例如当一个包需要另外一个同事a进行完善的时候，可以把单元处于控制中，保存到另外一个单独的文件里，然后同事a完善这个包，同时自己也可以进行其他包的设计工作，等完善完毕后，把文件重新load进去就可以继续使用了，这样就不会影响到其他人的同步工作了。
菜单含义：
load：从一个文件里导入一个单元包，常用来作为同步刷新
save：保存对单元包所做的更改
save as：把单元包保存到另外的一个路径
unloa 
  rational rosed：把单元包卸下来，在rose里就看不到单元包里面的内容了，用load可以把单元包重新导进来
write protection：写保护，在rose里就不能对这个单元包进行更改了2、import，export 
导进，导出package，对利用现成的建模成果很有用，例如我们可以导进一个现成的java模型，这样就可以直接利用java标准的对象了。
3、add-in manager
很多外部的产品都对rose发布了add-in支持，以对rose的功能做进一步的扩展，如java、oracle、delphi，有了这些add-in，rose就可以做更多的深层次的工作了。例 
  rational rose如装了delphi link之后，rose就可以直接可以生成delphi的框架代码，也可以从delphi代码转化成rose模型，并进行两者的同步。 选中framework wizard之后，执行file | new命令时，会出现现成的框架模型，供你选择，例如你想用delphi开发系统，就可以选择“delphi framework”，它已经内置了delphi大部分标准类的支持，方便你的分析和设计工作。
4、 workspace
workspace是用来记忆当前你的工作环境，即你所打开的单元包和图，到下次打开workspace的时候，rose会根据workspa 
  rational rosece的信息，还原到上次的工作界面。
5、 常用快捷键
f1：任何时候都可以按f1获得相关帮助，把鼠标放在某条菜单上按f1可以获得这条菜单的相关帮助。
f2：刷新browser和diagram
f3：两幅图进行切换
f5：顺序图和协作图等价切换
6、autosize all
使图的内容显示得更加整齐，当发现图有些内容显示得不全时，使用这个菜单很有用。
7、options的设置
XML DTD造型
很多开发人员都熟悉面向对象的分析和设计工具。这些工具常常都被用来辅助数据和组件模型的开发，而这些模型要被用来搭建大型的软件系统。对于使用Rational Rose开发工具的开发人员来说，他们会惊奇地发现，你可以以给自己组件和模块同样的造型方式来给XML文档造型。基本概念要在Rational Rose里开始创建XML模型，你就需要了解一些基本的概念。首先，你文档里的每个节点都会成为一个类。你可以使用的XML类一共有四种类型：元素、实体、组和符号。在本文里，我们只会用到元素和组。
元素是具有某些特性的基本类，它们由你在Rational Rose所指定的类型来定义。对于元素而言，你可以选择ANY（任意）、Content Model（内容模型）、PCDATA（PC数据）或者EMPTY（空）。EMPTY元素显然是空的，而PCDATA类型是一个字符数据容器。对于模式复杂的类型，你要使用内容模型。内容模型和组对于包含有字符数据的简单元素，你要使用PCDATA类型。但是，你的很多元素都会包含一个或者多个子元素。对于这样的复杂元素，你必须使用内容模型类型。
为了向Rational Rose指明元素之间的关系，你还要使用组类型。从本质上讲，每个内容模型元素都会拥有一个相关联的组元素。该组元素应该被作为Rational Rose里的一个嵌套类被创建。内容模型元素的每个子元素都会通过将其与内容模型元素的组元素相关联而被定义。快速演练现在让我们来演练一个小例子。我们就从在Rational Rose创建一个新的Rational统一进程（Rational Unified Process，RUP）项目开始吧。你应该会在逻辑视图（Logical View）里看到欢迎类图表（Welcome Class Diagram）。你可以在这个图表内删除节点；不过这没有必要。
点击工具条上的类（Class）图标，再点击图表创建一个新的类。将这类命名为Order。双击Order类，并选择DTDElement框。在类规格（Class Specification）对话框里选择内容模型类型。
在树型视图里右击Order类，并选择新建|嵌套类（New | Nested Class）将这个新的类命名为Order_grp。点击并将Order_grp类拖放到类图表里。双击Order_grp类并选择DTDGroup框。放在一组的类应该是Sequence（顺序），其出现次数应该是One（一次）。然后，展开树型视图里的关联（Associations）项目，并将Order_grp关联拖放到类图表里。
分别创建两个新的类——Item和Customer。这两个类都应该是被定义为内容模型类型的DTDElement。创建Order_grp组元素同Item类的新关联，并对Customer类进行同样的操作。
双击Item类的新关联，并将它命名为Item。然后点击角色A的细节（Role A Detail）选项卡，并在多重下拉框里选择1.n。这一步会指明Order元素会有一个或者多个Item元素作为其子元素。
双击Customer类的关联，并将它命名为Customer。点击角色A的细节选项卡，在多重下拉框里选择1。这一步会指明Order元素只会有一个Customer元素作为其子元素。
如果有必要的话，你可以重复这一过程，以完成你的XML DTD。对于每个复杂的元素，只用简单地指定内容模型类型，然后创建同DTDGroup框相关联的嵌套类就行了。你的子元素然后就应该同组元素关联在一起了。当你完成了自己的模型之后，你就可以右击这些类，并选择XML_DTD|生成DTD（XML_DTD | Generate DTD）来生成DTD的信息。你还可以从这个菜单里浏览DTD的源代码。逆向工程你也可以通过选择工具|XML_DTD|逆向工程XML_DTD（Tools | XML_DTD | Reverse Engineer XML_DTD）将你的DTD逆向转换进Rational Rose里。在这个过程完成之后，你的Rational Rose模型会包含有用于你DTD类的新工具包。
安装准备
1.安装Rose需要Windows 2000/Windows XP及其以上版本。如果是Windows 2000则要确认已经安装了Sever Pack 2.
2.安装Rose，必须先得到Rose安装包。建议购买Rational公司的正版软件，Rational 现在已被IBM收购，读者可以从网上获取相关信息。
Rose、PowerDesign、Visio建模工具比较
ROSE是直接从UML发展而诞生的设计工具，它的出现就是为了对UML建模的支持，ROSE一开始没有对数据库端建模的支持，但是在现在的版本中已经加入数据库建模的功能。ROSE主要是在开发过程中的各种语义、模块、对象以及流程，状态等描述比较好，主要体现在能够从各个方面和角度来分析和设计，使软件的开发蓝图更清晰，内部结构更加明朗（但是它的结构仅仅对那些对掌握UML的开发人员，也就是说对客户了解系统的功能和流程等并不一定很有效），对系统的代码框架生成有很好的支持。但对数据库的开发管理和数据库端的迭代不是很好。
PowerDesigner原来是对数据库建模而发展起来的一种数据库建模工具。直到7.0版才开始对面向对象的开发的支持，后来又引入了对UML的支持。但是由于PowerDesigner侧重不一样，所以它对数据库建模的支持很好，支持了能够看到的90%左右的数据库，对UML的建模使用到的各种图的支持比较滞后。但是在最近得到加强。所以使用它来进行UML开发的并不多，很多人都是用它来作为数据库的建模。如果使用UML分析，它的优点是生成代码时对Sybase的产品PowerBuilder的支持很好（其它UML建模工具则没有或者需要一定的插件），其他面向对象语言如 C++，Java，VB,C#等支持也不错。但是它好像继承了Sybase公司的一贯传统，对中国的市场不是很看看好，所以对中文的支持总是有这样或那样的问题。
VISIO原来仅仅是一种画图工具，能够用来描述各种图形（从电路图到房屋结构图），也是到VISIO2000才开始引进软件分析设计功能到代码生成的全部功能，它可以说是目前最能够用图形方式来表达各种商业图形用途的工具（对软件开发中的UML支持仅仅是其中很少的一部分）。它跟微软的office产品的能够很好兼容。能够把图形直接复制或者内嵌到WORD的文档中。但是对于代码的生成更多是支持微软的产品如VB,VC++,C#,MS SQL Server 等（这也是微软的传统），所以它可以说用于图形语义的描述比较方便，但是用于软件开发过程的迭代开发则有点牵强。
应用最广的有两种1. Rational Rose，它是ibm的 。2.Microsoft的 Microsoft Office Visio? 2003 3.Enterprise Architect。还有其他工具如PowerDesigner等
1.Rational Rose是一种基于UML的建模工具。在面向对象应用程序开发领域，Rational Rose是影响其发展的一个重要因素。Rational Rose自推出以来就受到了业界的瞩目，并一直引领着可视化建模工具的发展。越来越多的软件公司和开发团队开始或者已经采用Rational Rose，用于大型项目开发的分析、建模与设计等方面。
从使用的角度分析，Rational Rose易于使用，支持使用多种构件和多种语言的复杂系统建模；利用双向工程技术可以实现迭代式开发；团队管理特性支持大型、复杂的项目和大型而且通常队员分散在各个不同地方的开发团队。同时，Rational Rose与微软Visual Studio系列工具中GUI的完美结合所带来的方便性，使得它成为绝大多数开发人员首选建模工具；Rose还是市场上第一个提供对基于UML的数据建模和Web建模支持的工具。此外，Rose还为其他一些领域提供支持，如用户定制和产品性能改进。[1]​