程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Visual Studio 2010 Ultimate架構代碼分析

Visual Studio 2010 Ultimate架構代碼分析

編輯:關於.NET

VSTS 2010新的架構工具可以讓我們了解應用程序和功能設計,並幫助驗證設計和執行不偏離。它除了支持一般系統分析設計流程(需求→實體)外,也支持

另一類的流程—逆向工程(Reverse Engineering)。

通過逆向工程可以理解應用程序之間的部分是重要的相互依賴關系,以確定可能會出現的問題。此外,直觀圖可以幫助我們找到最佳位置來執行新的功能。

DGML文件可以使解決方案產生依賴矩陣和布局,每個視圖可以在項目結構中提供一個不同的視圖,如圖1所示。

圖1  程序集關系分析圖

通過高級的視圖功能可以來分析模型的整體結構。在一個區域中,可以根據需要修改15分鐘到一個小時之間的變化差異的依賴關系,如圖2所示。

圖2  類關系分析圖

單擊相應的類,在出現方向箭頭處單擊可放大局部類之間的關系圖,如圖3所示。

圖3 類關系局部放大分析圖

VSTS 2010逆向工程類型可分為靜態與動態:靜態指的是整個程序代碼的靜態結構,如組件或類間的關系;動態則是程序代碼執行的順序,如某個程序代碼區段的相關方法引用與響應順序。

1.靜態逆向工程(Static Reverse Engineering)

VSTS 2010提供針對不同功能層面的分析工具來輔助程序代碼進行逆向工程:Layer Diagram可從高階面看架構;Architecture Explorer能從特定點切入,只探索我們所關心的部分;.net Class Diagram則可分析最細節的Class結構。它支持靜態的逆向工程,主要有三個工具:Architecture Explorer、Layer Diagram和Class Diagram。

應用&實踐

靜態逆向工程—Web應用代碼分析范例

(1)層圖(Layer Diagram)

Layer Diagram可以讓我們以高層的角度來分析整個軟件結構,細膩程度可以自由選擇,從項目、Namespace、Class、到方法皆可。

①首先打開一個Web Application工程,打開VS新增一個Modeling Project,命名為“DemoReverseEngineering”,新增空白Layer Diagram,命名為“MainLayerDiagram” (Architecture|New Diagram|Layer Diagram),然後從Solution Explorer中拖曳ClassLibrary1、WebApplication1到MainLayerDiagram,然後可以看到兩個方塊(Layer),單擊方塊並單擊鼠標右鍵,選“Generate Dependencies”命令,VSTS 2010會自動生成之間的關系,如圖4所示。 

圖4  關系層圖

②我們可以定義每個Layer包含的工作產品(Artifact),並可以直接用相關文件對應到Layer,然後在Layer上單擊鼠標右鍵選擇“View Links”命令,

即可檢視此Layer的相關工作產品,如圖5所示。

圖5  層浏覽器

Layer Diagram基本上為快照(Snapshot)圖形,後續即使程序代碼有了變動,該圖形也並不會自動跟著更新,所以必須定期執行Validate Architecture。

(2)架構浏覽器(Architecture Explorer)

架構浏覽器可以讓我們從特定點開始分析相關類(Class)、方法(Method)、成員(Member)間的關系。打開VS IDE,選擇“View”|“Architecture Explorer”或者“Architecture”|“Windows”|“Architecture Explorer”命令可打開架構浏覽器,如圖6所示。

圖6  架構浏覽器類視圖

打開架構浏覽器窗口,單擊左上角的“Create a new graph”圖標,顯示類關系視圖,如圖7所示。

圖7  類關系視圖

外,解決方案視圖(Solution View):從項目角度出發到程序、類等。選擇文件(Select Files):可以選擇多個程序文件,如.exe、.dll等,此將由實體程序展

開到類、方法等。當沒有原始代碼時,可以用此功能來分析動態鏈接庫。

(3)類圖(Class Diagram)

VS.Net類圖不同於UMl Class Diagram,它提供了圖形與程序代碼雙向實時同步功能,若修改程序代碼,視圖會自動更新。可在Solution Explorer下選擇目標項目,

單擊工具欄的“View Class Diagram”按鈕,即可自動生成.Net Class Diagram,如圖8所示。

圖8  類關系圖

2.動態逆向工程(Dynamic Reverse Engineering)

VSTS 2010新增架構工具支持動態逆向工程,主要有兩個工具:依賴圖(Dependency Graph)和Sequence Diagram(時序圖)。以前的程序開發人員,當分析程序代碼

完全沒有頭緒時,需要從程序代碼中直接理解程序流程是一件很困難且痛苦的事,新增的兩個工具會大大提高代碼分析的效率。

應用&實踐

動態逆向工程—Web應用代碼分析范例

(1)依賴圖(Dependency Graph)

依賴圖可以協助理解程序代碼的結構與關系,可以透過架構浏覽器(Architecture Explore)來生成依賴圖。

首先在Architecture Explorer中選擇“Class View”|“WebApplication1”|“_Default”|“Button1_Click1”,按“Ctrl +”包含的所有方法鍵,並選擇其所包含所有方法,然後單擊“Create a new graph…”按鈕,即可將剛才類(Class)階層與方法(Method)關系繪制成依賴圖(Dependency Graph),如圖9所示。

圖9  展現依賴圖

(2)順序圖(Sequence Diagram)

順序圖是用來表現程序流程的圖像工具,在VSTS 2010中也用於對象導入系統的設計,可以手工直接繪制Sequence Diagram功能,也能通過

逆向工程選擇代碼段自動生成圖形。

①在VS 2010中,打開Default.cs程序文件,找到Button1_Click1()方法,單擊鼠標右鍵,在彈出菜單中選擇“Generate Sequence Diagram”命令。

設置順序圖,如圖10所示。

圖10  設置生成順序圖

l Maximum call depth:決定掃描程序調用層數來產生順序圖,默認值為3,意指超過3層的呼叫不納入Sequence Diagram。

l Include calls in:決定哪些范圍的方法調用要納入順序圖,默認值為當前解決方案(Current solution)。

l Exclude calls to:決定哪些方法調用要略過,不納入順序圖。

②單擊“OK”按鈕,生成順序圖,將可以幫助分析了解程序流程,如圖11所示。

圖11  從程序代碼生成順序圖

對於生成後的順序圖可以手工修改方法名稱,但它不會反映到程序代碼中(它只是時間點的快照(Snapshot)。不支持圖形與程序代碼雙向互動。

(3)分組生命線(Lifeline Grouping)

在VSTS 2010中,順序圖具有合並功能,可以通過Group功能把Lifeline合並起來,按“Ctrl ”鍵選擇多個Lifeline後,用鼠標右鍵單擊選擇“Collapse”,

即可合並成LifelineGroup。例如,可以將兩個Class1合並起來,若要展開,用鼠標右鍵單擊選擇“Expand”即可,如圖12所示。

圖12  合並分組生命線順序圖

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved