偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Visual Studio 2010:架構(gòu)師最怕程序員知道的新工具

原創(chuàng)
開發(fā) 后端
本文是Visual Studio進(jìn)化史專題系列文章中,關(guān)于Visual Studio 2010的一篇??梢哉fVS 2010中最引人矚目的是架構(gòu)設(shè)計(jì)方面的改進(jìn),是它讓Visual Studio 2010真正成為架構(gòu)師的好伙伴,也是最怕程序員知道的新工具。

【51CTO獨(dú)家特稿】2010年4月12日是微軟Visual Studio 2010正式版發(fā)布的日子。作為Visual Studio的用戶,您是否還記得自己使用的***個(gè)Visual Studio版本?是否還記得CODE出***段代碼時(shí)的興奮?是否還記得那無數(shù)個(gè)尋找Bug的日日夜夜?51CTO開發(fā)頻道帶您一起走進(jìn)Visual Studio歷史,今天我們要介紹的是——Visual Studio 2010。

Visual Studio 2010建模概述

在微軟Visual Studio 2010(Visual Studio 2010 Ultimate)中,應(yīng)用程序生命周期(ALM)是其重要特性和SDLC實(shí)現(xiàn)方式之一。我們將一個(gè)軟件的生命周期(SDLC)劃分為幾個(gè)階段,而利用各種工具輔助每個(gè)關(guān)鍵環(huán)節(jié)進(jìn)行管理,就稱為應(yīng)用程序生命周期管理(ALM,Application Lifecycle Management)。微軟的Visual Studio 2010將會(huì)努力打造一個(gè)功能平等、共同分擔(dān),易用便捷的平臺(tái),以用于組織內(nèi)的應(yīng)用程序生命周期管理過程。在Visual Studio 2010的工具中,真正主角已經(jīng)不在是作為編碼工具的Visual Studio IDE,而是ALM的核心TFS(Team Foundation Server)。

其中,在架構(gòu)方面則是通過新的架構(gòu)瀏覽器(Architecture Explorer)和架構(gòu)層圖(Architecture Layer Diagram),以圖形化的方式描述系統(tǒng)架構(gòu),從而使得項(xiàng)目中的技術(shù)人員或非技術(shù)人員都能以模型透過圖形化的方式進(jìn)行協(xié)作,以及定義企業(yè)與系統(tǒng)功能。另外,VSTS 2010也同時(shí)支持統(tǒng)一建模語言(UML,Unified Modeling Language)及特定領(lǐng)域語言(DSL,Domain Specific Language),架構(gòu)設(shè)計(jì)人員在Visual Studio 2010中可以進(jìn)行架構(gòu)與建模設(shè)計(jì),從而擺脫了傳統(tǒng)使用非VS架構(gòu)設(shè)計(jì)工具,使得設(shè)計(jì)師可以更有效率的進(jìn)行.NET架構(gòu)設(shè)計(jì)工作。

微軟在最初的時(shí)候,項(xiàng)目中的技術(shù)人員使用一些單獨(dú)的開發(fā)工具進(jìn)行軟件開發(fā),例如架構(gòu)師使用Rose進(jìn)行架構(gòu)設(shè)計(jì),開發(fā)人員則使用Visual Studio進(jìn)行編碼。同時(shí),項(xiàng)目中的非技術(shù)人員則使用一些通用的項(xiàng)目管理工具進(jìn)行項(xiàng)目管理,例如項(xiàng)目經(jīng)理使用Project,Excel等制定項(xiàng)目計(jì)劃,進(jìn)行任務(wù)劃分和分配等。Visual Studio經(jīng)過近十年左右的發(fā)展,已經(jīng)不再是僅僅面向某一個(gè)角色(開發(fā)人員)的工具,而是要服務(wù)于軟件開發(fā)過程中的所有不同的角色(開發(fā)人員、測試人員、架構(gòu)師、項(xiàng)目經(jīng)理等),使其覆蓋在整個(gè)軟件開發(fā)生命周期(SDLC)中,所以,在Visual Studio 2010中的各個(gè)功能之間,彼此相互關(guān)聯(lián)和互通也大大增強(qiáng)。

我們可以通過Visual Studio 2010架構(gòu)泳道(swim-lane)圖,來對(duì)Visual Studio 2010建模過程功能應(yīng)用更直觀的了解。如圖1所示。

架構(gòu)泳道圖

圖1  Visual Studio 2010建模過程結(jié)構(gòu)

在架構(gòu)建模設(shè)計(jì)過程中,同樣遵循ALM的過程定義(理解代碼、域理解、控制維護(hù)、擴(kuò)展性等)。我們可以根據(jù)產(chǎn)品所針對(duì)的問題,將通過上圖中的4個(gè)主題的方式來分析Visual Studio 2010建模功能過程。例如,“理解代碼”描述如何利用Visual Studio 2010中的代碼分析和可視化技術(shù)幫助用戶分析理解已有的系統(tǒng)。最終,用戶可以利用這些技術(shù)在已有的代碼庫基礎(chǔ)上幫助客戶實(shí)現(xiàn)***的功能需求。

Visual Studio 2010新增了UML Modeling Project,提供了對(duì)類圖,時(shí)序圖,用例圖等的支持,這也是基于VS.NET DSL來實(shí)現(xiàn)。如圖2所示。

VS中的DSL

圖2  DSL設(shè)計(jì)模型

VSTS2010架構(gòu)分析工具

VSTS 2010全新的架構(gòu)工具可以讓我們了解應(yīng)用程序和功能設(shè)計(jì),并幫助驗(yàn)證設(shè)計(jì)與執(zhí)行過程中不偏離開發(fā)目的。它除了支持一般系統(tǒng)分析設(shè)計(jì)流程(需求—>實(shí)體)外,也支持另一類的流程——逆向工程 (Reverse Engineering)。

通過逆向工程可以理解應(yīng)用程序之間的部分是重要的依賴,以確定可能會(huì)出現(xiàn)問題。此外,直觀圖可以幫助我們找到***地方來執(zhí)行新的功能。DGML文件可以使解決方案產(chǎn)生的依賴矩陣和布局,每個(gè)視圖可以在項(xiàng)目結(jié)構(gòu)中提供一個(gè)不同的視圖。如圖3所示。

程序集關(guān)系分析

圖 3 程序集關(guān)系分析 

通過高級(jí)的視圖功能可以來分析模型的整體結(jié)構(gòu)。在一個(gè)區(qū)域中,可以根據(jù)需要修改15分鐘到一個(gè)小時(shí)之間的變化差異的依賴關(guān)系,也可以放大局部類之間的關(guān)系圖。

VSTS2010逆向工程類型可分為靜態(tài)與動(dòng)態(tài),靜態(tài)指的是整個(gè)程序代碼的靜態(tài)結(jié)構(gòu),如組件或類別間的關(guān)系;動(dòng)態(tài)則是程序代碼執(zhí)行的順序,如某個(gè)程序代碼區(qū)段相關(guān)方法調(diào)用與響應(yīng)順序。

靜態(tài)逆向工程(Static Reverse Engineering)

VSTS2010提供針對(duì)不同功能層面的分析工具來輔助程序代碼進(jìn)行逆向工程。Layer Diagram可從高階面來看架構(gòu);Architecture Explorer能從特定點(diǎn)切入,只探索我們所關(guān)心的部分;.net Class Diagram則可分析詳細(xì)部分的Class結(jié)構(gòu)。靜態(tài)的逆向工程,主要有三個(gè)工具:Architecture Explorer、Layer Diagram和Class Diagram。Layer Diagram可以讓我們以高層角度來分析整個(gè)軟件結(jié)構(gòu),細(xì)膩程度可以自由選擇,從項(xiàng)目、Namespace、Classs、到方法都可以。如圖4所示。

關(guān)系層圖

圖 4 關(guān)系層圖

我們可以定義每個(gè)Layer包含的工作產(chǎn)品(Artifact),并可以直接用相關(guān)文件對(duì)應(yīng)到Layer,然后對(duì)Layer右鍵單擊選擇View Links,即可檢視此Layer相關(guān)工作產(chǎn)品。Layer Diagram基本上為快照(Snapshot)圖形,后續(xù)即使程序代碼有了變動(dòng),圖形并不會(huì)自動(dòng)跟著更新,所以必須定期執(zhí)行Validate Architecture。如圖5所示。

 

層瀏覽器 展現(xiàn)順序圖合并

圖 5  層瀏覽器

動(dòng)態(tài)逆向工程(Dynamic Reverse Engineering)

在以前程序開發(fā)等人員,當(dāng)分析程序代碼完全沒頭緒時(shí),需要從程序代碼中直接理解程序流程,這是一件困難且很痛苦的事。 VSTS2010新增架構(gòu)工具支持動(dòng)態(tài)逆向工程,主要有兩個(gè)工具:依賴圖(Dependency Graph)和Sequence Diagram(時(shí)序圖),使用這兩個(gè)工具會(huì)大大增強(qiáng)代碼分析的效率。依賴圖可以協(xié)助理解程序代碼的結(jié)構(gòu)與關(guān)系,可以透過架構(gòu)瀏覽器(Architecture Explore)來生成依賴圖。順序圖是用來表達(dá)程序流程的圖像工具,VSTS2010也用于對(duì)象導(dǎo)入系統(tǒng)設(shè)計(jì),可以手工直接繪制Sequence Diagram功能,也能通過逆向工程依選擇代碼段自動(dòng)生成圖形。

展現(xiàn)順序圖合并 展現(xiàn)順序圖合并2

圖6 展現(xiàn)順序圖合并

如圖6所示,分組生命線(Lifeline Grouping)。在VSTS2010中,順序圖具有合并功能,可以通過Group功能把Lifeline合并起來,按“Ctrl”鍵選擇多個(gè)Lifeline后,右鍵單擊選“Collapse”,即可合并成LifelineGroup。例如,可以將兩個(gè)Class1合并起來,若要展開,右鍵單擊選“Expand”。

#p#

VSTS 2010模型瀏覽器

在實(shí)際的項(xiàng)目開發(fā)實(shí)踐中,大多數(shù)情況下都是在已有代碼的基礎(chǔ)上構(gòu)建新的系統(tǒng)。在這種情況下,架構(gòu)師或者開發(fā)人員遇到的一個(gè)典型的問題是:沒有好的工具可以幫助他們很好的理解現(xiàn)有代碼的架構(gòu),從而很難有效地在現(xiàn)有代碼的基礎(chǔ)上,添加新的功能以滿足新的需求。為了解決這個(gè)問題,VSTS 2010提供了新的兩個(gè)重要的建模工具:UML模型瀏覽器(UML Model Explorer)和架構(gòu)瀏覽器(Architecture Explorer)。新的模型瀏覽器可以讓架構(gòu)師為已有代碼創(chuàng)建完整的架構(gòu)圖,并且能夠理解原有系統(tǒng)的各個(gè)組件是怎樣協(xié)作在一起的。這將為架構(gòu)師決定如何設(shè)計(jì)、使用、復(fù)用或者是否放棄現(xiàn)有代碼,提供了非常有價(jià)值的參考信息。

UML模型瀏覽器(UML Model Explorer)

在VSTS 2010 Architecture和Ultimate版本中,新增加了一個(gè)新的工具窗(UML Model Explorer)來幫助用戶理解和使用所創(chuàng)建的UML模型。它是一個(gè)樹狀結(jié)構(gòu)的WPF組件,用來展示UML模型中的層次結(jié)構(gòu)。在這里,模型是指所創(chuàng)建Modeling Project(工程模板)中的內(nèi)容。通過這個(gè)工程模板可以創(chuàng)建模型工程,在模型工程中再創(chuàng)建UML圖。也就是說UML類圖、活動(dòng)圖、用例圖、組件圖,只能在模型工程中才能創(chuàng)建,并且可以按照模型架構(gòu)進(jìn)行設(shè)計(jì)與創(chuàng)建層次。

Modeling Project是模型數(shù)據(jù)、圖表文件和其他用戶想要存儲(chǔ)的資源(比如Excel、Word文檔)的容器。用戶可以在任何新建的或者已有的解決方案中添加該工程,在解決方案中同樣支持不同程序工程(C#、VB、Web等等)。模型工程Modeling Project同樣也支持版本控制。一般來說,UML Model Explorer中的根節(jié)點(diǎn)用來表示Modeling Project本身。如圖7所示。

構(gòu)建 構(gòu)建2

圖7 模型工程創(chuàng)建

創(chuàng)建模型工程后,在Solution Explorer下有一個(gè)默認(rèn)創(chuàng)建的文件夾“ModelDefinition”下面的*.uml文件是建模工具自動(dòng)添加和維護(hù),不需要用戶任何手工干預(yù)。它們存儲(chǔ)了UML圖內(nèi)部所對(duì)應(yīng)的模型關(guān)系定義,這是整個(gè)模型工程的核心。uml文件和模型中Package對(duì)象是一一對(duì)應(yīng)的,當(dāng)創(chuàng)建好一個(gè)新的模型工程后,會(huì)有一個(gè)默認(rèn)ModelDefinition.uml文件被創(chuàng)建,它對(duì)應(yīng)了整個(gè)模型的根Package,也就是“UML Model Explorer”窗口中的根節(jié)點(diǎn)。

架構(gòu)瀏覽器(Architecture Explorer)

在Visual Studio 2010中,提供了構(gòu)架瀏覽器(Architecture Explorer)工具來輔助廣大開發(fā)人員來分析和理解已有代碼或者編譯好的.Net Assembly。它能夠以Class View、Solution View和 File System的方式來瀏覽已有的系統(tǒng)代碼。Class View和Solution View支持對(duì)Visual C#和Visual Basic.Net工程的瀏覽,而File System -> Select Files方式則可以用來瀏覽任何基于.Net的編譯好的Assembly文件的內(nèi)容,類似Reflection反編譯工具的功能。如圖8所示。

架構(gòu)瀏覽器

圖8  架構(gòu)瀏覽器

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

架構(gòu)瀏覽器選擇類視圖生成依賴圖1架構(gòu)瀏覽器選擇類視圖生成依賴圖2

圖10  架構(gòu)瀏覽器選擇類視圖生成依賴圖

規(guī)格瀏覽器(Spec Explorer)

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

Spec Explore與VS整合基于模型測試

圖11  Spec Explore與VS整合基于模型測試

用戶可以通過Spec Explorer對(duì)一個(gè)軟件系統(tǒng)的期望行為進(jìn)行建模,并自動(dòng)生成能夠在Visual Studio的測試框架下運(yùn)行的測試代碼。模型可以用當(dāng)前主流的程序設(shè)計(jì)語言C#開發(fā),然后通過Cord語言腳本對(duì)模型進(jìn)行配置和裁剪。

Spec Explorer工具可以自動(dòng)探索規(guī)格說明(Specification,Spec)的所有潛在行為,并將其行為模型表示為狀態(tài)機(jī)。一次探索的輸出有可能非常大,所以Spec Explorer提供了Cord語言對(duì)輸出進(jìn)行裁剪,并選出測試中真正關(guān)心的場景。并能夠高效的解決狀態(tài)爆炸的問題。

SpecExplorerVisual Studio 2010.msi插件可以在

http://msdn.microsoft.com/en-us/devlabs/ee692301.aspx下載。

開發(fā)設(shè)計(jì)模型

Visual Studio 2010 Ultimate的ALM涵蓋了系統(tǒng)設(shè)計(jì)到測試階段的工具。其中,在架構(gòu)方面包括新的架構(gòu)檢視工具(Architecture Explorer),增加對(duì)統(tǒng)一建模語言(UML)的支持,例如類圖、用例圖、活動(dòng)圖和時(shí)序圖等;以及架構(gòu)層圖(Architecture Layer Diagram),以圖形化的方式描述系統(tǒng)架構(gòu),從而使得項(xiàng)目中的技術(shù)人員或非技術(shù)人員都能以模型透過圖形化的方式進(jìn)行協(xié)作,以及定義企業(yè)與系統(tǒng)功能關(guān)系等。

VSTS 2010架構(gòu)功能組成,主要功能分為三部分:1)理解現(xiàn)有代碼;2)明確結(jié)構(gòu)設(shè)計(jì);3)團(tuán)隊(duì)合作。如圖12所示。

 VSTS2010架構(gòu)功能模型

圖12  VSTS2010架構(gòu)功能模型

新增Visual Studio 2010的Architecture功能,可供軟件架構(gòu)師和開發(fā)等人員使用模型圖可以幫助理解代碼和用戶需求,使軟件系統(tǒng)具有更好的質(zhì)量。例如,可以使用統(tǒng)一建模語言設(shè)計(jì)用戶需求的用例,活動(dòng)類和序列圖功能等,來描述和溝通用戶需求,從而增強(qiáng)ALM的周期管理控制。Architecture工具模板,如圖13所示。

Architecture工具模板

圖13 Architecture工具模板

當(dāng)在系統(tǒng)需求確定之后,我們便進(jìn)入基于UML的面向?qū)ο蟮脑O(shè)計(jì)(Object-Oriented Design,OOD)系統(tǒng)設(shè)計(jì)階段,在這個(gè)階段中,將通過以下UML圖來呈現(xiàn)Visual Studio 2010在設(shè)計(jì)階段的支持和應(yīng)用。

Visual Studio 2010的Architecture工具包括以下UML圖(參考圖9):

◆活動(dòng)圖(Activity Diagram):在參與者之間闡明業(yè)務(wù)用例實(shí)現(xiàn)的工作流程。

◆組件圖(Component Diagram):組件圖的主要目的是顯示系統(tǒng)組件間結(jié)構(gòu)或接口的關(guān)系。

◆類圖(Class Diagram):展示了系統(tǒng)的邏輯結(jié)構(gòu),類和接口的關(guān)系。可以用于存儲(chǔ)和系統(tǒng)之間的關(guān)系交換數(shù)據(jù)類型。

◆順序圖(Sequence Diagram):主要是顯示對(duì)象之間發(fā)送的消息的時(shí)間順序。

◆用例圖(Use Case Diagram):描述角色和用例之間的關(guān)系,著重展示系統(tǒng)必須實(shí)現(xiàn)的功能,用于在需求分析階段分析客戶需求。

此外,可以從已有代碼創(chuàng)建:層圖(Layer Diagram),代碼之間的不同部分依賴;類圖,

類型及其.NET關(guān)系代碼;順序圖,在方法調(diào)用.NET代碼順序。

UML 2.1.2規(guī)范定義了13種圖,Visual Studio 2010支持其中最常用的5種圖(類圖、用例圖、活動(dòng)圖、組件圖和順序圖)。它們的底層的Meta模型是完全符合UML2.1.2規(guī)范定義的模型關(guān)系。

作者簡介

高陽,微軟MVP,51CTO駐站專家。連續(xù)兩屆微軟全球最有價(jià)值專家,微軟(北京).NET俱樂部講師。上海復(fù)旦大學(xué)軟件工程碩士,北京交通大學(xué)計(jì)算機(jī)科學(xué)學(xué)士。

【編輯推薦】

  1. 詳解Visual Studio 2010五大新特性
  2. 細(xì)數(shù)Visual Stuido 2010中VC++的新特征
  3. Visual Studio 2010鮮為人知的新特性
  4. 探究Visual Studio 2010中Parallel的使用
  5. 使用Visual Studio 2010 RC注意要點(diǎn)
責(zé)任編輯:彭凡 來源: 51CTO
相關(guān)推薦

2009-12-25 11:07:26

架構(gòu)師

2009-12-30 16:49:03

架構(gòu)師

2013-07-17 18:00:02

程序員禁忌程序員錯(cuò)誤程序員bug

2010-02-24 14:16:56

Visual Stud

2011-07-19 10:43:10

Small Basic

2009-12-10 17:05:10

Visual Stud

2014-07-29 14:04:50

程序員

2011-12-26 10:17:07

Visual Stud

2017-11-03 13:39:49

WOT峰會(huì)

2017-11-14 11:00:53

程序員

2009-12-02 09:43:38

Visual Stud

2010-08-05 13:47:59

軟件架構(gòu)師

2010-08-05 13:51:13

軟件架構(gòu)師

2013-06-13 14:29:26

架構(gòu)師程序員

2019-05-24 08:00:00

Visual StudVisual Stud程序員

2015-06-18 05:57:42

程序員適應(yīng)新工作

2009-03-13 09:10:17

2013-01-28 10:23:12

軟件架構(gòu)師架構(gòu)師程序員

2009-06-04 16:37:20

SOA架構(gòu)師業(yè)務(wù)流程

2010-09-25 08:50:00

Visual Stud
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)