利用Rational Rose進行C++代碼和數據庫結構分析

本文內容包括:
 一.Rational Rose逆向工程介紹
 二.如何用Rational Rose進行C++代碼分析
 三.如何用Rational Rose進行數據庫結構分析
 四.如何得到逆向工程的模型圖
 五.總結
 註釋

 Rational Rose是利用UML(統一建模語言)進行分析和設計面向對象軟件系統的強大的可視化工具,可以進行項目需求分析、結構規劃和生成框架代碼,還可以支持從現有系統逆向轉出工程代碼,生成Rose模型的功能。
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++系統的分析和研究了。

註釋

①IBM Rational Software Architect是一個集成式設計和開發工具,使用戶可以用UML模型驅動的開發方式開發出結構清晰的應用程序和服務。

②IBM Rational Software Modeler是基於UML2.0的可定製的可視化建模和設計工具,遵循它所提供的工作流程,可以使得系統設計師,系統分析師,設計人員等寫出更爲清晰的文檔,更爲有效地進行溝通和設計工作。

③UML提供的各種類型的模型描述圖

用例圖(Use Case Diagram):描述系統提供的一個功能單元,主要目的是幫助開發團隊以一種可視化的方式理解系統的功能需求,包括基於基本流程的"角色"(actors,也就是與系統交互的其他實體)關係,以及系統內用例之間的關係。

序列圖(Sequence Diagram):顯示具體用例(或者是用例的一部分)的詳細流程。

狀態圖(Statechart Diagram):表示某個類所處的不同狀態和該類的狀態轉換信息。

活動圖(Activity Diagram):表示在處理某個活動時,兩個或者更多類對象之間的過程控制流。

類圖(Class Diagram):表示不同的實體(人、事物和數據)如何彼此相關;換句話說,它顯示了系統的靜態結構。

組件圖(Component Diagram):提供系統的物理視圖。組件(Component)表示模型代碼庫、執行庫和其它組件的信息。組件是代碼的實際模塊,組件圖主要用戶是負責控制代碼和編譯部署應用程序的人。有些組件是代碼庫,有些組件是運行組件,如執行文件或動態鏈接庫(DLL)文件。)

部署圖(Deployment View):表示該軟件系統如何部署到硬件環境中。

數據模型圖(Data Model Diagram):描述關係數據結構。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章