• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

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

            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):描述關系數據結構。

            posted on 2008-05-10 20:58 肥仔 閱讀(6079) 評論(1)  編輯 收藏 引用 所屬分類: 其他經驗

            評論

            # re: 利用Rational Rose進行C++代碼的逆向工程介紹  回復  更多評論   

            粘貼別人的文章不要寫轉載嗎?還把別人的姓名給刪除了,有沒有版權觀念呀?
            是不是想讓別人誤認為這篇文章是你寫的?
            2009-06-30 21:12 | xxxx
            久久精品国产亚洲AV香蕉| 国产精品一区二区久久精品无码| 四虎国产精品免费久久| 久久精品国产亚洲AV香蕉| 国产精品久久久天天影视| 久久天天躁狠狠躁夜夜av浪潮| 国产69精品久久久久APP下载| 无码人妻久久久一区二区三区 | 久久人人爽人人爽人人片AV麻烦| 新狼窝色AV性久久久久久| 国产精品久久久久9999高清| 欧美激情精品久久久久久久九九九| 亚洲色大成网站WWW久久九九| 日本精品久久久久中文字幕8| 久久久久久综合网天天| 久久精品国产精品亚洲下载| 久久精品国产第一区二区三区| 亚洲国产精品无码久久九九| 9191精品国产免费久久| 久久久久久夜精品精品免费啦| 伊人情人综合成人久久网小说| 18岁日韩内射颜射午夜久久成人 | 国内精品久久久久影院日本| 久久一区二区三区免费| 久久免费视频网站| 成人免费网站久久久| 久久AV高清无码| 久久精品国产亚洲av日韩| 亚洲精品无码久久一线| 99久久国产综合精品女同图片| 国内精品伊人久久久影院| 久久午夜综合久久| 久久久久亚洲AV综合波多野结衣| 天天久久狠狠色综合| 狠狠精品干练久久久无码中文字幕 | 久久久久国产一区二区| 7国产欧美日韩综合天堂中文久久久久| 97久久天天综合色天天综合色hd | 久久久久精品国产亚洲AV无码 | 亚洲va久久久噜噜噜久久| 狠狠色噜噜色狠狠狠综合久久|