Rational Rose是利用UML(統(tǒng)一建模語(yǔ)言)進(jìn)行分析和設(shè)計(jì)面向?qū)ο筌浖到y(tǒng)的強(qiáng)大的可視化工具,可以進(jìn)行項(xiàng)目需求分析、結(jié)構(gòu)規(guī)劃和生成框架代碼,還可以支持從現(xiàn)有系統(tǒng)逆向轉(zhuǎn)出工程代碼,生成Rose模型的功能。
2004年10月,IBM推出了支持最新的UML2.0的可視化建模工具 Rational Software Architect(見(jiàn)注釋①) 和IBM Rational Software Modeler(見(jiàn)注釋②)。雖然它們支持在建模功能上有了更好的改進(jìn)、支持了更新的標(biāo)準(zhǔn),但是RSA的精彩功能主要是集中在對(duì)Java應(yīng)用的支持,而IBM Rational Software Modeler則是主要關(guān)注系統(tǒng)的模型設(shè)計(jì),如果要從結(jié)構(gòu)上分析C++編寫的系統(tǒng)的代碼,Rational Rose還是首選的工具。
接下來(lái)的文章將會(huì)對(duì)如何利用Rational Rose 的逆向轉(zhuǎn)出工程來(lái)進(jìn)行系統(tǒng)分析進(jìn)行更加詳細(xì)地闡述。
一.Rational Rose逆向工程介紹
逆向工程(Reverse Engineer)就是從現(xiàn)有系統(tǒng)的代碼來(lái)生成模型的功能。分析已有的代碼其主要的目的就是了解代碼結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),這些對(duì)應(yīng)到模型圖就是類圖、數(shù)據(jù)模型圖和組件圖(對(duì)UML各種模型圖的描述見(jiàn)注釋③),也就是通過(guò)Rational Rose的逆向工程所得到的結(jié)果。Rational Rose所支持的逆向工程功能很強(qiáng)大,包括的編程語(yǔ)言有C++, VB, VC, Java, CORBA,以及數(shù)據(jù)庫(kù)DDL腳本等等,并且可以直接連接DB2, SQLServer, Oracle和Sybase等數(shù)據(jù)庫(kù)導(dǎo)入Schema并生成數(shù)據(jù)模型。
很多大型的C++開(kāi)發(fā)的產(chǎn)品都涉及到數(shù)據(jù)庫(kù)的使用,對(duì)這種大型系統(tǒng)的開(kāi)發(fā),尤其是做二次開(kāi)發(fā)的情況下,主要的難點(diǎn)就是對(duì)源碼和數(shù)據(jù)庫(kù)結(jié)構(gòu)的分析。而利用Rose的逆向工程這一功能,就可以完成代碼’類圖以及數(shù)據(jù)庫(kù)Schema->數(shù)據(jù)模型圖的轉(zhuǎn)換,解決這兩大難點(diǎn),可以使開(kāi)發(fā)和設(shè)計(jì)人員在對(duì)這種大型系統(tǒng)的升級(jí)、分析和開(kāi)發(fā)中,更為方便、快捷、有條理地掌握系統(tǒng)結(jié)構(gòu),不用再為分析龐大的系統(tǒng)結(jié)構(gòu)而頭疼。
二.如何用Rational Rose進(jìn)行C++代碼分析
這一節(jié)主要介紹用戶如何使用Rose的逆向工程生成UML模型,并用來(lái)進(jìn)行C++代碼的結(jié)構(gòu)分析。
Rational Rose可以支持標(biāo)準(zhǔn)C++和Visual C++的模型到代碼的轉(zhuǎn)換以及逆向工程。下面將詳細(xì)地說(shuō)明這兩種C++ project的逆向工程的步驟和具體操作。
1. ANSI C++(標(biāo)準(zhǔn)C++)逆向工程(Reverse Engineer)使用標(biāo)準(zhǔn)C++逆向工程,需要在組件圖(component view)中創(chuàng)建一個(gè)組件(component),設(shè)置好需要進(jìn)行轉(zhuǎn)換的組件的信息,也就是該組件的語(yǔ)言、所包含的文件、文件所在的路徑、文件后綴等等信息,然后Reverse Engineer就可以根據(jù)給定的信息將代碼轉(zhuǎn)換成類圖了。
a) 右鍵點(diǎn)擊組件視圖(Component View),選擇New->Component,創(chuàng)建一個(gè)新的組件
b) 將component的language屬性設(shè)定為ANSI C++