资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,9,章,Rose,的双向工程,Rational Rose 2003,基础教程,配套电子教案,内 容,Rose,对编程语言的支持,Rose,的双向工程,RTE,举例,Rose,的正向工程,Rose,的逆向工程,1 Rose,对编程语言的支持,支持的语言,企业版,专业版,Rose 2003 Modeler,ANSI C+,X,C+,版本,Visual C+,X,C+,版本,Visual Basic,X,VB,版本,Java,X,J,版本,Ada,X,Ada,版本,CORBA IDL,X,MIDL,X,XML DTD,X,2 Rose,的双向工程,Rose,支持,UML,模型与编程语言之间的相互转换,采用双向工程(,RTE,,,Round Trip Engineering,)的解决方案。,Rose,可以分析代码的改动,对模型进行修改,构建出与代码相关的更好的模型。,2 Rose,的双向工程,3 RTE,举例,3.1,从模型到代码,正向工程,类,SalesRep,:从模型到代码,3 RTE,举例,3.2,从代码到模型,逆向工程,类,SalesRep,:从代码到模型,3.3,一致性问题,对于任何一种,CASE,工具,在进行模型,/,代码转换时,都存在一致性问题。即便最先进的,CASE,工具也很难保证模型,/,代码与代码,/,模型转换之间的一致性(同步)。,在进行逆向工程之后,类,SalesRep,模型已经丢失了逻辑关系,与类,Client,和类,Vector,之间的关联。,3 RTE,举例,4 Rose,的正向工程,4.1,代码生成的步骤,五个步骤:,1,)检查模型;,2,)创建构件;,3,)将类映射到构件;,4,)设置代码生成属性;,5,)选择要进行代码转换的类、构件和包。,4 Rose,的正向工程,4.1,代码生成的步骤,1,)检查模型(,Check Model,),引用问题,非法访问(,Access violations,)问题,语言语法问题,2,)创建构件,Check Model,是独立于语言的。如果你想将模型转换成下面的三种语言之前进行模型检查,则:,Java,:单击,ToolsJava/J2EESyntax Check,CORBA,:单击,ToolsCORBASyntax Check,Oracle8,:单击,Tools Oracle8Syntax Checker,4 Rose,的正向工程,4.1,代码生成的步骤,3,)将类映射到构件,构件之间的依赖性决定了系统的编译依赖性。,指定构件实现的类:,选中构件图或浏览器中的用于实现类的构件图标;,打开构件规范窗口;,选中,Realizes,标签;,选中,Show all classes,复选框;,在类列表中找到并右击所要实现的类,单击快捷菜单中的,Assign,。,4 Rose,的正向工程,4.1,代码生成的步骤,4,)设置代码生成属性,直接影响生成的语言代码框架,代码生成属性控制模型元素转换到代码时的具体细节。在生成代码之前,最好先检查代码生成属性并进行必要的修改。因为模型元素(包括类、属性、构件等)有多种代码生成属性可供选择,而,Rose,只是提供了常用的代码生成属性的默认设置。,要查看代码生成属性,单击,ToolsOptions,,然后选择相应的语言标签,4 Rose,的正向工程,4.1,代码生成的步骤,5,)选择类、构件和包,Rose,允许分步骤、有选择的进行代码转换,即在生成代码时,可以一次选择一个类、一个构件或者一个包,通过代码转换将其转换成相应的语言代码;也可以一次生成多个类、构件或者包的代码;或者是它们的组合。,选中一个或多个,生成的代码,类,每个被选中的类,逻辑包,每个逻辑包中的类,构件,映射到每个构件的类,构件包,映射到构件包中各个包中的类,4 Rose,的正向工程,4.2,代码生成,1,)语言工具定制,从,Tools,菜单中选择特定的语言工具选项并设置相应的语言选项,2,)控制源代码的框架内容,任何造型工具都不能创建完整的应用程序。,Rose,强大的代码生成能力在于它能生成大量的框架代码。,3,)设定源代码文件的位置,默认的情况下,包含已生成的代码的文件和路径位于当前工作空间所在的目录下。,4,)代码生成之后的工作,精化模型系统的程序实现:编写每个类的操作(方法实现)和设计图形用户界面(,GUI,),5 Rose,的逆向工程,定义,通过源代码或者对源代码进行修改,得出,UML,模型,这就是逆向工程。,模型的信息来源,1,)类、属性和操作,2,)关系,3,)包和构件,5 Rose,的逆向工程,1,)类、属性和操作,5 Rose,的逆向工程,2,)关系,5 Rose,的逆向工程,3,)包和构件,代码中包和构件的信息也会在逆向工程时体现在,Rose,模型中。,Rose,对构件的处理方法因语言而异。,
展开阅读全文