软件工程Rose的双向工程.ppt_第1页
软件工程Rose的双向工程.ppt_第2页
软件工程Rose的双向工程.ppt_第3页
软件工程Rose的双向工程.ppt_第4页
软件工程Rose的双向工程.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、Rose的双向工程,目录,双向工程简介,正向工程,逆向工程,实例应用,小结,Rose的双向工程,双向工程包括正向工程和逆向工程。 正向工程指把设计模型映射为代码; 逆向工程是指将代码转换成设计模型。,双向工程简介,无论是把设计模型转换成代码,还是把代码转换为设计模型,都是一项非常复杂的工作。正向和逆向工程这两方面结合在一起,定义为双向工程。双向工程提供了一种机制,它使系统架构或者设计模型与代码之间进行双向交换。 正向工程把设计模型转换为代码框架,开发者不需要编写类、属性、方法代码。一般情况下,开发人员将系统设计细化到一定的级别,然后应用正向工程。 逆向工程是指把代码转换成设计模型。在迭代开发周

2、期中,一旦某个模型作为迭代的一部分被修改,采用正向工程把新的类、方法、属性加入代码;同时,一旦某些代码被修改,采用逆向工程,将修改后的代码转换为设计模型。 自从1997年正式发布UML以后,出现了许多UML建模CASE工具。其中最具代表性的两款CASE工具是Sparx Systems的Enterprise Architect和IBM 的Rational Rose。,正向工程,正向工程(代码生成)是指把Rose模型中的一个或多个类图转换为Java源代码的过程。Rational Rose里的正向工程是以组件为单位的。即Java源代码的生成是以组件为单位的,不是以类为单位的。所以,创建一个类后需要把

3、它分配给一个有效的Java组件。如果模型的缺省语言是Java,Rose会自动为这个类创建一个组件。 当对一个设计模型元素进行正向工程时,模型元素的特征会映射成Java语言的框架结构。例如,Rose中的类会通过它的组件生成一个.java文件;Rose中的包会生成一个java包。另外,当把一个UML包进行正向工程时,将把属于该包的每一个组件都生成一个.java文件。,正向工程,Rose工具能够使代码与UML模型保持一致,每次创建或修改模型中的UML元素,它都会自动进行代码生成。缺省情况下,这个功能是关闭的,可以通过【ToolsJavaPreject Specification】打开该功能,选择“C

4、ode Generation”选项卡,选中“Automatic Synchronization”。 “Code Generation”窗口是代码生成时最常用的一个窗口,下面对该窗口中的每项做详细的介绍。 (1)IDE:指定与Rose相关联的Java开发环境。下拉框列出了系统注册表里的IDE。Rose可以识别的开发环境有以下几种:VisualAge for Java,VisualCafe,Forte for Java以及JBuilder。缺省的IDE是Rose内部编辑器,它使用Sun的JDK。,正向工程,(2)Default Data Types:该项用来设置缺省数据类型,当创建新的属性和方法时

5、,Rose就会使用这个数据类型。缺省情况下,属性的数据类型是int,方法返回值的数据类型是void。 (3)Prefixes该项设定缺省前缀(如果有的话),Rose会在创建实例和类变量的时候使用这个前缀。缺省不适用前缀。 (4)Generate Rose ID:设定Rose是否在代码中为每个方法都加惟一的标识符。Rose使用这个RoseID来识别代码中名称被改动的方法。缺省情况下,将生成RoseID.如果关闭了“Automatic Synchronization”,就需要打开该功能。,正向工程,(5)Generate Default Return Line:设定Rose是否在每个类声明后面都生

6、成一个返回行。缺省情况下,Rose将生成返回行。 (6)Stop on Error:设定Rose 在生成代码时,是否在遇到第一个错误时就停止。缺省情况下这一项是关闭的,因此即使遇到错误,也会继续生成代码。 (7)Create Missing Directories:如果在Rose模型中引用了包,这项将指定是否生成没有定义的目录。缺省情况下,这个功能是开启的。 (8)Automatic Synchronization Mode:当启用这项时,Rose会自动保持代码与模型同步,也就是说代码中的任何变动都会立即在模型中反映出来,反过来也一样的。缺省情况下,没有使用这个功能。 (9)Show Prog

7、ress Indicator:指定Rose是否在遇到复杂的同步操作时显示进度栏。缺省情况下不会显示。,正向工程,(10)Source Code Control:指定对哪些文件进行源码控制。 Put source code of the project under Source Control:是否使用Rose J/CM Intergration对Java源代码进行版本控制。 (1)Input Checkin/Checkout comment:指定用户是否需要对检入/检出代码的活动进行说明。 (2)Select Source Root Path for Source Control:选择存放生成

8、的代码文件的路径。,正向工程,下面将详细介绍如何从模型生成Java代码: 1. 将UML类加入模型中的Java组件 Rose会将.java文件与模型中的组件联系起来。因此,Rose要求模型中的每个Java类都必须属于组件视图中的某个Java组件。 有两种给组件添加Java类的方法。 (1)当启动代码生成时,可以让Rose自动创建组件。如果这样,Rose会为每个类都生成一个.java文件和一个组件。为使用这个功能,必须将模型的缺省语言设置为Java,可以通过【ToolsOptionsNotationDefault Language】进行设置 Rose不会自动为多个类生成一个.java文件。如果将

9、Java类分配给一个逻辑包,Rose将为组件视图中的物理包创建一个镜像,然后用它创建目录或是基于模型中包的Java包。 (2)可以自己创建组件,然后显式地将类添加到组件视图中。这样做可以将多个类生成的代码放在一个.java文件中。,正向工程,有两种方法可以将一个类添加到组件中。无论选择哪种方法,都必须首先创建这个组件。 第1种,使用浏览器将类添加到组件中。首先在浏览器视图中选择一个类,然后将将类拖放到适当的组件上。这样,就会在该类名字后面列出其所在组件的名字;第2种,使用Rose里的“Component Specification”窗口。首先打开组件的标准说明:如果该组件不是一个Java组件(

10、也就是它的语言仍然是Anaysis),双击浏览器或图中的组件;如果它已经是Java组件,选中它并单击右键然后选择【Open Standard Specification】子菜单。 2. 语法检查 这是一个可选的步骤。生成代码前,可以选择对模型组件的语法进行检查。在生成代码时Rose会自动进行语法检查。Rose的Java语法检查是基于Java代码语义的。 可以通过以下的步骤对模型组件进行Java语法错误检查。 (1)打开包含将用于生成代码的组件图。,正向工程,(2)在该图中选择一个或多个包和组件。 (3)使用【ToolsJava/J2EESysntax Check】对其进行语法检查。 (4)查看

11、Rose的日志窗口。如果发现有语法错误,生成的代码有可能不能编译。 (5)对组件进行修改。 3. 设置“Classpath” 通过【ToolsJava/J2EEProject Specification.】打开Rose中的“Java Project Specification”,其中“ClassPath”选项卡,为模型指定一个Java类路径。,正向工程,4. 设置“Code Generation”参数 5. 备份文件 代码生成以后,Rose将会生成一份当前源文件的备份,它的前缀是.jv。在用代码生成设计模型时,必须将源文件备份。如果多次为同一个模型生成代码,那么新生成的文件会覆盖原来的.jv文

12、件。 6. 生成Java代码 选择至少一个类或组件,然后选择【Tools-Java/J2EEGenerate Code】子菜单。如果是第1次使用该模型生成代码,那么会弹出一个映射对话框,它允许用户将包和组件映射到“classpath”属性设置的文件夹中。,逆向工程,逆向工程是分析Java代码,然后将其转换到Rose模型的类和组件的过程。Rational Rose允许从Java源文件(.java文件)、Java字节码(.class文件)以及一些打包文件(.zip .cab .jar文件)中进行逆向工程。 下面将会详细介绍逆向工程的过程。 (1)设置或检查CALSSPATH环境变量。Rose要求将

13、CLASSPATH环境设置为JDK的类库。根据使用的JDK的版本不同,CLASSPATH可以指向不同类型的类库文件,例如.zip rt.jar等。 设置CLASSPATH环境变量的步骤如下。,逆向工程,首先,右击“我的电脑”,然后选择【属性高级】选项,单击【环境变量】按钮 在“系统变量”区域中,首先查找是否已经有了CLASSPATH环境变量。如果没有,单击【新建】按钮,如果有,则单击【编辑】按钮,然后在弹出的对话框中输入路径。 另外,还需要为自己的库创建一个Classpath属性。可以使用“project Specification”窗口中的“Classpath”选项进行设置。 (2)启动逆向

14、工程。有3种方式可以启动逆向工程。第1种,选择一个或多个类,然后单击【ToolsJava/J2EEReverse Engineer】子菜单;第2种,右键单击某个类,然后在弹出的菜单中选择【Java/J2EEReverse Engineer】;第3种,将文件拖放到Rose模型中的组件图或类图中。当拖放.zip 、.cab和.jar文件时,Rose会自动将它们解压。注意,Rose不能将代码生成这种文件。,实例应用,1生成代码实例 由于Rose的正向工程只能从UML类生成代码,所以首先必须画出类图。以下面的类为例,选中这些类,然后选择【ToolsJava/J2EEGenerate Code】,如果还

15、没设置Classpath,那么会弹出一个对话框,要求选择Classpath,如果当前还没有Classpath,点击“Edit”,进行Classpath配置。,图14-2,图14-3,实例应用,选择下图中右边的第一个“添加”按钮,弹出选择Classpath配置确认框。,Classpath配置确认框,实例应用,Classpath配置有两种形式: 一种是选择.jar或.zip+Directory形式将Classpath指向为JDK的类库文件(如:C:Program FilesJavaj2sdk1.5.0librt.jar),另外再定义一个Directory(如D:),可将生成的java文件放在这个独

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

17、 D:JavaSourcePerson.java public class Person private String name; private String ID; private String address; private String phoneNo; /* roseuid 4921532B01A5 */ public Person(),实例应用, /* roseuid 492152A003A9 */ public void getName() /* roseuid 4921532B0138 */ public void setName() ,实例应用, /* roseuid 49

18、215335002E */ public void getID() /* roseuid 4921533E031C */ public void setID() ,实例应用, /* roseuid 49215343000F */ public void getAddress() /* roseuid 4921534E030D */ public void setAddress() ,实例应用, 再看看,Rose是否在代码里保持了模型中的继承关系,以Customer子类为例,代码如下: /Source file: D:JavaSourceCustomer.java public class Customer extends Person private String CarType; private String licenceNo; private String RequestOrder; /* roseuid 4921539A0

温馨提示

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

评论

0/150

提交评论