利用Rational Rose進行C++代碼的逆向工程介紹__C++

來源:互聯網
上載者:User

2004年10月,IBM推出了支援最新的UML2.0的可視化建模工具 Rational Software Architect(見注釋①) 和IBM Rational Software Modeler(見注釋②)。雖然它們支援在建模功能上有了更好的改進、支援了更新的標準,但是RSA的精彩功能主要是集中在對Java應用的支援,而IBM Rational Software Modeler則是主要關注系統的模型設計,如果要從結構上分析C++編寫的系統的代碼,Rational Rose還是首選的工具。

接下來的文章將會對如何利用Rational Rose 的逆向轉出工程來進行系統分析進行更加詳細地闡述。

一.Rational Rose逆向工程介紹

逆向工程(Reverse Engineer)就是從現有系統的代碼來產生模型的功能。分析已有的代碼其主要的目的就是瞭解代碼結構和資料結構,這些對應到模型圖就是類圖、資料模型圖表和元件圖表(對UML各種模型圖的描述見注釋③),也就是通過Rational Rose的逆向工程所得到的結果。Rational Rose所支援的逆向工程功能很強大,包括的程式設計語言有C++, VB, VC, Java, CORBA,以及資料庫DDL指令碼等等,並且可以直接連接DB2, SQLServer, Oracle和Sybase等資料庫匯入Schema並產生資料模型。

很多大型的C++開發的產品都涉及到資料庫的使用,對這種大型系統的開發,尤其是做二次開發的情況下,主要的痛點就是對源碼和資料庫結構的分析。而利用Rose的逆向工程這一功能,就可以完成代碼'類圖以及資料庫Schema->資料模型圖表的轉換,解決這兩大痛點,可以使開發和設計人員在對這種大型系統的升級、分析和開發中,更為方便、快捷、有條理地掌握系統結構,不用再為分析龐大的系統結構而頭疼。

二.如何用Rational Rose進行C++程式碼分析

這一節主要介紹使用者如何使用Rose的逆向工程產生UML模型,並用來進行C++代碼的結構分析。

Rational Rose可以支援標準C++和Visual C++的模型到代碼的轉換以及逆向工程。下面將詳細地說明這兩種C++ project的逆向工程的步驟和具體操作。

1. ANSI C++(標準C++)逆向工程(Reverse Engineer)使用標準C++逆向工程,需要在元件圖表(component view)中建立一個組件(component),設定好需要進行轉換的組件的資訊,也就是該組件的語言、所包含的檔案、檔案所在的路徑、檔案尾碼等等資訊,然後Reverse Engineer就可以根據給定的資訊將代碼轉換成類圖了。

a) 右鍵點擊組件視圖(Component View),選擇New->Component,建立一個新的組件



b) 將component的language屬性設定為ANSI C++

①選中建立的component,點擊右鍵,選中Open Specification



②在這個對話方塊中將該component的language設定為ANSI C++



c) 配置該ANSI C++ component,設定好該component中包含的C++代碼檔案,並進行C++語言的詳細設定

①選中該component,點擊右鍵,選擇ANSI C++->Open ANSI C++ Specification



②把Source file root directory設定為你的C++源碼檔案所在的路徑,並且將需要轉換的檔案添加到Project Files中,視你的需要來做其它的設定,比如:標頭檔副檔名等等。




d) 將設定好的component轉換成模型圖

①選中設定好的component,點擊右鍵,選中ANSI C++->Reverse Engineer



②選中需要轉換的class,點擊ok,一個component的逆向轉換就完成了。



2. Visual C++ 在使用這個功能的時候,要求使用者的機器上同時安裝Visual Studio。Visual C++的逆向工程也需要首先建立一個component,並將該component的language屬性設定為VC++。Rational Rose對VC++模型的轉換是通過讀取VC++ Project File的資訊來實現的,使用者只需要將對應的project file資訊指定給component就可以了。

a) 將VC++ Project的資訊賦給剛剛建立好的component。

①選擇該component,點擊右鍵,選擇Assign To Project



②在對話方塊中找到剛剛建立的component,右鍵點擊並選擇Properties。



③在下面對話方塊中選中需要進行轉換的Project,點擊ok,該component就與需要轉換的project關聯上了。



b) 將設定好的component轉換成模型圖

選中設定好的component,點擊右鍵,Update Model…,將會彈出確認對話方塊,選中需要轉換的class,點擊finish就可以了。





三.如何用Rational Rose進行資料庫結構分析

利用Rational Rose可以進行關聯式資料庫的資料模型設計並匯出DDL語言指令碼,相反還可以匯入已有的DDL指令碼產生資料模型以及串連SQLServer, DB2, Oracle等資料庫並匯入資料庫的schema產生資料模型。

下面以SQL Server為例說明一下逆向轉換工程的步驟。

a) 首先,選擇Tools->Data Modeler-> Reverse Engineer



b) 在進行逆向工程轉換的過程中可以選擇是從資料庫還是DDL指令碼進行轉換,如果是DDL指令碼轉換,就直接給定DDL指令檔位置就可以了。本例子給出的是串連SQLServer資料庫將schema匯入產生資料模型的過程,所以選中Database,進入下一步。



c) 填寫資料庫相關資訊



d) 選中所有需要轉換的schema



e) 選擇需要將哪些資料庫中的元素匯入到資料模型中



轉換操作會自動在元件圖表(Component View)中添加資料庫組件,並在邏輯圖(Logical View)中產生以《Schema》作為命名開頭的資料模型。



開啟資料模型,可以看到從資料庫中轉換過來的各個表和視圖。



從資料模型圖表中可以看到表的結構以及各個表和視圖之間的邏輯關係。

四.如何得到逆向工程的模型圖

在Rational Rose中,有些模型圖是不會自動產生的,很多時候這個工作需要使用者手工來完成。也就是說,Rational Rose只負責產生模型,包括模型中的元素、元素的屬性以及各個元素之間的關係,但是需要使用者做一些額外的工作來得到視圖。

首先,通過逆向工程,使用者已經得到了UML模型或者資料模型的各個組件以及它們之間的關係。 下一步需要在該模型上建立一個視圖,它們可以是類圖(class diagram,描述系統的靜態結構)或者資料模型圖表(Data model digram,描述關係資料結構)。然後,手動從左邊的explorer中將各個元素拖進視圖中,在這個過程中,各個元素之間的關聯關係會自動在圖中表示出來,而不需要使用者再做其他工作。

例如:產生一個資料模型的資料模型圖表的過程

從左邊將資料模型中的資料元素拖到右邊的資料模型圖表中,表CustomerCustomerDemo和表CustomerDemographics之間的依賴關係的菱形箭頭是自動產生的,無需手工操作。



一般來說,一個系統中所涉及的資料元素非常多,導致視圖很擁擠,排版也非常困難。Rational Rose提供的自動排版功能可以很方便地協助使用者解決這個問題。

選擇Format->Layout Diagram,系統會將圖中的所有元素用最優方式重新排列,給使用者一個清晰的視圖。






五.總結

瞭解了Rational Rose的逆向工程功能,使用者就可以方便地利用這一工具進行大型資料庫相關的C++系統的分析和研究了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.