软件建模技术 第14章Rose的双向工程_第1页
软件建模技术 第14章Rose的双向工程_第2页
软件建模技术 第14章Rose的双向工程_第3页
软件建模技术 第14章Rose的双向工程_第4页
软件建模技术 第14章Rose的双向工程_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第14章 Rose的双向工程目录141 双向工程简介双向工程简介142 正向工程正向工程143 逆向工程逆向工程144 实例应用实例应用小结小结第14章 Rose的双向工程n双向工程包括正向工程和逆向工程。正向双向工程包括正向工程和逆向工程。正向工程指把设计模型映射为代码;逆向工程工程指把设计模型映射为代码;逆向工程是指将代码转换成设计模型。是指将代码转换成设计模型。141 双向工程简介n无论是把设计模型转换成代码,还是把代码转换为设计模型,都是一项非常复杂的工作。正向和逆向工程这两方面结合在一起,定义为双向工程。双向工程提供了一种机制,它使系统架构或者设计模型与代码之间进行双向交换。n正向工

2、程把设计模型转换为代码框架,开发者不需要编写类、属性、方法代码。一般情况下,开发人员将系统设计细化到一定的级别,然后应用正向工程。141 双向工程简介n逆向工程是指把代码转换成设计模型。在迭代开发周期中,一旦某个模型作为迭代的一部分被修改,采用正向工程把新的类、方法、属性加入代码;同时,一旦某些代码被修改,采用逆向工程,将修改后的代码转换为设计模型。n自从1997年正式发布UML以后,出现了许多UML建模CASE工具。其中最具代表性的两款CASE工具是Sparx Systems的Enterprise Architect和IBM 的Rational Rose。142 正向工程n正向工程(代码生成

3、)是指把Rose模型中的一个或多个类图转换为Java源代码的过程。Rational Rose里的正向工程是以组件为单位的。即Java源代码的生成是以组件为单位的,不是以类为单位的。所以,创建一个类后需要把它分配给一个有效的Java组件。如果模型的缺省语言是Java,Rose会自动为这个类创建一个组件。142 正向工程n当对一个设计模型元素进行正向工程时,模型元素的特征会映射成Java语言的框架结构。例如,Rose中的类会通过它的组件生成一个.java文件;Rose中的包会生成一个java包。另外,当把一个UML包进行正向工程时,将把属于该包的每一个组件都生成一个.java文件。142 正向工程

4、nRose工具能够使代码与UML模型保持一致,每次创建或修改模型中的UML元素,它都会自动进行代码生成。缺省情况下,这个功能是关闭的,可以通过【ToolsJavaPreject Specification】打开该功能,选择“Code Generation”选项卡,选中“Automatic Synchronization”,如图14-1所示。142 正向工程n图14-1所示的“Code Generation”窗口是代码生成时最常用的一个窗口,下面对该窗口中的每项做详细的介绍。n(1)IDE:指定与Rose相关联的Java开发环境。下拉框列出了系统注册表里的IDE。Rose可以识别的开发环境有以下

5、几种:VisualAge for Java,VisualCafe,Forte for Java以及JBuilder。缺省的IDE是Rose内部编辑器,它使用Sun的JDK。142 正向工程n (2)Default Data Types:该项用来设置缺省数据类型,当创建新的属性和方法时,Rose就会使用这个数据类型。缺省情况下,属性的数据类型是int,方法返回值的数据类型是void。n (3)Prefixes该项设定缺省前缀(如果有的话),Rose会在创建实例和类变量的时候使用这个前缀。缺省不适用前缀。n (4)Generate Rose ID:设定Rose是否在代码中为每个方法都加惟一的标识符

6、。Rose使用这个RoseID来识别代码中名称被改动的方法。缺省情况下,将生成RoseID.如果关闭了“Automatic Synchronization”,就需要打开该功能。图14-1 打开自动同步142 正向工程n (5)Generate Default Return Line:设定Rose是否在每个类声明后面都生成一个返回行。缺省情况下,Rose将生成返回行。n (6)Stop on Error:设定Rose 在生成代码时,是否在遇到第一个错误时就停止。缺省情况下这一项是关闭的,因此即使遇到错误,也会继续生成代码。n (7)Create Missing Directories:如果在Ro

7、se模型中引用了包,这项将指定是否生成没有定义的目录。缺省情况下,这个功能是开启的。n (8)Automatic Synchronization Mode:当启用这项时,Rose会自动保持代码与模型同步,也就是说代码中的任何变动都会立即在模型中反映出来,反过来也一样的。缺省情况下,没有使用这个功能。n (9)Show Progress Indicator:指定Rose是否在遇到复杂的同步操作时显示进度栏。缺省情况下不会显示。142 正向工程n (10)Source Code Control:指定对哪些文件进行源码控制。n (11)Put source code of the project u

8、nder Source Control:是否使用Rose J/CM Intergration对Java源代码进行版本控制。n (1)Input Checkin/Checkout comment:指定用户是否需要对检入/检出代码的活动进行说明。n (2)Select Source Root Path for Source Control:选择存放生成的代码文件的路径。n 下面将详细介绍如何从模型生成Java代码:n 1. 将UML类加入模型中的Java组件142 正向工程n Rose会将.java文件与模型中的组件联系起来。因此,Rose要求模型中的每个Java类都必须属于组件视图中的某个Jav

9、a组件。n 有两种给组件添加Java类的方法。n (1)当启动代码生成时,可以让Rose自动创建组件。如果这样,Rose会为每个类都生成一个.java文件和一个组件。为使用这个功能,必须将模型的缺省语言设置为Java,可以通过【ToolsOptionsNotationDefault Language】进行设置n Rose不会自动为多个类生成一个.java文件。如果将Java类分配给一个逻辑包,Rose将为组件视图中的物理包创建一个镜像,然后用它创建目录或是基于模型中包的Java包。n (2)可以自己创建组件,然后显式地将类添加到组件视图中。这样做可以将多个类生成的代码放在一个.java文件中。

10、142 正向工程n 有两种方法可以将一个类添加到组件中。无论选择哪种方法,都必须首先创建这个组件。n 第1种,使用游览器将类添加到组件中。首先在游览器视图中选择一个类,然后将将类拖放到适当的组件上。这样,就会在该类名字后面列出其所在组件的名字;第2种,使用Rose里的“Component Specification”窗口。首先打开组件的标准说明:如果该组件不是一个Java组件(也就是它的语言仍然是Anaysis),双击浏览器或图中的组件;如果它已经是Java组件,选中它并单击右键然后选择【Open Standard Specification】子菜单。n 2. 语法检查n 这是一个可选的步骤。

11、生成代码前,可以选择对模型组件的语法进行检查。在生成代码时Rose会自动进行语法检查。Rose的Java语法检查是基于Java代码语义的。n 可以通过以下的步骤对模型组件进行Java语法错误检查。n (1)打开包含将用于生成代码的组件图。142 正向工程n(2)在该图中选择一个或多个包和组件。n(3)使用【ToolsJava/J2EESysntax Check】对其进行语法检查。n(4)查看Rose的日志窗口。如果发现有语法错误,生成的代码有可能不能编译。n(5)对组件进行修改。n3. 设置“Classpath”142 正向工程n 通过【ToolsJava/J2EEProject Specif

12、ication.】打开Rose中的“Java Project Specification”,其中“ClassPath”选项卡,为模型指定一个Java类路径。n 4. 设置“Code Generation”参数n 5. 备份文件n 代码生成以后,Rose将会生成一份当前源文件的备份,它的前缀是.jv。在用代码生成设计模型时,必须将源文件备份。如果多次为同一个模型生成代码,那么新生成的文件会覆盖原来的.jv文件。n 6. 生成Java代码n 选择至少一个类或组件,然后选择【Tools-Java/J2EEGenerate Code】子菜单。如果是第1次使用该模型生成代码,那么会弹出一个映射对话框,它

13、允许用户将包和组件映射到“classpath”属性设置的文件夹中。143 逆向工程n 逆向工程是分析Java代码,然后将其转换到Rose模型的类和组件的过程。Rational Rose允许从Java源文件(.java文件)、Java字节码(.class文件)以及一些打包文件(.zip .cab .jar文件)中进行逆向工程。n 下面将会详细介绍逆向工程的过程。n (1)设置或检查CALSSPATH环境变量。Rose要求将CLASSPATH环境设置为JDK的类库。根据使用的JDK的版本不同,CLASSPATH可以指向不同类型的类库文件,例如.zip rt.jar等。n 设置CLASSPATH环境

14、变量的步骤如下。143 逆向工程n 首先,右击“我的电脑”,然后选择【属性高级】选项,单击【环境变量】按钮n 在“系统变量”区域中,首先查找是否已经有了CLASSPATH环境变量。如果没有,单击【新建】按钮,如果有,则单击【编辑】按钮,然后在弹出的对话框中输入路径。n 另外,还需要为自己的库创建一个Classpath属性。可以使用“project Specification”窗口中的“Classpath”选项进行设置。n (2)启动逆向工程。有3种方式可以启动逆向工程。第1种,选择一个或多个类,然后单击【ToolsJava/J2EEReverse Engineer】子菜单;第2种,右键单击某个

15、类,然后在弹出的菜单中选择【Java/J2EEReverse Engineer】;第3种,将文件拖放到Rose模型中的组件图或类图中。当拖放.zip 、.cab和.jar文件时,Rose会自动将它们解压。注意,Rose不能将代码生成这种文件。144 实例应用n 1生成代码实例n 由于Rose的正向工程只能从UML类生成代码,所以首先必须画出类图。以下面的类为例,如图14-2所示:选中这些类,然后选择【ToolsJava/J2EEGenerate Code】,如果还没设置Classpath,那么会弹出一个对话框(如图14-3),要求选择Classpath,如果当前还没有Classpath,点击“

16、Edit”,进行Classpath配置。图14-2图14-3144 实例应用n 选择下图(图14-4)中右边的第一个“添加”按钮,弹出选择Classpath配置确认框(图14-5)。图14-4图14-5 Classpath配置确认框 144 实例应用n Classpath配置有两种形式:n 一种是选择.jar或.zip+Directory形式将Classpath指向为JDK的类库文件(如:C:Program FilesJavaj2sdk1.5.0librt.jar),另外再定义一个Directory(如D:),可将生成的java文件放在这个独立的Directory下。n 一种是只选择Direc

17、tory将Classpath指向为JDK的类库Directory(如:C:Program FilesJavaj2sdk1.5.0lib),则生成的java文件将放在C:Program FilesJavaj2sdk1.5.0lib下。n 这里选择第一种形式,配置如下图14-6所示。图14-6144 实例应用n 按“确定”返回。选择设定的Classpath,然后在右面选中所有的类,最后点击【OK】,Rose就开始生成Java代码,如图14-7所示。n 在Classpath下可以找到已经生成的Java文件,如图图14-8所示:图14-7图14-8144 实例应用n 基类Person的源代码如下:n

18、/Source file: D:JavaSourcePerson.javan public class Personn n private String name;n private String ID;n private String address;n private String phoneNo;n /*n roseuid 4921532B01A5n */n public Person()144 实例应用n n n /*n roseuid 492152A003A9n */n public void getName()n n n /*n roseuid 4921532B0138n */n

19、public void setName()n 144 实例应用n n /*n roseuid 49215335002En */n public void getID()n n n /*n roseuid 4921533E031Cn */n public void setID()n 144 实例应用n n /*n roseuid 49215343000Fn */n public void getAddress()n n n /*n roseuid 4921534E030Dn */n public void setAddress()n n 144 实例应用n n 再看看,Rose是否在代码里保持了模型中的继承关系,以Customer子类为例,代码如下:n /Source file: D:JavaSourceCustomer.javan public class Customer extends Personn n private String CarType;n private String licenceNo;n private String RequestOrder;n /*n roseuid 4921539A000Fn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论