偶尔的一次事件,因为项目设计的需要,我需要将已经开发好的程序,做一个详细的设计。
促使我研究Rose Model文件的结构,欲将.Net类信息及依赖关系直接写入到Rose文件中 . 其实Rose Model文件的结构非常之简单.
于是便有了我的这个Shark XDE工具,他使用起来是非常之简单,只要选择你需要进行详细设计的.Net Assembly 文件以及与之相应
的XML 文档(这也是可选的)即可, 然后将生成的Rose Category文件导入到 Rose Model文件,你的详细设计的基本素材,就这样完成了。
下载地址
起源
半个月前,领导要我完成一个设计文档。当时项目的状况是开发已经完成,并且进行了两个星期的测试,
客户使用也没有提出什么问题。我在琢磨怎么写这个文档,经过一番思考,准备用Rose写一个详细的类
设计文档,起初我是希望借助第三方的工具生成Rose类设计视图,当然首先想到的肯定是Rose XDE。但
是 Rose XDE的安装需要申请审批(我们是一个高度遵守知识产权规则的公司),实在是太麻烦。即使在
公司安装上了,回家装的话还是需要到网上去找License。Boraland Together.net 生成的图实在是不怎
么好看。 于是便有了自己写一个这样的工具的想法。
思路
要操作Rose Model文件有两种方法。第一,看看 Rose有什么API可以调用的。第二,Rose Model如果是一
个普通的文本文件,我们可以直接写这个文本文件。 说干就干。说实话,公司里做这样的东西,很容易被
人说成是不务正业的。果不其然,在后面的开发过程中, 很多人跑过来,看我写的东西,问我又在搞什么
名堂。因为长期以来的开发过程中,我喜欢开发一些小的工具, 有时侯思路来了,就在公司里干起来了。
言归正传。 我用Notepad.exe打开了Rose Model 文件,一看果然是一个普通的文本文件,因为第一次看,
觉得还是有点复杂。于是用Rose打开删除掉那些对结构不会影响的内容,然后再用Notepad.exe打开。就这
样反反复复, 对Rose文件了然于胸了。原来Rose Category File由下面几部分组成(见下图):
1,适用的版本信息
2.Package Body:
2.1 每一个Rose对象(类,接口,Actor(一种特殊的类))的说明
2.2 Rose 展现部分的布局。包括哪些视图,类视图/时序图/活动图。每一种图都有自己的描述的结构。但
基本上差不多。 现在我来说说类试图的结构: 每一个类的布局(包括位置,大小,字体等), 类与
类的关系(包括实现和继承等)
Shark XDE
我给这个工具命名Shark XDE.请下载
下面再说说这个工具的使用吧:
1.选择你要据此创建Rose Category文件的Assembly(*.dll或者*.exe) 如果在相应的目录下有Assembly的XML
注释文档,则自动生成填充第二个选择项。 这个注释文档如何生成的,相信大家都知道的。
2.选择该Assembly的XML注释文档。本工具会根据此文档,写Rose对象相关内容的注释。
3.选择你要存放Rose Category 文件的目录。缺省设置为Assembly文件所在目录。
4.输入Rose Category文件的名称,缺省与Assembly文件同名,只是后缀名不一样而已。
5.生成Rose Category文件。在这个过程中也许会出现错误。一种是因为你选择的Assembly文件引用了别的Assembly,
而这些相关的Assembly又不在当前工具所在的目录下,所以系统提示你,将这些所有相关的Assembly复制
到当前工具所在的目录下. 另外还有一些别的错误,如你选择的Assembly文件不是.Net认识的;如你选择的
Rose Category 文件只读或者被其他程序锁定。
6.创建完Rose Category文件后,如何检验你所做的工作呢?首先打开一个Rose Model文件,然后通过以下两
种方式将Rose Category文件导入。
第一种方式,先选择你准备导入的上级包,打开缺省的视图(注意这一步不能缺,否则导完后你自己都不
知道导在哪儿了),然后单击菜单"File/Units/Load..."或者"File/Import...",选择第四步生成的
Rose Category文件。 参见下图
第二种方式,创建一个Package,重命名这个Package(它的名称可以在Rose Category文件的第七行找到),
右击这个新的Package, 弹出菜单,选择"Units/Control
....",在接下来的文件保存
的对话框中随便输入一个文件名。然后再次右击新的Package, 弹出菜单,单击"Units/Reload
...",
选择第四步创建的Rose Category文件。参见下图:
导入的过程中,Rose可能会发出下面的警告:
按Yes即可