北京.NET 技術(shù)俱樂部曾經(jīng)排練了一部話劇《大話VSTS》,通過唐僧師徒四人借助Visual Studio Team System 的力量斬妖除魔,最終完成項(xiàng)目,以戲說的方式對Visual Studio Team System 調(diào)侃了一番。筆者有幸參加了此劇的策劃,并且先于大家預(yù)覽了該劇的演出。恰巧《程序員》雜志的編輯要求筆者在本期雜志上寫一篇關(guān)于“Visual Studio Team System”的文章,故以此開題。
牽強(qiáng)附會一下,其實(shí)開發(fā)人員在Windows平臺上所使用的開發(fā)工具——Visual Studio ——從1.0面世以來,就一直是以開發(fā)人員為目標(biāo)的,幫助開發(fā)人員更快速地構(gòu)建客戶所需要的產(chǎn)品。雖然到目前為止,已經(jīng)發(fā)展到了Visual Studio .NET 2003,但其面向開發(fā)人員個人,而不注重團(tuán)隊(duì)修煉的特征仍然是Visual Studio 的一大弱勢。當(dāng)然,在Visual Studio 的企業(yè)版當(dāng)中,包括了面向源代碼治理的Visual Sourcesafe,以及面向架構(gòu)師的Visio PRofessional 以及面向測試人員的application Center Test,但這些“法寶”之間無法集成,仍然是開發(fā)團(tuán)隊(duì)中所有人的痛。
所以,微軟在今年開始預(yù)備普及“大乘真經(jīng)”,使開發(fā)人員不僅可以“渡”自己,還要“普渡眾生”。Visual Studio Team System 是微軟即將于今年推出的面向軟件開發(fā)過程的團(tuán)隊(duì)開發(fā)工具。在2005 年11 月將會推出英文版,12月一部“Visual Studio Team System”版本的《西游記》,我們可以把團(tuán)隊(duì)中的各個角色分別對號入座:把唐僧看作項(xiàng)目經(jīng)理,而孫悟空則是軟件架構(gòu)師,豬八戒則喻指為開發(fā)人員,沙僧則是稱職的測試人員。軟件開發(fā)的道路上,奔走著西天取經(jīng)的“師父”與“徒弟”則會推出簡體中文版。Visual Studio Team System 可以為軟件開發(fā)團(tuán)隊(duì)當(dāng)中的四種人服務(wù),即項(xiàng)目經(jīng)理,架構(gòu)師,開發(fā)人員、測試人員。下面,讓我們認(rèn)真看一下這四種角色的法寶。
唐僧,金箍咒下的項(xiàng)目治理
對于項(xiàng)目治理人員,可能并不是很多的人都會熟悉Visual Studio 的IDE環(huán)境,但是很多人對于Excel、Project 等工具可能都會非常熟悉。所以,在Visual Studio Team System當(dāng)中,并沒有一個非凡的專門供項(xiàng)目治理人員所使用的版本,而是在Excel、Project 提供了配合VSTS 使用的插件,讓項(xiàng)目治理人員可以使用他們熟悉的工具來改善軟件開發(fā)過程。
使用Visual Studio Team System,在啟動一個項(xiàng)目的時候,我們首先可以選擇一個方法論的支持,VSTS將會隨軟件提供兩種方法論,即面向小型軟件開發(fā)團(tuán)隊(duì)的MSF 4.0 Agile以及面向CMMI Level 3級開發(fā)團(tuán)隊(duì)的MSF 4.0 Formal。
選擇了方法論,并且創(chuàng)建了團(tuán)隊(duì)項(xiàng)目(Team Project)之后,則可以開始進(jìn)行架構(gòu)師、開發(fā)人員、測試人員的迭代開發(fā)過程,在此過程當(dāng)中,項(xiàng)目治理需要對每種角色的工作量進(jìn)行統(tǒng)計,從而具體地把握軟件開發(fā)的脈搏。此時,項(xiàng)目治理人員可以通過工作項(xiàng)(Work Item)為每位角色安排任務(wù),并且隨時通過Excel、Project 得到這些工作項(xiàng)最新的狀態(tài)。從而了解項(xiàng)目的具體過程。同時,由于使用了SQL Server 2005 的Reporting Service功能,對于項(xiàng)目開發(fā)的數(shù)據(jù)進(jìn)行深入挖掘,可以從更深層次了解項(xiàng)目開發(fā)的難點(diǎn)及重點(diǎn)。由于Reporting Service 所擁有的開發(fā)特性,使得項(xiàng)目團(tuán)隊(duì)可以根據(jù)需求,自己定義產(chǎn)生并且輸出相應(yīng)的圖表,從而查看到更加具體的數(shù)據(jù)。
整個項(xiàng)目團(tuán)隊(duì)當(dāng)中所有的數(shù)據(jù)均保存在版本控制系統(tǒng)當(dāng)中,包括源代碼、架構(gòu)設(shè)計、設(shè)計文檔、工作項(xiàng)等,均可以保存在SQL Server 2005的數(shù)據(jù)庫當(dāng)中,并且對其版本進(jìn)行統(tǒng)一而有效的治理,而不再各自獨(dú)立地保存在不同的系統(tǒng)當(dāng)中,對于項(xiàng)目的分支、合并也可以隨時進(jìn)行。同時,VSTS支持HTTP 協(xié)議,這樣就可以保證異地開發(fā),所以即使孫悟空臨時回趟花果山探探親,也不再擔(dān)心項(xiàng)目的進(jìn)度。因?yàn)榧词乖诨ü?,只要有開發(fā)工具,仍然可以繼續(xù)進(jìn)行工作,而不會因此中斷。再也不需要“唐僧”婆婆媽媽地在大會小會上進(jìn)行督促,而只需要使用MSF或者其它方法論的“緊箍咒”,就可以進(jìn)行有效的治理,從而確保項(xiàng)目按時按質(zhì)的完成。 更多的請看:http://www.QQread.com/windows/2003/index.Html孫悟空,金箍棒助力十萬八千里
在Visual Studio Team System 當(dāng)中,架構(gòu)師將會得到與.NET代碼更加匹配的設(shè)計工具,即特意為架構(gòu)師量身定做的分布式系統(tǒng)解決方案設(shè)計器。這個設(shè)計器原來的代碼名稱為Whitehorse(白馬),或者正應(yīng)了由孫悟空降服白龍馬的典故。其實(shí)架構(gòu)師也可以分為兩種,一種是偏開發(fā)環(huán)境的,一種是偏部署環(huán)境的。對于前者,在Visual Studio Team System 當(dāng)中提供的是分布式系統(tǒng)設(shè)計器;對于后者,提供的是邏輯數(shù)據(jù)中心設(shè)計器。使用分布式設(shè)計器,可以將大型的企業(yè)級應(yīng)用使用圖形方式進(jìn)行子系統(tǒng)級的設(shè)計,并且最終通過分布式設(shè)計器產(chǎn)生真正的業(yè)務(wù)代碼。
而在邏輯數(shù)據(jù)中心設(shè)計器當(dāng)中,所要考慮的則是部署環(huán)境的設(shè)計,硬件、軟件、網(wǎng)絡(luò)等環(huán)境方面的一些約束。在實(shí)際的開發(fā)情況下,經(jīng)常會碰到在開發(fā)環(huán)境下面所有軟件都很正常,但部署到生產(chǎn)系統(tǒng)時,則會出現(xiàn)很多問題——這是我們沒有預(yù)料到的。在Visual Studio Team System中,則提供了校驗(yàn)?zāi)J剑瑥亩陂_發(fā)期就可以查找到設(shè)計的應(yīng)用與最終的生產(chǎn)系統(tǒng)之間不匹配的情況,做出處理。
在Visual Studio Team System 當(dāng)中,雖然我們必須使用DSL 來進(jìn)行架構(gòu)設(shè)計。但假如您還是傾向于UML,借益于其帶來的擴(kuò)展性,第三方廠商可以將UML等類似的架構(gòu)設(shè)計語言無縫集成在Visual Studio Team System 當(dāng)中。
在開發(fā)的時候,我們經(jīng)常會有很多需要重用的代碼塊。由于這些代碼還沒有足夠成熟到使用動態(tài)鏈接庫來進(jìn)行包接,有時候必須在源代碼級對某些參數(shù)及代碼行進(jìn)行手工調(diào)整。在使用其它IDE時,我們可能把其記錄在自己的文件夾中,隨時找出來進(jìn)行拷貝、粘貼。而在Visual Studio 2005 當(dāng)中,我們可以將其做成“代碼片斷”,對其進(jìn)行歸納治理。
面對已有的項(xiàng)目,我們經(jīng)常會有更改某些代碼的需求,這就是“重構(gòu)”,在Visual Studio 2005 當(dāng)中,可以直接在IDE當(dāng)中完成“重構(gòu)”,從而使代碼架構(gòu)更加清楚。
在相應(yīng)的開發(fā)領(lǐng)域當(dāng)中,也各自有各自的增強(qiáng)。在Web開發(fā)中, asp .NET 2.0 模型帶來了超過50個新出現(xiàn)的控件。以至于目前做一些比較通用的框架,比如用戶治理,包括登錄、創(chuàng)建用戶、更改密碼、找回密碼等功能,在2.0中再也不需要創(chuàng)建數(shù)據(jù)表、編寫業(yè)務(wù)邏輯、組織顯示控件這樣的“八股文”了,只需要將相應(yīng)的控件拖到界面中就可以。另外,在頁面框架領(lǐng)域,則提供了母版頁(MasterPage)以及主題及外觀(Themes & SKINs),使得對于頁面布局及體驗(yàn)的治理更加簡單,尤其是Web Part 編程模型的引入,使得在Windows SharePoint Service以及SharePoint Portal Server 中的自定義特性,可以由ASP .NET 2.0 自由實(shí)現(xiàn)。當(dāng)然,這一切都是基于ASP .NET 2.0底層的提供模式所帶來的 可擴(kuò)展性。在Windows Application開發(fā)當(dāng)中,也就是.NET開發(fā)人員常說的WinForm 開發(fā),在各個方面也有了卓越的改進(jìn),比如數(shù)據(jù)模型的改進(jìn)、新增加的控件等。其中最重要的是在部署方面所提供的Click Once 模型應(yīng)該是最重要的,使得Windows Application的自動升級、聯(lián)機(jī)/脫機(jī)應(yīng)用的協(xié)調(diào)可以不需要編寫任何代碼,僅僅需要幾項(xiàng)配置就可以實(shí)現(xiàn)。
目前,TDD已經(jīng)越來越進(jìn)入大家的視野,并且有很多開發(fā)團(tuán)隊(duì)在身體力行,比如使用NUnit等相關(guān)的工具來進(jìn)行單元測試開發(fā),從而在開發(fā)期就確保軟件的質(zhì)量,符合客戶的需求。而在Visual Studio 2005 當(dāng)中,則內(nèi)置了VSUnit,幫助開發(fā)人員進(jìn)行單元測試開發(fā)。同時,為了保 證客戶的現(xiàn)有投資,也提供了NUnit到VSUnit的轉(zhuǎn)換工具。
在Visual Studio 2005 當(dāng)中,內(nèi)置了一個性能分析工具。通過運(yùn)行它,分析在當(dāng)前代碼塊運(yùn)行時,硬件、軟件、網(wǎng)絡(luò)等性能計數(shù)器的數(shù)據(jù)可以一覽無余;同時,各個方法模塊運(yùn)行的時間也可以顯示出來,從而幫助開發(fā)人員更簡單地查找出性能瓶頸所在,幫助開發(fā)人員開發(fā)性能更加卓越的軟件。
Visual Studio 作為開發(fā)環(huán)境,從1.0 到9.0,一直在幫助開發(fā)人員減少工作量,快速地完成開發(fā)任務(wù),使開發(fā)人員能夠不止Enjoy Coding,也可以抽出來更多的時間來Enjoy Life——我們的八戒兄弟也大可以抽出更多的時間去陪陪高翠蘭。
其實(shí)從2004年開始,業(yè)界已經(jīng)開始逐步關(guān)注軟件的質(zhì)量問題,從而使軟件測試終為大家所重視,部分獨(dú)立軟件開發(fā)商已經(jīng)開始配備專職的軟件測試人員。但接下來碰到的問題,有了測試人員,如何來尋找合適的軟件測試工具呢?顯然,在業(yè)界相應(yīng)的測試工具已經(jīng)不少,在Visual Studio .NET 2003 的企業(yè)版當(dāng)中也帶有一個Microsoft Application Center Test,可以為網(wǎng)絡(luò)應(yīng)用進(jìn)行壓力測試。但這款工具僅能進(jìn)行“黑盒測試”,無法進(jìn)行“白盒測試”,而且測試所反應(yīng)出來的性能問題是以計數(shù)器等形式給出,需要測試人員以及開發(fā)人員合作,根據(jù)經(jīng)驗(yàn)分析代碼找出代碼中的性能瓶頸。
好處當(dāng)然還遠(yuǎn)遠(yuǎn)不止于此。幸好,在Visual Studio Team System 當(dāng)中提供了Team Build,幫助我們完成每日構(gòu)建的過程。有了Daily Build 的構(gòu)建版本,我們可以運(yùn)行相應(yīng)的測試,對于網(wǎng)絡(luò)應(yīng)用,我們可以直接使用其內(nèi)測的網(wǎng)絡(luò)測試項(xiàng)目類型,比較類似于Microsoft Application Center Test的測試方法,既可以通過錄制測試者的行業(yè)自動產(chǎn)生測試代碼,也可以進(jìn)行手工使用C#或者Visual Basic來撰寫測試 代碼,或者結(jié)合使用。一些復(fù)雜的測試,可能會需要使用手工測試,在Visual Studio Team System 當(dāng)中支持手工測試,通過其提供的Word 文檔模板,根據(jù)測試需求增加相應(yīng)的測試用例,在運(yùn)行時,則可以根據(jù)應(yīng)用的表現(xiàn),選擇測試是否通過。
另外,由于Visual Studio Team System 提供了豐富的擴(kuò)展性,在其正式發(fā)布之后,會有眾多的合作伙伴為其提供各種新的測試類型,使您進(jìn)行開發(fā)。對于應(yīng)用來說,除了功能測試,還需要進(jìn)行性能測試,在Visual Studio Team System 當(dāng)中也內(nèi)置了壓力測試來協(xié)助您檢查應(yīng)用的性能情況。創(chuàng)建壓力測試是一個向?qū)У倪^程,首先組合測試類型,可以把網(wǎng)絡(luò)測試、單元測試、順序測試等組成一個整體,然后通過配置選擇相應(yīng)的硬件、軟件、網(wǎng)絡(luò)環(huán)境,模擬足夠的用戶數(shù),對應(yīng)用進(jìn)行施壓,在測試結(jié)束后,會自動生成一個測試報告,顯示我們所關(guān)心的測試數(shù)據(jù)。
假如出現(xiàn)了性能或者功能上的問題,不需要另外打開一個Bug 治理系統(tǒng)提交Bug,而是直接在Visual Studio 當(dāng)中將其提交為Bug,而且也不需要向開發(fā)人員描述Bug的癥狀、測試環(huán)境以及重現(xiàn)步驟,所有的這些都由Visual Studio Team System 自動產(chǎn)生。從而可以使測試人員將更多的精力專注在測試邏輯上。
沙僧可以大步流星,跟隨整個取經(jīng)團(tuán)隊(duì)快速前進(jìn)。
白龍馬,蹄朝西
很多外部的開發(fā)人員可能都比較好奇,微軟是如何開發(fā)出來類似于Windows、Office這樣大型的軟件的。除了良好的開發(fā)理論外,其實(shí)微軟也有一套自己的“法寶”,比如外部所熟悉的RAID 等。而Visual Studio Team System則是微軟將這些內(nèi)部工具的集大成者,并且提供了更多的自定義以及擴(kuò)展,以使其不僅適合大型開發(fā)團(tuán)隊(duì),同時也適合小型開發(fā)團(tuán)隊(duì)。