1、Borland Together Edition for Microsoft Visual Studio .NET 的安装 |
||||||||
Together是一个跨平台的UML工具,我选择的是Borland Together Edition For Microsoft Visual Studio.NET Version 1.0版,从ReadMe来看,其最后的更新时间是August 28,2003,大家可以在Borland的网站上来 下载 。 注册机 。 该注册机须JDK.v.1.3的支持,请确保您的机器上安装有Java的运行包才成。安装过程没什么好说的,一路Next下来。然后启动VS.NET,如果安装成功的话,会见到如下的画面(图一):
图一:Boland Together Edition for Microsoft Visual Studio .NET的安装界面 然后执行:Registry Together VS .NET菜单命令,将生成的注册号进行注册即可。如果发生注册不成功的情况,可以用Licence Managerment菜单命令将无效的注册号删除,并重新生成(我也是第一次不成功,而后又重新生成一个注册码后才注册成功的)。 |
||||||||
2、Borland Together Edition for Microsoft Visual Studio .NET的简介 |
||||||||
Borland Together Edition for Microsoft Visual Studio .NET主要的功能包括以下几方面:UML建模、双向代码生成、模式支持、HTML文档生成、导入、出XML格式等主要的几项功能。 所需的软件平台,当然首要的是你的机器上已经安装并成功运行了Microsoft Visual Studio .NET 2003并且使用的编程语言是C# .NET。另外,硬件的需求不算太高:PentiumIII/500Mhz,最小内存512M、30M磁盘空间、SVGA 1024X768以及需要需要W2K+SP2或者WinXP Professional的操作系统来支持。 Borland Together Edition for Microsoft Visual Studio .NET并不是一个单独的可运行的程序,而是被集成到了VS.NET的环境当中,主要有三大部分组成:第一部分是Model View(模型视图,图二)、第二部分是Digram View(图表视图,图四)、第三部分是属性窗口(图三)。
图四:图表视图 |
||||||||
3、通过实例来应用Together |
||||||||
下面通过一个实例来看一下如何应用VS.NET环境下的Together。这个例子相当简单,它模仿实现一个音像带出租店的实现模型。它涉及的Actor主要有两个:一个是店员,一个是客户。店员主要是对实现对店内录像带的管理功能,而客户主要是实现租赁录像带的功能。首先,在VS.NET中新建一个项目文件:Video Store(图五)。
图五:新建一个VS.NET项目文件
然后VS会新建一个项目文件Video Store。选择视图->Together VS .NET Model View菜单命令会打开一个Module视图(这是Together为新建的项目文件产生的一个缺省的视图,图六):
图六:缺省项目里的Modul视图 下面创建一个用户用例图(Use Case Diagram),选择Default->Video_Store->Add->Other Diagram(图七):
图七:创建一个用户用例图(Use Case Diagram) Together会弹出一个对话框(图八),输入Video Store Use Case来创建一个用例图: 图八:创建用户图 注意:如果是打开一个曾经建立过的项目文件,想着应用Together的话,那么请在“项目管理器”当中选择:Together VS .NET Support,则会弹出一个对话框(图九),请选中它,然后确认,以打开已存在的Module文件(图十)。
创建成功之后,选择该用例图,在左侧的工具箱内会显示一专门的做图工具,包括:Actor、Use Case、Communicates、Extends、Includes、Generalization、System Boundary、Pattern、Note、Note Link等几项,我们选择一个Actor,将其加入到用例图中,并更改其名为:Clerk,用以代表售货员。 可以双击图标或者选中之后按F2键更改名字,当选中一个图形的时候,周边会有一个边框,亦可以拖动边框来调整图形的大小。 选择“System Boundary Button”,在图中做一个系统边界,并重命名为“Inventory System”,使用“Use Case Button”,在系统边界里面创建两个用例,一个是“Find Item by Keywords”,一个是“Find Item by Title”,分别代表通过关键字来找寻录像带及通过标题来找寻录像带两种不同的用例。 选择“Communicates Button”,在图中选中Actor(Clerk),并将其拖动到Use Case(图十一):
图十一:用例图示例 选择Actor(Clerk),按F4键,可以打开右侧(缺省情况下)的属性窗口,选择General->Stereotype右侧的对话框按钮(图十二),会弹出一个对话框,请你选择该角色的原形,我们在这里可以选择Manager(代表是管理者,图十三):
增加一个新的用例Rent Item到System Boundery,另外再增加一个Actor-Customer,并使用Communicates link来连接Customer和Rent Item。最终形成的用例图(图十四):
图十四:出租录像带的用例图 |
3、通过实例来应用Together(二) |
||||||||||||||||||||||||||||||||||||
下面主要是用来建立静态类图。打开缺省的图( ),在工具箱内选择Class( ),然后在图中建立一个类“Store”。选择该对象,按F4打开属性窗口,点击Stereotype右侧的按钮选择原型为“Place”(地点,表明录像店的性质),重复以上的步骤,将Clerk置成“Role”(角色),将“Item”置成“Description”(说明)。 另外,可以直接在图上击右键,选择Add->Class,或者在Model视图中,右击根结点,然后选择Add->Class。 静态类图建立完毕,如图十五:
图十五:初始静态类图 为一个Class创建成员:右击Store,并选择Add->Field,添加一个新的属性,并对其赋值:address:string。点击F4键,可以弹出属性编辑窗口,点击其中的Visibility域,并从下拉列表中选择Private属性。缺省的情况下,Together VS.NET会创建public int域及public void方法。 为Store添加方法,右击Store类并选择Add->Method,使用内嵌的编辑器为方法命名为:findByTitle。关于所填写的各个类的属性及方法可参考表一。最终的Store如图十六所示:
可以通过Ctrl+W键来添加一个属性,Ctrl+M来添加一个方法,并利用F2键来进行命名或重命名工作。 选择storeNumber属性,在属性窗口中的alias里面可以设定其别名,如:“Store Number”,如图十七。当然,你也可完全可以设定一个中文的别名,以利于交流。点击右键选择Goto Definition可以查看Together生成的代码(如图十八)
图十八:Together自动生成的代码及别名 创建关系与连接。在该实例中存在两个关系:一是Clerk关联到Store,一是Store包括若干个Items。Clerk与Store之间的关系类似于“客户”与“供应商”之间的关系,而对于Store和Items则明显的是一个聚合关系(Aggragation)。点击Association Link按钮,而后点击Store并拖至Clerk,此行为会为所谓的客户与供应商之间建立关系(图十九): 图十九:在Store与Clerk之间建立关系 在Store与Item之间另一新的关联,使用属性窗口来定义连接的类型,从Type属性中定义Aggregation属性。 创建超级链接。Video Store有一个方法findByKeywords用以查找录像带。通过使用超级链接,可以快速确定图与元素的关系类型并将其在模型中记录下来,以用于其他的用例中。打开用例图,右击“Find Item by Keywords”用例,选择Hyperliks->Edit,会出现一个对话框(图二十),从“Available Content”面板中选择Video Store->Store->findByKeywords,然后点击Add按钮将所选元素加入到右侧面板,点击OK,此时,新建立的用例超级链接会以蓝色字体显示(图二十一)。 图二十:超级链接对话框
图二十一:建立完成超级链接之后的用例图 创建序列图。序列图用于设计对象模型的动态效果。在Model视图,右击Video Store根节点,Add->Other diagram,在弹出的对话框中选择“Sequence Diagram”,重命名为“Rent Movie Sqquence”,并点击OK。从ToolBox中选择“UML Interaction Diagram”,点击Actor按钮,放置到图中,重命名为“Clerk”,点击对象按钮,并点击Actor时间线的右侧,将该对象重命名为“theStore”。点击工具盒中的“Message”按钮,增加一个消息连接,并从Actor的时间线拖动到theStore的时间线,完成该序列图(图二十二): 图二十二:序列图 右击theStore对象,选择Choose class->Store,最终的序列图会显示出来,注意此时的对象名称已经关联到对应的类中了。点击消息链,选择Choose method->findByTitle():void,将消息链与一个方法联系起来(图二十三): 图二十三:消息链与方法进行关联 在序列图与协作图之间进行转换。在序列图上右击,选择“Show as Collaboration”菜单命令,打开协作图,此时,在工具箱内会显示与协作图相关的作图工具。在协作图上右击鼠标,则可以通过上下文菜单转换到序列图中。 |
||||||||||||||||||||||||||||||||||||
4、Together的扩展应用之一:对模式的支持 |
||||||||||||||||||||||||||||||||||||
Together支持常用的模式,像“四人帮”(这个词也许只有咱们中国的程序才可以想得出来,呵呵)提出的那个著名的23种设计模式。设计人员可以使用模式来创建或修改已存在的连接和类。 在下面的例子中,假设Item需要一个动态系统,那么一个Item被返回后,计数器被更新及其他系统得到通知。应用Observer(观察模式)到Item类,可以实现这些功能。 右击Video Store类图,选择“Apply Pattern”,一个模式向导对话框会打开(图二十四):
图二十四:模式向导对话框 从左边的Patterns面板,选择Gof->Behavioral->Observer模式,在右边的Pattern属性中,更改Class Subject名称为Item,接受缺省的属性设置,点击OK,则类图更改为图二十五的样子: 图二十五:应用观察员模式之后的类图 Item被更新,包括通知消息及观察方法(attach和detach),其他所需的类及接口也被创建。Together以椭圆形来组织该模式及其他的视觉元素,列出了模式的参与者及连接,可以通过展开椭圆形Observer元素中的Participants(参与者)来观察参与者的信息。右击Observer元素,选择Add可以观察特殊模式的有效动作。 |
||||||||||||||||||||||||||||||||||||
5、Together的扩展应用之二:生成文档 |
||||||||||||||||||||||||||||||||||||
Together可为项目生成标准的HTML文档。在Model视图中,右击项目的根节点,选择Generate Documentation,找开一个对话框(图二十六):
图二十六:文档生成对话框 缺省的情况下,文档生成向导会为整个项目产生文档,可以通过选择不同的范围选项来限制文档的生成范围。包括以下几项:Current namespace:生成的文档输出仅包括Model视图中所选择的名字空间;Current namespace with descendent namespaces:生成的文档输入包括Model视图中所选名字空间及其后代名字空间;Current diagram:生成的文档输出为图表视图中当前的焦点视图;All:生成的文档输出覆盖全部的项目。 选择项包括:Output folder:生成的文档输出的目标路径;Include diagrams:生成的文档输出中是否包括图像;Include navigation tree:生成的文档输出中是否包括导航树;Launch HTML browser:是否在Visaul Studio .NET的WEB浏览器中装入文档。如果不选择此项的话,可以在生成文档的目录中打开一个Index.html文件来浏览生成的输出文档。生成的文档示例(图二十七): 图二十七:生成的文档输出示例 可以通过左下角的导航树,浏览你所有的工作。应该说,这个文档的输出是相当完备的,如果在设计的时候做的比较周全的话,随着设计的完成,一份系统的文档已然生成,省却了开发人员的不少气力,是功能最强及Together中最具特色的部分之一。 |
||||||||||||||||||||||||||||||||||||
6、Together的扩展应用之三:导入、导出XMI项目文件 |
||||||||||||||||||||||||||||||||||||
导出XML项目文件。在Model视图中,右击Video Store项目,选择Export Project to XMI命令,会弹出一个XMI导出对话框(图二十八):
图二十八:以XMI格式导出项目 可以设定导出XMI文件的类型及路径。缺省的情况下是“..<project_directory>/out/xmi/Video Store.xmi”。导入的情况与些类似,不再赘述。 |
7、Together的设置选项简介 |
通用选项:
图二十九:通用选项 Delete confirmation:此选项定义当你删除一个元素的时候是否需要进行确认。 Automatically enable Together VS.NET support for opened projects:当打开一个已存在的项目时,是否自动启用Together。 Automatically enable Together VS.NET support for the new prjoects:当新建一个项目文件时,是否自动启用Together. 制图选项:
图三十:作图选项 Font in diagrams:图表视图中字体的设定。 Meber format:设定显示的方式。一个UML方式,是缺省的表示方法,一个Language是自然语言表示法。 Show page borders:是否显示页面的边框。 Gird height(pixels):格子的高度,以像素为单位,缺省值是10点。 Gird width(pixels):格子的宽度,以像素为单位,缺省值是10点。 Show grid:是否显示格子。 Snap to grid:图形是否对格式进行吸附。 3D look:每个图形元素是否以三维形式显示。 文档生成选项: 图三十一:文档生成选项 Bottom:文档底端文字。 Documentation Title:文档的标题。 Footer:脚注。 Header:头注。 Window Title:窗口标题。 internal:是否包含内部值。 private:是否包含私有值。 protected:是否包含保护值。 protected internal:是否包含保护性的私有值。 public:是否包含公开值。 Genarate Help:是否生成帮助。 Genarate Index:是否生成索引。 Genarate Navbar:是否生成导航条。 Genarater Tree:是否生成树形表示。 Genarate Use:是否生成用户用例。 模型视图选项: 图三十二:模型视图选项 Show diagram nodes expandable:是否显示扩展的图形元素。 Sorting type:图形元素的排序规则。 打印选项: 图三十三:打印选项 Print compartments as line:是否以线方式打印间隔。 Print shadows:是否打印阴影。 Footer alignment:脚注对齐方式。 Footer text:脚注打印文本。缺省内容是Printed by %user%(%longdate%),%user%代表用户名,%longdate%代表长日期。 Print footer:是否打印脚注。 Fit to page:是否适合整页。 Font:打印文档用字体。缺省值是9.75磅的Microsoft Sans Serif字体。 Print border:是否打印边框。 Print empty page:是否打印空白页。 Print zoom:打印时放大倍率。 Header:每页文档头部文本内容。 Header alignment:文档头部文本的对方式。 Print header:是否打印文档头部。 Botoom margin:文档底部留空。缺省为1英寸。 Left margin:文档左侧留空。缺省为1英寸。 Top margin:文档顶部留空。缺省为1英寸。 Right margin:文档右侧留空。缺省为1英寸。 Page number alignment:页号对齐方式。 Print page numbers:是否打印页号。 Custom page height:自定义页高。缺省为11.88英寸。 Custom page width:自定义页宽。缺省为8.4英寸。 Paper orientation:打印方向。缺省为Portrait(纵向)。 Page size:页的大小。缺省为A4型纸。 源代码选项: 图三十四:源代码选项 Autocreate association links in interfaces:是否在接口中自动创建关系连接。 Autocreate dependency links:是否自动创建依赖连接。 UML选项:
图三十五:UML选项 Show referenced classnames:是否显示引用的类名称。此选项在当前项目中控制显示/隐藏被引用的类名称。 视图管理选项: 图三十六:视图管理选项 Show association links:是否显示关系连接。 Show classes:是否显示类。 Show dependency links:是否显示依赖连接。 Show generalization links:是否显示泛化连接。 Show implementation links:是否显示实现连接。 Show interfaces:是否显示接口。 Show members:是否显示成员。 Show methods:是否显示方法。 Show namespaces:是否显示名称空间。 Show non public classes:是否显示非公开类。 Show non public members:是否显示非公开成员。 Show notes:是否显示注释。 Show properties:是否显示属性。 Show shortcuts:是否显示快捷方式。 |