TFS(Team Foundation Server)介紹和入門

在本文的兩個部分中,我將介紹Team Foundation Server的一些核心特征,重點介紹在本產品的日常應用中是怎樣將這些特性結合在一起使用的。

作為一名軟件開發者,在我的職業生涯中,我常常會用到支持軟件開發過程的大量開發工具,如版本號控制工具、漏洞跟蹤包、生成腳本語言、單元測試框架和需求分析工具等等。在.NET平臺上,大量的支持工具可以非常好地獨立工作,可是,為了使得各種工具之間都夠互相協作,還是常常須要一些手動工作。

隨著Visual Studio產品線中Team Foundation Server組件的公布,微軟使得開發團隊在僵化的軟件project實踐應用中取得了巨大進步。這并非由于該產品包括的各種新增特性一定是最好的,關鍵因素是它的集成性。

Team Foundation Server起步

Team Foundation Server(TFS)是這樣一種server產品,它須要部署到軟件開發環境中,這樣開發者就能夠使用它提供的各種服務。由于TFS是設計用于大規模團隊,因而有兩種拓撲結構供選擇:雙server和單server。

在單server部署中,TFS被安裝在Windous 2003 server上,且該機器上已安裝了SQL Server 2005數據庫server、WebserverIIS以及windows SharePoint Services。這樣的類型的安裝能夠滿足大量用戶需求,而且適用于大部分條件。

雙server部署將SQL Server 2005 的數據庫引擎和分析服務組件分開安裝在不同的機器上,這樣就能夠實現可擴展性(通過增大用于大量用戶注冊操作的空間以及將處理負載的不同數據倉庫安裝在不同的機器上實現,這樣的機器最大可達64位。)

安裝了TFSserver后,client能夠通過安裝Team Explorer來訪問server。Team Explorer是一組組件,它包含簡單版本號的Visual Studio 2005(假設是在已經安裝了Visual Studio 2005的機器上就不過再加入�很多其它功能)和大量用于微軟的Excel和Project的插件,利用Excel和project能夠訪問存儲在Team Foundation Server數據庫中的數據。

Team Explorer可用于訪問Team Foundation Server的下面特性:

  • 過程引導
  • 工作項跟蹤
  • 版本號控制
  • 自己主動生成
  • 報告

創建一個團隊項目

在開發團隊能夠使用Team Foundation Server之前,必須先創建一個團隊項目,團隊項目代表了一個全部團隊活動都在這里發生的管理單元。為了創建一個團隊項目,Team Foundation Server管理員須要打開Visual Studio 2005和 Team Explorer工具窗體(從視圖菜單)。當打開Team Explorer 窗體后,就能夠建立一個到server的連接。

Team Foundation Server原理與入門:第一部分

Team Foundation Server原理與入門:第一部分

右鍵單擊樹狀視圖中的server節點,TFS管理員就能夠選擇“新建團隊項目”。其實,這個選項一般是隱藏的,可見須要新建一個團隊項目的情況是非常少的。絕大部分情況下,一個軟件開發團隊在一個大型軟件的生命周期中僅有一個團隊項目。

Team Foundation Server原理與入門:第一部分

創建團隊項目時,開發小組須要做的第一件事情是決定使用那個開發模型。

Team Foundation Server原理與入門:第一部分

Team Foundation Server原理與入門:第一部分

Team Foundation Server原理與入門:第一部分

Team Foundation Server原理與入門:第一部分

Team Foundation Server原理與入門:第一部分

Team Foundation Server原理與入門:第一部分

選擇開發模型

Team Foundation Server同意開發小組選擇他們想要使用的不論什么特定軟件開發方法。以下的列表中提供了兩種開發模型:

  • 敏捷模型驅動軟件開發
  • 能力成熟度集成模型軟件開發

每一個開發模型都有一組特有的定制特性,包含定義工作項(要做的事情、要確定的事情、需求等等),過程管理和報告。下表顯示了兩個默認的開發模型中不同工作項的分解:

敏捷模型驅動軟件開發

能力成熟度集成模型軟件開發

?

漏洞

服務要求的質量

風險

場景

任務

漏洞

改變請求

問題

需求

回想

風險

任務

在這樣的情況下即使工作項的數目和名稱存在差異,也應該指明使用這兩種開發模型通用方法,而不是開發小組來猜測他們該怎樣使用這些工作項類型,開發模型能夠包括一些可選的過程管理頁面。

Team Foundation Server原理與入門:第一部分

?

假設對話框中的模型不適合你的詳細要求,能夠訂制它們以滿足你的要求。其實,已經有大量能夠獲得的第三方開發模型,如Scrum and process MeNtOR。?

訪問工作項存儲器

創建了團隊項目后,開發小組須要做的第一件事是分解已經創建的初始工作項集。這些工作項幫助開發者完畢一系列能夠使得軟件項目成功開始的活動,而且根據不同的開發模型選擇不同的工作項。通過展開團隊項目節點,就能夠看到工作項目錄,繼續展開然后打開查詢目錄可看到所有或部分工作項。

Team Foundation Server原理與入門:第一部分

書寫定制得工作項查詢

最后須要書寫一個新的工作項查詢列表。新定義的查詢能夠放在“團隊查詢”和“我的查詢”這兩個目錄的不論什么一個。團隊查詢是一個可被項目小組中的全部開發者訪問的全局可訪問容器,我的查詢是一個由每一個程序開發員全部的私有查詢集。

我常常使用的一個實用的查詢是Recycle Bin query,這個查詢可用于打開近期關閉又須要又一次打開的工作項(偶然關閉工作項的情況時有發生)。第一步是從工作項節點的背景菜單中選擇“加入�查詢”。

Team Foundation Server原理與入門:第一部分

在查詢編輯器打開后,簡單的用戶接口就能夠基于某些簡單的表達式從工作項列表中過濾出須要的項目。在上面的情況中,查詢設置為返回當前狀態為關閉的團隊項目中的全部工作項。?

應用Team Foundation Server的版本號控制

訪問了工作項,就能夠應用Team Foundation Server中的版本號控制。像TFS中的其他特征一樣,版本號控制功能位于SQL Server 2005之上,用于提供良好的性能和可擴展性(實際上,宿主在TFS中的版本號控制存儲器的大小預計有千兆字節。開發小組可能遇到的第一個與版本號控制相關的工作項是遷移已經存在的源碼,這個工作項提供了在遷移源碼是須要做什么的具體視圖。

Team Foundation Server原理與入門:第一部分

?

配置一個工作區

在程序猿將文件加入�到版本號控制存儲器之前,須要將版本號控制存儲器的邏輯結構映射到本地機器上的文件系統。Team Foundation Server 引入了工作區的概念。工作區是物理位置和文件系統間的一組映射,一個文件系統與一個特殊用戶和計算機組合相匹配。在文件上進行工作的程序猿,他們是邏輯的進出工作區。為了建立一個工作區,程序猿須要雙擊Team Explorer中的源代碼控制圖標,到工作區下拉菜單。

Team Foundation Server原理與入門:第一部分

?

Team Foundation Server原理與入門:第一部分

Team Foundation Server原理與入門:第一部分

我發現將整個源碼樹的根映射到本地驅動器上的一個詳細位置并將其作為唯一映射是最簡單的方法。我自己的方法是在我的數據驅動器的根文件夾上創建一個“沙盒”文件夾,在它的下級有一個子文件夾,將其命名為我連接到的TFSserver的名字。(我連接到了多個TFSserver,因此一定要注意避免混淆)。

建立了映射之后,瀏覽源碼控制瀏覽器將會列出源碼樹上邏輯位置的本地路徑。至此你就能夠加入�源碼到這個容器中。

程序猿面對的一個局限是他們不能將文件加入�到版本號控制存儲器的根中($/),且全部以及目錄都直接和某個特定團隊項目相關。這里面的邏輯是,一個Team Foundation Server可用于大量項目,每一個項目應該在它們自己的區域內工作。?


?

加入�源碼到Team Foundation Server

在Team Foundation Server中安排源碼有無數的方式,你為什么選用這樣的而不用還有一種,具體的原因說明超出本文的范圍。以下選擇的方式僅是一個用于示例。特別的地方是,我選擇加入�了三個字目錄:Trunk, Branches 和Releases,例如以下圖。

Team Foundation Server原理與入門:第一部分

目錄加入�到版本號控制系統后,其它的程序猿并不會馬上看到,他們必須像文件一樣進行注冊。在本例中,在注冊前我將加入�一組解決方式和項目文件到這個容器中,然后一起注冊。

Team Foundation Server原理與入門:第一部分

Team Foundation Server原理與入門:第一部分

?

除了增強了性能和擴展性外,TFS將其版本號控制系統安裝在SQL Server 2005上,這意味著,進行原子提交和注冊的方法是可能的。也就是說,要么所有注冊成功,要么所有失敗。注冊能夠在源碼控制瀏覽器或解決方式瀏覽器上運行(或者在強制改變工具窗體中進行)

Team Foundation Server原理與入門:第一部分

Team Foundation Server原理與入門:第一部分

版本號控制系統和工作項存儲器在注冊時集成在一起。當注冊時,能夠將其與一個或多個工作項關聯。比如,由于這是剛引入源碼,所以我能夠瀏覽注冊對話框中的工作項視圖,選擇工作項3387和它關聯。注意當關聯工作項時不管默認的選擇怎樣都要將注冊行為設定為 “解決”,這樣做的目的是防止任務關閉工作項,因此較早建立十分實用的Recycle Bin 查詢。

Team Foundation Server原理與入門:第一部分

?

建立一個注冊,就叫做一個改變集,一個源碼容器只是是一系列不斷彼此堆積起來的改變集。由于在數據庫中改變集是一個能夠區分的實體,因此能夠將數據和它關聯在一起,所以上面建立的改變集和工作項3387的關系能夠在改變集中瀏覽或者在工作項中瀏覽。以下的屏幕截圖顯示了連到工作項的改變集。

Team Foundation Server原理與入門:第一部分

新概念:擱置集

和Team Foundation Server中的版本號控制相關的一個新概念是擱置集。擱置集的思想是程序猿在過周末歇息時,能夠將在工作日做的改變放在某個安全的地方。建立一個擱置集相當簡單,首先,程序猿在解決方式瀏覽器中的背景菜單中選擇“擱置必要的改變”,然后出現以下的對話框。

Team Foundation Server原理與入門:第一部分

程序猿能夠給擱置集一個名字,以便以后能夠查找和恢復它,和注冊對話框一樣,擱置集也能夠加入�評論和關聯工作項。擱置集僅包括改動過的文件,由于改變集版本號是從版本號控制存儲器引出的,所以創建他們的相當簡單。

為了恢復擱置集,能夠選擇背景菜單中的“解凍必要改變”選項,程序猿能夠查找由他們或其它程序猿建立的擱置集。

Team Foundation Server原理與入門:第一部分

Team Foundation Server原理與入門:第一部分

其實擱置集能夠共享,這意味著它們能夠非常好的運行代碼預覽,增強單注冊點策略,這對一個特別項目在封裝時可能非常十分實用。

在本文的下一部分,我將具體介紹擱置集,TFS中完好的分支支持,TFS是怎樣支持自己主動生成的并介紹一下報告功能提供的功能。

?

功能介紹一:微軟最新配置管理工具

在當今的環境下,公司業務越來越復雜,軟件開發復雜度也越來越高,此時發如今眾多項目中時有這種現象發生:文檔散落在不同地方,代碼缺失,代碼和文檔不一致,同一系統多個版本號,各項目採用不同配置管理工具、無統一的規范,隨著時間推移我們的項目管理風險不斷上升、項目實施難度不斷添加�、項目實施質量難以掌控。怎樣可以高速地構造出高質量的應用系統來滿足不斷變化的業務增長所帶來的需求?我們急須要建立一套完好的配置管理體系,來提高生產效率,提高產品質量,終于實現企業效益最大化。現階段配置管理面臨的挑戰是:
l?統一的規范
l?更好的組織性,更高的開發管理水平
l?保護投資 :企業級的過程歷史數據、經驗、數字化資產
l?建立標準的開發環境
l?實現并行開發,縮短產品面市時間
l?自己主動化管理
l?為創造性的工作釋放很多其它的時間
l?員工更加專業
??? 而通過微軟的Team Foundation Server(TFS)實施軟件配置管理可以有效解決這些問題,比如可以集中管理各項目的文檔、代碼,對項目中的文檔、代碼等的變化進行有效管理,可以方便地重現某個文件的歷史版本號,可以又一次編譯某個歷史版本號,使文檔維護工作變得easy、可以使多團隊并行開發成為現實,同一時候實行統一的配置管理流程可提高項目組間人員流動時的工作效率,也是對工作成果的一種有效保護。

功能介紹二:外包管理工具

隨著信息技術的飛速發展,軟件已進入了社會生活的方方面面,越來越多的企業將他們的業務系統構建在以軟件為核心的系統之上,企業通過它們來為自己的客戶提供高速優質的服務。正由于軟件已經成為業務的基礎平臺,企業的核心競爭力在非常大程度上取決于軟件系統的質量,要求軟件系統可以迅速適應業務需求的變化,同一時候保證軟件系統的高性能、高可靠性和可維護性。然而對于大部分企業而言,軟件開發并非他們所擅長的業務,加上軟件系統的復雜性及非常高的質量要求,大部分企業都選擇將軟件開發項目外包出去,由專業的軟件開發(供應)商來負責軟件的開發。可是軟件外包并不意味著企業對于軟件的開發過程放手無論,企業應該建立與供應商之間的協議,而且監控供應商的開發過程,并對供應商提交的終于系統進行全面的驗收,從而徹底保證供應商可以按時交付一個高質量的軟件系統。
軟件項目的成敗在非常大程度上取決于對其開發過程的控制,這包含對質量、源碼、進度、資金、人員等的控制。要進行有效的過程控制,只依靠人的力量是不夠的,還須要有對應的管理工具支持以實現高效的“軟件生命周期管理”。然而因為歷史和現實的原因,軟件生命周期管理流程和工具在我國軟件行業中的應用并不普及,因為缺乏必要的管理流程和工具,非常多企業在軟件外包項目中都會或多或少的遇到例如以下的問題:l?缺少統一的開發管理流程指導,無法保證項目的質量和成功率
l?開發出來的系統不能滿足用戶或者業務需求
l?開發過程不透明,非常難監控開發的進展情況
l?不能及時了解項目的進度,常常導致項目延期
l?無法有效的控制項目的變更,添加�了項目的風險
l?無法有效實現多地的協同開發,添加�外包開發成本(場地,差旅費)
l?軟件復用率低下,減少了企業的投資回報率
l?無法開展規范化的測試工作,非常多問題要到驗收階段才會暴露出來
l?缺乏軟件開發歷史數據的積累,無法準確估算項目成本
l?缺乏必要的版本號管理工具,系統在構建和公布時產生問題
l?缺乏對應的文檔,添加�了維護和升級的難度
?
這些問題導致非常多企業對外包項目不能進行有效的控制或是在開發中造成過多的資源浪費(各個系統間太多的反復開發),以及開發出來的系統不能響應市場高速的變化。這些問題直接減少了發包方企業的生產力,添加�了企業運營成本。要從根本上切實提高軟件外包開發的管理水平,必須從多方面入手,引入先進的開發流程,借鑒業界的最佳實踐,以及構筑高效的系統開發管理平臺是必定的選擇。
為了解決上述的外包開發管理中的常見問題,我們基于微軟最新公布的軟件生命周期工具,設計了微軟的軟件外包開發管理解決方式,可以對多平臺和地理分布的開發團隊提供必要的開發流程指導,實現高效的項目管理,促進項目團隊的溝通,并提供了緊密集成的變更和配置管理系統,為企業建立了先進的軟件協同開發管理平臺。

轉載于:https://www.cnblogs.com/yxwkf/p/3816347.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258455.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258455.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258455.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

逆函數求導公式_反函數求導法則

反函數的求導法則是:反函數的導數是原函數導數的倒數。例題:求yarcsinx的導函數。首先,函數yarcsinx的反函數為xsiny,所以:y‘1/sin’y1/cosy,因為xsiny,所以cosy√1-x2,所以y‘1/√…

SpringXML方式配置bean的懶加載lazy-init

lazy-init&#xff08;懶加載&#xff09;&#xff0c;表示該bean在容器初始化的時候不進行初始化。例如&#xff1a;<bean name"role1" class"com.fz.entity.Role" lazy-init"true">以上配置表示&#xff1a;spring容器在初始化的時候不會…

windows下system函數的使用

system函數 是可以調用一些DOS命令,比如system("cls");//清屏,等于在DOS上使用cls命令寫可執行文件路徑&#xff0c;可以運行它 下面列出常用的DOS命令,都可以用system函數調用: ASSOC 顯示或修改文件擴展名關聯。AT 計劃在計算機上運行的命令和程序。ATTRIB 顯示或更…

WWDC2017 筆記 - Cocoa Touch 中的新特性

這篇文章是 What’s New in Cocoa Touch / UIKit Session 201 的一些整理。【基于OC】 轉自我的 Blog: Dannys Dream Drag Drop 新的交互方式 拖拽 Drag 需要 Drag 的對象要 add 一個 UIDragInteraction &#xff0c;用法類似于 UIGestureRecognizer 。UIDragInteraction 有一個…

[Hadoop] - 自定義Mapreduce InputFormatOutputFormat

在MR程序的開發過程中&#xff0c;經常會遇到輸入數據不是HDFS或者數據輸出目的地不是HDFS的&#xff0c;MapReduce的設計已經考慮到這種情況&#xff0c;它為我們提供了兩個組建&#xff0c;只需要我們自定義適合的InputFormat和OutputFormat&#xff0c;就可以完成這個需求&a…

PS 色調——老照片效果

這就是通過調色使照片顯得發黃。 R_new0.393*R0.769*G0.189*B; G_new0.349*R0.686*G0.168*B; B_new0.272*R0.534*G0.131*B; clc; clear all; Imageimread(9.jpg); Imagedouble(Image); Image_newImage; Image_new(:,:,1)0.393*Image(:,:,1)0.769*Image(:,:,2)0.189*Image(:,:,3…

jsp出現錯誤

昨天在調試頁面時發生了如圖顯示的異常&#xff0c;它出現的原因是當<jsp:forward>或<jsp:include>標簽沒有參數時&#xff0c;開始標簽和結束標簽</jsp:forward>或</jsp:include>之間不能有空格&#xff0c;不能換行。解決辦法&#xff1a;刪除標簽之…

門限回歸模型的思想_Stata+R:門檻回歸教程

來源 | 數量經濟學綜合整理轉載請聯系進行回歸分析&#xff0c;一般需要研究系數的估計值是否穩定。很多經濟變量都存在結構突變問題&#xff0c;使用普通回歸的做法就是確定結構突變點&#xff0c;進行分段回歸。這就像我們高中學習的分段函數。但是對于大樣本、面板數據如何尋…

【數論】[CF258C]Little elephant and LCM

題目 分析&#xff1a;枚舉最大數&#xff0c;然后找出它所有因數p1…….pk&#xff0c; 從中任意選取一些數&#xff0c;這些數的LCM|這個數且&#xff0c;這些數的最大LCM就是枚舉的這個數&#xff0c;且若pi<aj<pi1則前i個數可以放在j這個位置&#xff0c;即j這個位置…

為普通Object添加類似AttachedProperty的屬性

為普通Object添加類似AttachedProperty的屬性 周銀輝 我們知道&#xff0c;在WPF中對應一個DependencyObject&#xff0c;我們很容易通過AttachedProperty來為類型附加一個屬性。但對于普通的Object而言&#xff0c;這就不可行了。 我現在遇到這樣一個問題&#xff0c;下面有一…

python 操作RabbitMQ

pip install pika使用API操作RabbitMQ基于Queue實現生產者消費者模型View Code 對于RabbitMQ來說&#xff0c;生產和消費不再針對內存里的一個Queue對象&#xff0c;而是某臺服務器上的RabbitMQ Server實現的消息隊列。#!/usr/bin/env python import pika# ###################…

python和嵌入式哪個容易_嵌入式與python選哪個

從概念上來說&#xff0c;嵌入式和Python的區別還是比較明顯的&#xff0c;嵌入式是一個開發領域&#xff0c;而Python則是一門編程語言。嵌入式開發是開發領域的一個重要分支&#xff0c;是物聯網領域技術的重要組成部分&#xff0c;可以說有物聯網的地方就離不開嵌入式開發。…

二階傳遞函數的推導及幾種求解方法的比較

二階系統是指那些可用二階微分方程描述的系統&#xff0c;其電路形式是由兩個獨立動態元器件組成的電路。 二階系統電路包括二階低通電路、二階高通電路、二階帶通電路和二階帶阻電路。 下面分別給出以上二階系統傳遞函數的推導過程&#xff0c;并以二階低通電路的沖激響應為例…

前端技術-調試工具(上)

頁面制作之調試工具 常用的調試工具有Chrome瀏覽器的調試工具&#xff0c;火狐瀏覽器的Firebug插件調試工具&#xff0c;IE的開發人員工具等。它們的功能與使用方法大致相似。Chrome瀏覽器簡潔快速&#xff0c;功能強大這里主要介紹Chrome瀏覽器的調試工具。 打開 Google Chrom…

新版Microsoft Edge支持跨平臺跨設備瀏覽

之前一直使用Google Chrome瀏覽器&#xff0c;可以隨意安裝插件擴展程序&#xff0c;無廣告&#xff0c;這是我鐘愛她的原因。但是之后不能登錄Google賬號&#xff0c;不能實現跨設備應用&#xff0c;就想找一款好用的替代品&#xff0c;近期發現了新版的Microsoft Edge&#x…

BZOJ1050 [HAOI2006]旅行

Description 給你一個無向圖&#xff0c;N(N<500)個頂點, M(M<5000)條邊&#xff0c;每條邊有一個權值Vi(Vi<30000)。給你兩個頂點S和T &#xff0c;求一條路徑&#xff0c;使得路徑上最大邊和最小邊的比值最小。如果S和T之間沒有路徑&#xff0c;輸出”IMPOSSIBLE”&…

biosrecovery什么意思_BIOS中的每個中文是什么意思

BIOS中的每個中文是什么意思&#xff0c;請對照的翻譯一下Time/System Time時間/系統時間Date/System Date日期/系統日期Level 2 Cache二級緩存System Memory系統內存Video Controller視頻控制器Panel Type液晶屏型號Audio Controller音頻控制器Modem Controller調制解調器(Mod…

百度網盤7.3.1.10版本增加工作空間功能,可實現百度網盤與電腦文件夾同步

百度網盤新增的工作空間是一款文件同步的產品&#xff0c;支持電腦本地與云端之間的文件同步&#xff0c;多設備間文件自動保持同步、支持查看文件每次都修改的歷史版本。功能類似于onedrive。如果有同步需求的小伙伴可以嘗試下載最新版的百度網盤試用該功能哦。下載網址&#…

ubuntu+idea intellij配置android開發環境

最近對移動開發產生興趣&#xff0c;決定在未來幾年內利用空余時間開發一些app或游戲什么的&#xff0c;鑒于ios開發成本較高&#xff0c;且自身對java相對熟悉&#xff0c;因此選擇了學習android。都說android市場不很很好&#xff0c;收益較難&#xff0c;但是仍覺得只要功夫…

typeof的用法

typeof可以返回變量的類型&#xff0c;返回值為字符串&#xff0c;其值有 "undefined" "boolean" "string" "number" "object" "function" 而 typeof(null)會返回object 轉載于:https://www.cnblogs.com/lhyhappy…