RationalRose进行C++代码的逆向工程_第1页
RationalRose进行C++代码的逆向工程_第2页
RationalRose进行C++代码的逆向工程_第3页
RationalRose进行C++代码的逆向工程_第4页
RationalRose进行C++代码的逆向工程_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、利用RationalRose进行C+代码的逆向工程介绍RationalRose是利用UML(统一建模语言)进行分析和设计面向对象软件系统的强大的可视化工具,可以进行项目需求分析、结构规划和生成框架代码,还可以支持从现有系统逆向转出工程代码,生成Rose模型的功能。2004年10月,IBM推出了支持最新的UML2.0的可视化建模工具RationalSoftwareArchitect(见注释)和IBMRationalSoftwareModeler(见注释)。虽然它们支持在建模功能上有了更好的改进、支持了更新的标准,但是RSA的精彩功能主要是集中在对Java应用的支持,而IBMRationalSof

2、twareModeler则是主要关注系统的模型设计,如果要从结构上分析C+编写的系统的代码,RationalRose还是首选的工具。接下来的文章将会对如何利用RationalRose的逆向转出工程来进行系统分析进行更加详细地阐述。一.RationalRose逆向工程介绍逆向工程(ReverseEngineer)就是从现有系统的代码来生成模型的功能。分析已有的代码其主要的目的就是了解代码结构和数据结构,这些对应到模型图就是类图、数据模型图和组件图(对UML各种模型图的描述见注释),也就是通过RationalRose的逆向工程所得到的结果。RationalRose所支持的逆向工程功能很强大,包括的

3、编程语言有C+,VB,VC,Java,CORBA,以及数据库DDL脚本等等,并且可以直接连接DB2,SQLServerQracle和Sybase等数据库导入Schema并生成数据模型。很多大型的C+开发的产品都涉及到数据库的使用,对这种大型系统的开发,尤其是做二次开发的情况下,主要的难点就是对源码和数据库结构的分析。而利用Rose的逆向工程这一功能,就可以完成代码类图以及数据库Schema-数据模型图的转换,解决这两大难点,可以使开发和设计人员在对这种大型系统的升级、分析和开发中,更为方便、快捷、有条理地掌握系统结构,不用再为分析庞大的系统结构而头疼。的信息,也就是该组件的语言、所包含的文件、

4、文件所在的路径、文件后缀等等信息,然后ReverseEngineer就可以根据给定的信息将代码转换成类图了。a)右键点击组件视图(ComponentView),选择New-Component,创建一个新的组件RationalRose(untitled)一ClassDiagraA:Logicalie/同FileEditViewtBrowseReportQueryToolsAdd-IrLEWindowHelpq|站髦翕|寻|松rl|gi圃画圃便|1114|毀龟qGmtitled)JjUseCaseViewFHlLogic:alViewg|Ma0Deplo廖1MadelFackageComponer

5、LtCompijnentDi:gi_amNewDeleRerL:ameUnits卜FileUJ1LABC曰AddtciVersionConCheckInCheckoutUndoCheckoutGetLatestDataModeler将component的language属性设定为ANSIC+选中创建的component,点击右键,选中OpenSpecificationRationalRose一(untitled)一ClassDiagru:LogFileEditViewFormatBrowseReportyueryToolsAdd-1nsQ|需電翕|寻丨皤砌圈圈减|111在这个对话框中将该com

6、ponent的Ianguage设定为ANSIC+c)配置该ANSIC+component,设置好该component中包含的C+代码文件,并进行C+语言的详细设置选中该component,点击右键,选择ANSIC+-OpenANSIC+Specification把Sourcefilerootdirectory设定为你的C+源码文件所在的路径,并且将需要转换的文件添加到ProjectFiles中,视你的需要来做其它的设定,比如:头文件扩展名等等。将设置好的component转换成模型图选中设置好的component,点击右键,选中ANSIC+-ReverseEngineertl|_tC+Reve

7、rseEngineeredEmyclass(myABSIC+)弐AssociEC_1ComponentViGetLatsEtGfeit-erat-edDataModel-erDp问AJBIC+Specification.Gemerftte-Code.sBReverseE聶誥irtEEf.|创Deploym-ant囱ModlPropEeRwjie选中需要转换的class,点击ok,个component的逆向转换就完成了。2VisualC+在使用这个功能的时候,要求用户的机器上同时安装VisualStudio。VisualC+的逆向工程也需要首先创建一个component,并将该component

8、的Ianguage属性设置为VC+。RationalRose对VC+模型的转换是通过读取VC+ProjectFile的信息来实现的,用户只需要将对应的projectfile信息指定给component就可以了。a)将VC+Project的信息赋给刚刚创建好的component。选择该component,点击右键,选择AssignToProjecti-riL.ijgic:i1ew|Mamf、AseciciatiunE一|_ICompurLerLtViewg|MainmyVCjUlenSpeizii2ation.二QDeplujtti11ModelFiDeleteRerL:aiTieUpd:teC

9、ode.UpdateModel.AeeitlToFroject”Froperties.BrowseFroj_ectAddGeneratoVersionContifDl在对话框中找到刚刚创建的component,右键点击并选择Properties。在下面对话框中选中需要进行转换的Project,点击ok,该component就与需要转换的project关联上了。b)将设置好的component转换成模型图选中设置好的component,点击右键,UpdateModel.,将会弹出确认对话框,选中需要转换的class,点击finish就可以了。龟KadelDpdateTool-SelectComp

10、onent?andClasses$eleclth?ompcrMDtsor2冷品电thatfouvan12岂Classes1haldxxmtearrentlrxis*inths融odidandwi1b相ddL4r?shostarred.Tcrewe?se史血|血皑亡t&sourcecadipirojt亡tfoirthefirst戈!iiTi匕r5thlel1e3fconthedesiredIwKEua电皂-andseieelAddComponent.ihcidurPfoiedComponerits;1riVC44-0超0*myclass备忖hualB躺FeCMpMientasEicitedtoE

11、ATOMTEST1estSsw(lest)AddCojwnDataModeler-ReverseEngineer0m;/1兀+=lden0OjtictlsToolsDataModelerDrmatBrowseReportluet-yAdd-InsjYindowHelpMijdelProperties卜Java/J2EEOracleSErLgirLHHi-HilCreateCheckModelANSIC+comCle:di-CasHJ2EEDeployM0delUpd:teUverviewatictleLgi-:=UTiUpenScript.NewScriptAddSchemaAddDomair

12、LFackageCOL_1:SMALUNTPKCOL_2:SMALUNT駅T_1OL_2:SMALUNTEKCbE.3:SWffllNTti脚吗驴&K_T_CICIQJTC_T_OOQFK_T_O1Q士“FOOQ110b)在进行逆向工程转换的过程中可以选择是从数据库还是DDL脚本进行转换,如果是DDL脚本转换,就直接给定DDL脚本文件位置就可以了。本例子给出的是连接SQLServer数据库将schema导入生成数据模型的过程,所以选中Database,进入下一步。c)填写数据库相关信息d)选中所有需要转换的schemae)选择需要将哪些数据库中的元素导入到数据模型中转换操作会自动在组件图(Co

13、mponentView)中添加数据库组件,并在逻辑图(LogicalView)中生成以Schema作为命名开头的数据模型。RationalRose-(untitled)FileEditViewFormatBrowseReportueryToolsAdd-I)工ntitl已d)+PHUseCaseView-JjLi:igic:ilView+口GlobalD;at;玄Types一PHlSchemaz+面(Ochenia)-dbu*Aseuciaticmm|.gMamzXAseciciatiuiiE一CompurLerLtView-LJINcn-thwindNorthwin.日3TableSpace

14、FEB1ARYg|MainCDepluj-ttientView園IModelProperties打开数据模型,可以看到从数据库中转换过来的各个表和视图。RationalRose一(untitled)FiltditViewFormatIrciwstgtporlflawyJ.colsAdd-InsfindciwGintitied)亡jseCaseView口LogicalVine*OGlobalD吐色Types5CJSchemas-Sc*h电m包dboB由国Alphabeticalliafproducts(Hrdwind)Ctttgorieg(Korthwind)CategorySdL*for199

15、7(Morthwind)CurrentFr?dnetList(Horthwind)CiStoifierandSyrpplierzbyCity(Northwind)CxistomtrCuiloatrDemoCNrthwind)CustomerDemographics(Morthwind)Customers(llerthwirid)SFContaiaCTSPContiihffrPCoxttaiaeirrthwind)ProductSalesfor1997(Korthwind.)Help从数据模型图中可以看到表的结构以及各个表和视图之间的逻辑关系。同*rIK忖左边的explorer中将各个元素拖进视

16、图中,在这个过程中,各个元素之间的关联关系会自动在图中表示出来,而不需要用户再做其他工作。例如:生成一个数据模型的数据模型图的过程从左边将数据模型中的数据元素拖到右边的数据模型图中,表CustomerCustomerDemo和表CustomerDemographics之间的依赖关系的菱形箭头是自动生成的,无需手工操作。*iUgginni刼害匸-*lAriiJ-已ihitr:皿打/辰泌“织皿理IE机*iFrvb.IwirfIqoIi.!iad-,aH】ptwUilHiliCjITiCuteTict-CjL(If0iI型勺(Jhx*fallua-irx1*4?RivahdF曲iLayoutDiag

17、ram,系统会将图中的所有元素用最优方式重新排列,给用户一个清晰的视图。RationalRose(untitled)一DataIodelDiagrAlp:鬲FileEditViewBrowseReportueryToolsAdd-InsFormatiss+untit1臼I+QjUseCaseVie1-Logic:dlViewIGlub:dlDaSchemas5曰田日atatm-u511EuEu5S5SsmpmprLVccccccc.pk_cistneiCiftmerDemcfl*-=-=FW-=-FK_CiftnerCiftnierDemo_CistrTwrf*-:-=FW-=-FKCistp

18、K_BnptaveeTerrltorlesOP-=yF*aFKEmptaeTerrtorlesEmploy*-=-=F*=FkfEmpn軒丁fcftr亦=&rrltiHefQCustorrierDemographicsCi-EtomersEmployeesierTilD:NCHARierDesc:NTECT:-PKCiftdiHrDemcgfcs0円L:istnerID:NCHAR匚omp3Ytt3TiE:NVARCHARitJ)COiftjfflaTiS:NVARCHARCICOiftjtrrtfe:NVARCHAR0Pdjresf:NVARCHAR(33)CH:NVARCHARORegbb:NVARCHARfJ)PwteCci:HVARCHARCOUtTir:NVARCHARf?)PbOieVARCH.ROFai::NVARCHAR(1-=-=P*=PKCistdiEI?0JhCfeMCtt,i|:i-=-=lide-=-Plsc&IjQHBnp卯EID:INTLar

温馨提示

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

评论

0/150

提交评论