ROSE思想是复杂的,内涵是丰富的,操作是别扭的,文档是简单的,人性是没有的。然而人们对它趋之若鹜的原因恐怕是我们现在的TEAMLEADER,SA受RUP的’毒害’颇深的原因,而这也将影响到徒弟–将来的SA们。
基础操作
1.打开Rose


2.选择缺省编程语言的方法是,Tools->Options->Notation->Default->Java

3.Logical View(逻辑模型)里新建文件包Test

新建Class ,添加AttributeOperation

一 通过模型生成代码

rose帮助位于 HELP>>CONTENTS>>ROSE JAVA>>HOW TO >>FORWARD ENGINEER FROM ROSE TO JAVA SOURCE

1 Checking for Java Syntax Errors(检察Java语法错误)

当你尝试把模型组件转化成代码框架时候,应该考虑到先检查将要生成的类有无语法错误。

a 打开你要专化的目标diagram

b 选择你要转化的包或者类

单击 tools>java/j2ee> Syntax Check 来检查目标代码是否符合规范,比如命名错误。

d 察看rose log窗口(下方)察看检验结果,如果有错误,即errors那么生成的代码很可能无法通过编译

e 根据需要校正这些组件或者图

假设以上步骤已经搞定了error

2 选择你要转化的包或者类

3单击 Tools > Java/J2EE > Generate Code

一般来说如果你还没有将一个package或者组件映射到一个rose的classpath目录中(就是指定生成的东西放哪里),那么系统不会允许你在接下来的界面里点ok,那么现在就编辑目标路径

4点classpath entries下的edit按钮,再出现的界面右上角找new(insert)(删除左边那个),然后在列表里新增的行里选择目标路径,你可以选择目标是生成一个zip,jar,还是一个目录,我们选择目录。指定目录,ok,那么你选择的路径就新建成功了,选择这个路径,点ok回到界面(层次好多阿,界面很丑阿)

5现在你看到classpath entries里有东西了,选择右侧列表里你要转换的包或者组件,点assign,即分配给目标classpth,理论上你可以把选择好的包组件或者类图分别分配个多个classptah对象。点ok开始生成

6 成功后就可以到指定的classpath下看代码了,生成的代码之间拥有如类图所示的关系。

Class Test1

Class Test2

二 反向功能

rose帮助位于 HELP>>CONTENTS>>ROSE JAVA>>HOW TO >>REVERSE ENGINEER FROM JAVA SOURCE TO ROSE

反向工程就是通过java代码生成或者更新一个模型的过程。你可以用ROSE对以下文件进行反向

A.Java source code (.java files)

B.Java bytecodes (.class files)

C.zip, .cab, and .jar files

1. Open the model you want to create or update.

打开一个你刚创建或者想更新的模型

新建一个class diagram(如果你还不会,那么这篇文章就别看了)

2.单击Tools > Java/J2EE > Reverse Engineer

那么现在大家可以想象一下rose会怎么做,刚才是选择了图,创建目标路径,生成代码,那么现在是否指定路径读文件生成图呢,you can say that again!!在出现的界面上选择一个classpath(如果已经存在)当然,你也可以通过edit classpath按钮新建一个(新建路径的界面刚才讲过了,不再累赘),然后选择这个classpath,更改下面的filter下拉列表,更改目标文件类型(注意不仅仅三行,可以滚动的,对rose的界面真是垃圾这一点又深有体会了),我们这里选择.java,如果这个classptah下存在.java文件,那么就会被列出来。

注意:你可以通过 add添加选中的文件,也可以通过add all添加所有列出来的,更可以通过add recursive 递归添加这个路径下所有的文件和子目录下所有文件等等。可以看到rose并不会自动列出甚至显示有没有子目录(无人性)从添加好的文件里选择你想反向的文件,点Reverse 开始创建或者更新,如果有错你就改到没错为止。假设你成功了,点击done结束反向,回到rose主界面。

注意:rose并不会针对你反向过来的类和组件自动生成图,生成的class已经按照包关系列在你的class diagram下面,你需要把他们加到你的图中去(靠,什么玩艺) ,你有两种方法让这个半自动反向工程化上句号。

手工把class或者组件拖拉到目的图里

在目标图的界面下点击 Query > Add Classes 或者 Query > Add Components ,选择视图方式,一般是logic view,选择要拖拉的类或者组件,>>或者all,点ok完成。生成的类图即反映了代码本身之间的关系。

 生成类图

Class Test1Test2直接拖拽至类图(Class Diagram)中即可。

 生成时序图