Visual Studio 2010架構設計功能詳解
隨著軟件開發(fā)日趨國際化,對軟件的質(zhì)量要求和管理也隨之增高。微軟看到了應用程序生命周期管理在業(yè)界逐漸被接受認可的趨勢。在微軟VS2010(Visual Studio 2010 Ultimate)中,可以利用各種工具輔助每個關鍵環(huán)節(jié)進行管理(ALM)是其重要特性。Visual Studio經(jīng)過近十年左右的發(fā)展,已經(jīng)不再是僅僅面向某一個角色(開發(fā)人員)的工具,而是要服務于軟件開發(fā)過程中的所有不同的角色(開發(fā)人員、測試人員、架構師、項目經(jīng)理等),使其覆蓋在整個軟件開發(fā)生命周期(SDLC)中,本文將重點講述VSTS2010架構設計方面的新功能應用。
VS2010建模概述
VS 2010在軟件應用生命周期管理(ALM)中,在架構方面則是通過新的架構瀏覽器(Architecture Explorer)和架構層圖(Architecture Layer Diagram),以圖形化的方式描述系統(tǒng)架構,從而使得項目中的技術人員或非技術人員都能以模型透過圖形化的方式進行協(xié)作,以及定義企業(yè)與系統(tǒng)功能。另外,VSTS 2010也同時支持統(tǒng)一建模語言(UML,Unified Modeling Language)及特定領域語言(DSL,Domain Specific Language),架構設計人員在VS2010中可以進行架構與建模設計,從而擺脫了傳統(tǒng)使用非VS架構設計工具,使得設計師可以更有效率的進行.Net架構設計工作。
微軟在最初的時候,項目中的技術人員使用一些單獨的開發(fā)工具進行軟件開發(fā),例如架構師使用Rose進行架構設計,開發(fā)人員則使用Visual Studio進行編碼。同時,項目中的非技術人員則使用一些通用的項目管理工具進行項目管理,例如項目經(jīng)理使用Project,Excel等制定項目計劃,進行任務劃分和分配等。所以,在VS2010中的各個功能之間,彼此相互關聯(lián)和互通也大大增強。
我們可以通過VS2010架構泳道(swim-lane)圖,來對VS2010建模過程功能應用更直觀的了解。如圖1所示。
在架構建模設計過程中,同樣遵循ALM的過程定義(理解代碼、域理解、控制維護、擴展性等)。我們可以根據(jù)產(chǎn)品所針對的問題,將通過上圖中的4個主題的方式來分析VS2010建模功能過程。例如,“理解代碼”描述如何利用VS2010中的代碼分析和可視化技術幫助用戶分析理解已有的系統(tǒng)。最終,用戶可以利用這些技術在已有的代碼庫基礎上幫助客戶實現(xiàn)***的功能需求。
VS2010架構分析工具
VS 2010全新的架構工具可以讓我們了解應用程序和功能設計,并幫助驗證設計與執(zhí)行過程中不偏離開發(fā)目的。它除了支持一般系統(tǒng)分析設計流程(需求—>實體)外,也支持另一類的流程——逆向工程 (Reverse Engineering)。
通過逆向工程可以理解應用程序之間的部分是重要的依賴,以確定可能會出現(xiàn)問題。此外,直觀圖可以幫助我們找到***地方來執(zhí)行新的功能。DGML文件可以使解決方案產(chǎn)生的依賴矩陣和布局,每個視圖可以在項目結構中提供一個不同的視圖。如圖2所示。
通過高級的視圖功能可以來分析模型的整體結構。在一個區(qū)域中,可以根據(jù)需要修改15分鐘到一個小時之間的變化差異的依賴關系,也可以放大局部類之間的關系圖。
VS2010逆向工程類型可分為靜態(tài)與動態(tài),靜態(tài)指的是整個程序代碼的靜態(tài)結構,如組件或類別間的關系;動態(tài)則是程序代碼執(zhí)行的順序,如某個程序代碼區(qū)段相關方法調(diào)用與響應順序。
靜態(tài)逆向工程(Static Reverse Engineering)
VS2010提供針對不同功能層面的分析工具來輔助程序代碼進行逆向工程。Layer Diagram可從高階面來看架構;Architecture Explorer能從特定點切入,只探索我們所關心的部分;.net Class Diagram則可分析詳細部分的Class結構。靜態(tài)的逆向工程,主要有三個工具:Architecture Explorer、Layer Diagram和Class Diagram。Layer Diagram可以讓我們以高層角度來分析整個軟件結構,細膩程度可以自由選擇,從項目、Namespace、Classs、到方法都可以。
動態(tài)逆向工程(Dynamic Reverse Engineering)
在以前程序開發(fā)等人員,當分析程序代碼完全沒頭緒時,需要從程序代碼中直接理解程序流程,這是一件困難且很痛苦的事。 VS2010新增架構工具支持動態(tài)逆向工程,主要有兩個工具:依賴圖(Dependency Graph)和Sequence Diagram(時序圖),使用這兩個工具會大大增強代碼分析的效率。依賴圖可以協(xié)助理解程序代碼的結構與關系,可以透過架構瀏覽器(Architecture Explore)來生成依賴圖。順序圖是用來表達程序流程的圖像工具,VS2010也用于對象導入系統(tǒng)設計,可以手工直接繪制Sequence Diagram功能,也能通過逆向工程依選擇代碼段自動生成圖形。如圖3所示。

VSTS 2010模型瀏覽器
在實際的項目開發(fā)實踐中,大多數(shù)情況下都是在已有代碼的基礎上構建新的系統(tǒng)。在這種情況下,架構師或者開發(fā)人員遇到的一個典型的問題是:沒有好的工具可以幫助他們很好的理解現(xiàn)有代碼的架構,從而很難有效地在現(xiàn)有代碼的基礎上,添加新的功能以滿足新的需求。為了解決這個問題,VSTS 2010提供了新的兩個重要的建模工具:UML模型瀏覽器(UML Model Explorer)和架構瀏覽器(Architecture Explorer)。新的模型瀏覽器可以讓架構師為已有代碼創(chuàng)建完整的架構圖,并且能夠理解原有系統(tǒng)的各個組件是怎樣協(xié)作在一起的。這將為架構師決定如何設計、使用、復用或者是否放棄現(xiàn)有代碼,提供了非常有價值參考信息。
UML模型瀏覽器(UML Model Explorer)
在VSTS 2010 Architecture和Ultimate版本中,新增加了一個新的工具窗(UML Model Explorer)來幫助用戶理解和使用所創(chuàng)建的UML模型。它是一個樹狀結構的WPF組件,用來展示UML模型中的層次結構。在這里,模型是指所創(chuàng)建Modeling Project(工程模板)中的內(nèi)容。通過這個工程模板可以創(chuàng)建模型工程,在模型工程中再創(chuàng)建UML圖。也就是說UML類圖、活動圖、用例圖、組件圖,只能在模型工程中才能創(chuàng)建,并且可以按照模型架構進行設計與創(chuàng)建層次。
Modeling Project是模型數(shù)據(jù)、圖表文件和其他用戶想要存儲的資源(比如Excel、Word文檔)的容器。用戶可以在任何新建的或者已有的解決方案中添加該工程,在解決方案中同樣支持不同程序工程(C#、VB、Web等等)。模型工程Modeling Project同樣也支持版本控制。一般來說,UML Model Explorer中的根節(jié)點用來表示Modeling Project本身。如圖4所示。
創(chuàng)建模型工程后,在Solution Explorer下有一個默認創(chuàng)建的文件夾“ModelDefinition”下面的*.uml文件是建模工具自動添加和維護,不需要用戶任何手工干預。它們存儲了UML圖內(nèi)部所對應的模型關系定義,這是整個模型工程的核心。uml文件和模型中Package對象是一一對應的,當創(chuàng)建好一個新的模型工程后,會有一個默認ModelDefinition.uml文件被創(chuàng)建,它對應了整個模型的根Package,也就是“UML Model Explorer”窗口中的根節(jié)點。
架構瀏覽器(Architecture Explorer)
在Visual Studio 2010中,提供了構架瀏覽器(Architecture Explorer)工具來輔助廣大開發(fā)人員來分析和理解已有代碼或者編譯好的.Net Assembly。它能夠以Class View、Solution View和 File System的方式來瀏覽已有的系統(tǒng)代碼。Class View和Solution View支持對Visual C#和Visual Basic.Net工程的瀏覽,而File System -> Select Files方式則可以用來瀏覽任何基于.Net的編譯好的Assembly文件的內(nèi)容,類似Reflection反編譯工具的功能。如圖5所示。

另外,可以通過鼠標拖拽的方式,直接把構架瀏覽器中的內(nèi)容通過拖拽的方式添加到已有的依賴圖上。除了能瀏覽打開的工程之外,構架瀏覽器還可以直接瀏覽編譯好的Assembly文件中的名字空間、類型等,只是不能雙擊導向到相應的代碼,其它都與直接瀏覽工程差不多。如圖6所示。

規(guī)格瀏覽器(Spec Explorer)
Spec Explorer是微軟發(fā)布的一款與Visual Studio 2010緊密整合的基于模型測試的工具,也是一個Visual Studio集成開發(fā)環(huán)境的插件。它已經(jīng)被大量用于微軟內(nèi)部技術團隊的測試,并已在Windows協(xié)議測試工程(超過兩百工程師參與并協(xié)同工作)。Spec Explore與VS整合工作環(huán)境是基于模型的測試(Model-Based Testing,MBT)技術,它是一個輕量級的,形式化的驗證軟件系統(tǒng)的方法,并可以對測試軟件系統(tǒng)(System Under Test,SUT)進行形式化的建模,設計出機器可讀的模型;目前完全驗證一致性的代價非常高,重量級的形式化方法往往難以被應用到實際工程中,而基于模型的測試在這方面體現(xiàn)了優(yōu)勢,并已被運用到很多大型項目中。如圖7所示。

用戶可以通過Spec Explorer對一個軟件系統(tǒng)的期望行為進行建模,并自動生成能夠在Visual Studio的測試框架下運行的測試代碼。模型可以用當前主流的程序設計語言C#開發(fā),然后通過Cord語言腳本對模型進行配置和裁剪。
Spec Explorer工具可以自動探索規(guī)格說明(Specification,Spec)的所有潛在行為,并將其行為模型表示為狀態(tài)機。一次探索的輸出有可能非常大,所以Spec Explorer提供了Cord語言對輸出進行裁剪,并選出測試中真正關心的場景。并能夠高效的解決狀態(tài)爆炸的問題。
SpecExplorerVS2010.msi插件可以在
http://msdn.microsoft.com/en-us/devlabs/ee692301.aspx下載。
開發(fā)設計模型
Visual Studio 2010 Ultimate的ALM涵蓋了系統(tǒng)設計到測試階段的工具。其中,在架構方面包括新的架構檢視工具(Architecture Explorer),增加對統(tǒng)一建模語言(UML)的支持,例如類圖、用例圖、活動圖和時序圖等;以及架構層圖(Architecture Layer Diagram),以圖形化的方式描述系統(tǒng)架構,從而使得項目中的技術人員或非技術人員都能以模型透過圖形化的方式進行協(xié)作,以及定義企業(yè)與系統(tǒng)功能關系等。
VSTS 2010架構功能組成,主要功能分為三部分:1)理解現(xiàn)有代碼;2)明確結構設計;3)團隊合作。如圖8所示。

• 理解現(xiàn)有代碼。VSTS2010的Architecture目標之一就是就是幫助理解現(xiàn)有的代碼。因為只有理解了才能夠正確地使用它。在實際的工作中,我們經(jīng)常會遇到這樣的問題,只有了解現(xiàn)有代碼能夠做什么才能開展后續(xù)的工作。
• 明確結構設計。軟件人員經(jīng)常需要設計和描述軟件的構架,并為某一個特定問題定義名稱來描述它,然后使開發(fā)團隊內(nèi)的其它成員也能接受并理解它。VSTS2010 Architecture支持UML的模型,為此微軟增強了DSL工具,它支持VS2010中很多功能的關鍵技術,VS2010 Architecture的所有的UML圖表都是通過DSL工具來建立,并運行在DSL運行庫之上。VSTS 2010中,支持5種UML圖表。
• 團隊合作。在開發(fā)項目中,我們經(jīng)常需要使建模的結果能夠成為整個軟件開發(fā)周期中重要的一部分。VSTS 2010提供了多種方法可以讓模型和Team Foundation Server以及Visual Studio自身進行交互,例如新引入的工程種類“Modeling Project”等。
新增VS2010的Architecture功能,可供軟件架構師和開發(fā)等人員使用模型圖可以幫助理解代碼和用戶需求,使軟件系統(tǒng)具有更好的質(zhì)量。例如,可以使用統(tǒng)一建模語言設計用戶需求的用例,活動類和序列圖功能等,來描述和溝通用戶需求,從而增強ALM的周期管理控制。Architecture工具模板,如圖9所示。

當在系統(tǒng)需求確定之后,我們便進入基于UML的面向?qū)ο蟮脑O計(Object-Oriented Design,OOD)系統(tǒng)設計階段,在這個階段中,將通過以下UML圖來呈現(xiàn)VS2010在設計階段的支持和應用。
VS2010的Architecture工具包括以下UML圖(參考圖9):
• 活動圖(Activity Diagram):在參與者之間闡明業(yè)務用例實現(xiàn)的工作流程。
• 組件圖(Component Diagram):組件圖的主要目的是顯示系統(tǒng)組件間結構或接口的關系。
• 類圖(Class Diagram):展示了系統(tǒng)的邏輯結構,類和接口的關系??梢杂糜诖鎯拖到y(tǒng)之間的關系交換數(shù)據(jù)類型。
• 順序圖(Sequence Diagram):主要是顯示對象之間發(fā)送的消息的時間順序。
• 用例圖(Use Case Diagram):描述角色和用例之間的關系,著重展示系統(tǒng)必須實現(xiàn)的功能,用于在需求分析階段分析客戶需求。
此外,可以從已有代碼創(chuàng)建:層圖(Layer Diagram),代碼之間的不同部分依賴;類圖,
類型及其.NET關系代碼;順序圖,在方法調(diào)用.NET代碼順序。
UML 2.1.2規(guī)范定義了13種圖,Visual Studio 2010支持其中最常用的5種圖(類圖、用例圖、活動圖、組件圖和順序圖)。它們的底層的Meta模型是完全符合UML2.1.2規(guī)范定義的模型關系。
原文標題:微軟Visual Studio 2010架構設計功能應用
鏈接:http://www.cnblogs.com/xiaoyin_net/archive/2010/07/12/1775727.html
【編輯推薦】